Peruma, Anthony; Arnaoudova, Venera; Newman, Christian IDEAL: An Open-Source Identifier Name Appraisal Tool Inproceedings In: Proceedings of the International Conference on Software Maintenance and Evolution (ICSME) - Demonstrations Track, pp. 599–603, 2021. Links | BibTeX | Tags: linguistic antipatterns, program comprehension, source code identifiers, Tool Fakhoury, Sarah; Roy, Devjeet; Hassan, Sk. Adnan; Arnaoudova, Venera Improving Source Code Readability: Theory and Practice Inproceedings In: Proceedings of the International Conference on Program Comprehension (ICPC), pp. 2–12, 2019. Links | BibTeX | Tags: empirical study, readability, source code identifiers Fakhoury, Sarah; Ma, Yuzhan; Arnaoudova, Venera; Adesope, Olusola The Effect of Poor Source Code Lexicon and Readability on Developers' Cognitive Load Inproceedings In: Proceedings of the International Conference on Program Comprehension (ICPC), pp. 286–296, 2018, (Distinguished Paper Award). Links | BibTeX | Tags: Biometrics, empirical study, linguistic antipatterns, program comprehension, source code identifiers Fakhoury, Sarah; Arnaoudova, Venera; Noiseux, Cedric; Khomh, Foutse; Antoniol, Giuliano Keep it simple: is deep learning good for linguistic smell detection? Inproceedings In: Proceedings of the International Conference on Software Analysis, Evolution, and Reengineering (SANER)—REproducibility Studies and NEgative Results (RENE) Track, 2018. Links | BibTeX | Tags: deep learning, empirical study, linguistic antipatterns, machine learning, source code identifiers, source code readability Guerrouj, Latifa; Kermansaravi, Zeinab; Arnaoudova, Venera; Fung, Benjamin; Khomh, Foutse; Antoniol, Giuliano; Guéhéneuc, Yann-Gaël Investigating the relation between lexical smells and change- and fault-proneness: an empirical study Journal Article In: Software Quality Journal (SQJ), vol. 25, no. 3, pp. 641–670, 2017. BibTeX | Tags: change proneness, fault proneness, linguistic antipatterns, source code identifiers Arnaoudova, Venera; Penta, Massimiliano Di; Antoniol, Giuliano Linguistic Antipatterns: What They are and How Developers Perceive Them Journal Article In: Empirical Software Engineering (EMSE), vol. 21, no. 1, pp. 104–158, 2015. Abstract | Links | BibTeX | Tags: developers' perception, empirical study, linguistic antipatterns, natural language processing, source code identifiers Arnaoudova, Venera Towards Improving the Code Lexicon and its Consistency PhD Thesis Polytechnique Montréal, 2014. Links | BibTeX | Tags: developers' perception, empirical study, fault prediction, linguistic antipatterns, program comprehension, renaming, source code identifiers Arnaoudova, Venera; Eshkevari, Laleh Mousavi; Penta, Massimiliano Di; Oliveto, Rocco; Antoniol, Giuliano; Guéhéneuc, Yann-Gaël REPENT: Analyzing the Nature of Identifier Renamings Journal Article In: IEEE Transactions on Software Engineering (TSE), vol. 40, no. 5, pp. 502–532, 2014. Abstract | BibTeX | Tags: empirical study, mining software repositories, refactoring, renaming, source code identifiers Arnaoudova, Venera; Penta, Massimiliano Di; Antoniol, Giuliano; Guéhéneuc, Yann-Gaël A New Family of Software Anti-Patterns: Linguistic Anti-Patterns Inproceedings In: Proceedings of the European Conference on Software Maintenance and Reengineering (CSMR), pp. 187–196, 2013. Abstract | BibTeX | Tags: object-oriented programming, software antipatterns, source code identifiers, textual analysis Abebe, Surafel Lemma; Arnaoudova, Venera; Tonella, Paolo; Antoniol, Giuliano; Guéhéneuc, Yann-Gaël Can Lexicon Bad Smells improve fault prediction? Inproceedings In: Proceedings of the Working Conference on Reverse Engineering (WCRE), pp. 235–244, 2012. Abstract | BibTeX | Tags: fault prediction, lexicon bad smells, machine learning, source code identifiers Eshkevari, Laleh Mousavi; Arnaoudova, Venera; Penta, Massimiliano Di; Oliveto, Rocco; Guéhéneuc, Yann-Gaël; Antoniol, Giuliano An Exploratory Study of Identifier Renamings Inproceedings In: Proceedings of the Working Conference on Mining Software Repositories (MSR), pp. 33–42, 2011. BibTeX | Tags: mining software repositories, renaming, software evolution, source code identifiers Arnaoudova, Venera; Eshkevari, Laleh Mousavi; Oliveto, Rocco; Guéhéneuc, Yann-Gaël; Antoniol, Giuliano Physical and Conceptual Identifier Dispersion: Measures and Relation to Fault Proneness Technical Report École Polytechnique de Montréal no. EPM-RT-2010-02, 2010. BibTeX | Tags: entropy, fault models, information retrieval, program comprehension, source code identifiers Arnaoudova, Venera; Eshkevari, Laleh Mousavi; Oliveto, Rocco; Guéhéneuc, Yann-Gaël; Antoniol, Giuliano Physical and Conceptual Identifier Dispersion: Measures and Relation to Fault Proneness Inproceedings In: Proceedings of the International Conference on Software Maintenance (ICSM) - ERA Track, pp. 1–5, 2010. BibTeX | Tags: entropy, fault models, information retrieval, program comprehension, source code identifiers2021
@inproceedings{Peruma:icsmeTool:IDEAL,
title = {IDEAL: An Open-Source Identifier Name Appraisal Tool},
author = {Anthony Peruma and Venera Arnaoudova and Christian Newman},
url = {http://veneraarnaoudova.com/wp-content/uploads/2021/09/2021-ICSME-tool-IDEAL-An-Open-Source-Identifier-Name-Appraisal-Tool1.pdf},
year = {2021},
date = {2021-07-17},
booktitle = {Proceedings of the International Conference on Software Maintenance and Evolution (ICSME) - Demonstrations Track},
pages = {599--603},
keywords = {linguistic antipatterns, program comprehension, source code identifiers, Tool},
pubstate = {published},
tppubtype = {inproceedings}
}
2019
@inproceedings{Fakhoury:icpc18:Readability,
title = {Improving Source Code Readability: Theory and Practice},
author = {Sarah Fakhoury and Devjeet Roy and Sk. Adnan Hassan and Venera Arnaoudova},
url = {http://veneraarnaoudova.ca/wp-content/uploads/2019/03/2019-ICPC-Reverse_Engineering_Readability_Metrics.pdf},
year = {2019},
date = {2019-03-18},
booktitle = {Proceedings of the International Conference on Program Comprehension (ICPC)},
pages = {2--12},
keywords = {empirical study, readability, source code identifiers},
pubstate = {published},
tppubtype = {inproceedings}
}
2018
@inproceedings{Fakhoury:ICPC18:CognitiveLoad,
title = {The Effect of Poor Source Code Lexicon and Readability on Developers' Cognitive Load},
author = {Sarah Fakhoury and Yuzhan Ma and Venera Arnaoudova and Olusola Adesope},
url = {http://veneraarnaoudova.ca/wp-content/uploads/2018/03/2018-ICPC-Effect-lexicon-cognitive-load.pdf},
year = {2018},
date = {2018-03-03},
booktitle = {Proceedings of the International Conference on Program Comprehension (ICPC)},
pages = {286--296},
note = {Distinguished Paper Award},
keywords = {Biometrics, empirical study, linguistic antipatterns, program comprehension, source code identifiers},
pubstate = {published},
tppubtype = {inproceedings}
}
@inproceedings{Fakhoury:saner:CNN,
title = {Keep it simple: is deep learning good for linguistic smell detection?},
author = {Sarah Fakhoury and Venera Arnaoudova and Cedric Noiseux and Foutse Khomh and Giuliano Antoniol},
url = {http://veneraarnaoudova.ca/wp-content/uploads/2018/02/2018-SANER_RENE-preprint-simple-deep-learning.pdf},
year = {2018},
date = {2018-02-22},
booktitle = {Proceedings of the International Conference on Software Analysis, Evolution, and Reengineering (SANER)—REproducibility Studies and NEgative Results (RENE) Track},
keywords = {deep learning, empirical study, linguistic antipatterns, machine learning, source code identifiers, source code readability},
pubstate = {published},
tppubtype = {inproceedings}
}
2017
@article{Guerrouj:sqj2016,
title = {Investigating the relation between lexical smells and change- and fault-proneness: an empirical study},
author = {Latifa Guerrouj and Zeinab Kermansaravi and Venera Arnaoudova and Benjamin Fung and Foutse Khomh and Giuliano Antoniol and Yann-Gaël Guéhéneuc},
year = {2017},
date = {2017-09-01},
journal = {Software Quality Journal (SQJ)},
volume = {25},
number = {3},
pages = {641--670},
keywords = {change proneness, fault proneness, linguistic antipatterns, source code identifiers},
pubstate = {published},
tppubtype = {article}
}
2015
@article{LAsPerception-15,
title = {Linguistic Antipatterns: What They are and How Developers Perceive Them},
author = {Venera Arnaoudova and Massimiliano {Di Penta} and Giuliano Antoniol},
url = {/wp-content/uploads/2014/10/2014-EMSE-Arnaodova-et-al-Perception-LAs.pdf},
year = {2015},
date = {2015-01-01},
journal = {Empirical Software Engineering (EMSE)},
volume = {21},
number = {1},
pages = {104--158},
abstract = {Antipatterns are known as poor solutions to recurring problems. For example, Brown et al. and Fowler define practices concerning poor design or implementation solutions. However, we know that the source code lexicon is part of the factors that affect the psychological complexity of a program, i.e., factors that make a program difficult to understand and maintain by humans. The aim of this work is to identify recurring poor practices related to inconsistencies among the naming, documentation, and implementation of an entity—called Linguistic Antipatterns (LAs)—that may impair program understanding. To this end, we first mine examples of such inconsistencies in real open-source projects and abstract them into a catalog of 17 recurring LAs related to methods and attributes1. Then, to understand the relevancy of LAs, we perform two empirical studies with developers—30 external (i.e., not familiar with the code) and 14 internal (i.e., people developing or maintaining the code). Results indicate that the majority of the participants perceive LAs as poor practices and therefore must be avoided—69% and 51% of the external and internal developers, respectively. As further evidence of LAs’ validity, open source developers that were made aware of LAs reacted to the issue by making code changes in 10% of the cases. Finally, in order to facilitate the use of LAs in practice, we identified a sub-set of LAs which were universally agreed upon as being problematic; those which had a clear dissonance between code behavior and lexicon.
},
keywords = {developers' perception, empirical study, linguistic antipatterns, natural language processing, source code identifiers},
pubstate = {published},
tppubtype = {article}
}
2014
@phdthesis{Arnaoudova:phd14:Lexicon,
title = {Towards Improving the Code Lexicon and its Consistency},
author = {Venera Arnaoudova},
url = {/wp-content/uploads/2014/09/2014-PhD_Thesis-Arnaoudova-LexiconConsistency.pdf},
year = {2014},
date = {2014-08-25},
school = {Polytechnique Montréal},
keywords = {developers' perception, empirical study, fault prediction, linguistic antipatterns, program comprehension, renaming, source code identifiers},
pubstate = {published},
tppubtype = {phdthesis}
}
@article{REPENT-14,
title = {REPENT: Analyzing the Nature of Identifier Renamings},
author = {Venera Arnaoudova and Laleh {Mousavi Eshkevari} and Massimiliano {Di Penta} and Rocco Oliveto and Giuliano Antoniol and Yann-Gaël Guéhéneuc},
year = {2014},
date = {2014-01-01},
journal = {IEEE Transactions on Software Engineering (TSE)},
volume = {40},
number = {5},
pages = {502--532},
abstract = {Source code lexicon plays a paramount role in software quality: poor lexicon can lead to poor comprehensibility and even increase software fault-proneness. For this reason, renaming a program entity, i.e., altering the entity identifier, is an important activity during software evolution. Developers rename when they feel that the name of an entity is not (anymore) consistent with its functionality, or when such a name may be misleading. A survey that we performed with 71 developers suggests that 39 percent perform renaming from a few times per week to almost every day and that 92 percent of the participants consider that renaming is not straightforward. However, despite the cost that is associated with renaming, renamings are seldom if ever documented—for example, less than 1 percent of the renamings in the five programs that we studied. This explains why participants largely agree on the usefulness of automatically documenting renamings. In this paper we propose REANAMING PROGRAM ENTITIES (REPENT), an approach to automatically document—detect and classify—identifier renamings in source code. REPENT detects renamings based on a combination of source code differencing and data flow analyses. Using a set of natural language tools, REPENT classifies renamings into the different dimensions of a taxonomy that we defined. Using the documented renamings, developers will be able to, for example, look up methods that are part of the public API (as they impact client applications), or look for inconsistencies between the name and the implementation of an entity that underwent a high risk renaming (e.g., towards the opposite meaning). We evaluate the accuracy and completeness of REPENT on the evolution history of five open-source Java programs. The study indicates a precision of
88 percent and a recall of 92 percent. In addition, we report an exploratory study investigating and discussing how identifiers are renamed in the five programs, according to our taxonomy.},
keywords = {empirical study, mining software repositories, refactoring, renaming, source code identifiers},
pubstate = {published},
tppubtype = {article}
}
88 percent and a recall of 92 percent. In addition, we report an exploratory study investigating and discussing how identifiers are renamed in the five programs, according to our taxonomy.2013
@inproceedings{2013-CSMR-Arnaoudova-LA,
title = {A New Family of Software Anti-Patterns: Linguistic Anti-Patterns},
author = {Venera Arnaoudova and Massimiliano {Di Penta} and Giuliano Antoniol and Yann-Gaël Guéhéneuc},
year = {2013},
date = {2013-01-01},
booktitle = {Proceedings of the European Conference on Software Maintenance and Reengineering (CSMR)},
pages = {187--196},
abstract = {Recent and past studies have shown that poor source code lexicon negatively affects software understandability, maintainability, and, overall, quality. Besides a poor usage of lexicon and documentation, sometimes a software artifact description is misleading with respect to its implementation. Consequently, developers will spend more time and effort when understanding these software artifacts, or even make wrong assumptions when they use them.
This paper introduces the definition of software linguistic antipatterns, and defines a family of them, i.e., those related to inconsistencies (i) between method signatures, documentation, and behavior and (ii) between attribute names, types, and comments. Whereas “design” antipatterns represent recurring, poor design choices, linguistic antipatterns represent recurring, poor naming and commenting choices.
The paper provides a first catalogue of one family of linguistic antipatterns, showing real examples of such antipatterns and explaining what kind of misunderstanding they can cause. Also, the paper proposes a dectector prototype for Java programs called LAPD (Linguistic Anti-Pattern Detector), and reports a study investigating the presence of linguistic antipatterns in four Java software projects.},
keywords = {object-oriented programming, software antipatterns, source code identifiers, textual analysis},
pubstate = {published},
tppubtype = {inproceedings}
}
This paper introduces the definition of software linguistic antipatterns, and defines a family of them, i.e., those related to inconsistencies (i) between method signatures, documentation, and behavior and (ii) between attribute names, types, and comments. Whereas “design” antipatterns represent recurring, poor design choices, linguistic antipatterns represent recurring, poor naming and commenting choices.
The paper provides a first catalogue of one family of linguistic antipatterns, showing real examples of such antipatterns and explaining what kind of misunderstanding they can cause. Also, the paper proposes a dectector prototype for Java programs called LAPD (Linguistic Anti-Pattern Detector), and reports a study investigating the presence of linguistic antipatterns in four Java software projects.2012
@inproceedings{2012-WCRE-Abebe-LBSfaults,
title = {Can Lexicon Bad Smells improve fault prediction?},
author = {Surafel Lemma Abebe and Venera Arnaoudova and Paolo Tonella and Giuliano Antoniol and Yann-Gaël Guéhéneuc},
year = {2012},
date = {2012-01-01},
booktitle = {Proceedings of the Working Conference on Reverse Engineering (WCRE)},
pages = {235--244},
abstract = {In software development, early identification of fault-prone classes can save a considerable amount of resources. In the literature, source code structural metrics have been widely investigated as one of the factors that can be used to identify faulty classes. Structural metrics measure code complexity, one aspect of the source code quality. Complexity might affect program understanding and hence increase the likelihood of inserting errors in a class. Besides the structural metrics, we believe that the quality of the identifiers used in the code may also affect program understanding and thus increase the likelihood of error insertion.
In this study, we measure the quality of identifiers using the number of Lexicon Bad Smells (LBS) they contain. We investigate whether using LBS in addition to structural metrics improves fault prediction. To conduct the investigation, we assess the prediction capability of a model while using i) only structural metrics, and ii) structural metrics and LBS. The results on three open source systems, ArgoUML, Rhino, and Eclipse, indicate that there is an improvement in the majority of the cases.},
keywords = {fault prediction, lexicon bad smells, machine learning, source code identifiers},
pubstate = {published},
tppubtype = {inproceedings}
}
In this study, we measure the quality of identifiers using the number of Lexicon Bad Smells (LBS) they contain. We investigate whether using LBS in addition to structural metrics improves fault prediction. To conduct the investigation, we assess the prediction capability of a model while using i) only structural metrics, and ii) structural metrics and LBS. The results on three open source systems, ArgoUML, Rhino, and Eclipse, indicate that there is an improvement in the majority of the cases.2011
@inproceedings{2011-MSR-Eshkevari-Renamings,
title = {An Exploratory Study of Identifier Renamings},
author = {Laleh {Mousavi Eshkevari} and Venera Arnaoudova and Massimiliano {Di Penta} and Rocco Oliveto and Yann-Gaël Guéhéneuc and Giuliano Antoniol},
year = {2011},
date = {2011-01-01},
booktitle = {Proceedings of the Working Conference on Mining Software Repositories (MSR)},
pages = {33--42},
keywords = {mining software repositories, renaming, software evolution, source code identifiers},
pubstate = {published},
tppubtype = {inproceedings}
}
2010
@techreport{2010-Polytechnique-Arnaoudova-IdentifierDispersion,
title = {Physical and Conceptual Identifier Dispersion: Measures and Relation to Fault Proneness},
author = {Venera Arnaoudova and Laleh {Mousavi Eshkevari} and Rocco Oliveto and Yann-Gaël Guéhéneuc and Giuliano Antoniol},
year = {2010},
date = {2010-01-01},
number = {EPM-RT-2010-02},
institution = {École Polytechnique de Montréal},
keywords = {entropy, fault models, information retrieval, program comprehension, source code identifiers},
pubstate = {published},
tppubtype = {techreport}
}
@inproceedings{2010-ICSMera-Arnaoudova-IdentifierDispersion,
title = {Physical and Conceptual Identifier Dispersion: Measures and Relation to Fault Proneness},
author = {Venera Arnaoudova and Laleh {Mousavi Eshkevari} and Rocco Oliveto and Yann-Gaël Guéhéneuc and Giuliano Antoniol},
year = {2010},
date = {2010-01-01},
booktitle = {Proceedings of the International Conference on Software Maintenance (ICSM) - ERA Track},
pages = {1--5},
keywords = {entropy, fault models, information retrieval, program comprehension, source code identifiers},
pubstate = {published},
tppubtype = {inproceedings}
}