Weave Now or Weave Later: A Test Driven Development Perspective on Aspect-oriented Deployment Models

I Common development practice: make small changes to code, re-compile, run unit tests to verify the changes I Aspect-oriented approaches offer several deployment models: static (compile-time), load-time, and run-time I Static deployment typically induces longer (re-)compile times I Load-time deployment typically induces longer execution times I The impact of the deployment model on the edit+compile+test cycle is not understood: when should you weave?

[1]  Ivar Jacobson,et al.  Aspect-oriented software development with use cases , 2005, Addison Wesley object technology series.

[2]  Matthew Alexander Webster,et al.  Eclipse AspectJ: Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools , 2004 .

[3]  Robert E. Filman,et al.  What Is Aspect-Oriented Programming , 2001 .

[4]  Andrew W. Appel,et al.  Smartest recompilation , 1993, POPL '93.

[5]  Mik Kersten,et al.  Atlas: a case study in building a web-based learning environment using aspect-oriented programming , 1999, OOPSLA '99.

[6]  Matthias Felleisen,et al.  Units: cool modules for HOT languages , 1998, PLDI.

[7]  Awais Rashid Aspect-Oriented Database Systems , 2004, Springer Berlin Heidelberg.

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

[9]  Tao Xie,et al.  A framework and tool supports for generating test inputs of AspectJ programs , 2006, AOSD.

[10]  David Notkin,et al.  Detecting Redundant Unit Tests for AspectJ Programs , 2006, 2006 17th International Symposium on Software Reliability Engineering.

[11]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[12]  Donald E. Thomas Keynote: Transitioning AOSD from research park to main street , 2005 .

[13]  Davide Ancona,et al.  Polymorphic bytecode: compositional compilation for Java-like languages , 2005, POPL '05.

[14]  Carlos José Pereira de Lucena,et al.  Modularizing design patterns with aspects: a quantitative study , 2005, AOSD '05.

[15]  Luca Cardelli,et al.  Program fragments, linking, and modularization , 1997, POPL '97.

[16]  Tzilla Elrad,et al.  Aspect-oriented programming: Introduction , 2001, CACM.

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

[18]  Gregor Kiczales,et al.  RG: A Case-Study for Aspect-Oriented Programming , 1997 .

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

[20]  Hridesh Rajan,et al.  Nu: a dynamic aspect-oriented intermediate language model and virtual machine for flexible runtime adaptation , 2008, AOSD.

[21]  Laurie A. Williams,et al.  Assessing test-driven development at IBM , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[22]  Urs Hölzle,et al.  Reconciling responsiveness with performance in pure object-oriented languages , 1996, TOPL.

[23]  Kent L. Beck,et al.  Test-driven Development - by example , 2002, The Addison-Wesley signature series.

[24]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[25]  Hridesh Rajan,et al.  Eos: instance-level aspects for integrated system design , 2003, ESEC/FSE-11.

[26]  J. J. McGregor,et al.  Context Sensitive Editing as an Approach to Incremental Compilation , 1981, Comput. J..

[27]  Robert Dyer,et al.  Preserving Separation of Concerns through Compilation , 2006 .

[28]  H. Rajan,et al.  Classpects: unifying aspect- and object-oriented language design , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[29]  Daniel Sabbah Aspects: from promise to reality , 2004, AOSD '04.

[30]  Sophia Drossopoulou,et al.  A fragment calculus-towards a model of separate compilation, linking and binary compatibility , 1999, Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158).

[31]  Glenn Ammons Grexmk: speeding up scripted builds , 2006, WODA '06.

[32]  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).

[33]  J. Gregory Morrisett,et al.  Type-safe linking and modular assembly language , 1999, POPL '99.

[34]  Gustavo Alonso,et al.  Dynamic weaving for aspect-oriented programming , 2002, AOSD '02.

[35]  Ivar Jacobson,et al.  Aspect-Oriented Software Development with Use Cases (Addison-Wesley Object Technology Series) , 2004 .

[36]  Walter F. Tichy,et al.  Smart recompilation , 1986, TOPL.

[37]  Zhong Shao Typed cross-module compilation , 1998, ICFP '98.

[38]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[39]  Jack C. Wileden,et al.  Interface control and incremental development in the PIC environment , 1985, ICSE '85.

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

[41]  Nicholas Lesiecki Applyinq AspectJ to J2EE application development , 2006, IEEE Software.

[42]  Urs Hölzle,et al.  Adaptive optimization for self: reconciling high performance with exploratory programming , 1994 .

[43]  Günter Kniesel,et al.  JMangler - a framework for load-time transformation of Java class files , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.