UML: Introduzione Corso IS I /03 Gianna Reggio Versione 0.0
versione 0.0 Cosa è UML UML = Unified Modelling Language –MODELLI *Il processo di sviluppo di un sistema software (o di una sua parte) consiste essenzialmente nel produrre una serie di elaborati (artifacts) che definiscono ˚tale sistema a diversi livelli di astrazione, es. requisiti dal punto di vista dell’utilizzatore del sistema, progetto (design) ˚particolari aspetti di tale sistema, es. prestazioni (Quality Of Service), dominio su cui opera il sistema *quindi occorre produrre descrizioni di (particolari aspetti) (parti di) sistemi software, i modelli –LANGUAGE *notazione visuale object-oriented per presentare modelli –UNIFIED *sviluppato dall’incontro dei “Three Amigos” *in pratica una collezione di varie notazioni integrate tra di loro, rese OO e “standardizzate”
versione 0.0 Storia di UML (1) linguaggi di programmazione OO –Simula-67, Smalltalk-80, Java 1996, C# (200?) metodi OO di analisi e design –Shalaer&Mellor (1988) –Coad & Yourdon (1990,1991) –Booch (1991) –Rumbaugh et all (1991) –Jacobson et all (1992) –…. moltissimi altri –differenti metodi, basati su differenti rappresentazioni visuali per classi/oggetti/… three amigos
versione 0.0 Storia di UML (2) metà anni novanta affermazione di *OMT-2 (Rumbaugh) *Booch "Object-oriented Analysis and Design with Applications", second edition, 1994 *Objectory (Jacobson) –molte similarità, inorporano vari aspetti da altri metodi 1994 Rumbaugh e Booch iniziano a lavorare alla Rational per unificare i loro metodi 1995 si unisce Jacobson sviluppo di UML e di “Unifed Software Development Process” 1996 UML 0.9
versione 0.0 Storia di UML (3) 1996 OMG (Object Management Group) lanciò una RFP per un linguaggio di modellazione OO Rational fonda un consorzio con IBM, HP, Microsoft, Oracle,… per rispondere 1997 UML 1.1 accettato dall’OMG 1998 UML UML 1.3 nel corso useremo questa 2001 UML 1.4 UML 2.0 –in corso di sviluppo (doveva già essere finito) –importanti aggiunge e modifiche di parti problematiche
versione 0.0 UML: Overview (1) Object-oriented Visuale (diagrammi, non puro testo) Un gruppo di notazioni integrate –class diagram *classi (operazioni, attributi), associazioni, specializzazione, aggregazione,… CONSTRAINTS –collaboration diagram *come alcuni oggetti collaborano tra di loro scambiandosi messaggi (chiamate di metodi) per realizzare una qualche attività –sequence diagram *collaboration ma mostrando l’ordine temporale degli scambi di messaggi –statechart diagram *comportamento dinamico di entità di vari tipi (oggetti, use case, metodi) –activity diagram *per descrivere workflow (attività e loro relazioni causali) –use case diagram *l’uso da parte dei fruitori di un sistema (prossimamente) –altre che non vedremo *component diagram, deployment diagram
versione 0.0 UML: Overview (2) estensibile, in realtà è una famiglia di linguaggi –estremamente generale e molto ricco *usarlo per particolari domini, particolari tipi di applicazioni, particolari tecnologie implementative richiede di adattarlo (terminologia: definire un profilo) ˚per Corba (vedere Sistemi distribuiti ??) ˚per Enterprise Java Beans (vedere TAPS) *offre lui stesso i meccanismi per definire le sue varianti (es. stereotypes) –espressioni, tipi, azioni (statements) parzialmente definiti è possibile usare il proprio linguaggio per tali parti *linguaggio naturale *di programmazione (Java, C++,…) *OCL (Object Constraint Language) per espressioni e tipi nel corso OCL + gli ovvi statement imperativi per il controllo del flusso
versione 0.0 UML: come è definito (1) sintassi –molto diverso dai soliti linguaggi (es. Java) –astratta *espressa in modo OO, utilizzando una semplicissima notazione OO (sottoinsieme di UML) *corrispondente definizione XML –concreta *diagrammi frammento esempio
versione 0.0 UML: come è definito (2) correttezza statica (well-formedness) –constraints (proprietà, condizioni logiche) sulla sintassi astratta semantica –definita informalmente utilizzando il linguaggio naturale –problemi *incompletezza, ambiguità, inconsistenze,...
versione 0.0 Cosa non è UML un modello del processo di sviluppo software un metodo OO per produrre software –esistono tantissimi metodi basati su UML *RUP (Rational Unified Process) *COMET (per sistemi distribuiti) *quello che useremo in questo corso (Astesiano&Reggio) uno strumento CASE (Computer Aided Software Engineering) –esistono molti strumenti che supportano l’uso di UML *Rational Rose *Together (che useremo nel corso) un linguaggio di programmazione OO –ma i tools aiutano a generare codice a partire dai modelli UML
versione 0.0 Sources definizione ufficiale ( Unified Modeling Language Specification 1.3 (file pdf nel sito del corso) pdf –per specialisti, o problemi specifici –notare che *Semantics ˚sintassi astratta + semantica informale *Notation guide ˚sintassi concreta Libro usato nel corso –UML, Bennet-Skelton-Lunn (serie Shaum’s Outlines) [edizione italiana in biblioteca] Altri libri/materiale vedere sito corso