Design Maintenance System®
DMS® is a 21st Century Vision for
Software Engineering and Software Maintenance
A software engineering environment that supports the incremental engineering and maintenance of large application systems, driven by domain knowledge, semantics, captured designs and automation.
- what the software is supposed to do (specification),
- how the software does it (the code), and
- why the software works correctly (the design).
Using practical program generation and transformation technology, DMS will enable designers to:
- understand the design, and
- modify the design to obtain new code
while yielding a 50% reduction in software maintenance cost and cycle time
- by reducing the program understanding cost
- by eliminating errors in implementing changes
- by reusing sophisticated, performant implementation knowledge
The DMS concept is fundamentally different from other Software Engineering methods:
- DMS emphasizes tool-supported design capture and modification.
- DMS organizes problem domain concepts and code generation knowledge into domains.
- A hierarchy of domains shows how to map abstract problem domain ideas to target languages.
- DMS uses the domains to transform specified domain concepts to code for the problem at hand.
- The software engineer can navigate the recorded map to understand how the code works.
- DMS requires the design to be updated before the code, so design knowledge isn't lost.
The DMS vision thus provides a continuous, incremental model of software construction.
We call this approach a semantically-based software engineering method, because DMS "understands" far more about the problem and the final program than conventional CASE tools.
What can one do with a DMS-like technology?
- Legacy code modification and reverse engineering (Software maintenance, code porting, restructuring, optimization, design recovery to domain abstractions, massive changes)
- Domain-specific program generation (Factory Control synthesis, Partial Differential Equation solver generators, Entity-Relationship compilers,Your Domain Here)
DMS is designed for large scale software systems
- Reusable knowledge about problem and technology areas organized as domains
- Fast parsing and transformation engines (procedures, trees, graphs)
- Software Engineers as clients, DMS as server
- Implemented in SD's parallel programming language, PARLANSE
- Presently supports C++
DMS R&D was funded by the National Institute of Standards and Technology, Advanced Technology Program