Content deleted Content added
Citation bot (talk | contribs) Alter: template type. | Use this bot. Report bugs. | Suggested by AManWithNoPlan | #UCB_webform 1136/2600 |
remove some puffery and define some sections |
||
Line 25:
}}
The '''DMS Software Reengineering Toolkit'''<ref>[http://portal.acm.org/citation.cfm?id=999466&dl=GUIDE&coll=GUIDE&CFID=55567354&CFTOKEN=76359207 ''DMS: Program Transformations for Practical Scalable Software Evolution''. Proceedings International Conference on Software Engineering 2004] [http://www.semanticdesigns.com/Company/Publications/DMS-for-ICSE2004-reprint.pdf Reprint]</ref> is a proprietary set of [[program transformation]] tools available for automating custom source program analysis, modification, translation or generation of software systems for arbitrary mixtures of source languages for large scale software systems. DMS was originally motivated by a theory for maintaining designs of software called ''Design Maintenance Systems.''<ref>[http://portal.acm.org/citation.cfm?id=129859 ''Design Maintenance Systems''. Communications of the ACM 1992][http://www.semanticdesigns.com/Company/Publications/DMS-CACM-1992-baxter.pdf Reprint]
</ref> DMS and "Design Maintenance System" are registered trademarks of Semantic Designs.▼
==Usage==
DMS has been used to implement
== Features ==
The toolkit provides means for defining language grammars and will produce [[parser]]s which automatically construct [[abstract syntax trees]] (ASTs), and [[prettyprinter]]s to convert original or modified ASTs back into compilable source text. The parse trees capture, and the prettyprinters regenerate, complete detail about the original source program, including source position, comments, radix and format of numbers, etc., to ensure that regenerated source text is as recognizable to a programmer as the original text modulo any applied transformations.
DMS uses [[GLR parser|GLR]] parsing technology with semantic predicates. This enables it to handle all context-free grammars as well as most non-context-free language syntaxes, such as [[Fortran]], which requires matching of multiple DO loops with shared CONTINUE statements by label to produce ASTs for correctly nested loops as it parses. DMS has a variety of predefined language front ends, covering most real dialects of [[C (programming language)|C]] and [[C++]] including [[C++0x]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[PHP]], [[EGL (programming language)|EGL]], [[Fortran]], [[COBOL]], [[Visual Basic]], [[Verilog]], [[VHDL]] and some 20 or more other languages. DMS
DMS provides [[attribute grammar]] evaluators for computing custom analyses over ASTs, such as metrics, and
DMS is implemented in a [[parallel programming]] language, PARLANSE, which allows using [[symmetric multiprocessing]] to speed up large analyses and conversions.<ref>{{cite web |title=Semantic Designs: PARLANSE Parallel Programming Language for Windows Pentium/80x86 |url=http://www.semanticdesigns.com/Products/Parlanse/index.html |website=www.semanticdesigns.com}}</ref>
▲DMS provides [[attribute grammar]] evaluators for computing custom analyses over ASTs, such as metrics, and including special support for [[symbol table]] construction. Other program facts can be extracted by built-in control- and data- [[flow analysis]] engines, local and global [[pointer analysis]], whole-program [[call graph]] extraction, and symbolic range analysis by [[abstract interpretation]].
=== Rewriting ===
Changes to ASTs can be accomplished by both procedural methods coded in PARLANSE and source-to-source tree transformations coded as [[rewrite rule]]s using surface-syntax conditioned by any extracted program facts, using DMS's Rule Specification Language (RSL). The rewrite rule engine supporting RSL handles associative and commutative rules. A rewrite rule for C to replace a complex condition by the <code>?:</code> operator be written as:
Line 51 ⟶ 56:
A [http://www.semanticdesigns.com/Products/DMS/SimpleDMSDomainExample.html complete example] of a language definition and source-to-source transformation rules defined and applied is shown using high school [[algebra]] and a bit of [[calculus]] as a ___domain-specific language.
▲DMS has a variety of predefined language front ends, covering most real dialects of [[C (programming language)|C]] and [[C++]] including [[C++0x]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[PHP]], [[EGL (programming language)|EGL]], [[Fortran]], [[COBOL]], [[Visual Basic]], [[Verilog]], [[VHDL]] and some 20 or more other languages. Predefined languages enable customizers to immediately focus on their reengineering task rather than on the details of the languages to be processed.
▲DMS and "Design Maintenance System" are registered trademarks of Semantic Designs.
== References ==
Line 68 ⟶ 64:
* {{youtube|C-_dw9iEzhA|Invited Google TechTalk: ''DMS: Software Tool Infrastructure''}}
* [http://www.semanticdesigns.com/Products/Services/NorthropGrummanB2.html Modernization of B-2 Spirit Bomber Software Systems] obliquely referenced by [https://web.archive.org/web/20100521002050/http://www.irconnect.com/noc/press/pages/news_releases.html?d=145810 Northrop Grumman-funded initiative that developed a cost-effective way to translate (JOVIAL) software]
* [http://www.semanticdesigns.com Semantic Designs]
|