PDA

View Full Version : [UML] Domanda scema ^^


Velkan
23-10-2007, 12:53
Scusate per la domanda scema ma in un class diagramm si possono inserire attori?
Io sto modellando un programma dove secondo me non vale la pena creare una classe utente e quindi pensavo che, essendoci utenti normali e manager potevo rappresentarli tramite un attore...ma nn so se si puo fare..!

Nous
23-10-2007, 14:45
Scusate per la domanda scema ma in un class diagramm si possono inserire attori?
Io sto modellando un programma dove secondo me non vale la pena creare una classe utente e quindi pensavo che, essendoci utenti normali e manager potevo rappresentarli tramite un attore...ma nn so se si puo fare..!

In UML puoi fare quello che vuoi, non ci sono regole ma al massimo formalismi ;)
Detto questo, il diagramma delle classi è una rappresentazione statica del sistema, mentre gli attori in un diagramma dei casi d'uso sono le entità esterne al sistema che interagiscono con esso...da qui la domanda : che senso avrebbe mai inserirli in un diagramma di classe?
Ancora ancora in un diagramma di sequenza...

k0nt3
23-10-2007, 14:57
Scusate per la domanda scema ma in un class diagramm si possono inserire attori?
Io sto modellando un programma dove secondo me non vale la pena creare una classe utente e quindi pensavo che, essendoci utenti normali e manager potevo rappresentarli tramite un attore...ma nn so se si puo fare..!

nel Class diagram ci stanno solo le classi appunto.. se non vale la pena di creare la classe non vale nemmeno la pena di inserirlo nel class diagram ;)

Nous
23-10-2007, 15:04
In effetti il problema è concettuale : un'attore del sistema non è una classe del sistema, non lo rappresenti. Se hai individuato una classe "Utente" probabilmente hai sbagliato la modellazione del sistema...ammesso che tale classe esista, che ci vorrà mai a mettere sul diagramma un classe che si chiama User?
Non entrare nel dettaglio se non ti fa piacere, ma se ci vuole ci deve essere..

Velkan
23-10-2007, 19:04
il punto è che esistono 2 differenti tipi di utenza, il manager che modifica ed aggiunge dati e l'utente normale che visiona e basta...mi faccio tutte ste pippe perchè è un esame non un lavoro ^^
mi è stato suggerito di non modellaze l'utenza come classe ma allora come faccio nel class diagram a mettere in evidenza il fatto che un manager puo accedere a determinate risorse a differenza di un utente normale?
Lo use case l'ho fatto ed esprime bene il concetto...se volete posto proprio la traccia ma sono 5 slide di power point...

Nous
23-10-2007, 19:09
il punto è che esistono 2 differenti tipi di utenza, il manager che modifica ed aggiunge dati e l'utente normale che visiona e basta...mi faccio tutte ste pippe perchè è un esame non un lavoro ^^
mi è stato suggerito di non modellaze l'utenza come classe ma allora come faccio nel class diagram a mettere in evidenza il fatto che un manager puo accedere a determinate risorse a differenza di un utente normale?Lo use case l'ho fatto ed esprime bene il concetto...se volete posto proprio la traccia ma sono 5 slide di power point...

Il class diagram non potrà mai mostrarti questa cosa, perchè modella il sistema staticamente. Un sequence diagram invece fa al caso tuo, visto che prevede gli attori ;)

nuovoUtente86
23-10-2007, 19:22
se posti la traccia forse si meglio comprende il problema.Il mio pensiero è questo:bisogna chiarire bene il ruolo del manager,ovvero se esso stesso è un utente per cui va ad estendere proprio la classe user oppure è un' entità a se stante...per entrare nel pratico..pensa al forum..il moderatore è anche un utente per cui se dovessi modellare il problema utente-moderatore-consultazione-moderazione avresti che moderatore estende utente e moderazione sara una sottoclasse di consultazione che mette a disposizione metodi piu potenti della sola consultazione...ma la stessa va associata..con i soli moderatori(manager nel tuo caso) e non con tutti gli utenti.
Magari se posti la traccia qualcuno puo risolvere il mio dubbio emerso in un' altro post sulla differenza associazione/aggregazione.

Nous
23-10-2007, 19:36
Magari se posti la traccia qualcuno puo risolvere il mio dubbio emerso in un' altro post sulla differenza associazione/aggregazione.

A parte che l'errore è quello di voler mostrare con un diagramma di classe una cosa che si può mostrare solo con use cases e diagrammi non statici, qual'è il tuo dubbio sull'aggregazione?

