Statechart Diagrams Sviluppo di statechart complessi In COMET Cosa vedremo… Modellazione statechart complessi Statechart gerarchici Statechart concorrenti Linee guida per sviluppo di statechart Sviluppo di statechart da Use case Sviluppo dello statechart piatto Raffinamento con eventi alternativi Sviluppo degli statechart gerarchici Sviluppo degli statechart concorrenti Modellazione di statechart complessi Come modellare i vari aspetti di un sistema? Sviluppare più statechart da correlare fra loro COMET suggerisce: Decomposizione gerarchica degli stati Utilizzo di statechart concorrenti Statechart gerarchici COMET: statechart gerarchici UML 1.3: statechart composti Si utilizza la scomposizione gerarchica per ridurre la complessità Statechart gerarchici semanticamente equivalenti agli statechart piatti Statechart gerarchici Scomposizione di stati Scomposizione in: Superstati Sottostati Scomposizione di tipo “or”: Se uno stato è attivo, soltanto un suo sottostato è attivo Scomposizione di stati Insufficient Cash Closed Down Superstato Startup Card Inserted Closedown Processing After(Elapsed Time) [Closedown Not Requested] Idle Customer Input Processing Customer Input Terminating Transaction Waiting for PIN Cancel Terminating Waiting for PIN PIN Entered Card Inserted After (Elapsed Time) [Closedown Was Requested] Cancel Invalid PIN Third Invalid, Stolen Third Invalid, Stolen Sottostati Validating PIN Validating PIN Confiscating Processing Transaction Valid PIN Waiting for Customer Choice Card Ejected Card Confiscaded Transfer Selected Query Selected Processing transfer Rejected Valid PIN Waiting for Customer Processing Choice Query Ejecting Transfer Printing Selected Transfer OK Query OK Query Selected Withdrawal OK Withdrawal Selected Processing Withdrawal Receipt Printed Withdrawal Selected Cash Dispensed Dispensing Statechart gerarchici Aggregazione di transizioni Le transizioni possono essere riferite ai sottostati Card Inserted Processing Customer Input Waiting for PIN Cancel Third Invalid, Stolen Quelle comuni a tutti i sottostati vengono aggregate in un’unica transizione Validating PIN Valid PIN Waiting for Customer Choice Transfer Selected Query Selected Withdrawal Selected Statechart concorrenti Scomposizione di tipo “and” Due definizioni: Statechart ortogonali Utilizzati per modellare aspetti concorrenti di un sistema Statechart concorrenti Utilizzati solo per la vera concorrenza Statechart concorrenti Esempio ATM Control ATM Processing ATM Processing Superstate Closedown request condition Closedown Not Requested Startup Closedown Closedown Not Requested Sviluppo di statecharts Linee guida per lo sviluppo di statecharts Sviluppo di statechart da Use Case Esempio Linee guida per sviluppo di statecharts STATI Nome dello stato deve riflettere un intervallo di tempo reale Nome dello stato unico Deve essere possibile uscire da ogni stato Attivazione dei sottostati in base al tipo di scomposizione Linee guida per sviluppo di statecharts AZIONI EVENTI Non confondere evento (causa) con azione (effetto) Nomi di eventi e azioni non ambigui Condizioni sugli eventi hanno valore booleano Azioni e condizioni sono opzionali: da usare solo se necessario Sviluppo di statechart da Use Case Scegliere percorso tipico nella descrizione fornita dallo Use case Evento ambiente - use case causa transizione a nuovo stato Azioni, se necessario Considerare sviluppi alternativi Si aggiungono nuovi stati, transizioni e azioni. Sviluppo di statechart da Use Case Esempio: Control Speed Use Case Attore: Guidatore Riassunto: Questo Use Case descrive il sistema di guida automatico di un’autovettura che viene comandato da guidatore (acceleratore, freno) e componenti del motore Precondizione: Il guidatore ha acceso il motore e sta guidando in modo manuale Descrizione: ... Postcondizione: vettura ferma, motore spento Control Speed Statechart Primo sviluppo Si comincia dalla precondizione (stato IDLE) Si aggiungono gli stati in base agli eventi esterni Si costruisce uno statechart piatto Primo sviluppo Initial Engine On / Clear Desired Speed Idle 1: Accel [Brake Off] / 2E: Enable "Increase Speed" Accelerating 16: Engine Off 7: Brake Pressed/ 8D: Disable "Maintain Speed" Cruising Off 14: Off / 15D: Disable "Maintain Speed" 9: Resume [Brake Off] / 10E: Enable "Resume Cruising" Resuming 11: Reached Cruising / 12D: Disable "Resume Cruising" 13E: Enable "Maintain Speed" Cruising 3: Cruise / 4D: Disable "Increase Speed" 5: Select Desired Speed, 6E: Enable "Maintain Speed" Control Speed Statechart Primo raffinamento Si semplifica lo statechart Azioni entry / exit vengono associate ai rispettivi stati Si complica lo statechart Si considerano gli eventi e le azioni alternative Prima raffinamento (si semplifica…) Initial Initial Engine On Engine On/ /Clear Clear Desired Speed Desired Speed Idle Idle 1: Accel [Brake Off] / 2E: "Increase 1: Enable Accel [Brake Off] Speed" Accelerating Accelerating 2E, 4D: Do / Increase Speed Engine 16:16: Engine Off Off 7: Brake Pressed/ 8D: Disable "Maintain 7: Brake PressedSpeed" Cruising Cruising Off Off 9: [BrakeOff] Off] / 9:Resume Resume [Brake 10E: Enable "Resume Cruising" Resuming Resuming 10E, 12D: Do / Resume cruising 14: 14: OffOff / 15D: Disable "Maintain Speed" 11: Reached Cruising / 12D: Disable "Resume Cruising" 13E: Enable Cruising "Maintain Speed" 11: Reached Cruising 6E, 8D, 13E, 15D: Cruising Do / Maintain Speed 3: Cruise / 4D: Disable "Increase Speed" 3: Cruise / 5: Select Desired Speed, 6E: Enable 5: Select Desired Speed "Maintain Speed" Prima raffinamento (si complica…) Engine On / Clear Desired Speed Initial Idle Engine Off Accel [Brake Off] Engine Off Engine Off Accelerating Accel [Brake Off] Cruising Off Do / Increase Speed Brake Pressed Off Brake Pressed / Select Desired Speed Resume [Brake Off] Accel Engine Off Off Resuming Do / Resume cruising Accel Cruise / Select Desired Speed Brake Pressed Engine Off Cruising Do / Maintain Speed Reached Cruising Control Speed Statechart Statechart gerarchico Raggruppamento di stati che hanno caratteristiche comuni (Accelerating, Resuming e Cruising) Raggruppamento basato anche su aggregazione di transizioni Statechart gerarchico Engine On / Clear Desired Speed Idle Engine Off Engine Running Initial Off Cruising Off Accel [Brake Off] Accel [Brake Off] Resume [Brake Off] Off Brake Pressed Automatic Control Accelerating Accel Do / Increase Speed Cruise / Select Desired Speed Resuming Do / Resume Cruising Accel Cruising Do / Maintain Speed Reached Cruising Control Speed Statechart Statechart ortogonale Modellazione dei vari aspetti del sistema Si aggiungono altri statechart che vengono attivati contemporaneamente Statechart ortogonale Cruise control Auto Cruise Control Auto Cruise Control Superstate Brake Condition Brake Off Brake Pressed Brake Released Brake On