VARDA
Introduction
VARDA - the Visual ARD Rapid Development Alloy - is a rapid prototyping environment for ARD+, built with use of the SWI-Prolog environment for the knowledge base building, and Graphviz tool for an on-line design visualization.
These tools are combined by the Unix environment, where the ImageMagick tool provides an instant visualization of the prototype at any design stage.
Introduction
During the design process the ARD model grows. This growth is expressed by consecutive diagram levels, making the design more and more specific. This constitutes the hierarchical model.
The implementation of such hierarchical model is provided through storing the lowest available, most detailed diagram level at any time, and additional information needed to recreate all of the higher levels, the so-called Transformation Process History (TPH).
It captures information about changes made to properties at consecutive diagram levels. These changes are carried out through the transformations: split or finalization.
Prolog prototype
Prolog prototype
Figure 1: Prolog prototype architecture
Prolog prototype
As an implementation environment of choice the Prolog language is used. It serves as a proof of concept for the ARD+ design methodology and prototyping environment.
Switching to other environments such as Java, C++, Ajax, or Eclipse platform is possible.
Prolog was chosen because it offers a rapid development environment for knowledge-based systems.
Automated Visualization
Both ARD and TPH diagrams are directed graphs.
Proper graph visualization, node distribution, edge distribution and labeling is a separate scientific domain. Instead of reinventing these concepts, or implementing them from scratch, a tool-chain of well proved tools to provide actual visualization is assembled.
The tool-chain is based on three components:
SWI-Prolog,
GraphViz,
ImageMagick.
There are two scenarios the tool-chain is used:
generating diagrams for an already designed system described in Prolog,
generating diagrams during the design process.
Automated Visualization
Figure 2: Visualization tool-chain
An Example Design
Level 0
ard_att_add(’Thermostat’),
ard_property_add([’Thermostat’]).
Level 1
ard_att_add(’Time’),
ard_att_add(’Temperature’),
ard_finalize(
[’Thermostat’],
[’Time’,’Temperature’]).
Level 2
ard_split(
[’Time’,’Temperature’],
[[’Time’],[’Temperature’]],
[
[[’Time’],[’Temperature’]]
]).
Level 3
ard_att_add(’Date’),
ard_att_add(’Hour’),
ard_att_add(season),
ard_att_add(operation),
ard_finalize(
[’Time’],
[’Date’,’Hour’,season,operation]).
Level 4
ard_split(
[’Date’,’Hour’,season,operation],
[[’Date’,’Hour’],[season,operation]],
[
[[’Date’,’Hour’],[season,operation]],
[[season,operation],[’Temperature’]]
]).
Level 5
ard_split(
[’Date’,’Hour’],
[[’Date’],[’Hour’]],
[
[[’Date’],[season,operation]],
[[’Hour’],[season,operation]]
]).
Level 6
ard_att_add(day),
ard_att_add(month),
ard_att_add(today),
ard_finalize(
[’Date’],
[day,month,today]).
Level 7
ard_split(
[day,month,today],
[[month],[day,today]],
[[[month],[season,operation]],
[[day,today],
[season,operation]]]).
Level 8
ard_att_add(thermostat_settings),
ard_finalize(
[’Temperature’],
[thermostat_settings]),
ard_att_add(hour),
ard_finalize([’Hour’],[hour]).
Level 8
ard_split(
[season,operation],
[[season],[operation]],
[
[[month],[season]],
[[day,today],[operation]],
[[hour],[operation]],
[[season],[thermostat_settings]],
[[operation], [thermostat_settings]]
]),
ard_split(
[day,today],
[[day],[today]],
[
[[day],[today]],
[[today],[operation]]
]).
A complete TPH diagram
A complete TPH diagram