On Using UML Diagrams to Identify and Assess Software Design Smells

Thorsten Händler

Publication: Chapter in book/Conference proceedingContribution to conference proceedings


Deficiencies in software design or architecture can severely impede and slow down the software development and maintenance progress. Bad smells and anti-patterns can be an indicator for poor software design and suggest for refactoring the affected source code fragment. In recent years, multiple techniques and tools have been proposed to assist software engineers in identifying smells and guiding them through corresponding refactoring steps. However, these detection tools only cover a modest amount of smells so far and also tend to produce false positives which represent conscious constructs with symptoms similar or identical to actual bad smells (e.g., design patterns). These and other issues in the detection process demand for a code or design review in order to identify (missed) design smells and/or re-assess detected smell candidates. UML diagrams are the quasi-standard for documenting software design and are often available in software projects. In this position paper, we investigate whether (and to what extent) UML diagrams can be used for identifying and assessing design smells. Based on a description of difficulties in the smell detection process, we discuss the importance of design reviews. We then investigate to what extent design documentation in terms of UML2 diagrams allows for representing and identifying software design smells. In particular, 14 kinds of design smells and their representability in UML class and sequence diagrams are analyzed. In addition, we discuss further challenges for UML-based identification and assessment of bad smells.
Original languageEnglish
Title of host publicationProc. of the 13th International Conference on Software Technologies (ICSOFT 2018)
Editors SciTePress
Place of PublicationPorto, Portugal
Pages413 - 421
Publication statusPublished - 2018

Austrian Classification of Fields of Science and Technology (ÖFOS)

  • 102022 Software development
  • 102 not use (legacy)
  • 102015 Information systems
  • 502050 Business informatics

Cite this