Software maintenance is considered the most expensive activity in software systems development: more than 80% of the resources are devoted to it. During the maintenance activities, software models are very rarely taken into account. The evolution of these models and the transformations that manipulate them are at the heart of model-driven engineering (MDE). However, as the source code, the model changes and tends to become increasingly complex. These changes generally have a negative impact on the quality of models and they cause damage to the software.ududIn this context, refactoring is the most used technique to maintain an adequate quality of these models. The refactoring process is usually done in two steps: the detection of elements of the model to correct (design defects), then the correction of these elements.ududIn this thesis, we propose two main contributions related to detection and correction of defects in class diagrams.ududThe first contribution aims to automate the design defect detection. We propose to adapt genetic algorithms (e.g., genetic programming) to detect parts of the model that may correspond to design defects.ududThe second contribution concerns the automation of the correction of these design defects. We propose to adapt three heuristic methods to suggest refactorings:udud1. A single-objective optimization method based on structural similarities between a given model (i.e., the model to be refactored) and a set of examples of models (i.e., models that have undergone some refactorings);ud2. An interactive single-objective optimization method based on structural similarity and the opinion of the designer; andud3. A multi-objective optimization method that maximizes both the structural and semantic similarities between the model under study and the models in the set of examples.ududAll the proposed methods were implemented and evaluated on models generated from existing open-source projects and the obtained results confirm their efficiency.
展开▼
机译:软件维护被认为是软件系统开发中最昂贵的活动:超过80%的资源专用于此。在维护活动中,很少考虑软件模型。这些模型的演变和操纵它们的转换是模型驱动工程(MDE)的核心。但是,随着源代码的出现,模型发生了变化,并且变得越来越复杂。这些更改通常会对模型的质量产生负面影响,并且会损坏软件。 ud ud在这种情况下,重构是最常用的技术来保持这些模型的适当质量。重构过程通常分两个步骤进行:检测要校正的模型元素(设计缺陷),然后对这些元素进行校正。 ud ud在本文中,我们提出了与缺陷检测和校正有关的两个主要贡献。 ud ud第一个贡献旨在使设计缺陷检测自动化。我们建议采用遗传算法(例如,遗传编程)来检测模型中可能与设计缺陷相对应的部分。 ud ud第二个贡献涉及这些设计缺陷的校正自动化。我们建议采用三种启发式方法来建议重构: ud ud1。一种单目标优化方法,基于给定模型(即要重构的模型)和一组模型示例(即经过某些重构的模型)之间的结构相似性; ud2。一种基于结构相似性和设计者意见的交互式单目标优化方法;和 ud3。一种多目标优化方法,该方法可以使研究中的模型与示例集中的模型之间的结构和语义相似度最大化。 ud ud所有提议的方法都是在现有开源项目和获得的结果证实了它们的效率。
展开▼