Aspect-orientation is a rewarding investment into future code changes - As long as the aspects hardly change

ContextAspect-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. ObjectivesOur objective is to analyze whether initial higher development times caused by aspect-oriented programming can be compensated by frequent changes on the aspect code. MethodThis 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. ResultsThe 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. ConclusionAOP is a potential rewarding investment into future code changes - but it has risks.

[1]  Amela Karahasanovic,et al.  A survey of controlled experiments in software engineering , 2005, IEEE Transactions on Software Engineering.

[2]  Andy Clement,et al.  Aspect-Oriented Programming with AJDT , 2003 .

[3]  J. E. Sammet,et al.  Software psychology: human factors in computer and information systems , 1983, SGCH.

[4]  Sven Apel,et al.  Measuring programming experience , 2012, 2012 20th IEEE International Conference on Program Comprehension (ICPC).

[5]  Claes Wohlin,et al.  Using Students as Subjects—A Comparative Study of Students and Professionals in Lead-Time Impact Assessment , 2000, Empirical Software Engineering.

[6]  Julia Eichmann,et al.  Making Software - What Really Works, and Why We Believe It , 2011, Making Software.

[7]  Marvin V. Zelkowitz,et al.  Experimental Models for Validating Technology , 1998, Computer.

[8]  Claes Wohlin,et al.  Using students as subjects - an empirical evaluation , 2008, ESEM '08.

[9]  Fabiano Cutigi Ferrari,et al.  Reasoning about Faults in Aspect-Oriented Programs: A Metrics-Based Evaluation , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[10]  Victor R. Basili,et al.  Experimentation in software engineering , 1986, IEEE Transactions on Software Engineering.

[11]  Lech Madeyski,et al.  Impact of aspect-oriented programming on software development efficiency and design quality: an empirical study , 2007, IET Softw..

[12]  R. Bard,et al.  Faith , 1930, Pilgrim Letters.

[13]  Liming Zhu,et al.  Evaluating guidelines for empirical software engineering studies , 2006, ISESE '06.

[14]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[15]  Carlos José Pereira de Lucena,et al.  Assessing the Impact of Aspects on Exception Flows: An Exploratory Study , 2008, ECOOP.

[16]  Rachel Harrison,et al.  An exploratory study of the effect of aspect-oriented programming on maintainability , 2008, Software Quality Journal.

[17]  Cláudio Sant'Anna,et al.  On the Impact of Aspectual Decompositions on Design Stability: An Empirical Study , 2007, ECOOP.

[18]  Walter F. Tichy,et al.  Should Computer Scientists Experiment More? , 1998, Computer.

[19]  Kris Gybels,et al.  Arranging language features for more robust pattern-based crosscuts , 2003, AOSD '03.

[20]  Mariano Ceccato,et al.  Refactoring the aspectizable interfaces: an empirical assessment , 2005, IEEE Transactions on Software Engineering.

[21]  Natalia Juristo Juzgado,et al.  Basics of Software Engineering Experimentation , 2010, Springer US.

[22]  Jeffrey C. Carver,et al.  Issues in using students in empirical studies in software engineering education , 2003, Proceedings. 5th International Workshop on Enterprise Networking and Computing in Healthcare Industry (IEEE Cat. No.03EX717).

[23]  Ruzanna Chitchyan,et al.  Analysis of Aspect-Oriented Software , 2003, ECOOP Workshops.

[24]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[25]  Sebastian Kleinschmager,et al.  Do static type systems improve the maintainability of software systems? An empirical study , 2012, 2012 20th IEEE International Conference on Program Comprehension (ICPC).

[26]  Per Runeson,et al.  Using Students as Experiment Subjects – An Analysis on Graduate and Freshmen Student Data , 2003 .

[27]  Victor R. Basili,et al.  The role of experimentation in software engineering: past, current, and future , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[28]  Robert J. Walker,et al.  An initial assessment of aspect-oriented programming , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[29]  Wouter Joosen,et al.  Preserving Aspects via Automation: A Maintainability Study , 2011, 2011 International Symposium on Empirical Software Engineering and Measurement.

[30]  Ramnivas Laddad,et al.  Aspectj in Action: Practical Aspect-Oriented Programming , 2003 .

[31]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[32]  Jeffrey C. Carver,et al.  Evaluating the testing ability of senior-level computer science students , 2011, 2011 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T).

[33]  Miroslaw Staron,et al.  Students as Study Subjects in Software Engineering experimentation , 2003 .

[34]  Wouter Joosen,et al.  From aspect-oriented models to aspect-oriented code?: the maintenance perspective , 2010, AOSD.

[35]  Paul Lukowicz,et al.  Experimental evaluation in computer science: A quantitative study , 1995, J. Syst. Softw..

[36]  Lutz Prechelt Kontrollierte Experimente in der Softwaretechnik , 2001 .

[37]  Sebastian Kleinschmager,et al.  How to rate programming skills in programming experiments?: a preliminary, exploratory, study based on university marks, pretests, and self-estimation , 2011, PLATEAU '11.

[38]  Friedrich Steimann The paradoxical success of aspect-oriented programming , 2006, OOPSLA '06.

[39]  Sebastian Kleinschmager,et al.  Does aspect-oriented programming increase the development speed for crosscutting code? An empirical study , 2009, ESEM 2009.

[40]  Steve McConnell What Does 10x Mean? Measuring Variations in Programmer Productivity , 2011, Making Software.

[41]  Stefan Hanenberg A Chronological Experience Report from an Initial Experiment Series on Static Type Systems , 2011 .

[42]  Stefan Hanenberg,et al.  Is Aspect-Oriented Programming a Rewarding Investment into Future Code Changes? A Socio-technical Study on Development and Maintenance Time , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[43]  Stefan Hanenberg,et al.  Faith, hope, and love: an essay on software science's neglect of human factors , 2010, OOPSLA.

[44]  Stefan Hanenberg,et al.  Comparison of a Visual and a Textual Notation to Express Data Constraints in Aspect-Oriented Join Point Selections: A Controlled Experiment , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[45]  Nancy E. Betz,et al.  Tests and assessment , 1985 .

[46]  Tore Dybå,et al.  The Future of Empirical Methods in Software Engineering Research , 2007, Future of Software Engineering (FOSE '07).

[47]  Stefan Hanenberg,et al.  Static vs. dynamic type systems: an empirical study about the relationship between type casts and development time , 2011, DLS '11.

[48]  J. Bortz Statistik für Human- und Sozialwissenschaftler , 2010 .

[49]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[50]  Ben Shneiderman,et al.  Software psychology: Human factors in computer and information systems (Winthrop computer systems series) , 1980 .

[51]  Ruven E. Brooks,et al.  Studying programmer behavior experimentally: the problems of proper methodology , 1980, CACM.

[52]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .