This case analysis is based on hekate process.
Eliasz Kańtoch, Tomasz Michalski
It is a Lift (elevator) case. The main problem described here is to create a lift (elevator) control system in a building.
The example shows basic lift functions: call up the lift, choosing target floor, indicating the direction, calculating where the lift has to go.
Inputs: calling the lift from outside and inside,
Outputs: choosing the direction and the target floor
Internal stages: Current position and direction
Decision table → direction Decision table + current floor → stop or go
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.
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.
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).
ARD MODEL in XML :
<?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>