Domain model-driven software reengineering and maintenance
Abstract This article describes a method for reengineering business systems. The method's objective is to produce a library of reusable software components based on the analysis of existing code. The library contains conceptual data models, procedural pseudocode, screens, and reports that can be fed into a CASE repository and code generators. The domain model plays a central role in this approach. By grouping procedures around data model entities and attaching procedures to screens and reports, the domain model creates an object-oriented view of a system. In business applications, many domain objects correspond to entities in a conceptual data model. Therefore, we first reconstruct a data model and then derive the first-cut domain model from it. Data definitions in a program are directly linked to domain objects. The programmer inspects a program via the domain model. Combinations of pattern matching, program slicing, and other static program analysis techniques help the programmer to identify and recover procedural code related to system functionalities. Recovered design abstractions are linked to the domain model and form a library of reusable components. By integrating the original system with the library, the domain model ensures that software components recovered from code are kept up to date with changes made to the system during ongoing maintenance.