• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 3
  • 2
  • Tagged with
  • 5
  • 5
  • 3
  • 3
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 1
  • 1
  • 1
  • 1
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
1

Reengineering Object Oriented Software Systems for a better Maintainability / Ré-ingénierie des applications à objets pour une amélioration de leurs attributs de qualité

Zellagui, Soumia 05 July 2019 (has links)
Les systèmes logiciels existants représentent souvent des investissements importants pour les entreprises qui les développent avec l’intention de les utiliser pendant une longue période de temps. La qualité de ces systèmes peut être dégradée avec le temps en raison des modifications complexes qui leur sont incorporées. Pour faire face à une telle dégradation lorsque elle dépasse un seuil critique, plusieurs stratégies peuvent être utilisées. Ces stratégies peuvent se résumer en: 1) remplaçant le système par un autre développé à partir de zéro, 2) poursuivant la maintenance(massive) du système malgré son coût ou 3) en faisant une réingénierie du système. Le remplacement et la maintenance massive ne sont pas des solutions adaptées lorsque le coût et le temps doivent être pris en compte, car elles nécessitent un effort considérable et du personnel pour assurer la mise en œuvre du système dans un délai raisonnable. Dans cette thèse, nous nous intéressons à la solution de réingénierie. En général, la réingénierie d’un système logiciel inclut toutes les activités après la livraison à l’utilisateur pour améliorer sa qualité. Cette dernière est souvent caractérisé par un ensemble d’attributs de qualité. Nous proposons trois contributions pour améliorer les attributs de qualité spécifiques, que soient:la maintenabilité, la compréhensibilité et la modularité. Afin d’améliorer la maintenabilité, nous proposons de migrer les systèmes logiciels orientés objets vers des systèmes orientés composants. Contrairement aux approches existantes qui considèrent un descripteur de composant comme un cluster des classes, chaque classe du système existant sera migré en un descripteur de composant. Afin d’améliorer la compréhensibilité, nous proposons une approche pour la reconstruction de modèles d’architecture d’exécution des systèmes orientés objet et de gérer la complexité des modèles résultants. Les modèles, graphes, générés avec notre approche ont les caractéristiques suivantes: les nœuds sont étiquetés avec des durées de vie et des probabilités d’existence permettant 1) une visualisation des modèles avec un niveau de détail. 2) de cacher/montrer la structure interne des nœuds. Afin d’améliorer la modularité des systèmes logiciels orientés objets, nous proposons une approche d’identification des modules et des services dans le code source de ces systèmes.Dans cette approche, nous croyons que la structure composite est la structure principale du système qui doit être conservée lors du processus de modularisation, le composant et ses composites doivent être dans le même module. Les travaux de modularisation existants qui ont cette même vision, supposent que les relations de composition entre les éléments du code source sont déjà disponibles ce qui n’est pas toujours évident. Dans notre approche, l’identification des modules commence par une étape de reconstruction de modèles d’architecture d’exécution du système étudié. Ces modèles sont exploités pour d’identification de relations de composition entre les éléments du code source du système étudié. Une fois ces relations ont été identifiées, un algorithme génétique conservatif aux relations de composition est appliqué sur le système pour identifier des modules. En dernier, les services fournis par les modules sont identifiés à l’aide des modèles de l’architecture d’exécution du système logiciel analysé. Quelques expérimentations et études de cas ont été réalisées pour montrer la faisabilité et le gain en maintenabilité, compréhensibilité et modularité des logiciels traités avec nos propositions. / 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.
2

ELKAR - Ré-Ingénierie d'applications pour la mise en oeuvre de la coopération : Méthodologie et Architecture

Roose, Philippe 14 December 2000 (has links) (PDF)
Il émerge des entreprises une forte demande d'évolution de leurs applications informatiques vers plus de coopération. Le problème est de réaliser cette migration tout en gardant la qualité de l'existant rompu aux difficultés rencontrées. Ceci suppose une ré-ingénierie de ces applications. Dans certains cas, des solutions provisoires et non satisfaisantes ont été apportées sous forme de coopération externe. Celle-ci consiste par des moyens humains, logiciels et matériels, à mettre en relation certaines entités produisant de l'information à celles la nécessitant. Cette coopération externe présente divers inconvénients : souvent lente, peu efficace, peu souple, et demandant des moyens parfois disproportionnés par rapport aux gains obtenus. En automatisant la coopération nous pensons pouvoir éliminer l'ensemble des problèmes énumérés ci-dessus tout en améliorant tant du point de vue qualitatif que quantitatif la part prise par la coopération. <br />Nous allons pour cela proposer une méthode basée sur une organisation de modules opératoires en groupes de travail dynamiques dont la composition peut évoluer au cours du temps. Cette méthode permettra également de mettre en évidence les éléments de coopération, de les mettre en relation et de les composer éventuellement afin d'en créer de nouveaux plus riches sémantiquement et donc plus à même d'être utilisés dans un environnement coopératif. <br />Afin de rendre opérationnelle notre méthode, la dernière étape proposée va permettre d'obtenir des règles de type ÉCA à partir d'un langage de spécification associé à la méthode. Ces règles permettront la mise en œuvre concrête de la coopération. Elles seront exécutées par la plate-forme coopérative distribuée que nous avons développée et qui permet à la fois la gestion des groupes de travail dynamiques et la circulation des éléments de coopération.<br />Notre approche globale permet la mise en œuvre de la coopération par ré-ingénierie de l'application sans modifier les modules opératoires existants. Nous proposons une méthode intégralement dérivable (après vérification formelle) en règles, elles même intégrées à une plate-forme qui permet la mise en coopération.
3

