Home Research Teaching Misc

A Software Transformation Taxonomy with requirements

General Refactoring (same language)

Call graph
  Symbol table

General migration to different version of same language

Symbol table
Porting to different language Symbol table
  Control flow

Strength reduction/Desugaring/Simplification

Type information
Porting code to different platforms Symbol table
  Type information?
General Instrumentation Call graph
  Intraprocedural CFG
  Dominator Analysis
  Loop detection/analsyis
AST based instrumentation Node creation/insertion
  AST Pattern Matching
Bug Correction  
1. Dead code removal Reachability
  AST deletion (if ast based)
2. Add missing constructs (e.g default constructor) AST creation/insertion
Program Generation (AST Based) AST creation/insertion
Aspect weaving Symbol table information
  Call graph
Program Optimisations (requirements depend on the optimisation)