← New search

Other meanings of DMS Software Reengineering Toolkit

Software Engineering

DMS Software Reengineering Toolkit

The DMS Software Reengineering Toolkit is a commercial system for automating source code analysis, transformation, and generation, developed by Semantic Designs Inc. It is widely used for large-scale legacy system modernization, language translation, and code quality improvement.

1990s
Development began
Initial work by Ira Baxter
30+
Languages supported
Including C, C++, Java, COBOL, and Python
100M+
Lines of code handled
In industrial applications
1

Core Architecture and Capabilities

DMS is built around a parsing and pretty-printing engine that creates abstract syntax trees (ASTs) for a wide range of programming languages. It uses a domain-specific language called PARLANSE for writing transformations, which are applied as pattern-matching rules on the ASTs. The toolkit supports attribute grammars for static analysis and source-to-source transformation that preserves comments and formatting where possible.

DMS includes a symbol table and control/data flow analysis modules, enabling tasks like dead code elimination and dependency analysis. Its fact extraction capabilities allow exporting information to external tools, and it can handle preprocessor directives (e.g., C's #ifdef) through a special preprocessor-aware parser.1

2

Applications in Legacy Modernization

DMS is frequently used for language migration, such as converting COBOL to Java or C++ to C#. It has been employed in large-scale projects, including the migration of Ada systems for the US Department of Defense and the translation of Fortran to C for scientific computing.

The toolkit also supports clone detection, code restructuring, and metric extraction. Its incremental parsing and persistent AST storage allow it to handle millions of lines of code efficiently, making it a practical choice for industrial-scale refactoring.2

3

Lesser-known aspects

One lesser-known feature is DMS's grammar formalisms that support context-sensitive parsing for languages like C++ and COBOL, which are notoriously difficult to parse due to ambiguities. The toolkit also includes a rewrite engine that can apply transformations in a stratified manner, allowing complex refactorings to be broken into simpler steps.

DMS has been used in software watermarking research, where transformations embed unique identifiers into code to deter piracy. Additionally, it has been applied to program obfuscation and deobfuscation, and to reverse engineering of binary code through its binary analysis front-end.3

4

Comparison and Ecosystem

Unlike open-source tools like ANTLR or Eclipse JDT, DMS is a commercial product with a focus on industrial robustness and language coverage. It is often compared to Stratego/XT and Rascal, but DMS distinguishes itself with its preprocessor handling and scalability.4

The toolkit is developed by Semantic Designs, founded by Ira Baxter, who has published extensively on software transformation. DMS has been used in academic research and industrial projects, including work at NASA and Lockheed Martin.

Glossary

Abstract Syntax Tree (AST)
A tree representation of the syntactic structure of source code, where each node corresponds to a construct.
Attribute Grammar
A formal grammar extended with semantic rules for computing values (attributes) associated with grammar symbols.
Pretty-printing
The process of formatting source code in a consistent, readable style.
Source-to-source transformation
The process of automatically converting source code from one programming language to another, or restructuring it within the same language.

DMS is a registered trademark of Semantic Designs, Inc.