DECOR: A Method for the Specification and Detection of Code and Design Smells (HTML)

Triskell Team, Univ. de Rennes 1, Rennes, France
IEEE Transactions on Software Engineering (Impact Factor: 2.29). 01/2010; 36:20-36. DOI: 10.1109/TSE.2009.50
Source: IEEE Xplore

ABSTRACT Code and design smells are poor solutions to recurring implementation and design problems. They may hinder the evolution of a system by making it hard for software engineers to carry out changes. We propose three contributions to the research field related to code and design smells: 1) Decor, a method that embodies and defines all the steps necessary for the specification and detection of code and design smells, 2) Detex, a detection technique that instantiates this method, and 3) an empirical validation in terms of precision and recall of Detex. The originality of Detex stems from the ability for software engineers to specify smells at a high level of abstraction using a consistent vocabulary and domain-specific language for automatically generating detection algorithms. Using Detex, we specify four well-known design smells: the antipatterns Blob, Functional Decomposition, Spaghetti Code, and Swiss Army Knife, and their 15 underlying code smells, and we automatically generate their detection algorithms. We apply and validate the detection algorithms in terms of precision and recall on Xerces v2.7.0, and discuss the precision of these algorithms on 11 open-source systems.

  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: Refactoring large systems involves several sources of uncertainty related to the severity levels of code smells to be corrected and the importance of the classes in which the smells are located. Due to the dynamic nature of software development, these values cannot be accurately determined in practice, leading to refactoring sequences that lack robustness. To address this problem, we introduced a multi-objective robust model, based on NSGA-II, for the software refactoring problem that tries to find the best trade-off between quality and robustness. We evaluated our approach using six open source systems and demonstrated that it is significantly better than state-of-the-art refactoring approaches in terms of robustness in 100% of experiments based on a variety of real-world scenarios. Our suggested refactoring solutions were found to be comparable in terms of quality to those suggested by existing approaches and to carry an acceptable robustness price. Our results also revealed an interesting feature about the trade-off between quality and robustness that demonstrates the practical value of taking robustness into account in software refactoring tasks.
    Symposium on Search-Based Software Engineering, Brazil; 08/2014
  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: System catalog, which is a part of each SQL database, is a repository where the data in its base tables describes the SQL-schemas (schemas) in the database. The SQL standard specifies the Information Schema, which must contain virtual tables (views) that are created based on the base tables of the system catalog. In this paper, we investigate to what extent one can find information about possible design flaws of a SQL database by querying the tables in its Information Schema and possibly tables in its other schemas. We do this based on a set of SQL database design antipatterns, each of which presents a particular type of database design flaw.
    International Conference on Systems, Computing Sciences and Software Engineering (SCSS 12), Virtual; 12/2012
  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: There is a growing need for scalable search-based software engineering approaches that address software engineering problems where a large number of objectives are to be optimized. Software refactoring is one of these problems where a refactoring sequence is sought that optimizes several software metrics. Most of the existing refactoring work uses a large set of quality metrics to evaluate the software design after applying refactoring operations, but current search-based software engineering approaches are limited to using a maximum of five metrics. We propose for the first time a scalable search-based software engineering approach based on a newly proposed evolutionary optimization method NSGA-III where there are 15 different objectives to be optimized. In our approach, automated refactoring solutions are evaluated using a set of 15 distinct quality metrics. We evaluated this approach on seven large open source systems and found that, on average, more than 92% of code smells were corrected. Statistical analysis of our experiments over 31 runs shows that NSGA-III performed significantly better than two other many-objective techniques (IBEA and MOEA/D), a multi-objective algorithm (NSGA-II) and two mono-objective approaches, hence demonstrating that our NSGA-III approach represents the new state of the art in fully-automated refactoring.
    Genetic and Evolutionary Computation Conference, Vancouver; 07/2014

Full-text (4 Sources)

Available from
Jun 10, 2014
Available from