Automatic generation of software design tools supporting semantics of modelling techniques
A generic visual language for diagram editing has been created which may be instantiated for a particular modelling technique. The instantiated visual language is used within the generated design tool. It provides non-obtrusive guidance observing the semantics of the underlying modelling technique. The tool user is allowed to produce intermediate inconsistent states to facilitate diagram editing. A prototype, comprising a compiler for the specification language, a multi-purpose graph tool and a configurable design tool was implemented to prove the feasibility of the complete approach. The prototype compiler generates executable code. The target of the compiler is the persistent programming language Napier88. The architecture of the compiler has been designed as two separate components: a front-end (the parser), and a back-end (the code generator). This approach gives independence from the target language. The code generator comprises a number of translation rules to produce Napier88 from a VC-t specification. The prototype compiler only incorporates some of the translation rules to demonstrate that executable Napier88 can be generated automatically. The remainder of the translation rules have been applied manually to produce Napier88, to demonstrate that the rules are correct. The multi-purpose graph tool, designated as GraphTool, can be used with the class of applications using graphs as their main data structures. It provides support for visual and interactive representations of an application. The application acts as a client of the Graph-Tool. A protocol has been defined to connect the client application to the GraphTool. Any number of visual representations can be associated with the application. Maps are used for this purpose: to change the representation it is only necessary to change the map. The GraphTool includes a constraint manager used to associate constraints with the representations objects and check these at run-time. The configurable design tool has been developed as a client for the GraphTool. It includes generic components for diagram editing and a drawing canvas. The functionality of the canvas is fully provided by the GraphTool.