Skip to Main content Skip to Navigation

Reengineering Object Oriented Software Systems for a better Maintainability

Abstract : Legacy software systems often represent significant investmentsfor the companies that develop them with the intention of using themfor a long period of time. The quality of these systems can be degraded over time due to the complex changes incorporated to them.In order to deal with these systems when their quality degradation exceeds a critical threshold, a number of strategies can be used. Thesestrategies can be summarized in: 1) discarding the system and developinganother one from scratch, 2) carrying on the (massive) maintenance of the systemdespite its cost, or 3) reengineering the system. Replacement and massive maintenance are not suitable solutions when the cost and time are to be taken into account, since they require a considerable effort and staff to ensurethe system conclusion in a moderate time. In this thesis, we are interested in the reengineering solution. In general, software reengineering includes all activities following the delivery to the user to improve thesoftware system quality. This latter is often characterized with a set of quality attributes. We propose three contributions to improve specific quality attributes namely: maintainability, understandability and modularity.In order to improve maintainability, we propose to migrateobject oriented legacy software systems into equivalent component based ones.Contrary to exiting approaches that consider a component descriptor as a clusterof classes, each class in the legacy system will be migrated into a componentdescriptor. In order to improve understandability, we propose an approach forrecovering runtime architecture models of object oriented legacy systems and managing the complexity of the resulted models.The models recovered by our approach have the following distinguishing features: Nodes are labeled with lifespans and empirical probabilities of existencethat enable 1) a visualization with a level of detail. 2) the collapsing/expanding of objects to hide/show their internal structure.In order to improve modularity of object-oriented software systems,we propose an approach for identifying modulesand services in the source code.In this approach, we believe that the composite structure is the main structure of the system that must be retained during the modularization process, the component and its composites must be in the same module. Existing modularization works that has this same vision assumes that the composition relationships between the elements of the source code are already available, which is not always obvious. In our approach, module identification starts with a step of runtime architecture models recovery. These models are exploited for the identification of composition relationships between the elements of the source code. Once these relationships have been identified, a composition conservative genetic algorithm is applied on the system to identify modules. Lastly, the services provided by the modules are identified using the runtime architecture models of the software system. Some experimentations and casestudies have been performed to show the feasibility and the gain inmaintainability, understandability and modularity of the software systems studied with our proposals.
Document type :
Complete list of metadatas

Cited literature [168 references]  Display  Hide  Download
Contributor : Abes Star :  Contact
Submitted on : Monday, September 23, 2019 - 2:50:09 PM
Last modification on : Wednesday, September 9, 2020 - 3:08:52 AM
Long-term archiving on: : Sunday, February 9, 2020 - 10:46:03 AM


Version validated by the jury (STAR)


  • HAL Id : tel-02294449, version 1



Soumia Zellagui. Reengineering Object Oriented Software Systems for a better Maintainability. Other [cs.OH]. Université Montpellier, 2019. English. ⟨NNT : 2019MONTS010⟩. ⟨tel-02294449⟩



Record views


Files downloads