Reengineering of Software Applications

Usually we performed software reengineering during porting of legacy software applications and their maintenance. We gained experience of source code reengineering developed on popular programming languages (Java, C/C++) as well as rare/exotic (SmallTalk). Our specialists performed reengineering of different databases (Oracle, Informix, etc.), which contained stored procedures.

Reengineering Workflow

When reengineering software product developed with use of OOP-language we usually follow the described below workflow.

  • Class diagram re-construction. We have long-lasting experience of usage of applications that reengineer source code and build class diagrams, starting with RationalRose-98.
  • Inheritance hierarchy analysis. During this stage groups of classes with similar functions are extracted.
  • Analysis of classes' interactions according to design patterns.
  • Extraction of functional groups of classes to understand architecture of the software application.
  • Analysis of classes' methods. This stage is devoted to reengineering of business logic and complicated data processing algorithms.
  • Creation of documentation. On customers demand all the results of reengineering may be combined in a document (group of documents) containing description of the software application architecture, selected classes and data processing algorithms.

Our portfolio contains description of such a project.