1 |
An open framework for dynamic reconfigurationHillman, Jamie January 2005 (has links)
No description available.
|
2 |
Easing the creation and maintenance of software systems through the use of domain machinesCoutts, Ian A. January 2003 (has links)
No description available.
|
3 |
Software fault tolerance, reflection and the Ada programming languageRogers, Patrick January 2003 (has links)
No description available.
|
4 |
Refactoring via program slicing and slidingEttinger, Ran January 2006 (has links)
No description available.
|
5 |
Support à la rénovation d'une architecture logicielle patrimoniale : un cas réel chez Thales Land and Air Systems / Support for the renovation of a legacy software architecture : a real case at Thales Land and Air SystemsGovin, Brice 26 June 2018 (has links)
Les entreprises accordent énormément d'importance à identifier des démarches automatisées et réplicables pour résoudre leurs problèmes. Ce constat s'applique aussi au démarche de rénovation d'architecture logicielle. Au sein d'une grande entreprise, nous avons intégré l'équipe chargée de réaliser la rénovation de l'architecture d'un logiciel. Nous avons étudié la démarche informelle suivie par cette équipe afin d'en proposer une généralisation et des outils facilitant son automatisation et sa réplication à d'autres projets. La plupart des solutions proposées dans la littérature ne peuvent s'appliquer à ce projet, du fait de leur caractère manuel, de leurs contraintes particulières ou de leur manque d'application sur des cas réels. Toutefois, nous avons identifié que le Reflexion Model, la recherche d’information et le regroupement statistique peuvent s'y appliquer. Nous avons alors proposé une nouvelle démarche structurée qui se base sur une adaptation du Reflexion Model et sur la démarche réalisée par l'entreprise. Notre démarche utilise cinq critères permettant l'allocation du code source existant à l'architecture du logiciel rénové. Nous avons montré que l'application de nos critères d'allocation donne des résultats satisfaisants au contraire de la recherche d’information et du regroupement. Enfin, pour répondre au besoin d'automatisation, nous avons défini ce que nous appelons des opérateurs. Ils se basent sur les activités que nous avons identifiées dans le travail des ingénieurs de l’entreprise. Nous avons montré que ces opérateurs permettraient de répliquer entièrement notre démarche structurée autorisant ainsi son application efficace sur d'autres projets. / Companies attach great importance to identifying automated and replicable approaches to solving their problems. This observation also applies to the software architecture renovation process. Within a large company, we joined the team in charge of renovating the software architecture. We studied the informal approach followed by this team in order to propose a generalization and tools facilitating its automation and its replication to other projects. Most of the solutions proposed in the literature cannot be applied to this project because of their manual nature, their particular constraints or their lack of application to real cases. However, we have identified that the Reflexion Model, information retrieval and statistical grouping may apply. We then proposed a new structured approach based on an adaptation of the Reflexion Model and on the approach developed by the company. Our approach uses five criteria to allocate existing source code to the architecture of the renovated software. We have shown that the application of our allocation criteria gives satisfactory results as opposed to seeking information and grouping. Finally, to meet the need for automation, we have defined what we call operators. They are based on the activities we have identified in the work of the company's engineers. We have shown that these operators would allow us to fully replicate our structured approach, thus allowing its effective application on other projects.
|
6 |
Détection et analyse de l'impact des défauts de code dans les applications mobiles / Detection and analysis of impact of code smells in mobile applicationsHecht, Geoffrey 30 November 2016 (has links)
Les applications mobiles deviennent des logiciels complexes qui doivent être développés rapidement tout en évoluant de manière continue afin de répondre aux nouveaux besoins des utilisateurs ainsi qu'à des mises à jour régulières. S'adapter à ces contraintes peut provoquer la présence de mauvais choix d'implémentation ou de conception que nous appelons défauts de code. La présence de défauts de code au sein d'une application peut dégrader la qualité et les performances d'une application. Il est alors important de connaître ces défauts mais aussi de pouvoir les détecter et les corriger. Les défauts de code sont bien connus pour les applications orientés objets et de nombreux outils permettent leurs détections, mais ce n'est pas le cas pour les applications mobiles. Les connaissances concernant les défauts de code dans les applications mobiles sont lacunaires, de plus les outils permettant la détection et la correction des défauts sont inexistants ou peu matures. Nous présentons donc ici une classification de 17 défauts de code pouvant apparaître dans les applications Android, ainsi qu'un outil permettant la détection et la correction des défauts de code sur Android. Nous appliquons et validons notre méthode sur de grandes quantités d'applications (plus de 3000) dans deux études qui évaluent la présence et l'évolution du nombre des défauts de code dans des applications populaires. De plus, nous présentons aussi deux approches destinées à évaluer l'impact de la correction des défauts de code sur les performances et la consommation d'énergie. Ces approches nous ont permis d'observer que la correction des défauts de code est bénéfique dans la plupart des cas. / Mobile applications are becoming complex software systems that must be developed quickly and evolve continuously to fit new user requirements and execution contexts. However, addressing these constraints may result in poor low-level design choices, known as code smells. The presence of code smells within software systems may incidentally degrade their quality and performance, and hinder their maintenance and evolution. Thus, it is important to know this smells but also to detect and correct them. While code smells are well-known in object-oriented applications, their study in mobile applications is still in their infancy. Moreover there is a lack of tools to detect and correct them. That is why we present a classification of 17 code smells that may appear in Android applications, as well as a tool to detect and correct code smells on Android. We apply and validate our approach on large amounts of applications (over 3000) in two studies evaluating the presence and evolution of the number of code smells in popular applications. In addition, we also present two approaches to assess the impact of the correction of code smells on performance and energy consumption. These approaches have allowed us to observe that the correction of code smells is beneficial in most cases.
|
7 |
Assessing and improving code transformations to support software evolution / Évaluation et amélioration des transformations de code pour soutenir l'évolution logicielleDe Souza Santos, Gustavo Jansen 28 February 2017 (has links)
Dans le domaine du développement logiciel, le changement est la seule constante. Les logiciels évoluent parfois de façon substantielle et, pendant ce processus, des séquences de transformation de code (par exemple, créer une classe, puis surcharger une méthode) sont systématiquement appliquées dans le système (e.g. à certaines classes dans une même hiérarchie). De par la nature répétitive de ces transformations, il est nécessaire d’automatiser leur support afin d’assurer que ces séquences de transformations sont appliquées de façon consistante sur la globalité du système.Dans cette thèse, nous proposons d’améliorer les transformations de code pour mieux aider les développeurs dans l’application de transformation de code systématiques et complexes. Nous couvrons deux aspects:• Le support automatisé pour composer et appliquer des séquences de transformations de code. Nous réalisons une recherche de l’existence de telles séquences dans de vrais logiciels. Nous proposons un outil pour appliquer automatiquement ces séquences dans les systèmes que nous avons analysés. • La détection de violations de bons principes dans la conception lors d’efforts de transformation. Nous proposons un outil qui recommande des transformations additionnelles pour résoudre les violations de conception qui ont pu être détectées après avoir effectué les transformations de refactoring.Nous évaluons les approches proposées quantitativement et qualitativement sur des cas d’étude issus du monde réel, parfois avec l’aide des experts du système analysé. Les résultats obtenus montrent la pertinence de nos approches. / In software development, change is the only constant. Software systems sometimes evolve in a substantial way and, during this process, sequences of code transformations (e.g., create a class, then override a method) are systematically performed in the system (e.g., to some classes in the same hierarchy). Due to the repetitive nature of these transformations, some automated support is needed to ensure that these sequences of transformations are consistently applied to the entire system.In this thesis we propose to improve source code transformations to better sup- port developers performing more complex and systematic code transformations. We cover two aspects: • The automated support to compose and apply sequences of code transformations. We undergo an investigation on the existence of these sequences in real-world software systems. We propose a tool to automatically apply these sequences in the systems we analyzed. • The detection of design violations during a transformation effort. We undergo an investigation on cases of systematic application of refactoring transformations. We proposed a tool that recommends additional transformations to fix design violations that are detected after performing refactoring transformations.We evaluated the proposed approaches quantitatively and qualitatively in real-world case studies and, in some cases, with the help of experts on the systems under analysis. The results we obtained demonstrate the usefulness of our approaches.
|
8 |
From runtime failures to patches : study of patch generation in production / De l’erreur d'exécution aux correctifs : une étude de la génération de correctifs en productionDurieux, Thomas 25 September 2018 (has links)
Dans le cadre de la gestion du cycle de vie d’une application, la création de correctifs de bugs est une des tâches les plus importantes. Or celle-ci prend aussi le plus de temps, non seulement parce qu'il est difficile de créer un bon correctif, mais également parce qu'elle nécessite des interventions humaines. Un utilisateur doit en effet signaler le bug et le développeur doit le reproduire et le corriger, processus long et fastidieux. Il existe des techniques qui automatisent cette tâche mais elles exigent toujours l’intervention humaine à savoir qu'un développeur crée un test reproduisant le bug, exigence qui réduit considérablement leur applicabilité. Dans le cadre de cette thèse, nous proposons une nouvelle approche qui supprime cette exigence en créant de nouvelles techniques de génération de correctifs. Notre approche repose sur l'idée de rapprocher le plus possible la génération de correctifs de l'environnement de production. En effet c’est celui-ci qui contient toutes les données et toutes les interactions humaines qui mènent aux bugs. Au cours de cette thèse, nous présentons comment exploiter ces données pour détecter les bugs, comment générer les correctifs et comment les valider, le tout sans l'intervention d'un développeur. Nous évaluons notre approche sur sept jeux différents de correctifs réels provenant de projets open-sources en veillant, entre autres, à être particulièrement attentifs au nombre de correctifs générés, à leur validité ainsi qu’au temps requis pour leur génération. Ces évaluations démontrent l'applicabilité et la faisabilité de notre approche dans la génération de correctifs en production sans l'intervention d'un développeur. / Patch creation is one of the most important actions in the life cycle of an application. Creating patches is a really time-consuming task. Not only because it is difficult to create a good and valid patch, but also because it requires the intervention of humans. Indeed, a user must report the bug and a developer must reproduce it and fix it, which takes a lot of time. To address this problem, techniques that automate this task have been created but those techniques still require a developer to create a test that reproduces the bug. This requirement drastically reduces the applicability of the approach since it still relies on the human. This thesis proposes new patch generation techniques that remove the human intervention for the generation of patches. Our idea is to put as close as possible the generation of patches to the production environment. We adopt this approach because the production environment contains all the data and human interactions that lead to the bug. During this thesis, we present how to exploit this data to detect bugs, generate and validate patches without the intervention of developers. We evaluate this approach on seven different benchmarks of real bugs collected from open-source projects. During the evaluation, we are particularly attentive to the number of generated patches, the correctness and the readability of the generated patches and the time required for generating them. Our evaluation shows the applicability and feasibility of our approach to generate patches in the production environment without the intervention of a developer.
|
9 |
Automatic analysis and repair of exception bugs for java programs / Analyse et Réparation automatique des bugs liées aux exceptions en javaCornu, Benoit 26 November 2015 (has links)
Le monde est de plus en plus informatisé. Il y a de plus en plus de logiciels en cours d'exécution partout, depuis les ordinateurs personnels aux serveurs de données, et à l'intérieur de la plupart des nouvelles inventions connectées telles que les montres ou les machines à laver intelligentes. Toutes ces technologies utilisent des applications logicielles pour effectuer les taches pour lesquelles elles sont conçus. Malheureusement, le nombre d'erreurs de logiciels croît avec le nombre d'applications logicielles.Dans cette thèse, nous ciblons spécifiquement deux problèmes:Problème n°1: Il ya un manque d'informations de débogage pour les bugs liés à des exceptions.Cela entrave le processus de correction de bogues. Pour rendre la correction des bugs liées aux exceptions plus facile, nous allons proposer des techniques pour enrichir les informations de débogage.Ces techniques sont entièrement automatisées et fournissent des informations sur la cause et les possibilités de gestion des exceptions.Problème n ° 2: Il y a des exceptions inattendues lors de l'exécution pour lesquelles il n'y a pas de code pour gérer l'erreur.En d'autres termes, les mécanismes de résilience actuels contre les exceptions ne sont pas suffisamment efficaces. Nous proposons de nouvelles capacités de résilience qui gérent correctement les exceptions qui n'ont jamais été rencontrées avant. Nous présentons quatre contributions pour résoudre les deux problèmes présentés. / The world is day by day more computerized. There is more and more software running everywhere, from personal computers to data servers, and inside most of the new popularized inventions such as connected watches or intelligent washing machines. All of those technologies use software applications to perform the services they are designed for. Unfortunately, the number of software errors grows with the number of software applications. In isolation, software errors are often annoyances, perhaps costing one person a few hours of work when their accounting application crashes.Multiply this loss across millions of people and consider that even scientific progress is delayed or derailed by software error: in aggregate, these errors are now costly to society as a whole.We specifically target two problems:Problem #1: There is a lack of debug information for the bugs related to exceptions.This hinders the bug fixing process.To make bug fixing of exceptions easier, we will propose techniques to enrich the debug information.Those techniques are fully automated and provide information about the cause and the handling possibilities of exceptions.Problem #2: There are unexpected exceptions at runtime for which there is no error-handling code.In other words, the resilience mechanisms against exceptions in the currently existing (and running) applications is insufficient.We propose resilience capabilities which correctly handle exceptions that were never foreseen at specification time neither encountered during development or testing. In this thesis, we aim at finding solutions to those problems. We present four contributions to address the two presented problems.
|
10 |
Test selection practices in a large IT company / Les pratiques de sélection de test dans une grande entreprise d’informatiqueBlondeau, Vincent 08 November 2017 (has links)
Worldline, une importante société d’informatique, doit améliorer la qualité de ses projets. Nous avons réalisé un audit sur plusieurs projets de l’entreprise afin d’identifier comment éviter l’échec des projets: aucune conclusion définitive n'en a été tirée. Cependant, il a mis en lumière le besoin d’améliorer l’utilisation des tests. Effectivement, tester chaque partie du code est requis pour éviter l’échec du projet. Dans l’industrie, notamment à Worldline, l’automatisation des tests a commencé dans le but de maîtriser le comportement des applications. Mais, exécuter tous les tests après un changement peut être une coûter plusieurs heures. Le retour sur le code changé est retardé et le développeur perd du temps pour découvrir les potentiels bogues. La solution généralement proposée dans la littérature consiste à réduire le nombre de tests à lancer en sélectionnant seulement ceux relatifs aux derniers changements effectués. L’approche sélectionne un jeu de tests réduit et approprié qui détectera de potentielles régressions dans l’application. Chaque approche de sélection de tests a besoin d’être étudiée dans le contexte de Worldline et adaptée en conséquence pour convenir aux habitudes des développeurs. Avant d’intégrer une telle approche, une étude a été faite pour connaître les habitudes actuelles des développeurs vis-à-vis de la sélection de tests. Grâce à cette étude, nous avons développé un outil pour les développeurs visant à effectuer la sélection des tests. Le but est aussi d’étudier l’impact de cet outil sur leur comportement. Nous espérons que cette approche de sélection de tests apportera des changements dans leur processus de développement. / Worldline, a major IT company, has to increase the quality of its projects. We performed an audit of several projects of the company to identify how to avoid project failure: no final conclusion has been drawn. However, it highlighted a need to enhance testing usage. To test every piece of code is compulsory to avoid project failure. In industry and more specifically in Worldline, automation of tests has begun to ensure the proper behavior of their applications. But, ensuring the execution of all tests after a change can be a costly operation requiring several hours. Feedback on the changed code is delayed and developer has to spent time to discover the potential bugs. The solution generally proposed in literature consists in reducing the number of tests to run by selecting only the ones related to the last changes made by the developer. The approach selects a suitable and small set of tests to detect potential regression in the application behavior.These approaches need to be studied in the context of Worldline and consequently adapted to suit developers’ habits. Before integrating such an adapted test selection approach, a study of the testing behavior of the developers has been done to get their current test selection usage. Based on the study of the Worldline environment, we developed a tool for the developers aiming to perform test selection.The goal is also to study the impact of this tool on their behavior. We hope that the test selection approach that is packaged in a tool adapted to the Worldline developers will bring a change in their developmentprocess.
|
Page generated in 0.0185 seconds