'
Reflexivity and meta-tools to manage your software real estate
Numerous techniques are available to develop software while maitaining higher-level information about its architecture, limitations, features, dependencies, etc. However, in many cases, the only reliable information we have is made of large amounts of source code, where the design documents, if any, have not been maintained up to date.
This tutorial describes tools and techniques for extracting information from large software code bases, and possibly performing large scale transformations on it. Topics covered by this tutorial would typically include:
- Reverse engineering, abstracting design information from the code
- Metrics for portability, maintainability, etc.
- Checking how effectively tests exercise the code
- Change impact analysis
- Automated translations, between languages and libraries
- Checking compliance to industry or project guidelines
- Refactorings, that translate high-level design changes into existing code
- Componentization, where legacy code is integrated in modern technical frameworks
- Storage of structured parse trees through translation to canonic XML data structures
- Tools and techniques used cover a range from Perl to the use of reflexive language features. The emphasis will be put on how does Object-Oriented technology contribute to these techniques, and even more importantly, how do these techniques apply to Object-Oriented code.
'