|
|
pl:miw:2009:piw09_hades_1:hekate_case_lift [2017/07/17 10:08] |
pl:miw:2009:piw09_hades_1:hekate_case_lift [2019/06/27 15:50] (aktualna) |
| ====== HeKatE Case Lift (Elevator) ====== |
| |
| This case analysis is based on [[hekate process]]. |
| |
| Eliasz Kańtoch, |
| Tomasz Michalski |
| |
| |
| ====== Introduction ====== |
| |
| |
| It is a Lift (elevator) case. |
| The main problem described here is to create a lift (elevator) control system in a building. |
| |
| |
| ===== Description ===== |
| The example shows basic lift functions: call up the lift, choosing target floor, indicating the direction, calculating where the lift has to go. |
| |
| |
| ===== Conceptualization ===== |
| |
| ==== Vocabulary ==== |
| Inputs: calling the lift from outside and inside, |
| |
| Outputs: choosing the direction and the target floor |
| |
| Internal stages: Current position and direction |
| |
| |
| |
| ==== Original Rules ==== |
| |
| |
| |
| Decision table → direction |
| Decision table + current floor → stop or go |
| |
| |
| ===== Analysis ===== |
| |
| ===== Conceptual design ===== |
| |
| Level 0: Elavator |
| |
| Level 1: Finalization Elavator to: CurrentElevatorDirection, LastElevatorDirection, IsHigherFloorSelectedFromCabin, IsLowerFloorSelectedFromCabin, IsThisFloorSelectedFromCabin, CallElevatorFromHigherFloorToGoUp, CallElevatorFromHigherFloorToGoDown, CallElevatorFromLowerFloorToGoUp, CallElevatorFromLowerFloorToGoDown, CallElevatorFromActualFloorToGoUp, CallElevatorFromActualFloorToGoDown, WhereToGo |
| |
| |
| Level 2: Split: CurrentElevatorDirection → LastElevatorDirection → IsHigherFloorSelectedFromCabin → IsLowerFloorSelectedFromCabin → IsThisFloorSelectedFromCabin → CallElevatorFromHigherFloorToGoUp → CallElevatorFromHigherFloorToGoDown → CallElevatorFromLowerFloorToGoUp → CallElevatorFromLowerFloorToGoDown → CallElevatorFromActualFloorToGoUp → CallElevatorFromActualFloorToGoDown → WhereToGo, |
| |
| |
| Level 3-13: Finalization of each attributes. |
| |
| ==== General Conceptual Design ==== |
| |
| |
| |
| |
| |
| |
| |
| |
| ==== Directed Conceptual Design ==== |
| |
| We model the system aiming at matching the original rules. |
| |
| First, it is stated that there is a system to be designed which is described by |
| a single conceptual attribute ''Elevator''. |
| It is so called level 0 of the design. |
| |
| Refining knowledge about what is the purpose of the system makes a transition to the diagram at level 1; it is a finalization. |
| |
| |
| === Full Optimized Design === |
| |
| Diagram genereted with HQEd M6_6: |
| |
| The full hierarchical diagram is presented below: |
| |
| |
| |
| ARD model was designed using Varda M_3 (Visual ARD Rapid Development Alloy). \\ |
| {{:pl:miw:2009:piw09_hades_1:elevator_test.png?400|}} |
| |
| ARD history (TPH): \\ |
| {{:pl:miw:2009:piw09_hades_1:elevator_generated_tsh.dot.png?600|}} |
| |
| |
| TPH and ARD combined: \\ |
| {{:pl:miw:2009:piw09_hades_1:elevator_generated_tphard.dot.png?600|}} |
| |
| |
| |
| |
| |
| === Full ARD Model === |
| |
| ==== Refined Conceptual Design ==== |
| |
| ===== Physical Attribute Specification ===== |
| |
| ===== Structuralization ===== |
| |
| ===== Logical design ===== |
| |
| |
| ARD MODEL in XML : |
| <code> |
| |
| <?xml version="1.0" encoding="utf-8" standalone="no"?> |
| <!DOCTYPE hml SYSTEM "hml.dtd"> |
| <!-- for HML2 --> |
| <hml version="2.0"> |
| <types> |
| <type id="tpe_1" name="default" base="symbolic"><domain><value is="none"/></domain></type> |
| </types> |
| <attributes> |
| <attr name="Elavator" id="att_1" type="tpe_1"/> |
| <attr name="CurrentElevatorDirection" id="att_2" type="tpe_1"/> |
| <attr name="LastElevatorDirection" id="att_3" type="tpe_1"/> |
| <attr name="IsHigherFloorSelectedFromCabin" id="att_4" type="tpe_1"/> |
| <attr name="IsLowerFloorSelectedFromCabin" id="att_5" type="tpe_1"/> |
| <attr name="IsThisFloorSelectedFromCabin" id="att_6" type="tpe_1"/> |
| <attr name="CallElevatorFromHigherFloorToGoUp" id="att_7" type="tpe_1"/> |
| <attr name="CallElevatorFromHigherFloorToGoDown" id="att_8" type="tpe_1"/> |
| <attr name="CallElevatorFromLowerFloorToGoUp" id="att_9" type="tpe_1"/> |
| <attr name="CallElevatorFromLowerFloorToGoDown" id="att_10" type="tpe_1"/> |
| <attr name="CallElevatorFromActualFloorToGoUp" id="att_11" type="tpe_1"/> |
| <attr name="CallElevatorFromActualFloorToGoDown" id="att_12" type="tpe_1"/> |
| <attr name="WhereToGo" id="att_13" type="tpe_1"/> |
| <attr name="currentElevatorDirection" id="att_14" type="tpe_1"/> |
| <attr name="lastElevatorDirection" id="att_15" type="tpe_1"/> |
| <attr name="isHigherFloorSelectedFromCabin" id="att_16" type="tpe_1"/> |
| <attr name="isLowerFloorSelectedFromCabin" id="att_17" type="tpe_1"/> |
| <attr name="isThisFloorSelectedFromCabin" id="att_18" type="tpe_1"/> |
| <attr name="callElevatorFromHigherFloorToGoUp" id="att_19" type="tpe_1"/> |
| <attr name="callElevatorFromHigherFloorToGoDown" id="att_20" type="tpe_1"/> |
| <attr name="callElevatorFromLowerFloorToGoUp" id="att_21" type="tpe_1"/> |
| <attr name="callElevatorFromLowerFloorToGoDown" id="att_22" type="tpe_1"/> |
| <attr name="callElevatorFromActualFloorToGoUp" id="att_23" type="tpe_1"/> |
| <attr name="callElevatorFromActualFloorToGoDown" id="att_24" type="tpe_1"/> |
| <attr name="whereToGo" id="att_25" type="tpe_1"/> |
| </attributes> |
| <properties> |
| <property id="prp_1"> |
| <attref ref="att_1"/> |
| </property> |
| </properties> |
| <tph> |
| </tph> |
| <ard> |
| </ard> |
| </hml> |
| |
| </code> |
| |
| |