Une approche pour la maintenance et la ré-ingénierie globale des logiciels

Favre, Jean-Marie 26 October 1995 (has links) (PDF)
Alors que l'informatique est résolument tournée vers l'avenir, cette thèse se concentre sur le passé ; non pas par nostalgie mais plutôt parce que le futur des logiciels âgés est une question d'actualité. Plus particulièrement trois thèmes sont abordés : la maintenance, la ré-ingénierie et la programmation globale. L'objectif de cette étude est d'explorer l'intersection entre la ré-ingénierie et la programmation globale, domaine que nous avons baptisé ré-ingénierie globale. L'idée principale est de réutiliser des concepts et des techniques de programmation détaillée. En fait nous proposons de définir la programmation globale en distinguant 4 aspects du logiciel : l'architecture, la manufacture, la variation et l'évolution. Un modèle abstrait basé sur des concepts ensemblistes est proposé pour modéliser les différentes entités de programmation globale. La technologie relative à ce domaine est ensuite décrite en considérant aussi bien l'état de l'art que l'état de la pratique. La différence entre ces deux aspects souligne l'intérêt de la ré-ingénierie globale. A titre d'illustration, nous étudions le cas des préprocesseurs en tant qu'outils de programmation globale. Ces outils de bas niveau provenant des années 70 sont traditionnellement utilisés pour décrire des familles de programmes. Pour faciliter la compréhension de tels artefacts nous proposons d'utiliser des techniques comme l'évaluation partielle, l'analyse inter-procédurale de flot de données ou encore le découpage. Ces techniques, définies de manière rigoureuse, s'appuient sur la sémantique dénotationnelle du préprocesseur utilisé. Un prototype montrant leur utilité a été réalisé. Il prouve qu'une approche basée sur des fondements théoriques issus de la programmation détaillée est applicable pour résoudre des problèmes pratiques de programmation globale.
4

Scorpio : une Approche d'Adaptation Structurelle de Composants Logiciels - Application aux Environnements Ubiquitaires

Bastide, Gautier 12 December 2007 (has links) (PDF)
La réutilisation à grande échelle de composants logiciels se révèle être un challenge pour la conception de nouvelles applications. Dans la grande majorité des cas, pour être intégrés à une application, les composants disponibles ont besoin d'être adaptés afin de faire face à la multiplicité des environnements de déploiement dotés de caractéristiques variables. Ainsi, pour éviter le redéveloppement de nouveaux composants et favoriser la réutilisation, de nombreuses approches ont proposé des techniques permettant d'adapter le comportement de composants existants. Cependant, adapter le comportement de composants n'est pas suffisant pour permettre leur réutilisation : il faut également adapter leur structure. Or, aucune approche existante ne permet de répondre pleinement à ces besoins en adaptation structurelle. Ainsi, notre objectif est de proposer une approche, appelée Scorpio, permettant d'adapter la structure de composants. Nous nous focalisons plus particulièrement sur des composants existants. Dans un premier temps, nous nous sommes intéressés à l'adaptation structurelle de composants existants en proposant un processus permettant leur ré-ingénierie vers de nouvelles structures. Puis, pour répondre aux besoins liés à une adaptation sans interruption de l'exécution, nous avons proposé des mécanismes permettant de prendre en charge l'adaptation dynamique de ces composants. Partant du constat qu'un certain nombre d'environnements, tels que les environnements ubiquitaires, nécessite une automatisation du processus d'adaptation, nous avons proposé alors de prendre en charge ces besoins à travers une approche permettant l'auto-adaptation structurelle de composants logiciels. Enfin, nos propositions ont été mises en œuvre d'une part par la réalisation du prototype Scorpio-Tool implémenté en Fractal et d'autre part, par la définition et le développement d'un scénario ubiquitaire permettant l'expérimentation de ces propositions.
5

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

Shatnawi, Anas 29 June 2015 (has links)
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 plus importants paradigmes de réutilisation systématique. L'ingénierie à base de composants permet de développer 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 lignes de produits. Dans ce contexte, les travaux de cette thèse 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 d'un produit logiciel orienté objet, les éléments du code source pouvant servir à 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 produits 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 d'un produit logiciel orienté objet. Il s'agit d'identifier la variabilité des composants architecturaux et la configuration architecturale. L'identification de la configuration architecturale est principalement basée sur l'utilisation de l'analyse formelle de concepts pour trouver les dépendances entre les éléments architecturaux. L'expérimentation conduite pour l'évaluation de l'approche proposée confirme la pertinence des éléments identifiés.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 sont analysés afin d'identifier des groupes de classes qui peuvent servir à 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 ensemble 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. / 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 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.Finally, 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.

Page generated in 0.0843 seconds