skip to main content
research-article

Fixing Faults in C and Java Source Code: Abbreviated vs. Full-Word Identifier Names

Published: 29 July 2017 Publication History

Abstract

We carried out a family of controlled experiments to investigate whether the use of abbreviated identifier names, with respect to full-word identifier names, affects fault fixing in C and Java source code. This family consists of an original (or baseline) controlled experiment and three replications. We involved 100 participants with different backgrounds and experiences in total. Overall results suggested that there is no difference in terms of effort, effectiveness, and efficiency to fix faults, when source code contains either only abbreviated or only full-word identifier names. We also conducted a qualitative study to understand the values, beliefs, and assumptions that inform and shape fault fixing when identifier names are either abbreviated or full-word. We involved in this qualitative study six professional developers with 1--3 years of work experience. A number of insights emerged from this qualitative study and can be considered a useful complement to the quantitative results from our family of experiments. One of the most interesting insights is that developers, when working on source code with abbreviated identifier names, adopt a more methodical approach to identify and fix faults by extending their focus point and only in a few cases do they expand abbreviated identifiers.

References

[1]
Silvia Mara Abrahão, Carmine Gravino, Emilio Insfran Pelozo, Giuseppe Scanniello, and Genoveffa Tortora. 2013. Assessing the effectiveness of sequence diagrams in the comprehension of functional requirements: Results from a family of five experiments. IEEE Transactions on Software Engineering 39, 3 (2013).
[2]
Jorge Aranda, Neil Ernst, Jennifer Horkoff, and Steve Easterbrook. 2007. A framework for empirical evaluation of model comprehensibility. In Proceedings of Modeling in Software Engineering, ICSE Workshop. IEEE, 7--13.
[3]
Venera Arnaoudova, Laleh Mousavi Eshkevari, Massimiliano Di Penta, Rocco Oliveto, Giuliano Antoniol, and Yann-Gaël Guéhéneuc. 2014. REPENT: Analyzing the nature of identifier renamings. IEEE Transactions on Software Engineering 40, 5 (2014), 502--532.
[4]
M. T. Baldassarre, J. Carver, O. Dieste, and N. Juristo. 2014. Replication types: Towards a shared taxonomy. In Proceedings of the International Conference on Evaluation and Assessment in Software Engineering. ACM, 18:1--18:4.
[5]
V. Basili, F. Shull, and F. Lanubile. 1999. Building knowledge through families of experiments. IEEE Transactions on Software Engineering 25, 4 (1999), 456--473.
[6]
Victor R. Basili and H. Dieter Rombach. 1988. The TAME project: Towards improvement-oriented software environments. IEEE Transactions on Software Engineering 14, 6 (1988), 758--773.
[7]
K. Beck. 2003. Test Driven Development: By Example. Addison Wesley.
[8]
Bethany K. Dumas and Jonathan Lighter. 1978. Is slang a word for linguists? American Speech 53, 1 (1978), 5--17.
[9]
Paul Beynon-Davies. 1997. Ethnography and information systems development: Ethnography of, for and within is development. Information 8 Software Technology 39, 8 (1997), 531--540.
[10]
P. Beynon-Davies, D. Tudhope, and H. Mackay. 1999. Information systems prototyping in practice. Journal of Information Technology 14, 1 (March 1999), 107--120.
[11]
Dave Binkley, Marcia Davis, Dawn Lawrie, Jonathan I. Maletic, Christopher Morrell, and Bonita Sharif. 2013. The impact of identifier style on effort and comprehension. Empirical Software Engineering 18, 2 (2013), 219--276.
[12]
Gerardo Canfora and Massimiliano Di Penta. 2007. New frontiers of reverse engineering. In Proceedings of the Workshop on the Future of Software Engineering. 326--341.
[13]
Jeffrey Carver, Letizia Jaccheri, Sandro Morasca, and Forrest Shull. 2003. Issues in using students in empirical studies in software engineering education. In Proceedings of the International Symposium on Software Metrics. IEEE CS Press, 239.
[14]
Jeffrey C. Carver, Natalia Juristo Juzgado, Maria Teresa Baldassarre, and Sira Vegas. 2014. Replications of software engineering experiments. Empirical Software Engineering 19, 2 (2014), 267--276.
[15]
Marcus Ciolkowski, Dirk Muthig, and Jörg Rech. 2004. Using academic courses for empirical validation of software development processes. Proceedings of the EUROMICRO Conference (2004), 354--361.
[16]
Massimo Colosimo, Andrea De Lucia, Giuseppe Scanniello, and Genoveffa Tortora. 2009. Evaluating legacy system migration technologies through empirical studies. Information 8 Software Technology 51, 12 (2009), 433--447.
[17]
Andrew Crabtree, Tom Rodden, Peter Tolmie, and Graham Button. 2009. Ethnography considered harmful. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI’09). ACM, 879--888.
[18]
Fabio Q. B. da Silva, Marcos Suassuna, A. César C. França, Alicia M. Grubb, Tatiana B. Gouveia, Cleviton V. F. Monteiro, and Igor Ebrahim dos Santos. 2014. Replication of empirical studies in software engineering research: A systematic mapping study. Empirical Software Engineering 19, 3 (2014), 501--557.
[19]
Robert DeLine, Amir Khella, Mary Czerwinski, and George Robertson. 2005. Towards understanding programs through wear-based filtering. In Proceedings of the International Symposium on Software Visualization (SoftVis’05). ACM, 183--192.
[20]
R. A. DeMillo, R. J. Lipton, and F. G. Sayward. 1978. Hints on test data selection: Help for the practicing programmer. Computer 11, 4 (April 1978), 34--41.
[21]
Eric Enslen, Emily Hill, Lori L. Pollock, and K. Vijay-Shanker. 2009. Mining source code to automatically split identifiers for software analysis. In Proceedings of the International Working Conference on Mining Software Repositories. 71--80.
[22]
Gordon Fraser and Andreas Zeller. 2012. Mutation-driven generation of oracles and unit tests. IEEE Transactions on Software Engineering 38, 2 (March 2012), 278--292.
[23]
Davide Fucci, Giuseppe Scanniello, Simone Romano, Martin Shepperd, Boyce Sigweni, Fernando Uyaguari Uyaguari, Burak Turhan, Natalia Juristo, and Markku Oivo. 2016. An external replication on the effects of test-driven development using a multi-site blind analysis approach. In Proceedings of the ACM/IEEE International Symposium on Empirical Software Engineering and Measurement. ACM, 3:1--3:10.
[24]
Omar S. Gómez, Natalia Juristo Juzgado, and Sira Vegas. 2014. Understanding replication of experiments in software engineering: A classification. Information 8 Software Technology 56, 8 (2014), 1033--1048.
[25]
Rahul Gopinath, Carlos Jensen, and Alex Groce. 2014. Mutations: How close are they to real faults?. In Proceedings of the International Symposium on Software Reliability Engineering. IEEE Computer Society, 189--200.
[26]
Carmine Gravino, Michele Risi, Giuseppe Scanniello, and Genoveffa Tortora. 2012. Do professional developers benefit from design pattern documentation? A replication in the context of source code comprehension. In Proceedings of the International Conference on Model Driven Engineering Languages and Systems(Lecture Notes in Computer Science). Springer, 185--201.
[27]
Samir Gupta, Sana Malik, Lori L. Pollock, and K. Vijay-Shanker. 2013. Part-of-speech tagging of program identifiers for improved text-based software engineering tools. In Proceedings of the International Conference on Program Comprehension. IEEE Computer Society, 3--12.
[28]
M. Hammersley and P. Atkinson. 2007. Ethnography: Principles in Practice. Taylor 8 Francis.
[29]
Jo Hannay and Magne Jørgensen. 2008. The role of deliberate artificial design elements in software engineering experiments. IEEE Transactions on Software Engineering 34, 2 (March 2008), 242--259.
[30]
Liang Huang and Mike Holcombe. 2009. Empirical investigation towards the effectiveness of test first programming. Information 8 Software Technology 51, 1 (2009), 182--194.
[31]
International Organization for Standardization. 1991. Information Technology--Software Product Evaluation: Quality Characteristics and Guidelines for their Use, ISO/IEC IS 9126. ISO, Geneva.
[32]
ISO. 2000. ISO 9241-11: Ergonomic Requirements for Office Work with Visual Display Terminals (VDTs)—Part 9: Requirements for Non-Keyboard Input Devices. ISO, Geneva, Switzerland.
[33]
ISO. 2011. ISO/IEC 25010 Systems and Software Engineering—Systems and Software Quality Requirements and Evaluation (SQuaRE)—System and Software Quality Models. ISO, Geneva, Switzerland.
[34]
Andreas Jedlitschka, Marcus Ciolkowski, and Dietmar Pfahl. 2008. Reporting experiments in software engineering. In Guide to Advanced Empirical Software Engineering. Springer, London, 201--228.
[35]
N. Juristo and A. M. Moreno. 2001. Basics of Software Engineering Experimentation. Kluwer Academic Publishers, Englewood Cliffs, NJ.
[36]
Sunwoo Kim, John A. Clark, and John A. McDermid. 1999. The rigorous generation of java mutation operators using HAZOP. In Proceedings of the International Conference on Software 8 Systems Engineering and their Applications. 9--10.
[37]
Sunwoo Kim, John A. Clark, and John A. McDermid. 2000. Class mutation: Mutation testing for object-oriented programs. In Proceecings of NET.OBJECTDAYS. 9--12.
[38]
Barbara Kitchenham. 2008. The role of replications in empirical software engineering—A word of warning. Empirical Software Engineering 13, 2 (2008), 219--221.
[39]
B. Kitchenham, S. Pfleeger, L. Pickard, P. Jones, D. Hoaglin, K. El Emam, and J. Rosenberg. 2002. Preliminary guidelines for empirical research in software engineering. IEEE Transactions on Software Engineering 28, 8 (2002), 721--734.
[40]
Andrew J. Ko, Brad A. Myers, Michael J. Coblenz, and Htet Htet Aung. 2006. An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Transactions on Software Engineering 32, 12 (Dec. 2006), 971--987.
[41]
Thomas D. LaToza, Gina Venolia, and Robert DeLine. 2006. Maintaining mental models: A study of developer work habits. In Proceedings of the International Conference on Software Engineering. ACM, 492--501.
[42]
Dawn Lawrie, Christopher Morrell, Henry Feild, and David Binkley. 2006. What’s in a name? A study of identifiers. In Proceedings of the International Conference on Program Comprehension. IEEE CS Press, 3--12.
[43]
Dawn Lawrie, Christopher Morrell, Henry Feild, and David Binkley. 2007. Effective identifier names for comprehension and memory. Innovations in Systems and Software Engineering 3, 4 (2007), 303--318.
[44]
D. T. Lykken. 1968. Statistical significance in psychological research. Psychological Bulletin 70 (1968), 151--159.
[45]
A. Mack and I. Rock. 1998. Inattentional Blindness. MIT Press. https://books.google.com.vc/books?id=ljSjCGAG1HQC
[46]
Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schütze. 2009. An Introduction to Information Retrieval. Cambridge University Press, England.
[47]
Manoel G. Mendonça, José Carlos Maldonado, Maria Cristina Ferreira de Oliveira, Jeffrey Carver, Sandra Camargo Pinto Ferraz Fabbri, Forrest Shull, Guilherme Horta Travassos, Erika Nina Höhn, and Victor R. Basili. 2008. A framework for software engineering experimental replications. In Proceedings of the International Conference on Engineering of Complex Computer Systems. IEEE Computer Society, 203--212.
[48]
Martin Monperrus, Michael Eichberg, Elif Tekes, and Mira Mezini. 2012. What should developers be aware of? An empirical study on the directives of API documentation. Empirical Software Engineering 17, 6 (2012), 703--737.
[49]
A. N. Oppenheim. 1992. Questionnaire Design, Interviewing and Attitude Measurement. Pinter, London.
[50]
R. Peck and J. Devore. 2011. Statistics: The Exploration 8 Analysis of Data. Cengage Learning.
[51]
S. L. Pfleeger and W. Menezes. 2000. Marketing technology to software practitioners. IEEE Software 17, 1 (2000), 27--33.
[52]
Filippo Ricca, Massimiliano Di Penta, Marco Torchiano, Paolo Tonella, and Mariano Ceccato. 2007. The role of experience and ability in comprehension tasks supported by UML stereotypes. In Proceedings of the International Conference on Software Engineering. 375--384.
[53]
F. Ricca, M. Torchiano, M. Di Penta, M. Ceccato, P. Tonella, and Corrado Aaron Visaggio. 2008. Are fit tables really talking? A series of experiments to understand whether fit tables are useful during evolution tasks. In Proceedings of the International Conference on Software Engineering. IEEE Computer Society, 361--370.
[54]
Martin P. Robillard, Wesley Coelho, and Gail C. Murphy. 2004. How effective developers investigate source code: An exploratory study. IEEE Transactions on Software Engineering 30, 12 (2004), 889--903.
[55]
Hugh Robinson, Judith Segal, and Helen Sharp. 2007. Ethnographically-informed empirical studies of software practice. Information and Software Technology 49, 6 (June 2007), 540--551.
[56]
Tobias Roehm, Rebecca Tiarks, Rainer Koschke, and Walid Maalej. 2012. How do professional developers comprehend software?. In Proceedings of the International Conference on Software Engineering. IEEE CS Press, 255--265.
[57]
Simone Romano, Davide Fucci, Giuseppe Scanniello, Burak Turhan, and Natalia Juristo. 2016. Results from an ethnographically-informed study in the context of test driven development. In Proceedings of the International Conference on Evaluation and Assessment in Software Engineering. ACM, New York, Article 10, 10 pages.
[58]
Simone Romano, Davide Fucci, Giuseppe Scanniello, Burak Turhan, and Natalia Juristo. 2017. Findings from a multi-method study on test-driven development. Information and Software Technology 89 (2017), 64--77.
[59]
Gerard Salton and Michael J. McGill. 1983. Introduction to Modern Information Retrieval. McGraw Hill, New York.
[60]
Felice Salviulo and Giuseppe Scanniello. 2014. Dealing with identifiers and comments in source code comprehension and maintenance: Results from an ethnographically-informed study with students and professionals. In Proceedings of the International Conference on Evaluation and Assessment in Software Engineering. ACM, New York, Article 48, 10 pages.
[61]
Mike Scaife and Yvonne Rogers. 1996. External cognition: How do graphical representations work? International Journal of Human-Computer Studies 45, 2 (1996), 185--213.
[62]
G. Scanniello, C. Gravino, M. Genero, J. A. Cruz-Lemus, and G. Tortora. 2014. On the impact of UML analysis models on source code comprehensibility and modifiability. ACM Transactions on Software Engineering and Methods 23, 2 (2014).
[63]
Giuseppe Scanniello, Carmine Gravino, Michele Risi, Genoveffa Tortora, and Gabriella Dodero. 2015. Documenting design-pattern instances: A family of experiments on source code comprehensibility. ACM Transactions on Software Engineering and Methods 24, 3 (2015).
[64]
Giuseppe Scanniello and Michele Risi. 2013. Dealing with faults in source code: Abbreviated vs. full-word identifier names. In Proceedings of the International Conference on Software Maintenance. IEEE Computer Society, 190--199.
[65]
Carolyn B. Seaman. 1999. Qualitative methods in empirical studies of software engineering. IEEE Transactions on Software Engineering 25, 4 (July 1999), 557--572.
[66]
Dan Shapiro. 1994. The limits of ethnography: Combining social sciences for CSCW. In Proceecings of the Conference on Computer Supported Cooperative Work. 417--428.
[67]
S. Shapiro and M. Wilk. 1965. An analysis of variance test for normality. Biometrika 52, 3--4 (1965), 591--611.
[68]
Helen Sharp, Yvonne Dittrich, and Cleidson R. B. de Souza. 2016. The role of ethnographic studies in empirical software engineering. IEEE Transactions on Software Engineering 42, 8 (2016), 786--804.
[69]
Helen Sharp and Hugh Robinson. 2004. An ethnographic study of XP practice. Empirical Software Engineering 9, 4 (2004), 353--375.
[70]
Helen Sharp, Hugh Robinson, and Mark Woodman. 2000. Software engineering: Community and culture. IEEE Software 17, 1 (Jan. 2000), 40--47.
[71]
Forrest Shull, Jeffrey C. Carver, Sira Vegas, and Natalia Juristo Juzgado. 2008. The role of replications in empirical software engineering. Empirical Software Engineering 13, 2 (2008), 211--218.
[72]
Janet Siegmund. 2016. Program comprehension: Past, present, and future. In Proceedings of the International Conference on Software Analysis, Evolution, and Reengineering, IEEE (Ed.).
[73]
Jonathan Sillito, Gail C. Murphy, and Kris De Volder. 2008. Asking and answering questions during a programming change task. IEEE Transactions on Software Engineering 34, 4 (July 2008), 434--451.
[74]
Janice Singer, Timothy Lethbridge, Norman Vinson, and Nicolas Anquetil. 1997. An examination of software engineering work practices. In Proceedings of the Conference of the Centre for Advanced Studies on Collaborative Research. IBM Press, 21.
[75]
Ewan Tempero, Craig Anslow, Jens Dietrich, Ted Han, Jing Li, Markus Lumpe, Hayden Melton, and James Noble. 2010. Qualitas corpus: A curated collection of java code for empirical studies. In Proceedings of the Asia Pacific Software Engineering Conference. 336--345.
[76]
Sira Vegas, Cecilia Apa, and Natalia Juristo. 2016. Crossover designs in software engineering experiments: Benefits and perils. IEEE Transactions on Software Engineering 42, 2 (2016), 120--135.
[77]
M. Weiser. 1982. Programmers use slices when debugging. Communications of the Association for Computing Machinery 25 (July 1982), 446--452.
[78]
C. Wohlin, P. Runeson, M. Höst, M. C. Ohlsson, B. Regnell, and A. Wesslén. 2012. Experimentation in Software Engineering. Springer.
[79]
S. N. Woodfield, H. E. Dunsmore, and V. Y. Shen. 1981. The effect of modularization and comments on program comprehension. In Proceedings of the International Conference on Software Engineering. IEEE Computer Society, 215--223.
[80]
Jiaje Zhang and Donald A. Norman. 1994. Representations in distributed cognitive tasks. Cognitive Science 18, 1 (1994), 87--122.

