CASE tools have traditionally focused on providing a means of modeling analysis and design problems using the notations of prescribed methodologies such as those offered by Booch and Rumbaugh. As such, CASE tools have too often been used as a special-purpose document-capture facility. This is an unenlightened use. Modern CASE tools are now used more appropriately as rapid application development (RAD) tools that generate applications in whole or in part. That is what Mark V's ObjectMaker is designed to do.
ObjectMaker supplies a meta-CASE capability, which is another way to say that it offers a highly extensible system that provides a breadth of customization. ObjectMaker users simply build graphical models of their requirements and design. The graphical diagrams are transformed into a unified semantic model. The semantic model is then transformed to SNIP's macro language, which is sent to SNIP for template expansion into the targeted programming language(s). The template can be edited for form and content to conform to internal standards. (Templates are currently available for Ada 83, Ada 95, 'C', C++, and Smalltalk, with IDL and Java templates under development.)
In short, users can define their own variants of traditional methods, or add completely new methods. They can then use the information captured in the repository in forward engineering into code. That's where SNIP comes in.
SNIP allows ObjectMaker to remain customizable. ObjectMaker's front end is integrated with SNIP's capability to instantiate patterns of code from object models. SNIP integration is accomplished by using Mark V's meta rule language to traverse and transform the ObjectMaker semantic model contents into the SNIP macro language.
The macro is handed off to a macro expander, which populates the templates, then exports the file as fully expanded code. We feed the object model information into SNIP from our repository, and let it generate code files according to user-modifiable code patterns delivered with ObjectMaker. SNIP is the right tool for this because it is largely model and language independent.
Using SNIP has exposed many opportunities and possibilities for patterns to be applied in creating code from design-level information. As people's ideas about using code patterns become more focused, we see a renewed and growing interest in CASE as a front end for driving pattern-based approaches to creating software. SNIP provides a timely capability in this area.
About the Author
Mo Bjornestad is Vice President of Marketing for Mark V Systems.