La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Lezione 6. Modelli astratti: ER, UML Class diagrams, DF

Presentazioni simili


Presentazione sul tema: "Lezione 6. Modelli astratti: ER, UML Class diagrams, DF"— Transcript della presentazione:

1 Lezione 6. Modelli astratti: ER, UML Class diagrams, DF
[S2000, Cap. 7] [GJM91, Cap. 5] [BRJ99, Capp. 4, 5] Modelli astratti classificati secondo il loro orientamento a rappresentare dati/funzioni/controllo. Entity-Relation (-Attribute) diagrams UML Class diagrams and class relationships dependency, generalization, association, aggregation, composition Data-Flow diagrams

2 System models nel contesto R.E.
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)

3 Sistemi = funzioni + dati + controllo
Programmi Sistemi Algoritmi Dati Funzioni Dati Algoritmi Controllo Logica Controllo

4 Relazioni fra modelli rispetto alle ‘dimensioni’ dati/funzioni
Rappresentazione di dati e loro relazioni 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’ E.R. O-O Trattano il controllo Rappresentazione di funzioni e loro input-output XFSM/P.A. Data Flow

5 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

6 Expressive dimensions and model applicability
Formal spec Software Spec. Requiremens analysis Design Low Level design High Level architecture Abstract models ER (data) 1 dim. DFD (function) FSM, PN, Basic LOTOS (Control + Function) 2 dim. ADT, Z (Data + Function) XFSM, Pr/T Nets, Full LOTOS O-O (Data+Function+Control), 3 dim.

7 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

8 Example: ERA structure of a Software Design
Complements the DFD for the CASE toolset (slide 11) C-date: creation date M-Date: modification date La freccia serve solo a facilitare la lettura della relazione ed è indipendente dalle indicazioni di molteplicità

9 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... Rimarrebbe poi da stabilire la mutua consistenza di link e has_links... U K = 0 infinito Node X Link k

10 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.

11 E-R notation [GJM91] Relations are binary, but might have attributes too. Name Age Sex student Proficiency enrolledIn Subject CourseId MaxEnroll class Relation is formed of pairs in student X class (or triples in student X class X scores)

12 La relazione, sempre binaria, puo’ essere vincolata:
A R B is one to one A R B is one to many A R B is many to one 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

13 Notazioni di molteplicità da UML
Risolvono parte dei limiti espressivi precedenti 1 A B Ogni A e’ associato con un B 1..* A B Ogni A e’ associato con uno o piu’ B 0..1 A B Ogni A e’ associato con zero o un B * A 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).

14 2 * node link 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 0..4 5..* class student

15 Class diagrams in UML Descrizione di un insieme di oggetti che condividono gli stessi attributi, operazioni, relazioni, semantica. Shape origin move() resize() display() nome attributi operazioni

16 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 name address phone birthDate Wall height: Float width: Float thickness: Float isLoadBearing: Boolean = false Classe dell’ attributo Valore iniziale di default

17 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. Segnatura dell’operazione (classi degli argomenti e dei risultati) Rectangle add() grow() move() isEmpty() TemperatureSensor reset() setAlarm(t: Temperature) value(): Temperature Funzione (restituisce un valore)

18 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

19 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.

20 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

21 Distribuzione di responsabilità in Smalltalk
Model Responsibilities -- manage the state of the model View Responsibilities -- render the model on the screen -- manage movement and resizing of the view -- intercept user events Controller Responsibilities -- synchronize changes in the model and its views

22 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,…

23 Esempi di relazioni

24 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.

25 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.

26 Inheritance, abstract class, abstract operation
- Una classe astratta non puo’ essere istanziata - Una operazione astratta in classe X deve essere implementata dalle sottoclassi di X

27 3. Association Association è una relazione generica
Name and name direction Person Works for Company Role names Person Company Employee Employer 1..* * Multiplicity Association è una relazione generica esistono due casi particolari di association: aggregation e composition

28 3.1 Aggregation X has_a Y School 1..* Student
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

29 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

30 Esempi di aggregation e composition
Structural relationships

31 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 (top-down e bottom-up) Quando usati in fase di Architectural Design, descrivono lo scambio dati fra sottosistemi

32 Modelli simili a data-flow diagrams
PERT diagrams (Project Evaluation and Review Technique) Struttura un progetto come insieme parzialmente ordinato di attività, ciascuno con una durata (non identifica i dati) Activity networks (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] 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] 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)

33 DFD for processing an equipment order

34 DFD for equipment procurement

35 DFD for a CASE toolset

36 Data Flow Diagrams - varianti [GJM91, sez.5.5.1]
Adatti a modellare le funzioni di sistemi informativi Semiformali: sintassi formale, semantica informale Input device Output device Function Data-flow Data store

37 DFD per una espressione aritmetica
(a+b) * (c + a*d) b a d c + * + *

38 DFD per sistema informativo di una biblioteca

39 DFD della biblioteca: parziale raffinamento

40 ‘Limiti’ del modello DFD
La semantica di una funzione e’ tutta nel suo nome... ‘+’ e’ autoesplicativa ‘Find Book Position’ 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...

41 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) f trigger

42 Ambiguita’ sulle configurazioni in input e output
in3 e out2 sono sempre necessari? Un DFD ‘arricchito’ potrebbe specificare modalita’ AND oppure OR per gli output in1 out1 in2 f in3 out2

43 Ambiguita’ sulla capacita’ dei canali di flusso
Sono ammesse piu’ istanze di d nel canale? (buffering) Un DFD ‘arricchito’ potrebbe specificare per ogni canale la modalita’ di trasmissione synchronous / asynchronous Ambiguita’ sull’effetto del flusso dei dati sui data base (Shelves - {book} ? ListOfAuthors - {author} ?!) Non trattamento delle eccezioni estendibile come nei Data/Control charts di VORD d f1 f2


Scaricare ppt "Lezione 6. Modelli astratti: ER, UML Class diagrams, DF"

Presentazioni simili


Annunci Google