Next revision
|
Previous revision
|
hekate:hekate_case_thermostat [2008/02/26 10:45] gjn created |
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 ====== |
| |
| 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 ===== |
| |
| |
| ===== Conceptualization ===== |
| |
| ==== Vocabulary ==== |
| |
| |
| ==== Original Rules ==== |
| |
| <code> |
| Rule: 1 |
| if the day is Monday |
| or the day is Tuesday or the day is Wednesday |
| or the day is Thursday or the day is Friday |
| then today is a workday |
| |
| Rule: 2 |
| if the day is Saturday |
| or the day is Sunday |
| then today is the weekend |
| |
| Rule: 3 |
| if today is workday |
| and the time is 'between 9 am and 5 pm' |
| then operation is 'during business hours' |
| |
| Rule: 4 |
| if today is workday |
| and the time is 'before 9 am' |
| then operation is 'not during business hours' |
| |
| Rule: 5 |
| if today is workday |
| and the time is 'after 5 pm' |
| then operation is 'not during business hours' |
| |
| Rule: 6 |
| if today is weekend |
| then operation is 'not during business hours' |
| |
| Rule: 7 |
| if the month is January |
| or the month is February or the month is December |
| then the season is summer |
| |
| Rule: 8 |
| if the month is March |
| or the month is April or the month is May |
| then the season is autumn |
| |
| Rule: 9 |
| if the month is June |
| or the month is July or the month is August |
| then the season is winter |
| |
| Rule: 10 |
| if the month is September |
| or the month is October or the month is November |
| then the season is spring |
| |
| Rule: 11 |
| if the season is spring |
| and operation is 'during business hours' |
| then thermostat_setting is '20 degrees' |
| |
| Rule: 12 |
| if the season is spring |
| and operation is 'not during business hours' |
| then thermostat_setting is '15 degrees' |
| |
| Rule: 13 |
| if the season is summer |
| and operation is 'during business hours' |
| then thermostat_setting is '24 degrees' |
| |
| Rule: 14 |
| if the season is summer |
| and operation is 'not during business hours' |
| then thermostat_setting is '27 degrees' |
| |
| Rule: 15 |
| if the season is autumn |
| and operation is 'during business hours' |
| then thermostat_setting is '20 degrees' |
| |
| Rule: 16 |
| if the season is autumn |
| and operation is 'not during business hours' |
| then thermostat_setting is '16 degrees' |
| |
| Rule: 17 |
| if the season is winter |
| and operation is 'during business hours' |
| then thermostat_setting is '18 degrees' |
| |
| Rule: 18 |
| if the season is winter |
| and operation is 'not during business hours' |
| then thermostat_setting is '14 degrees' |
| </code> |
| |
| The seasons //ARE// correct, the Author lives in Australia. |
| |
| ===== Analysis ===== |
| |
| ===== Conceptual design ===== |
| |
| ==== 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 ''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. |
| |
| The subsequent //optimized// ARD levels (as recreated by VARDA) are given below: |
| |
| {{:hekate:thermostat-ard.png|:hekate:thermostat-ard.png}} |
| |
| The Transformation Process History diagram is given below: |
| |
| {{:hekate:thermostat-tph.png|:hekate:thermostat-tph.png}} |
| |
| === Full ARD Model === |
| |
| See ''{{:hekate:therm-model.pl|therm-model.pl}}'' in [[hekate:varda]] |
| |
| ==== Refined Conceptual Design ==== |
| |
| ===== Physical Attribute Specification ===== |
| |
| ===== Structuralization ===== |
| |
| XTT prototype generated by [[VARDA]]: |
| |
| {{:hekate:thermostat-varda-xtt.png|:hekate:thermostat-varda-xtt.png}} |
| |
| ===== Logical design ===== |
| |
| {{:hekate:thermostat-xtt.png|:hekate:thermostat-xtt.png}} |
| |
| |
| check if: |
| * rules are consitant with the book |
| * the xtt design is consistent with the book w.r.t seasons and temperature! |