Elevator Control System Case Study COMET Elevator Control System Case Study - Prima parte - Indice - Problem description - Use Case Model * Select Destination Use Case * Request Elevator Use Case * Abstract Use Cases * Stop Elevator at Floor Abstract Use Case * Dispatch Elevator Abstract Use Case * Select Destination Concrete Use Case * Request Elevator Concrete Use Case Indice - Static Model - Object Structuring - Dynamic Model * Collaboration Diag. per Select Destination Use Case * Collaboration Diag. per Dispatch Elevator Abstract Use Case - Statechart Model - Fusione dei Collaboration Diagrams - Subsystem Structuring * Refined Static Model Elevator Control System Case Study L’ Elevator Control System in oggetto deve controllare uno o più ascensori. In particolare il sistema deve: • schedulare gli ascensori per rispondere a richieste degli utenti ai vari piani • controllare il movimento degli ascensori tra i piani Indice Problem Description Per ogni ascensore: • elevator buttons • elevator lamps • elevator motor • elevator door Indice Problem Description Per ogni piano : • up and down floor buttons • floor lamps • direction lamps: direzione di eventuale ascensore in arrivo Indice Problem Description Inoltre: • un solo floor button, una sola floor lamp e una sola direction lamp per ascensore al primo e ultimo piano • in ogni albero motore ad ogni piano un arrival sensor Indice Problem Description Caratteristiche hardware dei dispositivi di I/O: • elevator buttons, floor buttons, arrival sensors: asincroni • altri dispositivi di I/O: passivi • elevator lamps, floor lamps: accese dall’hardware, ma spente dal software • direction lamps accese e spente dal software. Indice Use Case Model Attività della fase di Requirements Modeling Attori: Elevator User e Arrival Sensor Dalla descrizione informale del problema si identificano: Select Destination: l’utente nell’ascensore preme un up (o down) elevator button per selezionare un piano di destinazione Request Elevator: l’utente a un piano preme un up (o down) floor button per richiedere un ascensore Indice Select Destination Elevator User Request Elevator Arrival Sensor Use cases e attori di Elevator Control System Message sequence description per Select Destination Message sequence description per Request Elevator Indice Use Case Model: Select Destination Use Case Attori: Elevator User, Arrival Sensor Precondizione: L’utente è nell’ascensore Descrizione: • L’utente preme un bottone per salire. Il sensore del bottone manda al sistema una richiesta, identificando il piano di destinazione che l’utente vuole visitare. • La nuova richiesta è aggiunta alla lista dei piani da visitare. Se l’ascensore è fermo, il sistema determina in quale direzione muovere per servire la successiva richiesta. Il sistema comanda la chiusura della porta, quindi comanda al motore di muovere l’ascensore su o giù. Torna al diagramma Indice Use Case Model: Select Destination Use Case 1 Quando l’ascensore si muove, l’arrival sensor si accorge che ci si sta avvicinando a un piano e lo notifica al sistema. Questo controlla se ci si doveva fermare a quel piano: se sì, comanda al motore di fermare l’ascensore. Fermato l’ascensore, il sistema comanda l’apertura della porta. 2 Se ci sono altre richieste in sospeso, l’ascensore visita quei piani che si trovano sulla strada per il piano richiesto dall’utente. Infine l’ascensore arriva al piano selezionato dall’utente. Indice Use Case Model: Select Destination Use Case Alternative: • L’utente preme un bottone per scendere: la risposta del sistema è analoga alla sequenza principale. • Se l’ascensore è a un piano, e non c’è nessun altro piano verso cui muovere, resta fermo a tale piano con la porta aperta. Postcondizione: L’ascensore è arrivato al piano di destinazione selezionato dall’utente. Indice Use Case Model: Request Elevator Use Case Attori: Elevator User, Arrival Sensor Precondizione: L’utente è a un piano,vuole un ascensore Descrizione: 1 L’utente preme un bottone per salire. Il sensore del bottone manda la richiesta al sistema, identificando il numero del piano. 2 Il sistema seleziona un ascensore per visitare il piano. La nuova richiesta è aggiunta alla lista dei piani da visitare. Se l’ascensore è fermo, il sistema determina in quale direzione muovere per servire la successiva richiesta. Il sistema comanda la chiusura della porta, quindi comanda al motore di muovere l’ascensore su o giù. Torna al diagramma Indice Use Case Model: Request Elevator Use Case 1 Quando l’ascensore si muove, l’arrival sensor si accorge che ci si sta avvicinando a un piano e lo notifica al sistema. Questo controlla se ci si doveva fermare a quel piano: se sì, comanda al motore di fermare l’ascensore. Fermato l’ascensore, il sistema comanda l’apertura della porta. 2 Se ci sono altre richieste in sospeso, l’ascensore visita quei piani che si trovano sulla strtada per il piano richiesto dall’utente. Infine l’ascensore arriva al piano in risposta alla richiesta dell’utente. Indice Use Case Model: Request Elevator Use Case Alternative: • L’utente preme un bottone per scendere: la risposta del sistema è analoga alla sequenza principale. • Se l’ascensore è a un piano, e non c’è nessun altro piano verso cui muovere, resta fermo a tale piano con la porta aperta. Postcondizione: L’ascensore è arrivato al piano in risposta alla richiesta dell’utente. Indice Use Case Model: Abstract Use Cases Si individuano due sottosequenze comuni agli Use Cases descritti, da cui ricavare due Abstract Use Cases: Dispatch Elevator: la situazione in cui l’ascensore viene inviato in risposta a una richiesta dell’utente Stop Elevator at Floor: la situazione in cui l’ascensore si ferma Indice Stop Elevator at Floor Dispatch Elevator «include» «include» «include» «include» Select Destination Request Elevator Elevator User Use case model con abstract use case Arrival Sensor Vai a Static Model Vai a Dispatch Elevator Vai a Stop Elevator at Floor Indice Use Case Model: Stop Elevator at Floor Abstract Use Case Attore: Arrival Sensor Precondizione: L’ascensore si sta muovendo Descrizione: Quando l’ascensore si muove, l’arrival sensor si accorge che ci si sta avvicinando a un piano e lo notifica al sistema. Questo controlla se ci si doveva fermare a quel piano: se sì, comanda al motore di fermare l’ascensore. Fermato l’ascensore, il sistema comanda l’apertura della porta. Alternative: L’ascensore non deve fermarsi a questo piano, quindi va oltre. Postcondizione: L’ascensore si è fermato al piano, con la porta aperta Torna al diagramma Indice Use Case Model: Dispatch Elevator Abstract Use Case Precondizione: L’ascensore ha almeno un piano da visitare Descrizione: Il sistema determina in quale direzione muovere per servire la successiva richiesta. Il sistema comanda la chiusura della porta, quindi comanda al motore di muovere l’ascensore su o giù. Alternative: Se l’ascensore è a un piano, e non c’è nessun altro piano verso cui muovere, resta fermo a tale piano con la porta aperta. Postcondizione: L’ascensore si sta muovendo nella direzione comandata. Torna al diagramma Indice Use Case Model: Select Destination Concrete Use Case Attori: Elevator User Precondizione: L’utente è nell’ascensore Descrizione: 1. L’utente preme un bottone per salire (o scendere). Il sensore del bottone manda al sistema una richiesta, identificando il piano di destinazione che l’utente vuole visitare. 2. La nuova richiesta è aggiunta alla lista dei piani da visitare. Se l’ascensore è fermo, si include Dispatch Elevator Abstract Use Case 3. Si include Stop Elevator at Floor Indice Use Case Model: Select Destination Concrete Use Case 4. Se ci sono altre richieste in sospeso, l’ascensore visita quei piani che si trovano sulla strada per il piano richiesto dall’utente. Infine l’ascensore arriva al piano selezionato dall’utente. Alternative: L’utente preme un bottone per scendere: la risposta del sistema è analoga alla sequenza principale. Postcondizione: L’ascensore è arrivato al piano di destinazione selezionato dall’utente. Indice Use Case Model: Request Elevator Concrete Use Case Attori: Elevator User Precondizione: L’utente è a un piano, vuole un ascensore Descrizione: 1. L’utente preme un bottone per salire. Il sensore del bottone manda la richiesta al sistema, identificando il numero del piano. 2. Il sistema seleziona un ascensore per visitare il piano. La nuova richiesta è aggiunta alla lista dei piani da visitare. Se l’ascensore è fermo, si include Dispatch Elevator abstract use case. 3. Si include Stop Elevator at Floor abstract use case Indice Use Case Model: Request Elevator Concrete Use Case 4. Se ci sono altre richieste in sospeso, l’ascensore visita quei piani che si trovano sulla strada per il piano richiesto dall’utente, seguendo le sequenze di dispatching e stopping. Infine l’ascensore arriva al piano in risposta alla richiesta dell’utente. Alternative: L’utente preme un bottone per scendere; la risposta del sistema è analoga alla sequenza principale. Postcondizione: L’ascensore è arrivato al piano in risposta alla richiesta dell’utente Indice Static Model Attività della fase di Analysis Modeling Static model: relazioni statiche Conceptual static model Context class diagram Indice Floor Stops at 1...* 1...* Indicates arriving/leaving 1,2 FloorButton 1...* ElevatorButton 1,2 1 1...* 1...* 1,2 DirectionLamp ElevatorLamp Notifies Switches on/off 1...* FloorLamp Elevator ArrivalSensor 1 Motor Conceptual static model per Elevator Control System 1 Door Refined Static Model Indice «external input device» Elevator Button «external output device» Elevator Lamp 1...* 1...* Inputs to Outputs to 1 1...* Outputs to «external output device» FloorLamp Refined Static Model 1 «system» ElevatorControl System 1 1...* 1 1...* Inputs to Outputs to 1 «external output device» Motor «external input device» Arrival Sensor 1 «external output device» 1... * Door 1 1 Inputs to Outputs to 1...* «external output device» DirectionLamp 1...* «external input device» FloorButton Context class diagram per Elevator Control System Indice Object Structuring Attività della fase di Analysis Modeling Individuazione degli oggetti software: - External device obj. Software device interface obj. * Elevator Button Interface * Door Interface * Motor Interface * Elevator Lamp Interface * Floor Button Interface * Floor Lamp Interface * Arrival Sensor Interface * Direction Lamp Interface Indice Object Structuring Control objects: * Elevator Control state dependent control object * Elevator Manager * Scheduler Entity object: *Elevator Status & Plan status: informazioni sul movimento dell'ascensore (in su, in giù o fermo); il piano corrente (se si trova fermo a un piano) o l'ultimo piano visitato (se è in movimento) plan: lista di tutti i piani che l'ascensore deve visitare Indice Dynamic Model Attività della fase di Analysis Modeling Si definiscono le interazioni tra gli oggetti corrispondenti a ciascuno use case. Si utilizzano collaboration diagrams Indice E1: Elevator Button Request :Elevato rUser «input device interface» :ElevatorButton Interface E5: Elevator Commitment «coordinator» :Scheduler E2: Elevator Request E5a: Up or Down «state dependent control» :ElevatorControl Collaboration diagram per Select Destination use case «coordinator» :Elevator Manager E3: Update E4: Acknowledge «entity» :ElevatorStatus &Plan Indice Dynamic Model: Collaboration Diagram per Select Destination Use Case Message sequence description E1: La Elevator Button Request arriva all'oggetto Elevator Button Interface E2: L'oggetto Elevator Button Interface manda all'oggetto Elevator Manager la Elevator Request E3: L' Elevator Manager manda la richiesta all'oggetto Elevator Status & Plan,che la aggiunge alla lista dei piani da visitare Diagramma Indice Dynamic Model: Collaboration Diagram per Select Destination Use Case E4: Viene aggiornato l'elevator plan. Viene mandato un riscontro all'oggetto Elevator Manager, che verifica se l'ascensore è fermo E5: L' Elevator Manager manda un messaggio Elevator Commitment allo Scheduler, per informarlo che tale ascensore andrà a visitare il piano dato E5a: Se l'ascensore è fermo, Elevator Manager manda un messaggio Up (o Down) all'oggetto Elevator Control,indicandogli di muovere nella direzione desiderata. Questo caso è gestito da Dispatch Elevator use case Diagramma Indice Dynamic Model: Collaboration Diagram per Dispatch Elevator Abstract Use Case Note: i messaggi Up o Down possono arrivare a Elevator Control da diverse origini, che verranno indicate con source object (considerabile come parametro di input al collaboration model). Nello scenario considerato viene inviata una Up Request Collaboration diagram parziale Collaboration diagram parziale Statechart Indice «output device interface» :FloorLampInterface D2a.1: Floor Lamp Output «external output device» :FloorLamp D2: Close Door «output device interface» :DoorInterface D2a: Off Up Floor Lamp «state dependent control» :ElevatorControl D5: Door Closed D1: Up Request «entity» :ElevatorStatus&Plan Collaboration per Dispatch Elevator - parziale D3: Close Door Command D4: Door Response «external output device» :Door Message sequence description Collaboration completo Statechart Indice «coordinator» :Scheduler D10a: Departed (Floor#) «state dependent control» :ElevatorControl D10: Departed (Floor#) «entity» :ElevatorStatus&Plan «external output device» :FloorLamp D6a: Off Up Direction Lamp D9: Elevator Started D6: Up «external output device» :Motor Collaboration per Dispatch Elevator - parziale D6a.1: Direction Lamp Output «output device interface» :DirectionLampInterface «output device interface» :MotorInterface D7: Start D8: Up Motor Motor Command Response Message sequence description Collaboration completo Statechart Door Closing to Move Up Indice Entry/D2: Close Door, D2a: Off Up Floor Lamp D1: Up Request Elevator Idle D1: Up Request D5: Door Closed/ D6: Up, D6a: Off Up Direction Lamp Elevator Starting Up Elevator Moving Checking Next Destination D9: Elevator Started Use case Dispatch Elevator: statechart per Elevator Control Entry/ D10, D10a: Departed Collaboration completo Indice «external output device» :FloorLamp D2a.1: Floor Lamp Output «output device interface» :FloorLampInterface D2a: Off Up Floor Lamp «external output device» :DirectionLamp «external output device» :Motor D6: Up «state dependent control» :ElevatorControl D6a: Off Up Direction Lamp D1: Up Request D2: Close Door D5: Door Closed «output device interface» :DoorInterface D10: Departed (Floor#) D4: Door Response «entity» :ElevatorStatus&Pla n Collaboration Diagram per Dispatch Elevator use case D8: Motor Response D7: Start Up Motor Command D9: Elevator Started D10a: Departed (Floor#) «output device interface» :DirectionLampInterface D6a.1: Direction Lamp Output «output device interface» :MotorInterface «coordinator» :Scheduler D3: Close Door Command «external output device» :Door Torna a parziale 1 Torna a parziale 2 Torna a statechart Indice Dynamic Model: Collaboration Diagram per Dispatch Elevator Abstract Use Case Message sequence description Precondizione: l’ascensore si trova nello stato Elevator Idle oppure nello stato Checking Next Destination D1: {source object} manda un messaggio Up Request a Elevator Control, che effettua una transione allo stato Door Closing to Move Up Come risultato della transizione, ci sono due eventi in output concorrenti Collaboration parziale 1 Collaboration parziale 2 Collaboration completo Dynamic Model: Collaboration Diagram per Dispatch Elevator Abstract Use Case Indice D2: Elevator Control manda un comando Close Door a Door Interface D2a: (sequenza parallela) Elevator Control manda un comando Off Up Floor Lamp all’oggetto Floor Lamp Interface, che spegne la reale floor lamp D3: Door Interface manda un Close Door Command alla porta reale D4: la porta reale manda una Door Response quando la porta è chiusa Collaboration parziale 1 Collaboration parziale 2 Collaboration completo Indice Dynamic Model: Collaboration Diagram per Dispatch Elevator Abstract Use Case D5: La Door Interface manda un messaggio Door Closed a Elevator Control, che effettua una transizione allo stato Elevator Sarting Up D6: Elevator Control manda un comando Up all’oggetto Motor Interface D6a: Elevator Control manda una richiesta Off Up Direction Lamp all’oggetto Direction Lamp Interface, che spegne la direction lamp (D6a.1) D7: l’oggetto Motor Interface manda una Motor Response quando l’ascenore ha iniziato a muoversi verso l’alto Collaboration parziale 1 Collaboration parziale 2 Collaboration completo Indice Dynamic Model: Collaboration Diagram per Dispatch Elevator Abstract Use Case D8: il motore reale manda una Motor Response quando l’ascensore ha iniziato a muoversi verso l’alto D9: l’oggetto Motor Interface manda un messaggio Elevator Started all’oggetto Elevator Control, che effettua una transione allo stato Elevator Moving D10: Elevator Control manda un messaggio Departed agli oggetti Elevator Status & Plan (D10) e Scheduler (D10a) Collaboration parziale 1 Collaboration parziale 2 Collaboration completo Indice Statechart Model Attività della fase di Analysis Modeling E’ necessario • fondere gli statecharts parziali di Dispatch Elevator use case e di Stop Elevator at Floor • considerare branch alternativi per creare uno statechart completo Si avranno inoltre: Statechart gerarchico e top level Indice No Request Elevator Idle entry/update idle status Door Closing to Move Up Entry/D2:Close Door. D2a: Off Up Floor Lamp D1: Up Request Down Request D5: Door Closed/ D6: Up, D6a: Off Up Direction Lamp Door Closed/ Down, Off Up Direction Lamp Elevator Starting Down Elevator Starting Up D9: Elevator Started D1: Up Request Door Closing to Move Down Entry/Close Door. Off Down Floor Lamp Elevator Moving Entry/D10, D10a: Departed Elevator Started A2: Approaching Floor/ A3: Check This Floor A4: Approaching Requested Floor/ A5: Stop/ A5a.1: On Direction Lamp da Checking Next Destination Statechart per Elevator Control Down Request Elevator Stopping da Checking Next Destination .... Gerarchico Top level .... Indice verso Door Closing to Move Up A8: Elevator Stopped/ A9: Open Door/, A9a: Off Elevator Lamp, A9b, A9c: Arrived verso Door Closing to Move Down Elevator Door Opening D1: Up Request A12: Door opened/ A13: Start Timer verso Elevator Idle Down Request Elevator at Floor No Request A14: After (Timeout)/ A15: Check Next Destination Checking Next Destination Gerarchico Statechart per Elevator Control Top level Indice Statechart Model Consideriamo il top level statechart , che mostra gli eventi ma non le azioni: 1. Elevator Idle: l’ascensore è fermo a un piano e non ha richieste in sospeso. Ha la porta aperta. 2. Preparing to Move Up: è un super-stato che comprende i seguenti sottostati •Door Closing to Move Up: l’ascensore vi entra quando incomincia a chiudere la porta per soddisfare una richiesta di visitare un piano superiore •Elevator Starting Up: un ascensore vi entra quando la porta è stata chiusa e sta aspettando che il motore inizi a farlo Top level muovere Indice Statechart Model 3.Preparing to Move Down: superstato che consiste dei seguenti sottostati: •Door Closing to Move Down •Elevator Starting Down Sono analoghi ai due precedenti 4. Moving to Floor: questo superstato consiste dei seguenti sottostati •Elevator Moving: un ascensore vi entra quando ha iniziato la sua salita o la sua discesa •Elevator Stopping: un ascensore vi entra quando si sta avvicinando a un piano a cui si deve fermare Top level Indice Statechart Model •Elevator Door Opening: un ascensore vi entra quando si è fermato al piano e la porta si sta aprendo •Elevator at Floor: un ascensore vi entra quando la porta si è aperta completamente 5. Checking Next Destination: l’ascensore controlla quale piano visitare e quindi in quale direzione muoversi, o se entrare nello stato Elevator Idle. Vi entra dopo un timer event nello stato Elevator at Floor Top level Indice No Request Elevator Idle entry/update idle status Preparing to Move Down Preparing to Move Up Door Closing to Move Up Entry/Close Door, Off Up Floor Lamp Up Request Door Closed/ Up, Off Up Direction Lamp Elevator Starting Up Up Request Elevator Started da Checking Next Destination Statechart gerarchico per Elevator Control Down Request Door Closing to Move Down Entry/Close Door. Off Down Floor Lamp Door Closed/ Down, Off Down Direction Lamp Elevator Starting Down Elevator Started Down Request da Checking Next Destination Moving to Floor Indice Elevator Moving Entry/Departed Approaching Floor/Check This Floor Approaching Requested Floor/Stop On Direction Lamp verso Door Closing to Move Up D1: Up Request Elevator Stopping Elevator Stopped/Open Door, Off Elevator Lamp, Arrived verso Door Closing to Move Down Elevator Door Opening Down Request verso Elevator Idle No Request Door opened/Start Timer Elevator at Floor After (Timeout)/Check Next Destination Checking Next Destination Statechart gerarchico per Elevator Control Flat statechart Top level Indice No Request Elevator Idle Up Request Down Request Preparing to Move Up Elevator Started Preparing to Move Down Moving to Floor Down Request Elevator Started After (Timeout) Up Request Checking Next Destination Top-level statechart per Elevator Control Descrizione degli stati Indice Fusione dei Collaboration Diagrams Attività della fase di Design Modeling. Si mostrano tutti gli oggetti che partecipano agli use cases e tutte le loro interazioni. Vengono incluse alternative che di solito non compaiono nei collaboration diagrams canonici. I nomi dei messaggi possono essere aggregati. Fusione parziale 1 Fusione parziale 2 Indice Elevator Lamp Output «output device interface» : Elevator Lamp Interface «output device interface» : Motor Interface Motor Command Motor Response Up Off Elevator Lamp Down Elevator Started Stop Elevator Stopped «state dependent control» : Elevator Control Open Door Close Door Door Opened Door Closed «Output device interface» : Door Interface Door Command Door Response Arrived (Floor#) Scheduler Request Elevator Commitment Departed (Floor #) Service Request «coordinator» : Scheduler Fusione dei collaboration diagrams – parte 1 «input device interface» : Floor Button Interface Floor Button Request Indice Floor Lamp Output Direction Lamp Output Arrival Sensor Input Elevator Button Request «output device interface» : Floor Lamp Interface «output device interface» : Direction Lamp Interface Floor Lamp Command «timer» : Door Timer Start Timer Direction Lamp Command Approaching Floor (Floor #) «input device interface» : Arrival Sensor Interface After (Timeout) «state dependent control» : Elevator Control Check Next Destination Next Destination Approaching Request Floor Check This Floor (Floor #) Arrived (Floor #) Departed (Floor #) «entity» : Elevator Status & Plan «input device interface» : Elevator Button Interface Elevator Request Fusione dei collaboration diagrams – parte 2 «coordinator» : Elevator Manager Update Acknowledge Indice Subsystem Structuring Attività della fase di Design Modeling. Si dà la precedenza alle linee guida: • Geographical location • Aggregation/composition poichè l’applicazione che consideriamo è potenzialmente distribuita Indice Subsystem Structuring Elevator Subsystem: oggetto composto, control subsystem Contiene:Door Interface, Motor Interface, Elevator Button Interface, Elevator Lamp Interface, Arrival Sensor Interface, Door Timer, Elevator Control, Elevator Status & Plan, Elevator Manager Floor Subsystem: oggetto composto, data collection subsystem Contiene: Floor Lamp Interface, Floor Button Interface, Direction Lamp Interface Scheduler Subsystem: coordinator subsystem. Struttura di Elevator Subsystem Struttura di Floor Subsystem Strutturazione in sottosistemi «control subsystem» :ElevatorSubsystem «output device interface» : Elevator Lamp Interface Up «input device interface» : Arrival Sensor Interface Approaching Floor (Floor #) Off Elevator Lamp Down «output device interface» : Motor Interface Elevator Started Start Timer Stop Elevator Stopped «state dependent control» : Elevator Control Open Door Close Door Door Opened Door Closed «Output device interface» : Door Interface «timer» : Door Timer After (Timeout) verso Floor subsystem Floor Lamp Command,Direction Lamp Command Check Next Destination Next Destination Approaching Request Floor Arrived (Floor #) Check This Floor (Floor #) Up, Down Arrived (Floor #) Departed (Floor #) «entity» : Elevator Status & Plan Update Acknowledge Struttura di Elevator Subsystem Descrizione Departed (Floor #) Elevator Request «coordinator» : Elevator Manager Refined Static Model «input device interface» : Elevator Button Interface verso subsystem Scheduler Indice «external input device» : FloorButton «data collection subsystem» :FloorSubsystem Floor Button Request «input device interface» Service Request :FloorButtonInterface Floor Lamp Output «external output device» : FloorLamp Floor Lamp Command «output device interface» :FloorLampInterface Struttura di FloorSubsystem «subsytem» :ElevatorSubsystem Direction Lamp Command Direction Lamp Output «external output device» : DirectionLamp «subsystem» : Scheduler «output device interface» :DirectionLampInter face Descrizione Refined Static Model «external input device» : ElevatorButton Indice «external output device» : ElevatorLamp Elevator Button Requst «external output device» : Motor «system» Motor Command :Elevator Control System Motor Response «external input device» : FloorButton «external output device» : FloorLamp Floor Button Request Floor Lamp Output Floor Lamp Command Direction Lamp Command «data collection subsystem» : FloorSubsystem Elevato r Lamp Output «control subsystem» : ElevatorSubsystem Arrival Sensor Input Door Command «control subsystem» : ElevatorSubsystem Door Response Arrival (Floor #) «external output device» : Door Scheduler Request Depart (Floor #) Elevator Commitment Service Request «coordinator subsystem» : Scheduler Direction Lamp Output «external output device» : DirectionLamp Refined Static Model Descrizione Strutturazione in sottosistemi Indice Refined Static Model Rappresentato da un class diagram Derivato da: • architettura generale dei sottosistemi • struttura di ciascun sottosistema Mostra: • classi da cui sono istanziati gli oggetti che partecipano ai collaboration diagrams • relazioni tra le classi «control subsystem» ElevatorSubsystem Static model «output device interface» «output device interface» «output device interface» Door Interface ElevatorLampInterface MotorInterface 1 «input device interface» ArrivalSensorInter face «timer» DoorTimer 1 Struttura di Elevator Subsystem «inputdevice interface» ElevatorButtonInterface Struttura di Floor Subsystem 1...* Requests Controls 1 1..* 1...* 1 «coordinator» Commands 1 1 1 ElevatorManager 1..* 1 «state dependent control» Notifies 1 1 Updates ElevatorControl 1 Updates,Checks 1 1 1...* 1...* «entity» Notifies 1...* 1 1...* Controls 1 Controls Strutturazione in sottosistemi Requests ElevatorStatus&Plan * * * «data collection subsystem» FloorSubsystem Controls 1...* «output device «input device interface» interface» Direction Lamp Floor Button Interface Interface Updates 1 «coordinator subsystem» 1 Scheduler Controls Notifies 1...* 1 «server» ElevatorStatus&Pl anServer «output device interface» Floor Lamp Interface Updates 1 «entity» * 1...* 1 OverallElevatorStat us&Plan 1 1 Requests Refined static model per Elevator Control System «coordinator» Elevator Scheduler 1 1 Selects