Supporting Reuse by Reverse Engineering Software Architecture and Component from Object-Oriented Product Variants and APIs

Anas Shatnawi 1
1 MAREL - Models And Reuse Engineering, Languages
LIRMM - Laboratoire d'Informatique de Robotique et de Microélectronique de Montpellier
Abstract : It is widely recognized that software quality and productivity can be significantly improved by applying a systematic reuse approach. In this context, Component-Based Software Engineering (CBSE) and Software Product Line Engineering (SPLE) are considered as two important systematic reuse paradigms. CBSE aims at composing software systems based on pre-built software components and SPLE aims at building new products by managing commonalty and variability of a family of similar software. However, building components and SPL artifacts from scratch is a costly task. In this context, our dissertation proposes three contributions to reduce this cost. Firstly, we propose an approach that aims at mining reusable components from a set of similar object-oriented software product variants. The idea is to analyze the commonality and the variability of product variants, in order to identify pieces of code that may form reusable components. Our motivation behind the analysis of several existing product variants is that components mined from these variants are more reusable for the development of new software products than those mined from single ones. The experimental evaluation shows that the reusability of the components mined using our approach is better than those mined from single software. Secondly, we propose an approach that aims at restructuring object-oriented APIs as component-based ones. This approach exploits specificity of API entities by statically analyzing the source code of both APIs and their software clients to identify groups of API classes that are able to form components. Our assumption is based on the probability of classes to be reused together by API clients on the one hand, and on the structural dependencies between classes on the other hand. The experimental evaluation shows that structuring object-oriented APIs as component-based ones improves the reusability and the understandability of these APIs. Finally, we propose an approach that automatically recovers the component-based architecture of a set of object-oriented software product variants. Our contribution is twofold: the identification of the architectural component variability and the identification of the configuration variability. The configuration variability is based on the identification of dependencies between the architectural elements using formal concept analysis. The experimental evaluation shows that our approach is able to identify the architectural variability.
Document type :
Theses
Complete list of metadatas

Cited literature [76 references]  Display  Hide  Download

https://hal-lirmm.ccsd.cnrs.fr/tel-01322864
Contributor : Anas Shatnawi <>
Submitted on : Friday, June 10, 2016 - 10:23:46 PM
Last modification on : Saturday, January 19, 2019 - 1:16:34 AM

Identifiers

  • HAL Id : tel-01322864, version 2

Collections

Citation

Anas Shatnawi. Supporting Reuse by Reverse Engineering Software Architecture and Component from Object-Oriented Product Variants and APIs . Software Engineering [cs.SE]. Lirmm, University of Montpellier, 2015. English. ⟨tel-01322864v2⟩

Share

Metrics

Record views

373

Files downloads

1031