Dynamic Modeling COMET MARRONE DANIELE Dynamic Modeling Riguarda gli aspetti dinamici (o comportamentali) del sistema come gli oggetti interagiscono tra loro come un oggetto state-dependent viene definito tramite una finite-state-machine Dynamic Modeling Viene fatta a partire dagli use-case, determinando le interazioni tra gli oggetti che vi partecipano Si basa sullo scambio di messaggi tra oggetti Messaggi Rappresentano le informazioni scambiate tra gli oggetti Un messaggio e` un evento associato a dei dati Il nome del messaggio corrisponde al nome dell`evento I dati associati vengono chiamati attributi del messaggio Messaggi Sintassi: Message = event(message attribute) Esempi di messaggi: ATM Card Inserted(Card ID, Expiration Date) Card Ejected Rappresentazione L`interazione tra oggetti e` rappresentata tramite: Interaction Diagram Collaboration Diagram Sequence Diagram Message Sequence Description Interaction Diagram Viene sviluppato per ogni use-case Si determinano gli oggetti che vi partecipano Si rappresenta la sequenza di messaggi scambiati Collaboration Diagram La sequenza temporale dei messaggi viene rappresentata tramite numeri progressivi che etichettano i messaggi Mette in risalto le relazioni tra gli oggetti <<external input Device>> :Shaft Sh1:Shaft Input <<input device Interface>> :ShaftInterface Sh1.1:Update <<entity>> :ShaftRotationCount Collaboration diagram per lo use-case Update Shaft Rotation Sequence Diagram La sequenza temporale dei messaggi viene rappresentata graficamente dall`alto in basso nel diagramma Non da` una rappresentazione chiara della relazione tra gli oggetti Sequence Diagram Nella fase di analisi nessuna assunzione circa l`attivazione degli oggetti e` presa Gli oggetti vengono rappresentati come passivi Gli attori vengono rappresentati come attivi <<external input Device>> :Shaft << input device interface>> :ShaftInterface << entity>> :ShaftRotationCount Sh1:Shaft Input Sh1.1:Update Sequence diagram per lo use-case Update Shaft Rotation Use case e scenario Uno scenario è uno specifico percorso attraverso uno use-case Un Interaction Diagram rappresenta uno scenario Si usano condizioni per rappresentare più scenari nello stesso Interaction Diagram Generic e Instance Form Due forme di Interaction Diagram: Instance form descrive in dettaglio uno specifico scenario Generic form descrive tutte le possibili iterazioni Etichette dei messaggi Sintassi: Sequence expression, message name, argument list dove sequence expression consiste di: message sequence number, recurrence Message Sequence Number Sintassi: [first letter] [number] [second letter] Esempi: A1 Use1.1a Message Sequence Number [first letter] [number] [second letter] un parametro opzionale l`identificatore di uno use-case specifico Message Sequence Number [first letter] [number] [second letter] La parte intera del numero identifica un evento esterno I numeri decimali rappresentano eventi interni Message Sequence Number [first letter] [number] [second letter] La sequenza temporale e` data dalle relazioni di grandezza tra i numeri Esempio di sequenza: A1, A1.1, A1.1.1, A.1.2 <<external I/O device>> :CardReader <<I/O 1:Card Reader Input device interface>> :CardReaderInterface 1.1:Card Input Data <<entity>> :ATMCard 1.4:Pin Prompt 2.8:Selection Menu :ATMCustomer 2:PIN Input 2.2:Card Data 2.1:Card Request <<user interface>> :CustomerInterface Collaboration diagram parziale per lo use-case Valid PIN Message Sequence Number [first letter] [number] [second letter] È un parametro opzionale Identifica casi speciali Messaggi concorrenti (con una lettera minuscola) Messaggi alternativi (con una lettera maiuscola) <<subsystem>> :BankServer 2.6[Valid]: Valid PIN <<state dependent control>> :ATMControl 2.7:Display Menu <<user interface>> :CustomerInterface 2.7a:Update Status <<entity>> :ATMTransaction Esempio di messaggi concorrenti <<subsystem>> :BankServer 2.5,2.6A.8: Validate PIN(Customer Info) 2.6A*[Invalid]: Invalid PIN 2.6[Valid]:Valid PIN <<state dependent Control>> :ATMControl Esempio di messaggi alternativi Recurrence E` un parametro opzionale Serve per rappresentare esecuzioni: Condizionali Iterative Esecuzioni condizionali Sintassi: [condition-clause] Identifica un ramo condizionale Il messaggio viene mandato solo se la condizione e` verificata <<subsystem>> :BankServer 2.5:Validate PIN(Customer Info) 2.6[Valid]:Valid PIN <<state dependent Control>> :ATMControl Esempio di messaggio condizionale Esecuzioni iterative Sintassi: *[iteration-clause] Specifica esecuzioni ripetute <<subsystem>> :BankServer 2.5,2.6A.8: Validate PIN(Customer Info) 2.6A*[Invalid]: Invalid PIN 2.6[Valid]:Valid PIN <<state dependent Control>> :ATMControl Esempio di messaggio iterativo Message Sequence Description E` una descrizione a parole Descrive come gli oggetti partecipano ad uno use-case Fornisce informazioni addizionali non rappresentabili tramite i diagrammi