Cited By

View all
  • (2024)A Quantitative Investigation of Trends in Confusing Variable Pairs Through Commits: Do Confusing Variable Pairs Survive?Proceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering10.1145/3661167.3661228(90-99)Online publication date: 18-Jun-2024
  • (2024)Enhancing Function Name Prediction using Votes-Based Name Tokenization and Multi-task LearningProceedings of the ACM on Software Engineering10.1145/36607821:FSE(1679-1702)Online publication date: 12-Jul-2024
  • (2024)Towards a Cognitive Model of Dynamic Debugging: Does Identifier Construction Matter?IEEE Transactions on Software Engineering10.1109/TSE.2024.346522250:11(3007-3021)Online publication date: 1-Nov-2024
  • Show More Cited By

Index Terms

  1. Fixing Faults in C and Java Source Code: Abbreviated vs. Full-Word Identifier Names

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Transactions on Software Engineering and Methodology
    ACM Transactions on Software Engineering and Methodology  Volume 26, Issue 2
    April 2017
    136 pages
    ISSN:1049-331X
    EISSN:1557-7392
    DOI:10.1145/3129287
    Issue’s Table of Contents
    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: 29 July 2017
    Accepted: 01 May 2017
    Revised: 01 April 2017
    Received: 01 January 2016
    Published in TOSEM Volume 26, Issue 2

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Controlled experiments
    2. ethnography study
    3. family of experiments
    4. maintenance
    5. qualitative investigation
    6. replications
    7. software testing
    8. source code identifiers

    Qualifiers

    • Research-article
    • Research
    • Refereed

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)40
    • Downloads (Last 6 weeks)7
    Reflects downloads up to 05 Mar 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)A Quantitative Investigation of Trends in Confusing Variable Pairs Through Commits: Do Confusing Variable Pairs Survive?Proceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering10.1145/3661167.3661228(90-99)Online publication date: 18-Jun-2024
    • (2024)Enhancing Function Name Prediction using Votes-Based Name Tokenization and Multi-task LearningProceedings of the ACM on Software Engineering10.1145/36607821:FSE(1679-1702)Online publication date: 12-Jul-2024
    • (2024)Towards a Cognitive Model of Dynamic Debugging: Does Identifier Construction Matter?IEEE Transactions on Software Engineering10.1109/TSE.2024.346522250:11(3007-3021)Online publication date: 1-Nov-2024
    • (2023)An Accurate Identifier Renaming Prediction and Suggestion ApproachACM Transactions on Software Engineering and Methodology10.1145/360310932:6(1-51)Online publication date: 29-Sep-2023
    • (2023)BEQAIN: An Effective and Efficient Identifier Normalization Approach With BERT and the Question Answering SystemIEEE Transactions on Software Engineering10.1109/TSE.2022.322755949:4(2597-2620)Online publication date: 1-Apr-2023
    • (2023)Reanalysis of Empirical Data on Java Local Variables with Narrow and Broad Scope2023 IEEE/ACM 31st International Conference on Program Comprehension (ICPC)10.1109/ICPC58990.2023.00037(227-236)Online publication date: May-2023
    • (2023)On the Investigation of Empirical Contradictions - Aggregated Results of Local Studies on Readability and Comprehensibility of Source CodeEmpirical Software Engineering10.1007/s10664-023-10360-528:6Online publication date: 9-Nov-2023
    • (2023)An automated detection of confusing variable pairs with highly similar compound names in Java and Python programsEmpirical Software Engineering10.1007/s10664-023-10339-228:5Online publication date: 9-Aug-2023
    • (2023)On Fixing Bugs: Do Personality Traits Matter?Product-Focused Software Process Improvement10.1007/978-3-031-49266-2_31(451-467)Online publication date: 11-Dec-2023
    • (2022)SymLMProceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security10.1145/3548606.3560612(1631-1645)Online publication date: 7-Nov-2022
    • Show More Cited By

    View Options

    Login options

    Full Access

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media