Experimentation in software engineering
IEEE Transactions on Software Engineering
The role of experimentation in software engineering: past, current, and future
Proceedings of the 18th international conference on Software engineering
An initial assessment of aspect-oriented programming
Proceedings of the 21st international conference on Software engineering
Experimentation in software engineering: an introduction
Experimentation in software engineering: an introduction
Studying programmer behavior experimentally: the problems of proper methodology
Communications of the ACM
Design Patterns CD: Elements of Reusable Object-Oriented Software, (CD-ROM)
Design Patterns CD: Elements of Reusable Object-Oriented Software, (CD-ROM)
Empirical Software Engineering
Arranging language features for more robust pattern-based crosscuts
Proceedings of the 2nd international conference on Aspect-oriented software development
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Issues in Using Students in Empirical Studies in Software Engineering Education
METRICS '03 Proceedings of the 9th International Symposium on Software Metrics
AspectJ in Action: Practical Aspect-Oriented Programming
AspectJ in Action: Practical Aspect-Oriented Programming
Evaluating guidelines for empirical software engineering studies
Proceedings of the 2006 ACM/IEEE international symposium on Empirical software engineering
The paradoxical success of aspect-oriented programming
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
The Future of Empirical Methods in Software Engineering Research
FOSE '07 2007 Future of Software Engineering
An exploratory study of the effect of aspect-oriented programming on maintainability
Software Quality Control
Using students as subjects - an empirical evaluation
Proceedings of the Second ACM-IEEE international symposium on Empirical software engineering and measurement
Assessing the Impact of Aspects on Exception Flows: An Exploratory Study
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
ESEM '09 Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement
From aspect-oriented models to aspect-oriented code?: the maintenance perspective
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Faith, hope, and love: an essay on software science's neglect of human factors
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Basics of Software Engineering Experimentation
Basics of Software Engineering Experimentation
Proceedings of the 7th symposium on Dynamic languages
Evaluating the testing ability of senior-level computer science students
CSEET '11 Proceedings of the 2011 24th IEEE-CS Conference on Software Engineering Education and Training
ICPC '11 Proceedings of the 2011 IEEE 19th International Conference on Program Comprehension
Reasoning about Faults in Aspect-Oriented Programs: A Metrics-Based Evaluation
ICPC '11 Proceedings of the 2011 IEEE 19th International Conference on Program Comprehension
ICPC '11 Proceedings of the 2011 IEEE 19th International Conference on Program Comprehension
Preserving Aspects via Automation: A Maintainability Study
ESEM '11 Proceedings of the 2011 International Symposium on Empirical Software Engineering and Measurement
Proceedings of the 3rd ACM SIGPLAN workshop on Evaluation and usability of programming languages and tools
On the impact of aspectual decompositions on design stability: an empirical study
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Hi-index | 0.00 |
Context: Aspect-Oriented Programming (AOP) is often described as a technique which improves the resulting software's modularity. However, previous experiments seem to indicate that AOP is a technique which potentially increases the development or maintenance time. A possible reason why previous experiments were not able to show such a benefit is that those experiments did not consider situations where AOP has its strength: situations where aspects change. Objectives: Our objective is to analyze whether initial higher development times caused by aspect-oriented programming can be compensated by frequent changes on the aspect code. Method: This study is an empirical study with 15 subjects based on a within-subject design (repeated measurement) using two randomized groups. The measurement is development time until programming tasks completion. Additionally, an exploratory study is performed which analyzed (a) in separation out- and under-performing subjects with respect to development time, (b) the possible influence of the lines of code, (c) the possible influence of the number of advice and pointcuts, and finally (d) the possible impact of if-statements in the aspect-oriented solutions. Results: The experiment shows that frequent changes in the crosscutting code which do not change the aspect's underlying structure compensate an initial higher development time for those concerns. But it also shows that changes, which do alter the concern's structure again, result in higher development times when using AOP. Furthermore, the paper shows that the results are similar for out- and under-performing subjects in the experiment. Finally it shows that if changes are required in an aspect's structure, subjects tend to perform such structural changes in a non-uniform way. Conclusion: AOP is a potential rewarding investment into future code changes - but it has risks.