![]() |
"Achieving Extensibility Through Product-Line and Domain-Specific
Languages: A Case Study” Don Batory, Clay Johnson, Bob MacDonald, and Dale
Von Heeder, ACM Transactions on Software Engineering and Methodology,
11(2), April 2002, pp. 191–214.
|
Anyone interested in the current discussion of “agile development” supported by
refactoring will find this paper interesting and useful. The paper describes an
example of applying layered development methods to a complex, realtime, rapidly
changing requirements environment.
This case study shows how software refactoring can be enhanced using
abstractions of interfaces and domain-specific languages. The legacy Fire
Support Automated Test System (FSATS) was redesigned to provide extensibility
using the GenVoca. Although GenVoca and Aspect Oriented Programming (AOP) have
different starting points, they both begin with some encapsulated representation
of system function and provide a mechanism to define and apply large-scale
refinements. The GenVoca system implemented in the Jakarta Tool Suite along with
a domain–specific language is used to declare and define the state machines that
form the core of the FSATS simulator.
The extension of these state machines is the motivation for the GenVoca tool. A
detailed description of the legacy simulator and the changes made to provide
extensibility occupies the majority of the paper. Some background reading in
Aspect Oriented Programming concepts, the GenVoca system, and layer distributed
object systems are needed to gain value from the paper. Once these concepts and
terminology are acquired a second reading reveals deeper insight into the
process of designing “layered” state driven system using automated tools.
Examples of Java State Machine declarations are provided. Refinements of these
state machines, the refactoring processes, and their impacts on the overall
system design provide the reader with detailed examples of how GenVoca is used
to create a unique software development environment.
Although the paper describes techniques used for building state driven
simulators, systems of this type can be found in other domains including
workflow processing, telecommunications, and business transaction processing.
By directly implementing the state specifications in JavaSM, the “conceptual
distance” between specification and implementation was reduced. This approach is
the motivation of many of today “modern” software development methods. Here is a
non–trivial example of how this can be done.
Glen B. Alleman
Niwot Ridge Consulting