Comparison of Maintainability Improvement by Segmentation and Reengineering – A Case Study

Author(s): Maria Istela Cagnin, Rosangela Penteado, Paulo C. Masiero, Jose C. Maldonado
Venue: IEEE Software
Date: 2001

Type of Experiement: Case Study
Sample Size: 3
Class/Experience Level: Other


Length of study: 1 year
Number of Projects: 1
Language: Java
Size of Projects: Medium – 30,000 LOC
Metrics: Lines of Code, Weighted Methods per Class, Coupling between Classes, Fan in Fan out
Design Patterns Analyzed: Persistence Layer

Software Domain: Statechart Simulation/Editing

In this case study StateSim software project goes through a complete reengineering effort to transform it from legacy procedural C into object oriented Java. It goes through three stages: reverse engineering, segmentation, reengineering to Java. Design patterns were used to provide cohesion between the database and the objects in the software. Metrics are collected for all 3 stages and compared. Also a small informal maintenance experiment is carried out to assess the easiness of modification..

Lines of Code data indicates that the software grew during the segmentation stage and then shrinked for the java stage. The Persistence Layer pattern is responsible for increasing the LOC count of the system during java evolution stages, as indicated by 18% in WMC(Weighted Method per class). Time data shows that the participants spent the least time performing the maintanance taks on the last version, which included Java and design patterns. The longest time spent was of course on the legacy system. The segmented system has about the same time performance and thus is a viable alternative to full reengineering.