Type or paste a DOI name into the text box. Please forward this error screen to sharedip-1601533440. The purpose of DMS is to provide sufficient infrastructure so that a custom tool builder can spend her time working on the custom tool details, rather than reengineering the corporation pdf download to build the necessary infrastructure machinery from the ground floor up.
This can save the tool builder literally years of engineering by leveraging the man-century already invested by SD. The term “software” for DMS is very broad and covers any formal notation, including programming languages, markup languages, hardware description languages, design notations, data descriptions, and domain-specific languages. Unlike a conventional compiler, in which each component is specific to its task of translating one source language to one target machine language, each DMS component is highly parameterized by the desired task, enabling a stunningly wide variety of effects. This means one can change the input language, change the analysis, change the transforms, and change the output in arbitrary ways.
DMS can be used “just” to construct analyzers that generate reports. Or, it can be used to find and fix coding and structural issues. An interesting property is that DMS reads formal descriptions of languages, analyses and transforms. DMS is consequently used to support itself, including producing new language descriptions. See a comparison of DMS to other well-known types of compiler technologies. The Software Reengineering Toolkit can be used to implement a wide variety of program enhancing tools.
Our CloneDR is an example of a DMS-enabled custom reengineering application. Java, Fortran 90, and to VHDL. Full UNICODE-based parser and lexer generation with automatic error recovery. Standard support is included for reading multiple source files to enable INCLUDE file management and construct suitable preprocessors. Source comments are captured and attached to AST nodes. Pretty-printer generation converts ASTs back to nicely formatted legal source file form, according to a specified layout information, including source comments.
In fidelity-printing mode, comments, spacing and lexical formatting information of unchanged code is preserved. Attributes may be local or long-distance. Sophisticated symbol-table support facilities for global, local, inherited, overloaded and other language-dependent name lookup and namespace management rules. Data flow analysis framework, to allow data-flow analysis problems to be posed and answered, including predefined analyzers for constructing use-def and def-use chains. Symbolic Range Analysis computing range constraints on program variables in terms of other variables. It is straightforward to convert an AST representing a boolean formula to a BDD, and vice-versa.
COBOL and JCL, C and Makefiles, etc. Transforms and patterns can be written directly in surface-to-surface domain syntax form. Patterns can be matched against syntax trees and return bindings for parameter subtrees. Alternatively, procedural code can implement transforms, or refer to existing transforms and patterns to enable construction of very sophisticated transforms.
Commutative rewrite engine that operates on trees and DAGs, which can be used to apply sets of transforms. A metaprogramming language, XCL, provides the ability to control the sequencing of the application of transforms and sets of transforms. The axioms can be treated as a set of rewrite rules. This allows one to code arbitrary simplification procedures. A technical paper detailing these facilities was published at the 2004 International Conference of Software Engineering. You can get a paper reprint and the corresponding slides. Industrial Scale These foundations have been used for an amazing variety of industrial tasks, including quality analysis, restructuring, automated porting, pretty printing and highly optimized code generation.
DMS is implemented using our parallel language, PARLANSE, to provide computational horsepower consistent with this scale. While DMS runs on a single processor system at unit speed, it also runs on symmetric multiple processor workstations with enhanced performance. As an example, the attribute evaluation process is automatically parallelized, and can often provide a linear speedup on an N-way SMP system. Using Wine, DMS runs on Linux, Solaris and MAC OS X. If you are still reading, you will probabably like this invited Google Tech Talk video on DMS. Available Languages While complex legacy grammars can be defined quickly to enable DMS to operate on source programs in those languages, SD already has language modules and grammars available for many languages. SD will provide expert advice and implementation support as desired by the customer.
While we can train interested customers to use DMS, for some customers this may not be appropriate. Semantic Designs will contract DMS-related service activities for customers. Semantic Designs offers training classes on DMS. SD also offers a number of public tutorials about program transformation systems in general, including some discussion of DMS.