PROGETTAZIONE DEL SOFTWARE EMILIANO CASALICCHIO DIPARTIMENTO DI INFORMATICA E SISTEMISTICA SAPIENZA UNIVERSITÀ DI ROMA SEDE DI RIETI HTTP://WWW.CE.UNIROMA2.IT/COURSES/PSW! Cos è UML UNIFIED MODELING LANGUAGE! Linguaggi di modellazione formali e informali! Livelli d uso di UML! Viste del modello! Panoramica sui diagrammi! Note e Stereotipi! Use Case! Activity Diagram! State Machine Diagram! Class/Object Diagram! Sequence Diagram E.Casalicchio -- Progettazione del Software a.a. 2009/2010 2
LA STORIA DI UML!!! UML sta per Unified Modeling Language, perché il progetto UML nasce nel 1994 come unificazione di:! Booch! Rumbaugh: OMT (Object Medeling Technique)! Jacobson: OOSE (Object-Oriented Software Engineering) Storia! 1995: Versione 0.8 (Booch, Rumbaugh)! 1996: Versione 0.9 (Booch, Rumbaugh, Jacbson)! Versione 1.0 (BRJ + Digital, IBM, HP,...)! 1999, 2004: Versione 1,3, 1.4, 1.5, UML si diffonde universalmente! 2005: Versione 2.0, nuova versione (estende la versione 1.5) Riferimento:! G. Booch, J. Rumbaugh, I. Jacobson, The unified modeling language user guide, Addison Wesley, 1999. (2 ed. 2005)! http://www.uml.org/ E.Casalicchio (basato su materiale di G.De Giacomo) Progettazione del SW II Parte 3 COS È UML! Il linuaggio di modellazione standard per lo sviluppo di software e sistemi! UML permette di! Tenere traccia dei componenti di cui si ha bisogno e la loro funzione! Quali requisiti del cliente soddisfano! Condividere il lavoro (ossia i vari artefatti progettuali)! UML permette di modellare un sistema! Astrarre i dettagli inutili! Dare una visione semplificata del sistema/problema! Un linguaggio di modellazione formale permette di essere precisi come con un linguaggio di programmazine! precisione =machine-readability, intrepretability, executability, and transformation E.Casalicchio -- Progettazione del Software a.a. 2009/2010 4
LINGUAGGIO DI MODELLAZIONE! Notazione + Semantica! Notazione = elementi descrittivi quali! Pseudo-codice! Codice! Figure! Diagrammi! Descrizione testuale!! Semantica = descrizione del significato degli elementi descrittivi! Perche UML? Ha 6 vantagi E.Casalicchio -- Progettazione del Software a.a. 2009/2010 5 VANTAGGI DI UML! E un linguaggio formale! E conciso! E completo! E Scalabile! Costruito sull esperienza (on lesson learned)! E standard E.Casalicchio -- Progettazione del Software a.a. 2009/2010 6
ESEMPIO: MODELLAZIONE MEDIANTE CODICE E.Casalicchio -- Progettazione del Software a.a. 2009/2010 7 ESEMPIO: MODELLAZIONE MEDIANTE CODICE! Nessun dettaglio viene astratto! Modella solo l implementazione del SW! Completo e non-ambiguo! Non mi da informazioni su! Come verrà usato il sw! Chi utilizzarà il software! Come verrà sviluppato, distribuito e supportato! Non da una visione globale the big picture is missing entirely! Non mi da strumenti per comunicare, ossia SPIEGARE il software! Come, le varie componenti interaggiscono e come soddisfano i requisiti?! Il codice non sempre può essere riutilizzato, un modello può spesso essere riutilizzato E.Casalicchio -- Progettazione del Software a.a. 2009/2010 8
MODELLARE CON LINGUAGGI INFORMALI! Verbosità, ambiguità e confusione! Non ci sono regole esatte per la notazione! Il modelo non può essere trasformato, e.g. non si può generare codice a partire dal modelo E.Casalicchio -- Progettazione del Software a.a. 2009/2010 9 MODELLARE CON LINGUAGGI INFORMALI E.Casalicchio -- Progettazione del Software a.a. 2009/2010 10
MODELLARE CON LINGUAGGI FORMALI! No-ambiguità, giusto livello di verbosità, no confisione! Preciso significato attribuito alla notazione! Un diagramma (composizione di elementi della notazione) descrive una parte del modello ma non tutto! Possibilità di trasformare il modello, e.g. generare codice E.Casalicchio -- Progettazione del Software a.a. 2009/2010 11 ESEMPIO DI DIAGRAMMA FORMALE: IL CLASS DIAGRAM E.Casalicchio -- Progettazione del Software a.a. 2009/2010 12
FORMALISMO = DISAMBIGUAZIONE E.Casalicchio -- Progettazione del Software a.a. 2009/2010 13 LIVELLI DI UTILIZZO DI UML! Come una bozza (as a sketch)! Come una mappa/disegno tecnico (as a blueprint)! Come un linguaggio di programmazione E.Casalicchio -- Progettazione del Software a.a. 2009/2010 14
! Vista Logica! Parti del sistema KRUCTHEN 4+1 VIEW MODEL! Class, object, state machine, interaction diagram! Vista di Processo! Processo nel sistema! Activity diagram! Vista Fisica! Come il processo è portato alla vita! Deployment diagram! Vista Use Case! Funzionalità del sistema viste dal mondo esterno! Use Case, description, overview diagram Logical View Physical View Use Case View Process View Development View E.Casalicchio -- Progettazione del Software a.a. 2009/2010 15 UN ALTRA CLASSIFICAZIONE DEI DIAGRAMMI UML! Diagrammi strutturali:! Diagramma delle classi e degli oggetti (class and object diagram)! Diagrammi comportamentali:! Diagramma degli use case (use case diagram),! Diagramma degli stati e delle transizioni (state/transition diagram),! Interaction (Sequence e Collaboration diagram),! Activity diagram! Diagrammi architetturali:! Component diagram! Deployment diagram E.Casalicchio (basato su materiale di G.De Giacomo) Progettazione del SW II Parte 16
! Cos è UML UNIFIED MODELING LANGUAGE! Linguaggi di modellazione formali e informali! Livelli d uso di UML! Viste del modello! Panoramica sui diagrammi! Note e Stereotipi! Use Case! Activity Diagram! State Machine Diagram! Class/Object Diagram! Sequence Diagram E.Casalicchio -- Progettazione del Software a.a. 2009/2010 17 NOTE! Note: commenti addizionali = commenti nel codice E.Casalicchio -- Progettazione del Software a.a. 2009/2010 18
STEREOTIPI! Sterotype: uso speciale o intento d uso di un elemento! applicabile ad ogni elemento E.Casalicchio -- Progettazione del Software a.a. 2009/2010 19 USE CASE DIAGRAM! Composto da Actors e Use Case! Funzionalità del sistema viste dal mondo esterno E.Casalicchio -- Progettazione del Software a.a. 2009/2010 20
USE CASE: BOUNDARIES E REFINEMENT (INCLUDE) E.Casalicchio -- Progettazione del Software a.a. 2009/2010 21 Logical View Process View ACTIVITY DIAGRAM Use Case View Physical View Development View! come il sistema svolgerà i suoi compiti! simile ai flow-chart! modellazione dei business process E.Casalicchio -- Progettazione del Software a.a. 2009/2010 22
ACTIVITY DIAGRAM: ACTIVITY AND ACTIONS E.Casalicchio -- Progettazione del Software a.a. 2009/2010 23 ACTIVITY DIAGRAM: DECISION E.Casalicchio -- Progettazione del Software a.a. 2009/2010 24
ACTIVITY DIAGRAM: DECISION E.Casalicchio -- Progettazione del Software a.a. 2009/2010 25 ACTIVITY DIAGRAM: UML 1.X VS UML 2.0 E.Casalicchio -- Progettazione del Software a.a. 2009/2010 26
ACTIVITY DIAGRAM: FORK AND JOIN E.Casalicchio -- Progettazione del Software a.a. 2009/2010 27 ACTIVITY DIAGRAM: CHIAMATA DI ATTIVITÀ E.Casalicchio -- Progettazione del Software a.a. 2009/2010 28
ACTIVITY DIAGRAM: PASSAGGIO DI OGGETTI, INPUT/ OUTPUT, TRASFORMAZIONI E.Casalicchio -- Progettazione del Software a.a. 2009/2010 29 ACTIVITY DIAGRAM: CAMBIAMENTO DI STATO E.Casalicchio -- Progettazione del Software a.a. 2009/2010 30
ACTIVITY DIAGRAM: SWIMLANE! Partecipanti differenti (gruppi, ruoli) E.Casalicchio -- Progettazione del Software a.a. 2009/2010 31 CLASS DIAGRAM Logical View Process View! Il diagramm UML più conosciuto! descrive i differenti tipi di oggetti presenti nel sistema e le relazioni che intercorrono tra le classi di oggetti. Physical View Use Case View Development View E.Casalicchio -- Progettazione del Software a.a. 2009/2010 32
CLASS DIAGRAM E.Casalicchio -- Progettazione del Software a.a. 2009/2010 33 CLASS DIAGRAM: ATTRIBUTI E OPERAZIONI E.Casalicchio -- Progettazione del Software a.a. 2009/2010 34
SEQUENCE DIAGRAM! Come le parti di un sistema interagiscono! Catturano l ordine delle interazioni tra le parti E.Casalicchio -- Progettazione del Software a.a. 2009/2010 35 SEQUENCE DIAGRAM E.Casalicchio -- Progettazione del Software a.a. 2009/2010 36
SEQUENCE DIAGRAM E.Casalicchio -- Progettazione del Software a.a. 2009/2010 37 STATE MACHINE DIAGRAM! Quando lo stato di un oggetto/sistema è un elemento importante! real-time, mission critical systems! Dedicated devices il cui comportamento è definito dallo stato (ATM)! First-person shooter games (Doom, Half-life) Logical View Physical View Use Case View Process View Development View E.Casalicchio -- Progettazione del Software a.a. 2009/2010 38
STATE MACHINE DIAGRAM: TRIGGER, GUARDIE E TRANSIZIONI E.Casalicchio -- Progettazione del Software a.a. 2009/2010 39 STATE MACHINE DIAGRAM: TRIGGER, GUARDIE E TRANSIZIONI E.Casalicchio -- Progettazione del Software a.a. 2009/2010 40