Velkan
23-10-2007, 19:49
Ho estratto il testo dai pdf, questa è la traccia...
Oltre al dubbio circa la classe utente o meno lavorandoci oggi è emerso un'altro dubbio, cioè se fra la classe Pozzo, che io avevo in mente atratta, e Compagnia, ci volesse una classe associativa tipo Estrazione, al mio prof ste cose piacciono ^^, però mi sembra che una cosa del genere avrebbe valenza solo per la navigazione da compagnia a pozzo ma non il contrario....

lol UML è davvero mooolto vasto:D

nuovoUtente86
23-10-2007, 21:45
Il class diagram non potrà mai mostrarti questa cosa, perchè modella il sistema staticamente. Un sequence diagram invece fa al caso tuo, visto che prevede gli attori ;)

Non riesco a capire precisamente a che tipo di errore ti riferisci..se puoi spiegarlo meglio...anche io approccio da poco ad UML....e lo trovo uno strumento potente con il quale bisogna prender confidenza.
Per quanto riguarda il discorso attore-classe...se ipotizziam che nell' usecase il manager sia un attore..non penso sia sbagliato che nel diagramma dela classi compaioa una classe Mangage che contenga l' anagrafica...la password la username e quanto altro,sbaglio forse?.

Per la mia domanda aggregazione/associazione avevo spiegato la richiesta qui:
http://www.hwupgrade.it/forum/showthread.php?p=19257828

Nous
23-10-2007, 22:09
Non riesco a capire precisamente a che tipo di errore ti riferisci..se puoi spiegarlo meglio...anche io approccio da poco ad UML....e lo trovo uno strumento potente con il quale bisogna prender confidenza.
Per quanto riguarda il discorso attore-classe...se ipotizziam che nell' usecase il manager sia un attore..non penso sia sbagliato che nel diagramma dela classi compaioa una classe Mangage che contenga l' anagrafica...la password la username e quanto altro,sbaglio forse?.


Beh...semplicemente...lui dice che deve rappresentare col diagramma delle classi il comportamento applicativo (ovvero utente A fa una cosa, utente B ne fa un'altra)...insomma, lo use case (se sono fatti bene, ad ogni azione corrisponde uno use case).
Il diagramma delle classi è un diagramma statico, il che vuol dire che semplicemente mostra le classi e le associazioni tra le classi, ma non spiega le interazioni tra le classi e neppure tra il sistema che realizzano ed i suoi attori.
Insomma, non mostrano la dinamica del sistema, non realizzano nessuno use case.
Per queste cose si usano i diagrammi di sequenza, nei quali non a caso sono previsti gli attori ;)

Gli attori sono esterni al sistema, se ipotizzi che qualcuno usi il sistema avrai l'attore talDeiTali, dopodichè un'interfaccia tra il sistema e l'attore (banalmente, una GUI). Ovviamente avrai nel sistema una classe che definisce il Ruolo, ma non è l'attore del sistema che rappresenti: nei sistemi informativi più banali hai una entity class che persiste un'anagrafica utente e le credenziali di accesso (come dici giustamente tu). Non è però l'attore del sistema, sembrano la stessa cosa ma sono concettualmente diversi : l'attore è esterno al sistema, il Ruolo (o chi per esso) è parte del sistema.

L'altro dubbio me lo leggo domani, ora vado a nanna :asd:

Velkan
23-10-2007, 22:09
Non riesco a capire precisamente a che tipo di errore ti riferisci..se puoi spiegarlo meglio...anche io approccio da poco ad UML....e lo trovo uno strumento potente con il quale bisogna prender confidenza.
Per quanto riguarda il discorso attore-classe...se ipotizziam che nell' usecase il manager sia un attore..non penso sia sbagliato che nel diagramma dela classi compaioa una classe Mangage che contenga l' anagrafica...la password la username e quanto altro,sbaglio forse?.

Per la mia domanda aggregazione/associazione avevo spiegato la richiesta qui:
http://www.hwupgrade.it/forum/showthread.php?p=19257828

Il punto è che cmq dovrà essere creata una classe principale diciamo tipo sistema, che assolverà le richieste da parte degli utenti, dunque può essere sprecata una classe Manager, perchè alla fine basta un metodo di log in che se effettuato da l'accesso al manager, dato che nella traccia non è specificata la sessione di log in per altri utenti diversi dal manager...

Velkan
23-10-2007, 22:16
Non è però l'attore del sistema, sembrano la stessa cosa ma sono concettualmente diversi : l'attore è esterno al sistema, il Ruolo (o chi per esso) è parte del sistema.



è proprio questo il mio dubbio, ovvero necessito di una classe che mi specifichi il ruolo del manager o lo devo considerare solo un'attore e fornire la classe principale del programma di un metodo "autentica()" che ritorna una booleana true in caso di corretto log in e modifica la gui con il pannello amministratore attivo?

il punto è che se faccio cosi nn mi serve un'oggetto manager ^^ no?

Nous
23-10-2007, 22:20
è proprio questo il mio dubbio, ovvero necessito di una classe che mi specifichi il ruolo del manager o lo devo considerare solo un'attore e fornire la classe principale del programma di un metodo "autentica()" che ritorna una booleana true in caso di corretto log in e modifica la gui con il pannello amministratore attivo?

il punto è che se faccio cosi nn mi serve un'oggetto manager ^^ no?

Il progetto non l'ho letto, lo farò domani invece di lavorare (:asd:)..però se hai un sistema progettato per essere usato solo da managers, è inutile che stai a farti le pippe mentali sul ruolo : se fa il login è un manager.

Ovviamente se ti servissero informazioni anagrafiche dovresti comunque associarle all'utente autenticato, ma senza leggere il progetto non posso aiutarti. Tieni presente che persone diverse fanno modelli diversi.

Ne parliamo domani ;)

Velkan
23-10-2007, 22:34
Il progetto non l'ho letto, lo farò domani invece di lavorare (:asd:)..però se hai un sistema progettato per essere usato solo da managers, è inutile che stai a farti le pippe mentali sul ruolo : se fa il login è un manager.

Ovviamente se ti servissero informazioni anagrafiche dovresti comunque associarle all'utente autenticato, ma senza leggere il progetto non posso aiutarti. Tieni presente che persone diverse fanno modelli diversi.

Ne parliamo domani ;)

ok grazie dell'aiuto e ne riparliamo domani :D
cmq si domani vado a parlaremeglio col prof e domando piu nello specifico cosa chiede la traccia perchè nn c'è menzione di dati anagrafici o roba del genere dice solo che c'è il manager che ha la possibilità di effetuare operazioni lato amministratore e le associazioni ambientaliste che invece controllano il livello di inquinamento delle compagnie petrolifere...

non è prevista una fase di registrazione dei dati ne delle associazioni ne del manager o per lo meno sulla traccia nn è specificato...ma domani chiedo meglio sperando di nn prendere il cazziatone!!:D

nuovoUtente86
25-10-2007, 20:04
Il progetto non l'ho letto, lo farò domani invece di lavorare (:asd:)..però se hai un sistema progettato per essere usato solo da managers, è inutile che stai a farti le pippe mentali sul ruolo : se fa il login è un manager.

Ovviamente se ti servissero informazioni anagrafiche dovresti comunque associarle all'utente autenticato, ma senza leggere il progetto non posso aiutarti. Tieni presente che persone diverse fanno modelli diversi.

Ne parliamo domani ;)

ci hai abbandonato

Nous
25-10-2007, 21:20
ci hai abbandonato

Mi sono dimenticato di voi, lo confesso :asd:
Ho avuto una settimana un pò caotica...per quando dovete consegnare?

Velkan
25-10-2007, 22:39
non è che lo devo consegnare adesso ma cmq è il primo di tre forse quattro progettini che dovro consegnare fra tipo un mese quindi prima faccio meglio è
:D

Velkan
25-10-2007, 22:42
ok grazie dell'aiuto e ne riparliamo domani :D
cmq si domani vado a parlaremeglio col prof e domando piu nello specifico cosa chiede la traccia perchè nn c'è menzione di dati anagrafici o roba del genere dice solo che c'è il manager che ha la possibilità di effetuare operazioni lato amministratore e le associazioni ambientaliste che invece controllano il livello di inquinamento delle compagnie petrolifere...

non è prevista una fase di registrazione dei dati ne delle associazioni ne del manager o per lo meno sulla traccia nn è specificato...ma domani chiedo meglio sperando di nn prendere il cazziatone!!:D

cmq ho domandato all'assistente del prof e mi ha lasciato intuire, credo, che in effetti non è necessario modellare un classe utente..
Oltretutto mi ha detto che la classe associativa che volevo creare fra Pozzo e Compagnia non è sbagliata ma solo in un senso di navigabilità, cioè da compagnia a pocco con una classe tipo Estrazione

nuovoUtente86
26-10-2007, 19:53
cmq ho domandato all'assistente del prof e mi ha lasciato intuire, credo, che in effetti non è necessario modellare un classe utente..
Oltretutto mi ha detto che la classe associativa che volevo creare fra Pozzo e Compagnia non è sbagliata ma solo in un senso di navigabilità, cioè da compagnia a pocco con una classe tipo Estrazione

Concordo sulla classe estrazione,però non condivido la unidirezionalità.Dalla traccia dice che del pozzo si conosce la lista delle compagnia che vi estraggono ma si pressupone che ogni compagnia mantenga traccia dei pozzi dove lavora(del resto il progettista qualcosa di suo deve pur mettere).In aggiunta a cio se si volesse effettivamente fare unidirezionale seguendo alla lettera la traccia bisognerebbe farla da pozzi verso compagnia in quanto ogni pozzo conosce le compagnie estrattrici.

Velkan
26-10-2007, 23:18
Concordo sulla classe estrazione,però non condivido la unidirezionalità.Dalla traccia dice che del pozzo si conosce la lista delle compagnia che vi estraggono ma si pressupone che ogni compagnia mantenga traccia dei pozzi dove lavora(del resto il progettista qualcosa di suo deve pur mettere).In aggiunta a cio se si volesse effettivamente fare unidirezionale seguendo alla lettera la traccia bisognerebbe farla da pozzi verso compagnia in quanto ogni pozzo conosce le compagnie estrattrici.

beh considera che non avevamo la traccia d'avanti quindi su sto fatto della unidirezionalità va presa con le pinze, anche perchè lui mi disse che non era detto che una compagnia estraesse effettivamente da un pozzo ma questo è irrilevante voglio dire, alla fine vuol dire che il suo contributo sarà nullo ma cmq possiede quel pozzo!
ora faccio qualche use case ed il diagramma delle classi, e poi magari te li faccio vedere e mi dici che ne pensi ok?

nuovoUtente86
26-10-2007, 23:22
Considera appunto che una classe associativa specifica un ruolo oppure aggiunge informazioni su una relazione,nel caso se non erro è la quantità di estrazione.Se fai qualcosa poi ne discutiamo.Intanto se domani ho tempo provo a farli anche io.

Velkan
29-10-2007, 08:08
Ho fatto una bozza del class diagramm:
http://img513.imageshack.us/my.php?image=classdiagrambozzawp9.jpg

si puo vedere come intendo gestire il manager, ovvero tramite la variabile booleana isManager, e poi lavorare con vincoli OCL su di essa per permettere o meno l'accesso a determinati medodi solo se isManager== true
scrivendo qualcosa del tipo:
Context:Sistema::creaPozzo():boolean
pre:self.isManager=true

che ne dite?

nuovoUtente86
29-10-2007, 17:15
direi che va abbastanza bene.
Non capisco il perchè di fare un classe Compagnia base o meglio astrattta e una derivata,mi sembra che non si necessiti come ne caso di pozzo di un metodo dipendente dall' implementazione della classe(quello relativo al tasso).
Dovresti altresi creare la relazione di estensione attraverso le generalizzazione e non l ' associazione extends che si utilizza negli Use Case.

_Claudio
29-10-2007, 17:31
La classe utente o manager, così come tutte le classi che "rappresentano" un attore in UML contengono solo i metodi che corrispondono (non al 100% però) alle azioni e a come il sistema vede l'utente.
Funge solo da un'interfaccia tra utente e sistema, prima che l'utente si identifica (login) il sistema lo "vede" attraverso una classe "generica", dopo che è stato identificato l'utente interagisce col sistema attraverso la classe statica che va definita nell'UML.
Solitamente, e anche io, si fa così.

nuovoUtente86
29-10-2007, 17:43
Se prendiamo il caso che stiamo analizzando avremo 2 interfacce per 2 attori(associazione ambientalista e manager)
Nella prima avremo infermazioni circa la ragione sociale o il codice dell' associazione,un' username e una pasword,nel caso di Manager oltre ai dati per il login avremo anche l' anagrafica.Il metodo autentica lo vedo piu sulla classe sistema che sull' i"nterfaccia" degli attori.

_Claudio
29-10-2007, 20:04
Se prendiamo il caso che stiamo analizzando avremo 2 interfacce per 2 attori(associazione ambientalista e manager)
Nella prima avremo infermazioni circa la ragione sociale o il codice dell' associazione,un' username e una pasword,nel caso di Manager oltre ai dati per il login avremo anche l' anagrafica.Il metodo autentica lo vedo piu sulla classe sistema che sull' i"nterfaccia" degli attori.

Esatto, proprio così, il metodo autentica sta a metà e metà solitamente (motivi di sicurezza), poi ognuno fa come ha imparato e gli riesce meglio...

nuovoUtente86
29-10-2007, 21:14
Esatto, proprio così, il metodo autentica sta a metà e metà solitamente (motivi di sicurezza), poi ognuno fa come ha imparato e gli riesce meglio...

in pratica dici di mettere ad esempio un metodo login() nella classe manager e un metodo autentica() nella classe sistema presumibilmente richiamato da login

Velkan
30-10-2007, 07:07
in pratica dici di mettere ad esempio un metodo login() nella classe manager e un metodo autentica() nella classe sistema presumibilmente richiamato da login

Beh è ovvio che la gui che si presenta all'utente avrà un tasto che richiama il metodo autentica, ma dato che volevo scorporare la grafica da Sistema, poi alla fine verrà come dite voi, solo che il prof mi ha detto che per cio che riguarda la gui nn va inserita nel class diagramm...
Per quanto riguarda extends...io l'ho fatto a mano perchè sulle dispense che ha dato il prof indica che si puo fare o cosi o con le generalizzazioni come dicevi tu... ma cmq cio che mi preme ora è che concettualmente sia giusto ^^

_Claudio
30-10-2007, 08:22
in pratica dici di mettere ad esempio un metodo login() nella classe manager e un metodo autentica() nella classe sistema presumibilmente richiamato da login

Esattamente, in modo che l'autenticazione rimanga metà a lato server...

Velkan
30-10-2007, 09:51
Esattamente, in modo che l'autenticazione rimanga metà a lato server...

Ma quindi la classe manager va fatta??

nuovoUtente86
30-10-2007, 10:12
Beh è ovvio che la gui che si presenta all'utente avrà un tasto che richiama il metodo autentica, ma dato che volevo scorporare la grafica da Sistema, poi alla fine verrà come dite voi, solo che il prof mi ha detto che per cio che riguarda la gui nn va inserita nel class diagramm...
Per quanto riguarda extends...io l'ho fatto a mano perchè sulle dispense che ha dato il prof indica che si puo fare o cosi o con le generalizzazioni come dicevi tu... ma cmq cio che mi preme ora è che concettualmente sia giusto ^^

Prova a pensarlo concettualmente piu che in implementazione OOP.Arriverà un punto in cui ti servira un' entità manager che interagisca con il sistema,ecco perchè personalmente la implementerei.
Sul fatto di extends o generalizzazione..probabile che sia una differenza tra UML 1.x e UML2 ma qui chiedo conferma a qualcuno piu esperto.

nuovoUtente86
30-10-2007, 10:12
Ma quindi la classe manager va fatta??

penso proprio di si per il discorso che ti facevo sul post precedente.

Velkan
30-10-2007, 11:10
penso proprio di si per il discorso che ti facevo sul post precedente.

capito quindi ora creo la classe manager che implementa un'interfaccia "utente" ad esempio o visto che mi interessa solo il manager creo la classe manager e basta?

nuovoUtente86
30-10-2007, 15:25
Penso che dovresti fare una classe Manager e una AssociazioneAmbiantalista

nuovoUtente86
02-11-2007, 18:35
Posto qui cercando di un sporcare il post e chiedo se qualcuno sa fare i sequence diagram con together borland.Non presenta tra le strutture utilizzabili gli attori.Inoltre,sia con together che altri tool non riesco ad esprimere la creazione di un nuovo oggetto(che secondo le specifiche uml si pone ad un livello piu basso rispetto alle altre classi).Creando una nuova classe con linea di vita i tool la allineano alle classi gia esistenti.Come risolvere?

Velkan
03-11-2007, 20:05
Posto qui cercando di un sporcare il post e chiedo se qualcuno sa fare i sequence diagram con together borland.Non presenta tra le strutture utilizzabili gli attori.Inoltre,sia con together che altri tool non riesco ad esprimere la creazione di un nuovo oggetto(che secondo le specifiche uml si pone ad un livello piu basso rispetto alle altre classi).Creando una nuova classe con linea di vita i tool la allineano alle classi gia esistenti.Come risolvere?

non so dirti non uso il togheter...