Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
hekate:hekate_case_thermostat [2008/03/11 13:01] wojnicki cleanup |
hekate:hekate_case_thermostat [2019/06/27 15:49] (current) |
====== HeKatE Case Thermostat ====== | ====== HeKatE Case Thermostat ====== |
| |
| This case analysis is based on [[hekate process]]. |
| |
FIXME | FIXME |
| |
====== Introduction ====== | ====== Introduction ====== |
| |
| The ARD process can be easily explained using the following example. |
| It is a reworked Thermostat case. |
| The main problem described here is to create a temperature control system |
| for an office. |
| The design process is shown below. |
| |
===== Description ===== | ===== Description ===== |
| |
| |
===== Conceptualization ===== | ===== Conceptualization ===== |
| |
==== Vocabulary ==== | ==== Vocabulary ==== |
| |
| |
==== Original Rules ==== | ==== Original Rules ==== |
then thermostat_setting is '14 degrees' | then thermostat_setting is '14 degrees' |
</code> | </code> |
| |
| The seasons //ARE// correct, the Author lives in Australia. |
| |
===== Analysis ===== | ===== Analysis ===== |
| |
==== General Conceptual Design ==== | ==== General Conceptual Design ==== |
| |
| |
| |
| |
| |
| |
| |
| |
==== Directed 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 ''Thermostat''. |
| 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. |
| It is stated that the thermostat controls temperature and this control has something to do with time. |
| That is why ''Thermostat'' is finalized into ''Time'' and ''Temperature''. |
| |
| Furthermore, at level 2, it is stated that ''Temperature'' |
| depends on ''Time'': there are two properties identified in the |
| system and a functional dependency between them. |
| |
| The design process continues, through splits and/or finalizations, until all physical attributes (indicated with lower case letters) are identified and relationships among them are stated which is presented at level 8. |
| |
| The whole process is shown below: |
| |
| ^ ARD diagram ^ Corresponding THP ^ VARDA model ^ |
| | <graphviz file="hekate:therm-a0.dot"></graphviz> | | ard_att_add('Thermostat'), ard_property_add(['Thermostat']) | |
| | <graphviz file="hekate:therm-a1.dot"></graphviz> | <graphviz file="hekate:therm-t1.dot"></graphviz> | ard_att_add('Time'), ard_att_add('Temperature'), ard_finalize(['Thermostat'], ['Time','Temperature']) | |
| | <graphviz file="hekate:therm-a2.dot"></graphviz> | <graphviz file="hekate:therm-t2.dot"></graphviz> | ard_split(['Time','Temperature'],[ ['Time'],['Temperature']], [ [ ['Time'],['Temperature']]])| |
| | <graphviz file="hekate:therm-a3.dot"></graphviz> | <graphviz file="hekate:therm-t3.dot"></graphviz> | ard_att_add('Date'), ard_att_add('Hour'), ard_att_add(season), ard_att_add(operation), ard_finalize(['Time'],['Date','Hour',season,operation])| |
| | <graphviz file="hekate:therm-a4.dot"></graphviz> | <graphviz file="hekate:therm-t4.dot"></graphviz> | ard_split(['Date','Hour',season,operation],[ ['Date','Hour'],[season,operation]],[ [ ['Date','Hour'], [season,operation]],[ [season,operation],['Temperature']]])| |
| | <graphviz file="hekate:a5f.dot"></graphviz> | <graphviz file="hekate:t5f.dot"></graphviz> | ard_split([season,operation],[ [season],[operation]],[ [ ['Date','Hour'],[season]],[ ['Date','Hour'],[operation]],[ [season],['Temperature']],[ [operation], ['Temperature']]])| |
| | <graphviz file="hekate:a6f.dot"></graphviz> | <graphviz file="hekate:t6f.dot"></graphviz> | ard_split(['Date','Hour'],[ ['Date'],['Hour']],[ [ ['Date'],[season]],[ ['Date'],[operation]],[ ['Hour'],[operation]]])| |
| | <graphviz file="hekate:a7f.dot"></graphviz> | <graphviz file="hekate:t7f.dot"></graphviz> | ard_att_add(day), ard_att_add(month), ard_att_add(today), ard_finalize(['Date'],[day,month,today])| |
| | <graphviz file="hekate:a8f.dot"></graphviz> | <graphviz file="hekate:t8f.dot"></graphviz> | ard_split([day,month,today],[ [month],[day,today]],[ [ [month],[season]],[ [day,today],[operation]]])| |
| | <graphviz file="hekate:a9f.dot"></graphviz> | <graphviz file="hekate:t9f.dot"></graphviz> | ard_split([day,today],[ [day],[today]],[ [ [day],[today]],[ [today],[operation]]]| |
| | <graphviz file="hekate:a10f.dot"></graphviz> | <graphviz file="hekate:t10f.dot"></graphviz> | ard_att_add(hour), ard_finalize(['Hour'],[hour]), ard_att_add(thermostat_settings), ard_finalize(['Temperature'],[thermostat_settings])| |
| |
| === Full Optimized Design === |
| |
| VARDA can automatically optimize the diagram, by re/collapsing the lowest ARD using TPH. |
| |
Subsequent ARD levels are given below: | The subsequent //optimized// ARD levels (as recreated by VARDA) are given below: |
| |
{{:hekate:thermostat-ard.png|:hekate:thermostat-ard.png}} | {{:hekate:thermostat-ard.png|:hekate:thermostat-ard.png}} |
| |
{{:hekate:thermostat-tph.png|:hekate:thermostat-tph.png}} | {{:hekate:thermostat-tph.png|:hekate:thermostat-tph.png}} |
| |
XTT prototype generated by [[VARDA]]: | |
| |
{{:hekate:thermostat-varda-xtt.png|:hekate:thermostat-varda-xtt.png}} | |
| |
=== Full ARD Model === | === Full ARD Model === |
| |
See ''therm-model.pl'' in [[hekate:varda]] | See ''{{:hekate:therm-model.pl|therm-model.pl}}'' in [[hekate:varda]] |
| |
==== Refined Conceptual Design ==== | ==== Refined Conceptual Design ==== |
| |
===== Structuralization ===== | ===== Structuralization ===== |
| |
| XTT prototype generated by [[VARDA]]: |
| |
| {{:hekate:thermostat-varda-xtt.png|:hekate:thermostat-varda-xtt.png}} |
| |
===== Logical design ===== | ===== Logical design ===== |
| |
| |
| check if: |
| * rules are consitant with the book |
| * the xtt design is consistent with the book w.r.t seasons and temperature! |