CSMR 2012
Technical Track
Empirical Research
Friday, March 4, 2011, from 11:00 to 12:30, A14 HS1- Marwen Abbes, Foutse Khomh, Yann-Gaël Guéhéneuc and Giuliano Antoniol - An Empirical Study of the Impact of Antipatterns on Program Comprehension
- Marcus Vinicius Couto, Marco Tulio Valente and Eduardo Figueiredo - Extracting Software Product Lines: A Case Study Using Conditional Compilation
- Henk van der Schuur, Slinger Jansen and Sjaak Brinkkemper - Reducing Maintenance Effort through Software Operation Knowledge: An Eclectic Empirical Evaluation
An Empirical Study of the Impact of Antipatterns on Program Comprehension
Marwen Abbes, Foutse Khomh, Yann-Gaël Guéhéneuc and Giuliano Antoniol
Antipatterns are ''poor'' solutions to recurring design problems which are conjectured in the literature to make object-oriented systems harder to maintain. However, little quantitative evidence exists to support this conjecture. We performed an empirical study to investigate whether the occurrence of antipatterns do indeed affect the understandability of systems by developers during comprehension and maintenance tasks. We designed and conducted three experiments, with 24 subjects each, to collect data on the performance of developers on basic tasks related to program comprehension and assessed the impact of two antipatterns and of their combinations: Blob and Spaghetti Code. We measured the developers' performance with: (1) the NASA task load index for their effort; (2) the time that they spent performing their tasks; and, (3) their percentages of correct answers. Collected data show that the occurrence of one antipattern does not significantly decrease developers' performance while the combination of two antipatterns impede significantly developers. We conclude that developers can cope with one antipattern but that combinations of antipatterns should be avoided possibly through detection and refactorings.
Extracting Software Product Lines: A Case Study Using Conditional Compilation
Marcus Vinicius Couto, Marco Tulio Valente and Eduardo Figueiredo
Software Product Line (SPL) is a development paradigm that targets the creation of variable software systems. Despite the increasing interest in product lines, research in the area usually relies on small systems implemented in the laboratories of the authors involved in the investigation work. Therefore, in order to address the unavailability of public and realistic product lines, this paper describes an experiment involving the extraction of a SPL for ArgoUML, an open source tool widely used for designing systems in UML. Using conditional compilation we have extracted eight complex and relevant features from ArgoUML, resulting in a product line called ArgoUML-SPL. By making the extracted SPL public, we hope it can be used to evaluate the various flavors of techniques, tools, and languages that have been proposed to implement product lines. Moreover, we have characterized the implementation of the features considered in our experiment. Using the results of this characterization, it was possible to shed light on the major challenges involved in extracting features from real-world systems.
Reducing Maintenance Effort through Software Operation Knowledge: An Eclectic Empirical Evaluation
Henk van der Schuur, Slinger Jansen and Sjaak Brinkkemper
Knowledge of in-the-field software operation is acquired unsophisticatedly: acquisition processes are implemented ad hoc, application-specific and are only triggered when end-users experience severe failures. Vendors that do acquire such knowledge structurally from their software applications, often are unsuccessful in visualizing it in a consistent and uniform manner. A generic approach to acquisition and presentation of software operation knowledge reduces the time vendors need to integrate acquisition logic into their applications, as well as the time needed to analyze, compare and present uniform software operation data resulting from in-the-field software operation. This paper proposes a technique for software operation knowledge acquisition and presentation through generic recording and visualization of software operation. A prototype tool implementing this technique is presented, as well as empirical evaluation of the tool by means of an experiment, two case studies and expert focus group discussions involving three widely-used software packages. Results show that the technique is expected to reduce software maintenance effort and increase comprehension of end-user software operation.