Marija Rakic Greg Gao Roshanak Roshandel Statecharts example Marija Rakic Greg Gao Roshanak Roshandel 12/9/2018 CS599- Formal Methods in SW Architectures
Statecharts – brief overview Provide behavioral description of reactive systems Clustering and refinement States and transitions Arrow- labeled event and optionally a parenthesized condition Clustered two events to one D is an abstraction of A and C D can be refined to consist of A and C Zooming in and out of D (in latter A and C are not shown) Arrow- labeled event and optionally a praenthesized condition Clustered two events b to one D is an abstraction of A and C D can be refined to consist of A and C Zooming in and out of D (in latter A and C are not shown) 12/9/2018 CS599- Formal Methods in SW Architectures
Statecharts – brief overview Orthogonality Y A B D C a b in (G) G E g F m d Y is the orthogonal product of A and D 12/9/2018 CS599- Formal Methods in SW Architectures
Gas Station Specifications 1. There will be four pumps at the gas station, and a unique number will identify each pump. 2. All pumps are “self serve.” 3. Each pump has three nozzles for different type of gas—regular, plus, and premium—denoting different octane content in the gasoline. The prices for the three types of gas vary. 4. Each pump has one meter. At any one time, only one person can use one pump. 5. All pumps are connected to common storage tanks, one for each of the three types of gas. When the level of gas in a storage tank gets below a set threshold, a request for a refill is issued to an external system. 6. It is possible for a customer to pump gas during storage tank refill. 7. A customer must pay first. The single gas station attendant accepts cash only. 8. Upon payment, the attendant enables a given pump to dispense the paid-for amount of gas. 9. The customer can change the decision on the type of gas (s)he wants to fill before starting to fill. Once the customer has started to fill, then the decision cannot be changed. 10. Should the customer pre-pay more than (s)he spent to fill the car tank, the gas station attendant will return to the customer his/her change. 11. The pump nozzle has a sensor that stops the gas flow once the tank is full. 12. The system should handle race conditions, such as a. one customer paying while, in the meantime, another beginning to pump gas at the paid-for pump, and b. one customer beginning to pump at a pump without paying, before another is able to retrieve his/her change. 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures Example – gas station Events “regular”, “premium” or “plus” selected Level of gas reached threshold Pump gas Tank full Pay Change picked up Assumptions The threshold is set in such a way that there is enough gas for the current vehicles on all pumps to finish filling 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures Refinement Clustering 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures Gas station Handling the raise condition 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures Cruise Control System 12/9/2018 CS599- Formal Methods in SW Architectures
Cruise Control System Specifications 1. You can assume an automatic transmission vehicle. 2. For any of the cruise control (CC) functions to take effect, CC must be turned on first. 3. CC can be in the following states: off, enabled (i.e., on and cruising), and disabled (on, but not cruising). 4. The CC system should be automatically disabled below 30mph and above 90mph. 5. Four actions are permitted during CC: set speed, accelerate, decelerate, and resume speed. 6. When the system is under CC and the brake is pressed, CC is disabled. When the resume button is pressed, the system resumes at the last set CC speed. 7. When the system is under CC and the accelerator pedal is pressed, CC is disabled and the speed increases correspondingly. When the accelerator is released, the CC resumes at its last set CC speed. If at any point of time during acceleration the CC speed is set, CC replaces the old set speed with the new speed. 8. If CC is enabled and the vehicle starts going uphill or downhill, CC should automatically apply the accelerator or brake to maintain the set speed. 12/9/2018 CS599- Formal Methods in SW Architectures
Cruise Control (CC) Events Engine on Engine off CC off CC on (+ cruising+ disabled) Set speed (CC is on) Accelerate Decelerate Resume CC 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures Top level states: Engine on and engine off Events to change states: turn on engine, turn off engine Refinement Clustering 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures Zoom in engine on: CC on and CC off Events to change states: push CC on, push CC off Refinement Clustering 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures Zoom in CC on: CC enabled and CC disabled Disable to enable: push resume (speed set); push set (30<speed<90); accelerator released; Enable to Disable: gas or brake pressed; Refinement Clustering 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures 12/9/2018 CS599- Formal Methods in SW Architectures
What Statecharts are good for? Reactive Systems (event driven) Showing concurrency and its restrictions Showing state changes Certain timing constraints Hierarchical systems Easy to understand and communicate 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures What are the problems? Statemate formulas require more notation than others for the same level of details Large (or variable) number of similar activities are hard to present Various designers could come up with different designs State explosion 12/9/2018 CS599- Formal Methods in SW Architectures
What happened in our systems? We used: Clustering/Refinement Orthogonality (i.e. Concurrency) Action/Activities We did not use: History (we tried!) 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures Our experience Timing and Concurrency issue was not critical in our systems Orthogonality could not be used except for the the gas station example when the station runs out of gas History was not used since the system did not need to remember the previous state in any of the examples 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures Challenges Transition on the same state Problems in the system for differentiating states from conditions and events. Is “grade selected” an state or event? Is “current speed = cruise speed” an event or state or condition? Concurrency issue in the gas station example 12/9/2018 CS599- Formal Methods in SW Architectures
CS599- Formal Methods in SW Architectures Discussion Is Statechart notation appropriate for modeling these systems? Pre/post conditions conditions/activities Problem with specifying values in the statecharts (unlike C2SADEL) Difficult to model statical aspects. Variables inside the state (current speed) Specifying invariants, state variable. 12/9/2018 CS599- Formal Methods in SW Architectures