DMS Software Reengineering Toolkit: Difference between revisions

Content deleted Content added
BOT--Reverting link addition(s) by 140.239.210.165 to revision 384793940 (http://www.youtube.com/watch?v=C-_dw9iEzhA)
Undid revision 400572432 by XLinkBot (talk) Most changes reverted fixed 'absence of references" earlier complaint. Video copyright s/b OK
Tag: reverting anti-vandal bot
Line 1:
*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]
The '''DMS Software Reengineering Toolkit'''</ref> is a set of [[program transformation]] tools available from [[Semantic Designs]] 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 has been used to implement a wide variety of practical tools, include ___domain specific languages (such as code generation for factory control), test coverage and profiling tools, [[Duplicate_code | clone detection]]<ref>[http://www.computer.org/portal/web/csdl/doi/10.1109/ICSM.1998.738528 ''Clone Detection Using Abstract Syntax Trees''. Proceedings International Conference on Software Maintenance 1998]</ref>, language migration tools, and C++ component reengineering<ref> [http://linkinghub.elsevier.com/retrieve/pii/S0950584906001856 ''Case study: Re-engineering C++ component models via automatic program transformation''. Information and Software Technology 2007]
</ref>.
 
The Toolkit provides means for defining language grammars and will produce [[parsers]] producingwhich 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]] parsing technology, enabing it to handle all practical context-free grammars. Semantic predicates extend this capability to interesting non-context-free grammars ([[Fortran]] requires matching of multiple DO loops with shared CONTINUE statements by label; GLR with semantic predicates enables the DMS Fortran parser to produce ASTs for correctly nested loops as it parses).
It has attribute evaluators for computing custom analyses over ASTs, including [[symbol table]] construction. Other program facts can be extracted by built-in control flow and data [[flow analysis]] engines, local and global [[pointer analysis]], whole-program [[call graph]] extraction, and symbolic range analysis by [[abstract interpretation]].
 
ItDMS hasprovides attribute 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 flow- and data- [[flow analysis]] engines, local and global [[pointer analysis]], whole-program [[call graph]] extraction, and symbolic range analysis by [[abstract interpretation]].
Changes to ASTs can be accomplished by both procedural methods coded in PARLANSE and rule driven surface-syntax tree transformations, conditioned by any of the extracted program facts.
 
Changes to ASTs can be accomplished by both procedural methods coded in PARLANSE and rule driven surface-syntax tree transformations, conditioned by any of the extracted program facts. The rule engine handles associative and commutative rules.
It has a variety of predefined language front ends, covering most real dialects of [[C (programming language)|C]] and [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[PHP]], [[COBOL]], [[Verilog]], [[VHDL]] and some 20+ other languages. Predefined languages enable customizers to immediately focus on their reengineering task rather than on the details of the languages to be processed.
 
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|___domain-specific language]].
 
It has a variety of predefined language front ends, covering most real dialects of [[C (programming language)|C]] and [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[PHP]], [[Fortran]], [[COBOL]], [[Visual Basic]],[[Verilog]], [[VHDL]] and some 20+ 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 is additionally unusual in being implemented in a [[parallel programming]] language, PARLANSE, that uses [[symmetric multiprocessor]]s available on commodity [[workstations]]. This enables DMS to provide faster answers for large system analyses and conversions.
 
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]
called ''Design Maintenance Systems''.
</ref>.
 
(DMS and "Design Maintenance System" are registered trademarks of [[Semantic Designs]])
Line 20 ⟶ 27:
==External links==
{{No footnotes|date=September 2010}}
* [http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html DMS Software Reengineering Toolkit main web page]
* [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]
* [http://www.youtube.com/watch?v=C-_dw9iEzhA Invited Google TechTalk: ''DMS: Software Tool Infrastructure'' (video)]
* [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]
* [http://www.semanticdesigns.com/Products/Services/NorthropGrummanB2.html Modernization of B-2 Spirit Bomber Software Systems] obliquely referenced by<br/>
* [http://linkinghub.elsevier.com/retrieve/pii/S0950584906001856 ''Case study: Re-engineering C++ component models via automatic program transformation''. Information and Software Technology 2007]
[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/Products/Services/NorthropGrummanB2.html Modernization of B-2 Spirit Bomber Software Systems]
* [http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html DMS web page]
* [http://www.semanticdesigns.com/Products/Parlanse/index.html PARLANSE]
* [http://www.semanticdesigns.com Semantic Designs]
Line 31 ⟶ 37:
[[Category:Static code analysis]]
[[Category:Computer-aided software engineering tools]]
 
== References ==
{{Reflist}}