Support software evolution with abstration rules and programming knowledge patterns
Guifa Teng, Xiaodong Liu · 2004
This paper advocates that reengineering is an effective means of legacy system evolution. Extracting formal specification semantically consistent to the original legacy system will facilitate further redesign and forward engineering greatly. The key technology is abstraction, which is often interpreted as the act of hiding irrelevant details.Programming knowledge refers to the technique or convention that a programmer used to implement an application. The structure of an existing program was heavily affected by this kind of knowledge. A set of programming knowledge patterns are developed to discover the programming knowledge embedded in legacy systems. Implementation details can be eliminated effectively with these patterns and relevant abstraction rules.A unified reengineering approach with a focus on reverse engineering is proposed. The approach is based on three points: the construction of a wide spectrum language based reengineering framework, the development of abstraction rules and programming knowledge patterns.