This case analysis is based on hekate process.
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.
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'
The seasons ARE correct, the Author lives in Australia.
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]) |
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:
The Transformation Process History diagram is given below:
See therm-model.pl
in varda
XTT prototype generated by VARDA: