Home > Research > Publications & Outputs > How Do Software Developers Identify Design Prob...

Electronic data

  • SBES_2017

    Rights statement: © ACM, 2017. This is the author's version of the work. It is posted here for your personal use. Not for redistribution. The definitive Version of Record was published in SBES'17 Proceedings of the 31st Brazilian Symposium on Software Engineering http://dx.doi.org/10.1145/3131151.3131168

    Accepted author manuscript, 511 KB, PDF document

    Available under license: CC BY-NC: Creative Commons Attribution-NonCommercial 4.0 International License

Links

Text available via DOI:

View graph of relations

How Do Software Developers Identify Design Problems?: A Qualitative Analysis

Research output: Contribution in Book/Report/Proceedings - With ISBN/ISSNConference contribution/Paperpeer-review

Published
  • Leonardo Sousa
  • Roberto Oliveira
  • Alessandro Fabricio Garcia
  • Jaejoon Lee
  • Tanya Conte
  • William Oizumi
  • Rafael de Mello
  • Adriana Lopes
  • Natasha Valentim
  • Edson Oliveira
  • Carlos Lucena
Close
Publication date17/09/2017
Host publicationSBES'17 Proceedings of the 31st Brazilian Symposium on Software Engineering
Place of PublicationNew York
PublisherACM
Pages54-63
Number of pages10
ISBN (print)9781450353267
<mark>Original language</mark>English

Abstract

When a software design decision has a negative impact on one or more quality attributes, we call it a design problem. For example, the Fat Interface problem indicates that an interface exposes non-cohesive services Thus, clients and implementations of this interface may have to handle with services that they are not interested. A design problem such as this hampers the extensibility and maintainability of a software system. As illustrated by the example, a single design problem often affects several elements in the program. Despite its harmfulness, it is difficult to identify a design problem in a system. It is even more challenging to identify design problems when the source code is the only available artifact. In particular, no study has observed what strategy(ies) developers use in practice to identify design problems when the design documentation is unavailable. In order to address this gap, we conducted a qualitative analysis on how developers identify design problems in two different scenarios: when they are either familiar (Scenario 1) or unfamiliar (Scenario 2) with the analyzed systems. Developers familiar with the systems applied a diverse set of strategies during the identification of each design problem. Some strategies were frequently used to locate code elements for analysis, and other strategies were frequently used to confirm design problems in these elements. Developers unfamiliar with the systems relied only on the use of code smells along the task. Despite some differences among the subjects from both scenarios, we noticed that developers often search for multiple indicators during the identification of each design problem.

Bibliographic note

© ACM, 2017. This is the author's version of the work. It is posted here for your personal use. Not for redistribution. The definitive Version of Record was published in SBES'17 Proceedings of the 31st Brazilian Symposium on Software Engineering http://dx.doi.org/10.1145/3131151.3131168