An environment for Ada software development based on formal specification
ACM SIGAda Ada Letters
TXL: a rapid prototyping system for programming language dialects
Computer Languages
Software—Practice & Experience
DMS: program transformations for practical scalable software evolution
Proceedings of the International Workshop on Principles of Software Evolution
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Handling Preprocessor-Conditioned Declarations
SCAM '02 Proceedings of the Second IEEE International Workshop on Source Code Analysis and Manipulation
Preprocessor Conditional Removal by Simple Partial Evaluation
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Relocating XML Elements from Preprocessed to Unprocessed Code
IWPC '02 Proceedings of the 10th International Workshop on Program Comprehension
Refactoring Browser with Preprocessor
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
Processing Software Source Text in Automated Design Recovery and Transformation
IWPC '01 Proceedings of the 9th International Workshop on Program Comprehension
Handling the Complexities of a Real-World Language: A Harmonia Language
Handling the Complexities of a Real-World Language: A Harmonia Language
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Measuring multi-language software evolution: a case study
Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution
Scripting a refactoring with Rascal and Eclipse
Proceedings of the Fifth Workshop on Refactoring Tools
Natural and Flexible Error Recovery for Generated Modular Language Environments
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
As software systems become increasingly massive, the advantages of automated transformation tools are clearly evident. These tools allow the machine to both reason about and manipulate high-level source code. They enable off-loading of mundane and laborious programming tasks from human developer to machine, thereby reducing cost and development time frames. Although there has been much work in software transformation, there still exist many hurdles in realizing this technology in a commercial domain. From our own experience, there are two significant problems that must be addressed before transformation technology can be usefully applied in a commercial setting. These are: (1) Avoiding disruption of the style (i.e., layout and commenting) of source code and the introduction of any undesired modifications that can occur as a side effect of the transformation process. (2) Correct automated handling of C preprocessing and the presentation of a semantically correct view of the program during transformation. Many existing automated transformation tools require source to be manually modified so that preprocessing constructs can be parsed. The real semantic of the program remains obscured resulting in the need for complicated analysis during transformation. Many systems also resort to pretty printing to generate transformed programs, which inherently disrupts coding style. In this paper we describe our own C/C++ transformation system, Proteus, that addresses both these issues. It has been tested on millions of lines of commercial C/C++ code and has been shown to meet the stringent criteria laid out by Lucent's own software developers.