skip to main content
10.1145/3131151.3131168acmotherconferencesArticle/Chapter ViewAbstractPublication PagessbesConference Proceedingsconference-collections
research-article

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

Published:20 September 2017Publication History

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.

References

  1. Holger Bär and Oliver Ciupke. 1998. Exploiting Design Heuristics for Automatic Problem Detection. In Workshop Ion on Object-Oriented Technology (ECOOP '98). Springer-Verlag, London, UK, UK, 73--74. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. João Brunet, Gail C. Murphy, Ricardo Terra, Jorge Figueiredo, and Dalton Serey. 2014. Do Developers Discuss Design?. In Proceedings of the 11th Working Conference on Mining Software Repositories (MSR 2014). New York, NY, USA, 340--343. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Stephen Cass. 2016. The 2016 Top Programming Language. (July 2016). http://spectrum.ieee.org/computing/software/the-2016-top-programming-languagesGoogle ScholarGoogle Scholar
  4. Xi Chen, Abhijit Davare, Harry Hsieh, Alberto Sangiovanni-Vincentelli, and Yosinori Watanabe. 2005. Simulation Based Deadlock Analysis for System Level Designs. In Proceedings of the 42Nd Annual Design Automation Conference (DAC '05). ACM, New York, NY, USA, 260--265. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. O. Ciupke. 1999. Automatic detection of design problems in object-oriented reengineering. In Proceedings of Technology of Object-Oriented Languages and Systems - TOOLS 30 (Cat. No.PR00278). 18--32. Google ScholarGoogle ScholarCross RefCross Ref
  6. M Fowler. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, Boston. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J Garcia, I Ivkovic, and N Medvidovic. 2013. A Comparative Analysis of Software Architecture Recovery Techniques. In Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering; Palo Alto, USA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. J Garcia, D Popescu, G Edwards, and N Medvidovic. 2009. Identifying Architectural Bad Smells. In CSMR09; Kaiserslautern, Germany. IEEE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M Godfrey and E Lee. 2000. Secrets from the Monster: Extracting Mozilla's Software Architecture. In CoSET-00; Limerick, Ireland. 15--23.Google ScholarGoogle Scholar
  11. P. Kaminski. 2007. Reforming Software Design Documentation. In 14th Working Conference on Reverse Engineering (WCRE 2007). 277--280. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Craig Larman. 2004. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition). Prentice Hall PTR, Upper Saddle River, NJ, USA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. A MacCormack, J Rusnak, and C Baldwin. 2006. Exploring the Structure of Complex Software Designs: An Empirical Study of Open Source and Proprietary Code. Manage. Sci 52, 7 (2006), 1015--1030. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. I. Macia, R. Arcoverde, E. Cirilo, A. Garcia, and A. von Staa. 2012. Supporting the identification of architecturally-relevant code anomalies. In ICSM12. 662--665. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. I. Macia, R. Arcoverde, A. Garcia, C. Chavez, and A. von Staa. 2012. On the Relevance of Code Anomalies for Identifying Architecture Degradation Symptoms. In CSMR12. 277--286. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Isela Macia, Joshua Garcia, Daniel Popescu, Alessandro Garcia, Nenad Medvidovic, and Arndt von Staa. 2012. Are Automatically-detected Code Anomalies Relevant to Architectural Modularity?: An Exploratory Analysis of Evolving Systems. In AOSD '12. ACM, New York, NY, USA, 167--178. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Robert C. Martin and Micah Martin. 2006. Agile Principles, Patterns, and Practices in C# (Robert C. Martin). Prentice Hall PTR, Upper Saddle River, NJ, USA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Complementar Material. 2017. https://ssousaleo.github.io/SBES2017/. (2017).Google ScholarGoogle Scholar
  19. Ran Mo, Yuanfang Cai, R. Kazman, and Lu Xiao. 2015. Hotspot Patterns: The Formal Definition and Automatic Detection of Architecture Smells. In Software Architecture (WICSA), 2015 12th Working IEEE/IFIP Conference on. 51--60. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. N Moha, Y Gueheneuc, L Duchien, and A Le Meur. 2010. DECOR: A Method for the Specification and Detection of Code and Design Smells. IEEE Transaction on Software Engineering 36 (2010), 20--36. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. W Oizumi, A Garcia, L Sousa, B Cafeo, and Y Zhao. 2016. Code Anomalies Flock Together: Exploring Code Anomaly Agglomerations for Locating Design Problems. In The 38th International Conference on Software Engineering; USA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. David L. Parnas. 1978. Designing Software for Ease of Extension and Contraction. In Proceedings of the 3rd International Conference on Software Engineering (ICSE '78). IEEE Press, Piscataway, NJ, USA, 264--277. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Per Runeson, Martin Host, Austen Rainer, and Bjorn Regnell. 2012. Case Study Research in Software Engineering: Guidelines and Examples. Wiley Publishing. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. S Schach, B Jin, D Wright, G Heller, and A Offutt. 2002. Maintainability of the Linux kernel. Software, IEE Proceedings--149, 1 (2002), 18--23.Google ScholarGoogle ScholarCross RefCross Ref
  25. Marcelino Campos Oliveira Silva, Marco Tulio Valente, and Ricardo Terra. 2016. Does Technical Debt Lead to the Rejection of Pull Requests?. In Proceedings of the 12th Brazilian Symposium on Information Systems (SBSI '16). 248--254. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. TIOBE software. 2017. The Java Programming Language. (April 2017). https://www.tiobe.com/tiobe-index/java/Google ScholarGoogle Scholar
  27. A. Strauss and J.M. Corbin. 1998. Basics of Qualitative Research: Techniques and Procedures for Developing Grounded Theory. SAGE Publications.Google ScholarGoogle Scholar
  28. Antony Tang, Aldeida Aleti, Janet Burge, and Hans van Vliet. 2010. What makes software design effective? Design Studies 31, 6 (2010), 614--640. Special Issue Studying Professional Software Design.Google ScholarGoogle ScholarCross RefCross Ref
  29. A. Trifu and R. Marinescu. 2005. Diagnosing design problems in object oriented systems. In WCRE'05. 10 pp. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Adrian Trifu and Urs Reupke. 2007. Towards Automated Restructuring of Object Oriented Systems. In CSMR '07 IEEE, Washington, DC, USA, 39--48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Twitter. 2017. Working at Twitter. (April 2017). Available at https://about.twitter.com/careers.Google ScholarGoogle Scholar
  32. J van Gurp and J Bosch. 2002. Design erosion: problems and causes. Journal of Systems and Software 61, 2(2002), 105-- 119. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. S. Vidal, E. Guimaraes, W. Oizumi, A. Garcia, A. D. Pace, and C. Marcos. 2016. Identifying Architectural Problems through Prioritization of Code Smells. In SBCARS16. 41--50.Google ScholarGoogle Scholar
  34. Lu Xiao, Yuanfang Cai, Rick Kazman, Ran Mo, and Qiong Feng. 2016. Identifying and Quantifying Architectural Debt. In Proceedings of the 38th International Conference on Software Engineering (ICSE '16). ACM, New York, NY, USA, 488--498. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Yahoo! 2017. Explore Career Opportunities. (April 2017). Available at https://careers.yahoo.com/us/buildyourcareer.Google ScholarGoogle Scholar
  36. A Yamashita and L Moonen. 2012. Do code smells reflect important maintainability aspects?. In ICSM12. 306--315. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

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

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Other conferences
      SBES '17: Proceedings of the XXXI Brazilian Symposium on Software Engineering
      September 2017
      409 pages
      ISBN:9781450353267
      DOI:10.1145/3131151

      Copyright © 2017 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 20 September 2017

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article
      • Research
      • Refereed limited

      Acceptance Rates

      SBES '17 Paper Acceptance Rate42of134submissions,31%Overall Acceptance Rate147of427submissions,34%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader