Lezione 6. Modelli astratti: ER, UML Class diagrams, DF • • • Modelli astratti classificati secondo il loro orientamento a rappresentare dati/funzioni/controllo. Entity-Relation (-Attribute) diagrams UML Class diagrams and class relationships • [S2000, Cap. 7] [GJM91, Cap. 5] [BRJ99, Capp. 4, 5] dependency, generalization, association, aggregation, composition Data-Flow diagrams Slide 1 System models nel contesto R.E. Feasibility study Requirements elicitation and analysis Requir ements specification Feasibility report Requirements validation System models User and system requirements Requirements document System models help understand data, functionality, and perhaps control aspects of the system, and to communicate with the Client. They must leave out details Different models provide complementary viewpoints about the system (not VORD viewpoints) Slide 2 Sistemi = funzioni + dati + controllo Programmi Algoritmi Sistemi Dati Algoritmi Logica Funzioni Dati Controllo Controllo Slide 3 Relazioni fra modelli rispetto alle ‘dimensioni’ dati/funzioni Rappresentazione di dati e loro relazioni E.R. E. R. = Entity relation O-O = Object-Oriented (Class diagrams) XFSA = Extended Finite State Machines P.A. = Process algebra (p.es LOTOS) = meno formale, incompleto (black-box), Enfatizza un solo aspetto ==> adatto alla fase dei Requirements Usano ereditarieta’ O-O Trattano il controllo Rappresentazione di funzioni e loro input-output XFSM/P.A. Data Flow Slide 4 Formalismi rispetto Dati/Funzioni/Controllo FSM = Finite State Machines XFSM = Extended FSM PN = Petri Net Pr/T = Predicate/Transition O-O = Object-Oriented Design DFD = Data Flow Diagrams ER = Entity-Relation diagrams ADT = Abstract Data Types Z Slide 5 Expressive dimensions and model applicability Requiremens analysis Abstract models 1 dim. Formal spec Software High Spec. Level architecture Design Low Level design ER (data) DFD (function) FSM, PN, Basic LOTOS (Control + Function) 2 dim. 3 dim. ADT, Z (Data + Function) XFSM, Pr/T Nets, Full LOTOS O-O (Data+Function+Control), Slide 6 ER diagrams for data modeling Entity-relation-attribute (ER or ERA) model identifies the entities in the system, their relations and attributes Also used to describe the logical structure of data processed by the system Widely used in database design ==> information systems. Can readily be implemented using commercial relational databases Similar to UML Class Diagrams • but classes include attributes and operations Slide 7 Example: ERA structure of a Software Design Design Complements the DFD for the CASE toolset (slide 11) 1 is-a has-nodes C-date: creation date M-Date: modification date name description C-date M-date 1 has-links 1 n n 1 Node has-links 1 name type name type 2 1 links 1 La freccia serve solo a facilitare la lettura della relazione ed è indipendente dalle indicazioni di molteplicità Link n 1 has-labels has-labels Label n name text icon n Slide 8 Node<---2-<links>-1----Link denota una relazione ternaria in Node X Node X Link • NOTA: il diagramma non dice se e’ ammesso il caso (N1, N2, Link1) links e (N1, N2, Link2) links, o se uno stesso link puo’ essere associato a 2 coppie distinte di nodi. Node----1-<has_links>-N--->Link denota una relazione ad arità non fissa in... infinito U K=0 • Node X Link k Rimarrebbe poi da stabilire la mutua consistenza di link e has_links... Slide 9 nota La interpretazione delle etichette di molteplicità data da Sommerville, illustrata nella slide precedente, appare diversa da quella adottata in UML, e piu’ problematica… Per esempio, in una relazione Studente x Classe dove ogni studente puo’ seguire piu’ classi, e ogni classe avere piu’ studenti, si dovrebbero usare due stichette ‘n’ per le molteplicità. Ma che senso avrebbe considerare tuple a dimensione variabile che contengono piu’ studenti e più classi? In UML, le relazioni sono binarie, e le molteplicità determinano semplicemente vincoli sull’insieme di coppie associato alla relazione. Ma provando ad interpretare anche la relazione links di Sommerville come binaria, e cercando di interpretare le indicazioni di molteplicità in Node<--2-<links>-1----Link come vincoli a questa relazione binaria, si giunge a contraddizione, poiché nell’insieme di coppie di links è vero che un link appare associato sempre a due diversi nodi, ma non sempre un nodo appare associato ad un solo link. Slide 10 E-R notation [GJM91] Relations are binary, but might have attributes too. Name Age student Sex enrolledIn class Proficiency Subject CourseId MaxEnroll Relation is formed of pairs in student X class (or triples in student X class X scores) Slide 11 La relazione, sempre binaria, puo’ essere vincolata: A R B A R B is one to one A R B A R B is one to many A R B A R B is many to one A R B A R B is many to many • Non si puo’ esprimere graficamente (formalmente) che una classe deve avere almeno 5 studenti • … o che uno studente puo’ prendere al massimo 4 classi Slide 12 Notazioni di molteplicità da UML Risolvono parte dei limiti espressivi precedenti A A A A 1 B 1..* Ogni A e’ associato con un B B Ogni A e’ associato con uno o piu’ B 0..1 B Ogni A e’ associato con zero o un B * B Ogni A e’ associato con zero o piu’ B Ammesse anche le annotazioni ‘11’ (squadra-calciatore), ‘2..4’ (canasta-giocatore), ‘2,4’ (automobile-sportello). Slide 13 node class 2 0..4 * 5..* link student Relazione fra nodi e link in un design (cfr. Slide 21) una classe deve avere almeno 5 studenti e uno studente puo’ seguire al massimo 4 classi Slide 14 Class diagrams in UML Descrizione di un insieme di oggetti che condividono gli stessi attributi, operazioni, relazioni, semantica. Shape nome origin attributi move() resize() display() operazioni Slide 15 Attributo Una proprietà della classe, che puo’ assumere diversi valori nelle diverse istanze della classe: in ogni istante, un oggetto di una classe avrà uno specifico valore per ogni attributo della classe. Customer Wall name address phone birthDate height: Float width: Float thickness: Float isLoadBearing: Boolean = false Classe dell’ attributo Valore iniziale di default Slide 16 Operazione Un servizio che puo’ essere richiesto a qualunque oggetto della classe, per (far) fare qualcosa all’oggetto stesso, come modificare il valore di un suo attributo. Rectangle TemperatureSensor add() grow() move() isEmpty() reset() setAlarm(t: Temperature) value(): Temperature Segnatura dell’operazione (classi degli argomenti e dei risultati) Funzione (restituisce un valore) Slide 17 Responsabilità Un contratto o obbligo di cui una classe si fa carico. Le responsabilità di una classe sono la formulazione astratta (in testo libero) dei servizi che essa svolge. FraudAgent Responsibilities -- determine the risk of a customer order -- handle customer-specific criteria for fraud Slide 18 Criteri per la identificazione di classi Come identificare le classi utili? Le classi costituiscono il vocabolario del sistema; esse modellano astrazioni di entità che si trovano già: - nel dominio del problema da risolvere (sistema da realizzare), e - nella tecnologia che si intende utilizzare per risolverlo (realizzarlo). 1. Identificare le entità che utenti/implementatori usano per descrivere problema/soluzione. Tecniche possibili: CRC cards, use-case-based analysis 2. Individuare e ripartire in modo bilanciato le responsabilità fra di esse: ogni entità deve fare una cosa sola, e farla bene 3. Modellare in concreto ogni ‘entitità responsabilizzata’ come una classe, con attributi e operazioni. Slide 19 Classi per un sistema di vendita merci Queste classi modellano entità fisiche del dominio del problema Shipment Entità astratta, serve a tener traccia degli spostamenti del prodotto spedito Transaction Entità astratta, legata alla soluzione del problema Slide 20 Distribuzione di responsabilità in Smalltalk Model View Responsibilities -- manage the state of the model Controller Responsibilities -- render the model on the screen -- manage movement and resizing of the view -- intercept user events Responsibilities -- synchronize changes in the model and its views Slide 21 Relazioni fra classi Dopo aver individuato le classi, come modelli delle entità in gioco, vanno modellate le loro relazioni. • Dependencies (relazione dinamica) » ‘using’: un’autoclave usa una pompa per pompare acqua • generalizations » una classe è una specializzazione di una classe piu’ generale » (superclass/subclass, parent/child): » una bifora è una specializzazione di una finestra • associations (relazione statica) » relazioni strutturali: » una stanza consiste di pareti, soffitto, finestre, porta,… Slide 22 Esempi di relazioni Slide 23 1. Dependency X usa Y. Un cambiamento nella classe Y di arrivo della freccia (event) puo’ comportare la necessità di cambiare la classe X di partenza (window), ma non viceversa. Tipica dipendenza: una operazione della classe X ha un parametro di classe Y: FilmClip name playOn(c: Channel) changeOrder() status() Channel Il metodo PlayOn lavora su c, attivando metodi di classe Channel. Se la classe Channel cambia, e non offre piu’ gli stessi metodi, PlayOn deve tenerne conto. Slide 24 2. Generalization X è una specializzazione di Y, o Y è una generalizzazione di X Gli oggetti della sottoclasse (figlio) possono essere usati ovunque vengono usati quelli della superclasse (genitore), ma non viceversa Un falegname puo’ essere usato ogni volta che si puo’ usare un uomo, ma un uomo non è sempre usabile dove serve un falegname Inheritance. Il figlio eredita gli attributi e le operazioni del padre, e spesso ne possiede altri, che lo rendono appunto specializzato. Polimorfismo. Se una sottoclasse definisce una operazione con lo stesso nome e segnatura di una operazione di una superclasse, l’operazione del figlio rimpiazza quella del padre. Multiple inheritance. Una classe puo’ ereditare da piu’ super-classi. Slide 25 Inheritance, abstract class, abstract operation Abstract class Abstract operation - Una classe astratta non puo’ essere istanziata - Una operazione astratta in classe X deve essere implementata dalle sottoclassi di X Slide 26 3. Association Name and name direction Person Works for Company Role names Person Employee 1..* Employer * Company Multiplicity Association è una relazione generica esistono due casi particolari di association: aggregation e composition Slide 27 3.1 Aggregation X has_a Y Una associazione fra un ‘tutto’ e le sue ‘parti’ (whole/part), che pero’ non implica di per sé relazioni fra le durate in vita dei due oggetti. School 1..* Student Slide 28 3.2 Composition (‘composite aggregation’) X ha_come_parte Y E’ una aggregazione forte: • • • • • Y appartiene a un solo X (nella aggregazione semplice no), e il suo intervallo di esistenza vita è incluso in quello di X. Parti con molteplicità non fissa possono essere create solo dopo il tutto, e muoiono assieme ad esso, o vengono esplicit. eliminate prima Il tutto gestisce la creazione e distruzione delle sue parti window composition Frame Slide 29 Esempi di aggregation e composition Structural relationships Slide 30 Data-flow diagrams Si diffondono dopo la pubblicazione del testo di De Marco (‘78) su Structured Analysis and System Specification. Il sistema è visto come una rete, in cui i nodi rappresentano funzioni, e gli archi il flusso di dati. • Le funzioni possono avere diversi livelli di astrazione e complessita’, dalla somma di due numeri al calcolo di una tabella di stipendi, e possono anche rappresentare funzioni svolte manualmente. Escludono la descrizione del flusso di controllo I DFD possono essere nidificati, con nodi funzione esplosi in nuovi DFD: in questo caso lo sviluppo avviene in modo top-down, o anche misto (topdown e bottom-up) Quando usati in fase di Architectural Design, descrivono lo scambio dati fra sottosistemi Slide 31 Modelli simili a data-flow diagrams PERT diagrams (Project Evaluation and Review Technique) • Activity networks • rappresentano esplicitamente fork e join, come Petri nets, e nodi di scelta (rombi o esagoni), come i flow charts. Predicate/Transition Petri nets [trattate in questo corso] • (Vedi [S2000], Fig. 4.6) - Simile a diagramma PERT, ma con nodi attività (funzione) e nodi ‘milestone’ (dati). UML activity diagrams [trattate in questo corso] • Struttura un progetto come insieme parzialmente ordinato di attività, ciascuno con una durata (non identifica i dati) I predicati associati alle transizioni nella rete rappresentano funzioni; il flusso dei dati è modellato, piu’ dettagliatamente che nei DFD, dal flusso dei token. Dataflow algorithms/architectures [Dennis et al., 1975] • Il flusso di controllo è solo determinato dall’arrivo dei dati agli operatori (nodi funzione), detti attori. Nei control-flow algorithms tradizionali, il controllo è gestito dal program counter. Elemento comune: ordinamento parziale delle attività (operazioni, funzioni) Slide 32 DFD for processing an equipment order Signed order form Completed order form Or der details + blank order form Complete order form Valida te order Signed order form Send to supplier Record order Order details Signed order form Checked and signed order + order notification Adjust available budget Order amount + account details Orders file Budget file Slide 33 DFD for equipment procurement Delivery note Specify equipment requir ed Equipment spec. Checked spec. Validate specification Supplier list Equipment spec. Supplier database Find suppliers Accept delivery of equipment Get cost estimates Spec. + supplier + estimate Delivery note Order notification Choose supplier Order details + Blank order form Place equipment order Checked and signed or der form Check delivered items Installation instructions Install equipment Installation acceptance Accept delivered equipment Equipment details Equipment database Slide 34 DFD for a CASE toolset Input design Valid design Design editor Referenced designs Design database Checked design Design cross checker and Design analysis Design analyser Checked design Code skeleton generator User report Report generator Output code Design database Slide 35 Data Flow Diagrams - varianti [GJM91, sez.5.5.1] Adatti a modellare le funzioni di sistemi informativi Semiformali: sintassi formale, semantica informale Function Data-flow Input device Output device Data store Slide 36 DFD per una espressione aritmetica (a+b) * (c + a*d) b a + d c * + * Slide 37 DFD per sistema informativo di una biblioteca Slide 38 DFD della biblioteca: parziale raffinamento Slide 39 ‘Limiti’ del modello DFD La semantica di una funzione e’ tutta nel suo nome... • • ‘+’ ‘Find Book Position’ e’ autoesplicativa lo e’meno Un DFD ‘arricchito’ potrebbe includere una notazione formale per definire funzioni come FindBookPosition: • if author name and book title available then » Determine book position (if book exists; » Otherwise print message) • elseif only the author name is given then » Provide list of all books by that author and » Ask user to select • elseif only the book title is given then... Slide 40 Aspetti di controllo non specificati. Es: • • L’ordine in cui le funzioni vengono eseguite Gli eventuali segnali di controllo che attivano le funzioni Un DFD ‘arricchito’ potrebbe includere archi di controllo (come in Data/Control charts di VORD) trigger f Slide 41 Ambiguita’ sulle configurazioni in input e output • in3 e out2 sono sempre necessari? in1 in2 in3 out1 f out2 Un DFD ‘arricchito’ potrebbe specificare modalita’ AND oppure OR per gli output Slide 42 Ambiguita’ sulla capacita’ dei canali di flusso • Sono ammesse piu’ istanze di d nel canale? (buffering) f1 • f2 Un DFD ‘arricchito’ potrebbe specificare per ogni canale la modalita’ di trasmissione synchronous / asynchronous Ambiguita’ sull’effetto del flusso dei dati sui data base • d (Shelves - {book} ? ListOfAuthors - {author} ?!) Non trattamento delle eccezioni • estendibile come nei Data/Control charts di VORD Slide 43