Supporting Reuse by Reverse Engineering Software Architecture and Component from Object-Oriented Product Variants and APIs - LIRMM - Laboratoire d’Informatique, de Robotique et de Microélectronique de Montpellier Accéder directement au contenu
Thèse Année : 2015

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

Support à la réutilisation par la rétro-ingénierie des architectures et des composants logiciels à partir du code source orienté objet des variantes de produits logiciels et d'APIs

Anas Shatnawi

Résumé

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.
La réutilisation est reconnue comme une démarche intéressante pour améliorer la qualité des produits et la productivité des projets logiciels. L'ingénierie des logiciels à base de composants (CBSE en anglais) et l'ingénierie des lignes de produits logiciels (SPLE en anglais) sont considérées parmi les approches les plus importantes permettant de faciliter et de soutenir la réutilisation systématique. L'ingénierie à base de composants permet de construire de nouveaux systèmes logiciels par composition de briques pré-construites appelées composants. L'ingénierie des lignes de produits logiciels permet de dériver (construire) de nouveaux produits par simple sélection de leurs caractéristiques (feature en anglais). Cette dérivation est rendue possible grâce à la représentation et à la gestion de la variabilité et de la similarité des produits d'une même famille. Cependant, une des difficultés vers une large adoption de l'ingénierie des logiciels à base de composants et des lignes de produits est le coût à investir pour construire, à partir de rien, les composants et les artefacts de SPL. Ainsi, les travaux de cette thèse se positionnent dans ce contexte et proposent de réduire ce coût par une démarche basée sur la rétro-ingénierie. La première contribution de cette thèse consiste à proposer une approche permettant d'identifier, par l'analyse d'un ensemble de variantes de produit logiciel orienté objet, les éléments du code source pouvant constituer l'implémentation de composants. Au contraire des approches existantes d'identification de composants, basées sur l'analyse d'un seul produit, l'originalité de notre approche consiste en l'analyse de plusieurs variantes de produuits en même temps. Notre objectif est l'amélioration de la réutilisabilité des composants extraits. L'évaluation expérimentale menée dans le cadre de cette thèse a montré la pertinence de cette démarche. La deuxième contribution consiste en la proposition d'une approche pour l'extraction d'une architecture à base de composants d'un ensemble de variantes de produit logiciel orienté objet. Il s'agit d'identifier la variabilité des composants architecturaux et de la configuration architecturale. L'identification de la configuration architecturale est principalement basée sur l'utilisation de l'analyse formelle de concepts pour identifier les dépendances entre les éléments architecturaux. L'expérimentation conduite pour l'évaluation de l'approche proposée confirme la pertinence des résultats obtenus grâce à cette approche. La troisième contribution de cette thèse permet de restructurer les APIs orientées objet en composants. Nous exploitons la spécificité des classes des APIs d'être conçues pour être utilisées par des applications clientes pour identifier ces composants. Le code source de ces APIs et celui de leurs applications clientes est analysé afin d'identifier des groupes de classes qui peuvent constituer l'implémentation de composants à extraire. L'identification de ces groupes de classes est basée sur l'analyse des liens structurels entre ces classes et sur la probabilité que ces classes soient utilisées ensembles par les applications clientes. Nous montrons à travers les résultats expérimentaux que la restructuration des API orientées objet en composants facilite la réutilisation et la compréhension des éléments de ces APIs.
Fichier principal
Vignette du fichier
Shatnawi's PhD Thesis.pdf (3.22 Mo) Télécharger le fichier
Loading...

Dates et versions

tel-01322864 , version 1 (27-05-2016)
tel-01322864 , version 2 (10-06-2016)
tel-01322864 , version 3 (18-01-2019)

Identifiants

  • HAL Id : tel-01322864 , version 2

Citer

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. ⟨NNT : ⟩. ⟨tel-01322864v2⟩
554 Consultations
924 Téléchargements

Partager

Gmail Facebook X LinkedIn More