|
|
pl:miw:2009:piw09_hades_1:hekate_case_lift [2009/06/17 13:11] piw09 |
pl:miw:2009:piw09_hades_1:hekate_case_lift [2017/07/17 10:08] |
====== 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 === | |
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> | |
| |
| |