University of Munich / Departement of CS(Informatik)

Alexej Kupin - Master thesis: "Design and development of program transformation tool"


Table of contents


1 Introduction:

2 Motivation:

2.1 Support for code transformation

2.2 First Example
  • 2.2.1 Test-program description
  • 2.2.2 Step by step transformations
  • 2.2.3 Benefits
  • 3 Refactoring:

    3.1 Principles in refactoring
  • 3.1.1 Definition
  • 3.1.2 Properties

  • 3.2 Use of refactoring
  • 3.2.1 Refactorings for reuse
  • 3.2.2 Refactorings for implementation
  • 3.2.3 Refactorings for maintenance

  • 3.3 Transformations
  • 3.3.1 Scheme for transformation
  • 3.3.2 Properties
  • 3.3.3 Tools for refactoring and Wizards
  • 4 Design of transformation-catalog:

    4.1 Criteria for a transformation
  • 4.1.1 Usability of the transformation
  • 4.1.2 Reduction of the user-interaction
  • 4.1.3 Use of multiple transformations
  • 4.1.4 Safety of the transformation
  • 4.1.5 Complex transformations

  • 4.2 Transformation environment
  • 4.2.1 Source code language
  • 4.2.2 Tool support

  • 4.3 Transformations catalog
  • 4.3.1 Low-Level refactorings
    • 4.3.1.1 Creational transformations
      • 4.3.1.1.1 New class
      • 4.3.1.1.2 New method
      • 4.3.1.1.3 New variable
    • 4.3.1.2 "Remove" transformations
      • 4.3.1.2.1 Delete class
      • 4.3.1.2.2 Delete method
      • 4.3.1.2.3 Delete variables
    • 4.3.1.2 "Copy" transformations
      • 4.3.1.3.1 Copy class
      • 4.3.1.3.2 Copy method
      • 4.3.1.3.3 Copy variable
  • 4.3.2 Extended Low-Level refactorings
    • 4.3.2.1 Abstract transformations
      • 4.3.2.1.1 Abstract class
      • 4.3.2.1.2 Abstract method
    • 4.3.2.2 "Move" transformations
      • 4.3.2.2.1 Move class
      • 4.3.2.2.2 Move method
      • 4.3.2.2.3 Move variables
    • 4.3.2.3 Rename transformations
      • 4.3.2.3.1 Rename class
      • 4.3.2.3.2 Rename method
      • 4.3.2.3.3 Rename variable
  • 4.3.3 High-level refactorings
    • 4.3.3.1 Inherit transformations
      • 4.3.3.1.1 Generalize transformations
      • 4.3.3.1.2 Specialize transformations
      • 4.3.3.1.3 Plain inherit
    • 4.3.3.2 Substitute transformations
      • 4.3.3.2.1 Substitute variable type
      • 4.3.3.2.2 Substitute method type
      • 4.3.3.2.3 Substitute method parameters
    • 4.3.3.3 Factory transformations
      • 4.3.3.3.1 New factory
      • 4.3.3.3.2 Add factory method
  • 4.3.4 Other transformations/wizards
    • 4.3.4.1 Variable-access
    • 4.3.4.2 Comments-remove
    • 4.3.4.3 Browser

  • 4.4 Composed transformations
  • 4.4.1 Transformations for design pattern
  • 4.4.2 Mechanism of composition
  • 4.4.3 Examples
  • 5 Implementation of Refactoring-Tool:

    5.1 Introduction of DPT
  • 5.1.1 Tool features
  • 5.1.2 Transformation features

  • 5.2 Design
  • 5.2.1 Environment
    • 5.2.1.2 Generators
    • 5.2.1.2 Parsers
  • 5.2.2 Design of the transformation
    • 5.2.2.1 Transformation-bean
    • 5.2.2.2 Transformation-catalog
  • 5.2.3 Classes and objects
    • 5.2.3.1 DPT-Classes
    • 5.2.3.2 File table implementation
    • 5.2.3.3 Symbol table design
    • 5.2.3.4 Parser-beans
    • 5.2.3.5 Generator-beans
  • 5.2.4 Source code management

  • 5.3 GUI

    5.4 Requirements

    6 Conclusion:

    6.1 Summary of contributions

    6.2 Pros and cons
  • 6.3.1 Benefits
  • 6.3.2 Problems

  • 6.3 Future of refactorings
  • 6.3.1 Future uses
  • 6.3.2 Future extensions of DPT
  • Appendix:

    A References
    B DPT-Tool modules

    Last Modified: 15.08.2000 2000 Alexej Kupin. All rights reserved!