Home Research Teaching Misc

A Software Transformation Taxonomy with requirements

General Refactoring (same language)

Call graph
  Crossreferencing
  Intraprocedural
  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
  Crossreferences?
   
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
  Crossreferences
  Call graph
Program Optimisations (requirements depend on the optimisation)  
   
   

 

dy>