Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3180155.3180239acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Identifying design problems in the source code: a grounded theory

Published: 27 May 2018 Publication History

Abstract

The prevalence of design problems may cause re-engineering or even discontinuation of the system. Due to missing, informal or outdated design documentation, developers often have to rely on the source code to identify design problems. Therefore, developers have to analyze different symptoms that manifest in several code elements, which may quickly turn into a complex task. Although researchers have been investigating techniques to help developers in identifying design problems, there is little knowledge on how developers actually proceed to identify design problems. In order to tackle this problem, we conducted a multi-trial industrial experiment with professionals from 5 software companies to build a grounded theory. The resulting theory offers explanations on how developers identify design problems in practice. For instance, it reveals the characteristics of symptoms that developers consider helpful. Moreover, developers often combine different types of symptoms to identify a single design problem. This knowledge serves as a basis to further understand the phenomena and advance towards more effective identification techniques.

References

[1]
M Abbes, F Khomh, Y Gueheneuc, and G Antoniol. 2011. An Empirical Study of the Impact of Two Antipatterns, Blob and Spaghetti Code, on Program Comprehension. In Proceedings of the 15th European Software Engineering Conference; Oldenburg, Germany. 181--190.
[2]
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.
[3]
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. 1996. Pattern-Oriented Software Architecture - Volume 1: A System of Patterns. Wiley Publishing.
[4]
G Campbell and Patroklos P Papapetrou. 2013. SonarQube in action. Manning Publications Co.
[5]
Munkhnasan Choinzon and Yoshikazu Ueda. 2006. Detecting Defects in Object Oriented Designs Using Design Metrics. In Proceedings of the 2006 Conference on Knowledge-Based Software Engineering: Proceedings of the Seventh Joint Conference on Knowledge-Based Software Engineering. IOS Press, Amsterdam, The Netherlands, The Netherlands, 61--72. http://dl.acm.org/citation.cfm?id=1565098.1565107
[6]
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.
[7]
Bill Curtis, Jay Sappidi, and Alexandra Szynkarski. 2012. Estimating the Size, Cost, and Types of Technical Debt. In Proceedings of the Third International Workshop on Managing Technical Debt (MTD '12). IEEE Press, Piscataway, NJ, USA, 49--53. http://dl.acm.org/citation.cfm?id=2666036.2666045
[8]
K. Anders Ericsson and Herbert A. Simon. 1993. Protocol Analysis: Verbal Reports as Data (2 ed.). A Bradford Book.
[9]
M. Fokaefs, N. Tsantalis, and A. Chatzigeorgiou. 2007. JDeodorant: Identification and Removal of Feature Envy Bad Smells. In 2007 IEEE International Conference on Software Maintenance. 519--520.
[10]
M Fowler. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, Boston.
[11]
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.
[12]
J Garcia, D Popescu, G Edwards, and N Medvidovic. 2009. Identifying Architectural Bad Smells. In CSMR09; Kaiserslautern, Germany. IEEE.
[13]
B.G. Glaser. 1998. Doing Grounded Theory: Issues and Discussions. Sociology Press. https://books.google.com.br/books?id=XStmQgAACAAJ
[14]
M Godfrey and E Lee. 2000. Secrets from the Monster: Extracting Mozilla's Software Architecture. In CoSET-00; Limerick, Ireland. 15--23.
[15]
J. E. Hannay, D. I. K. Sjoberg, and T. Dyba. 2007. A Systematic Review of Theory Use in Software Engineering Experiments. IEEE Transactions on Software Engineering 33, 2 (Feb 2007), 87--107.
[16]
Ross Jeffery. 2013. Paths to Software Engineering Evidence. Springer Berlin Heidelberg, Berlin, Heidelberg, 133--144.
[17]
P. Johnson, M. Ekstedt, and I. Jacobson. 2012. Where's the Theory for Software Engineering? IEEE Software 29, 5 (Sept 2012), 96--96.
[18]
P. Kaminski. 2007. Reforming Software Design Documentation. In 14th Working Conference on Reverse Engineering (WCRE 2007). 277--280.
[19]
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.
[20]
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.
[21]
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.
[22]
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.
[23]
J.G. March and H.A. Simon. 1958. Organizations. Wiley. https://books.google.com.br/books?id=fx1HAAAAMAAJ
[24]
R Martin. 2002. Agile Principles, Patterns, and Practices. Prentice Hall, New Jersey.
[25]
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.
[26]
Complementar Material. 2017. https://ssousaleo.github.io/ICSE2018/. (2017).
[27]
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.
[28]
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.
[29]
Emerson Murphy-Hill and Andrew P Black. 2010. An interactive ambient visualization for code smells. In Proceedings of the 5th international symposium on Software visualization; Salt Lake City, USA. ACM, 5--14.
[30]
W. T. Norman. 1963. Toward an adequate taxonomy of personality attributes: replicated factors structure in peer nomination personality ratings. Journal of abnormal and social psychology 66 (June 1963), 574--583.
[31]
W Oizumi and A Garcia. 2015. Organic: A Prototype Tool for the Synthesis of Code Anomalies. (2015). http://wnoizumi.github.io/organic/
[32]
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.
[33]
F. Palomba, G. Bavota, M. D. Penta, R. Oliveto, and A. D. Lucia. 2014. Do They Really Smell Bad? A Study on Developers' Perception of Bad Code Smells. In 2014 IEEE International Conference on Software Maintenance and Evolution. 101--110.
[34]
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.
[35]
Dewayne E. Perry and Alexander L. Wolf. 1992. Foundations for the Study of Software Architecture. SIGSOFT Softw. Eng. Notes 17, 4 (Oct. 1992), 40--52.
[36]
Per Runeson, Martin Host, Austen Rainer, and Bjorn Regnell. 2012. Case Study Research in Software Engineering: Guidelines and Examples. Wiley Publishing.
[37]
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.
[38]
W. R. Shadish, T. D. Cook, and Donald T. Campbell. 2001. Experimental and Quasi-Experimental Designs for Generalized Causal Inference (2 ed.). Houghton Mifflin.
[39]
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.
[40]
Dag I. K. Sjøberg, Tore Dybå, Bente C. D. Anda, and Jo E. Hannay. 2008. Building Theories in Software Engineering. Springer London, London, 312--336.
[41]
Leonardo Sousa, Roberto Oliveira, Alessandro Garcia, Jaejoon Lee, Tayana Conte, Willian Oizumi, Rafael de Mello, Adriana Lopes, Natasha Valentim, Edson Oliveira, and Carlos Lucena. 2017. How Do Software Developers Identify Design Problems?: A Qualitative Analysis. In Proceedings of 31st Brazilian Symposium on Software Engineering (SBES'17). 12.
[42]
Klaas-Jan Stol and Brian Fitzgerald. 2015. Theory-oriented software engineering. Science of Computer Programming 101 (2015), 79--98. Towards general theories of software engineering.
[43]
Klaas-Jan Stol, Paul Ralph, and Brian Fitzgerald. 2016. Grounded Theory in Software Engineering Research: A Critical Review and Guidelines. In Proceedings of the 38th International Conference on Software Engineering (ICSE '16). ACM, New York, NY, USA, 120--131.
[44]
A. Strauss and J.M. Corbin. 1998. Basics of Qualitative Research: Techniques and Procedures for Developing Grounded Theory. SAGE Publications.
[45]
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.
[46]
Richard N. Taylor and Andre van der Hoek. 2007. Software Design and Architecture The Once and Future Focus of Software Engineering. In 2007 Future of Software Engineering (FOSE '07). IEEE Computer Society, Washington, DC, USA, 226--243.
[47]
A. Trifu and R. Marinescu. 2005. Diagnosing design problems in object oriented systems. In WCRE'05. 10 pp.
[48]
Adrian Trifu and Urs Reupke. 2007. Towards Automated Restructuring of Object Oriented Systems. In CSMR '07. IEEE, Washington, DC, USA, 39--48.
[49]
J van Gurp and J Bosch. 2002. Design erosion: problems and causes. Journal of Systems and Software 61, 2 (2002), 105--119.
[50]
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.
[51]
Santiago A. Vidal, Hernán Ceferino Vázquez, Jorge Andrés Díaz Pace, Claudia Marcos, Alessandro F. Garcia, and Willian Nalepa Oizumi. 2015. JSpIRIT: a flexible tool for the analysis of code smells. In 34th International Conference of the Chilean Computer Science Society (SCCC). IEEE, Santiago, Chile, 1--6.
[52]
S. Wong, Y. Cai, M. Kim, and M. Dalton. 2011. Detecting software modularity violations. In Software Engineering (ICSE), 2011 33rd International Conference on. 411--420.
[53]
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.
[54]
A Yamashita and L Moonen. 2012. Do code smells reflect important maintainability aspects?. In ICSM12. 306--315.

Cited By

View all
  • (2024)Understanding Developers’ Discussions and Perceptions on Non-functional Requirements: The Case of the Spring EcosystemProceedings of the ACM on Software Engineering10.1145/36437501:FSE(517-538)Online publication date: 12-Jul-2024
  • (2024)Traditional Grounded Theory MethodsQualitative Research with Socio-Technical Grounded Theory10.1007/978-3-031-60533-8_2(15-35)Online publication date: 10-Jun-2024
  • (2023)Investigating the Cognitive Load Drivers of Software Evolution ActivitiesProceedings of the XXXVII Brazilian Symposium on Software Engineering10.1145/3613372.3613377(342-347)Online publication date: 25-Sep-2023
  • Show More Cited By

Index Terms

  1. Identifying design problems in the source code: a grounded theory

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ICSE '18: Proceedings of the 40th International Conference on Software Engineering
    May 2018
    1307 pages
    ISBN:9781450356381
    DOI:10.1145/3180155
    • Conference Chair:
    • Michel Chaudron,
    • General Chair:
    • Ivica Crnkovic,
    • Program Chairs:
    • Marsha Chechik,
    • Mark Harman
    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]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 27 May 2018

    Permissions

    Request permissions for this article.

    Check for updates

    Badges

    • Distinguished Paper

    Author Tags

    1. design problem
    2. grounded theory
    3. software design
    4. symptoms

    Qualifiers

    • Research-article

    Funding Sources

    • CAPES PROCAD
    • CNPq
    • FAPERJ

    Conference

    ICSE '18
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 276 of 1,856 submissions, 15%

    Upcoming Conference

    ICSE 2025

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)40
    • Downloads (Last 6 weeks)9
    Reflects downloads up to 20 Nov 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Understanding Developers’ Discussions and Perceptions on Non-functional Requirements: The Case of the Spring EcosystemProceedings of the ACM on Software Engineering10.1145/36437501:FSE(517-538)Online publication date: 12-Jul-2024
    • (2024)Traditional Grounded Theory MethodsQualitative Research with Socio-Technical Grounded Theory10.1007/978-3-031-60533-8_2(15-35)Online publication date: 10-Jun-2024
    • (2023)Investigating the Cognitive Load Drivers of Software Evolution ActivitiesProceedings of the XXXVII Brazilian Symposium on Software Engineering10.1145/3613372.3613377(342-347)Online publication date: 25-Sep-2023
    • (2023)Mathematical Expressions in Software Engineering ArtifactsProceedings of the 6th Joint International Conference on Data Science & Management of Data (10th ACM IKDD CODS and 28th COMAD)10.1145/3570991.3571033(238-242)Online publication date: 4-Jan-2023
    • (2023)A Grounded Theory of Cross-Community SECOs: Feedback Diversity Versus SynchronizationIEEE Transactions on Software Engineering10.1109/TSE.2023.331387549:10(4731-4750)Online publication date: 18-Sep-2023
    • (2023)Don’t Forget the Exception! : Considering Robustness Changes to Identify Design Problems2023 IEEE/ACM 20th International Conference on Mining Software Repositories (MSR)10.1109/MSR59073.2023.00064(417-429)Online publication date: May-2023
    • (2023)Understanding Software Performance Challenges an Empirical Study on Stack Overflow2023 International Conference on Code Quality (ICCQ)10.1109/ICCQ57276.2023.10114662(1-15)Online publication date: 22-Apr-2023
    • (2023)Beyond the Code: Investigating the Effects of Pull Request Conversations on Design Decay2023 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1109/ESEM56168.2023.10304805(1-12)Online publication date: 26-Oct-2023
    • (2022)An exploratory study on refactoring documentation in issues handlingProceedings of the 19th International Conference on Mining Software Repositories10.1145/3524842.3528525(107-111)Online publication date: 23-May-2022
    • (2022)Investigating technological risks and mitigation strategies in software projectsProceedings of the 37th ACM/SIGAPP Symposium on Applied Computing10.1145/3477314.3507062(1527-1535)Online publication date: 25-Apr-2022
    • Show More Cited By

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media