Sustainable System Infrastructure and Big Bang Evolution: Can Aspects Keep Pace?

Realistically, many rapidly evolving systems eventually require extensive restructuring in order to effectively support further evolution. Not surprisingly, these overhauls reverberate throughout the system. Though several studies have shown the benefits of aspect-oriented programming (AOP) from the point of view of the modularization and evolution of crosscutting concerns, the question remains as to how well aspects fare when the code that is crosscut undergoes extensive restructuring. That is, when evolution is a big bang, can aspects keep pace? The case study presented here considers several categories of aspects – design invariants, dynamic analysis tools, and domain specific design patterns – and shows the concrete ways in which aspects had positive, negative and neutral impact during the restructuring of the memory management subsystem of a virtual machine. Compared with best efforts in a hierarchical decomposition coupled with a preprocessor, aspects fared better than the original implementation in two out of four aspects, and no worse in the remaining two aspects.

[1]  Awais Rashid,et al.  Supporting Flexible Object Database Evolution with Aspects , 2004, GPCE.

[2]  Bernd Freisleben,et al.  Supporting autonomic computing functionality via dynamic operating system kernel aspects , 2005, AOSD '05.

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

[4]  Jörgen Hansson,et al.  Empowering configurable QoS management in real-time systems , 2005, AOSD '05.

[5]  Glenford J. Myers,et al.  Structured Design , 1974, IBM Syst. J..

[6]  Gregor Kiczales,et al.  Back to the future: a retroactive study of aspect evolution in operating system code , 2003, AOSD '03.

[7]  Robert Grimm,et al.  Patch (1) Considered Harmful , 2005, HotOS.

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

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

[10]  Andrew Clement,et al.  Large-scale AOSD for middleware , 2004, AOSD '04.

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

[12]  John A. Zinky,et al.  Building adaptive distributed applications with middleware and aspects , 2004, AOSD '04.

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

[14]  Hans-Arno Jacobsen,et al.  Towards just-in-time middleware architectures , 2005, AOSD '05.

[15]  David Lorge Parnas,et al.  A rational design process: How and why to fake it , 1986, IEEE Transactions on Software Engineering.

[16]  Alan Borning,et al.  Lightweight structural summarization as an aid to software evolution , 1996 .

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

[18]  Martin P. Robillard,et al.  Separating features in source code: an exploratory study , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[19]  Perry Cheng,et al.  Oil and water? High performance garbage collection in Java with MMTk , 2004, Proceedings. 26th International Conference on Software Engineering.

[20]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[21]  Yvonne Coady,et al.  Aspects of Memory Management , 2005, Proceedings of the 38th Annual Hawaii International Conference on System Sciences.

[22]  Gail C. Murphy,et al.  Managing crosscutting concerns during software evolution tasks: an inquisitive study , 2002, AOSD '02.

[23]  Mary Shaw,et al.  Global variable considered harmful , 1973, SIGP.

[24]  Tom DeMarco,et al.  Software State of the Art: Selected Papers , 1990 .

[25]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[26]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .