Upload
dohanh
View
219
Download
0
Embed Size (px)
Citation preview
Analisi e diagrammi di struttura: esercizi
Angelo Di Iorio(in parte di: Gianpiero Favini e Sara Zuppiroli)
A.A. 2012-2013
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 1 / 37
Dove eravamo?
Dopo l’analisi dei requisiti:I Conosciamo i casi d’uso di un sistemaI Abbiamo steso una specifica dei requisitiI Abbiamo sequenze di eventiI Abbiamo un glossario di termini di progetto
Prossimi passi:I Analisi: dare struttura ai requisiti, e decidere entità e
relazioni tra entitàI Progettazione: raffinare e decidere come implementare il
sistema analizzato
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 2 / 37
Analisi vs. Progettazione
L’analisi modella i concetti chiave del dominio del problema.La progettazione adatta il modello di analisi e lo completaaffinché diventi implementabile.
In altre parole...L’analisi è più vicina al problema.La progettazione è più vicina all’implementazione.
Dal punto di vista di UML, si usano gli stessi diagrammi condiversi livelli di dettaglio: i diagrammi di analisi sono più’astratti’ di quelli di progettazione
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 3 / 37
Come procedere: analisi
Estrarre un insieme di classi di analisi dalla specifica delproblema (ne parleremo tra poco)Ragionare su queste classi: quali attributi e qualioperazioni devono fornire?Stendere una mappa delle classi e delle loro relazioni.Modellare la dinamica delle classi con i diagrammi dicomportamento.Procedere per raffinamenti successivi fino a quando ilmodello rappresenta efficacemente il dominio del problema.
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 4 / 37
Come procedere: progettazione
Si parte dal modello di analisi che contiene classiabbastanza generiche, e lo si raffina.I costrutti più astratti di UML vengono trasformati in altri piùconcreti che possono essere implementati in un linguaggiodi programmazione OO.Finalmente si considerano i vincoli di piattaforma elinguaggio, e i requisiti non funzionali.Le classi di analisi si trasformano in classi di progettazione(non c’è corrispondenza 1 a 1)Ancora una volta si procede per raffinamenti successivi.Il risultato è un modello pronto per l’implementazione.
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 5 / 37
Come estrarre le classi di analisi
Una classe di analisi modella un concetto o entità delproblema: se la specifica dei casi d’uso è buona i concettibasilari sono già in evidenza.I candidati più probabili sono nomi che compaiono nellaspecifica e nella documentazione.Una ragione in più per tenere un glossario di progetto: leparole nel glossario sono spesso candidati ideali perdiventare classi di analisi.Le classi di analisi non sopravviveranno necessariamentealla progettazione.Due metodi molto diffusi per trovare le classi di analisi:
I analisi nome-verboI analisi CRC
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 6 / 37
Analisi nome-verbo
Si analizza tutta la documentazione disponibile,selezionando nomi e verbi.
I I nomi: (es: conto corrente) sono i potenziali candidati perdivenire classi o attributi.
I I predicati nominali: (es: numero del conto corrente) sono ipotenziali candidati per divenire classi o attributi.
I I verbi: (es: aprire) sono potenziali candidati a divenireresponsabilità di classe.
Notate che ancora non parliamo di UML!
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 7 / 37
Analisi CRCClass-Responsibilities-CollaboratorsSi usano post-it divisi in tre sezioni chiamate proprio inquesto modo.Si tratta di un metodo di brainstorming di gruppo checoinvolge sviluppatori, esperti, committenti.Si individuano i nomi delle classi, un insieme ristretto diresponsabilità (cose che la classe sa/fa) e di classicollaboratori (alle quali viene richiestocomportamento/informazione).Le schede sono piazzate su un tavolo, la loro vicinanzafisica rispecchia quella logica.Si procede iterativamente.Usato in congiunzione con analisi nome-verbo.
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 8 / 37
Un po’ di notazione UMLPerson
-age : int
+getAge() : int
Person
age = 10
Jim : Person
: Person
Le classi possono avere fino a 3 slot:I uno per il nome (in UpperCamelCase) e l’eventuale
stereotipo (slot obbligatorio)I uno per gli attributi (opzionale)I uno per le operazioni (opzionale)
Gli oggetti (istanze) hanno una notazione molto simileI Il titolo degli oggetti è sottolineato e del tipo ’nome : classe’,
con nome opzionale.I Gli oggetti non hanno uno slot per le operazioni, possono
definire valori per gli attributi.Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 9 / 37
Attributi e Operazioni
visibilità nome molteplicità:tipo=valoreIniziale
visibilità nome (nomeParam:tipoParam, . . . ): tipoRestituito
Diversi livelli di dettaglio in fase di analisi e progettazione.Inizialmente solo gli attributi più importantiTipi di visibilità:
I + publicI - privateI # protectedI ∼ package
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 10 / 37
Relazioni tra classi
Ci sono alcune relazioni statiche tra classi particolarmenteimportanti in UML:
GeneralizzazioneAssociazioneAggregazione/Composizione
Vi sono poi altre due relazioni che possono legare le classianche ad altri tipi di elementi (di cui per ora non parleremo):
DipendenzaRealizzazione
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 11 / 37
Generalizzazione
VertebrateMammal
Relazione tassonomica tra un elemento più generale e unoche lo specifica.La freccia parte dall’elemento specifico e punta versoquello più generale.Si tratta dell’ereditarietà in UML.Tra tutte le relazioni, questa è la più forte e vincolante.
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 12 / 37
Associazione
PersonCompanyemployeeemployer
*1employs
Si tratta del tipo di relazione più generico: indica solol’esistenza di collegamenti (link) tra le istanze delle classi.Rappresenta l’abilità di un’istanza di mandare messaggi aun’altra istanza.Può coinvolgere più di due classi e la stessa classe più diuna volta.Tra le relazioni è anche la più flessibile e la menovincolante.
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 13 / 37
Associazione: alcuni ornamenti
PersonCompanyemployeeemployer
*1employs
Nome: opzionale.Triangolo direzionale: opzionale. Specifica la direzione incui leggere l’associazione (aumenta la leggibilità).Ruoli: opzionali a ciascun estremo.Molteplicità: opzionale a ciascun estremo.
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 14 / 37
Molteplicità
PersonCompanyemployeeemployer
*1employs
Indica quante istanze della classe in quell’estremo possonopartecipare alla relazione.Può essere un numero o un intervallo min..max, con * cheindica l’infinito.1..3,7 significa ’da 1 a 3 oppure 7’.Molteplicità frequenti sono:
I 1I 0..1I 1..*I *
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 15 / 37
Aggregazione e composizione
Si tratta di particolari forme di associazione che rappresentanola relazione whole-part (tutto-parte) tra un aggregato e le sueparti.
Aggregazione: relazione poco forte, le parti esistonoanche senza il tutto (es. i computer e il loro cluster).
I È possibile che più aggregati condividano una stessa parte.Composizione: relazione molto forte, le parti dipendonodal tutto e non possono esistere al di fuori di esso (es. lestanze e la casa).
I Se il composito viene distrutto, deve distruggere tutte le sueparti o cederne la responsabilità a qualche altro oggetto.
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 16 / 37
Aggregazione e composizione: notazione
Aggregazione
ComputerCluster Computer*0..1
Composizione
House Room1 1..*
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 17 / 37
Esercizi
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 18 / 37
De Montfort University (DMU)
Disegnare un diagramma delle classi di analisi per modellare ildominio:
De Montfort University (DMU) offre percorsi formativiciascuno dei quali porta al conseguimento di un titolo diriconoscimento.Ogni titolo di riconoscimento è pubblicizzato nel prospettoinformativo di DMUOgni percorso comprende differenti moduliGli studenti di un percorso seguono fino a 8 moduli all’annoAlcuni titoli sono ‘congiunti’, ad esempio uno studente puòiscriversi a due differenti percorsi (come ‘contabilità’ e‘ragioneria’)
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 19 / 37
De Montfort University (DMU)
Disegnare un diagramma delle classi di analisi per modellare ildominio:
De Montfort University (DMU) offre percorsi formativiciascuno dei quali porta al conseguimento di un titolo diriconoscimento.Ogni titolo di riconoscimento è pubblicizzato nel prospettoinformativo di DMUOgni percorso comprende differenti moduliGli studenti di un percorso seguono fino a 8 moduli all’annoAlcuni titoli sono ‘congiunti’, ad esempio uno studente puòiscriversi a due differenti percorsi (come ‘contabilità’ e‘ragioneria’)
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 20 / 37
De Montfort University (DMU)
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 21 / 37
De Montfort University (DMU)Completare il diagramma per rappresentare (parte 1):
La DMU è composta di 6 FacoltàOgni facoltà definisce un numero di materie (‘contabilità’,‘ragioneria’, etc.) di cui si occupano moduli differenti (unamateria per modulo) e che sono insegnate in percorsidifferenti.
E successivamente (parte 2):Il consiglio di Facoltà è composto da studenti e da staffaccademico o ammistrativoLo staff accademico insegna un numero arbitrario di moduliLo staff accademico supervisiona diversi studenti, ciascunodei quali segue un percorso formativoAlcuni rappresentanti dello staff amministrativo sonoconsiglieri ma non insegnano
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 22 / 37
De Montfort University (DMU)
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 23 / 37
De Montfort University (DMU)
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 24 / 37
Esercizio Birreria
Compilare e discutere le schede CRC per rappresentare ilseguente dominio:Una birreria è frequentata dai clienti e dallo staff. Inparticolare, lo staff raccoglie gli ordini e consegna le birre.Si paga alla cassa (e lo staff può dare il resto senecessario). Il gestore del pub si occupa, oltre che delservizio, anche di controllare la disponibilità di ogni birra infrigo e, se necessario, aggiungerne altre.
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 25 / 37
Esercizio Birreria: CRC staff
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 26 / 37
Esercizio Birreria: CRC staff
Si può aggiungere qualche classe e collaborator?Qualche altra responsibility?
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 27 / 37
Esercizio Birreria: CRC gestore
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 28 / 37
Esercizio Birreria: CRC cliente
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 29 / 37
Esercizio Birreria: birra e frigo
C’è sufficiente coesione e disaccoppiamento?Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 30 / 37
Esercizio Elezioni
Compilare e discutere le schede CRC per rappresentare ilseguente dominio:Un sistema di voto da remoto prevede due modalità:touch-screen o via tastiera. Ogni sistema permette diesprimere il proprio voto per le elezioni comunali, regionalie nazionali. Gli elettori per votare inseriscono nel sistemaun codice che gli è stato fornito in precedenza e, se il codiceè corretto e non ancora usato, il sistema mostra a video lepossibili scelte. E l’elettore esprime la sua preferenza.
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 31 / 37
Esercizio Elezioni
Chi sono i collaborator?Qualche altra responsibility?
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 32 / 37
Esercizio Elezioni
Altri collaboratori?
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 33 / 37
Esercizio Elezioni
Altre classi?
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 34 / 37
Esercizio Filosofi
Si usino un diagramma delle classi e uno degli oggetti perrappresentare:Tutti i filosofi sono uomini e tutti gli uomini sono mortali. Tuttigli uomini hanno un nome. Ogni filosofo è discepolo di almassimo un altro filosofo, e un filosofo può avere unqualunque numero di discepoli. Inoltre, un filosofo puòprodurre un qualunque numero di opere, ciascuna dellequali ha un titolo. Socrate, Platone e Aristotele sono filosofi;Platone è discepolo di Socrate e Aristotele è discepolo diPlatone. Platone ha scritto ‘La Repubblica’.
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 35 / 37
Esercizio Filosofi: classi
Laboratorio Ingegneria del Software () Analisi e diagrammi di struttura: esercizi A.A. 2012-2013 36 / 37