Specifying Reusable Aspects

Aspect-Oriented Programming enables developers to manage, in a more modular fashion, implementations of crosscutting concerns that might be scattered or tangled if aspect-oriented techniques were not utilized. Our interest in this paper is in considering techniques for specifying precise properties of aspects. In particular, we are interested in specifying reusable aspects; i.e., aspects that correspond to crosscutting concerns that occur in many systems. These abstract aspects can be reused in various systems where a particular concern is applicable. Although there has been work on issues related to reasoning about aspects and the behaviors of aspect-oriented systems, specifying reusable abstract aspects seems to have received little attention. We adopt the following approach to specifying reusable aspects and how they are specialized in individual systems. We specify a reusable aspect in terms of a contract; the contract is written in terms of abstraction concepts that will correspond to portions that are left abstract in the reusable aspect. This contract will be specialized by a subcontract corresponding to the subaspect that defines how the abstract aspect is specialized for use in a given system. While the aspect contract is applicable to all systems built using the reusable aspect, the contract plus the subcontract define the behavior corresponding to the given system. We illustrate the approach by applying it to a simple example.

[1]  Shmuel Katz,et al.  Incremental analysis of interference among aspects , 2008, FOAL.

[2]  Neelam Soundarajan,et al.  Enforcing behavioral constraints in evolving aspect-oriented programs , 2008, FOAL.

[3]  Neelam Soundarajan,et al.  Patterns: from system design to software testing , 2007, Innovations in Systems and Software Engineering.

[4]  Gary T. Leavens,et al.  MAO: Ownership and Effects for More Effective Reasoning About Aspects , 2007, ECOOP.

[5]  Ruzanna Chitchyan,et al.  Semantics-based composition for aspect-oriented requirements engineering , 2007, AOSD.

[6]  Neelam Soundarajan,et al.  Rely-guarantee approach to reasoning about aspect-oriented programs , 2007, SPLAT.

[7]  Neelam Soundarajan,et al.  Amplifying the Benefits of Design Patterns: From Specification Through Implementation , 2006, FASE.

[8]  David Walker,et al.  Harmless advice , 2006, POPL '06.

[9]  Yuanyuan Song,et al.  Modular software design with crosscutting interfaces , 2006, IEEE Software.

[10]  Jonathan Aldrich,et al.  Open Modules: Modular Reasoning About Advice , 2005, ECOOP.

[11]  G. Kiczales,et al.  Aspect-oriented programming and modular reasoning , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

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

[13]  Neelam Soundarajan,et al.  Responsibilities and rewards: specifying design patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[14]  Siobhán Clarke,et al.  Theme: an approach for aspect-oriented analysis and design , 2004, Proceedings. 26th International Conference on Software Engineering.

[15]  Len Bass,et al.  Identifying Aspects Using Architectural Reasoning , 2004 .

[16]  Paulo Borba,et al.  Separation of Crosscutting Concerns from Requirements to Design: Adapting an Use Case Driven Approach , 2004 .

[17]  Jianjun Zhao,et al.  Pipa: A Behavioral Interface Specification Language for AspectJ , 2003, FASE.

[18]  João Araújo,et al.  Modularisation and composition of aspectual requirements , 2003, AOSD '03.

[19]  Dennis Wagelaar A Concept-Based Approach for Early Aspect Modelling , 2003 .

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

[21]  Gary T. Leavens,et al.  A Simple and Practical Approach to Unit Testing: The JML and JUnit Way , 2002, ECOOP.

[22]  Gary T. Leavens,et al.  Observers and Assistants: A Proposal for Modular Aspect-Oriented Reasoning , 2002 .

[23]  T. Mikkonen On Objects , Aspects , and Specifications Addressing their Collaboration , 2002 .

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

[25]  Siobhán Clarke,et al.  Composition patterns: an approach to designing reusable aspects , 2001, ICSE 2001.

[26]  Stanley M. Sutton,et al.  Hyper/J™: multi-dimensional separation of concerns for Java™ , 2001, ICSE '02.

[27]  Gary T. Leavens,et al.  JML: notations and tools supporting detailed design in Java , 2000 .

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

[29]  John C. Grundy,et al.  Aspect-oriented requirements engineering for component-based software systems , 1999, Proceedings IEEE International Symposium on Requirements Engineering (Cat. No.PR00188).