UML: Introduzione Corso IS I - 2002/03 Gianna Reggio 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) three amigos Jacobson et all (1992) …. moltissimi altri differenti metodi, basati su differenti rappresentazioni visuali per classi/oggetti/… 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 1.2 • 1999 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) frammento * corrispondente definizione XML – concreta * diagrammi 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 versione 0.0 UML Sources • definizione ufficiale (http://www.omg.org/) Unified Modeling Language Specification 1.3 (file 99-06-08.pdf nel sito del corso) – 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 versione 0.0