Aspect-oriented programming

  title={Aspect-oriented programming},
  author={Gregor Kiczales and Erik Hilsdale},
Aspect-oriented programming (AOP) is a technique for improving separation of concerns in software design and implementation. AOP works by providing explicit mechanisms for capturing the structure of crosscutting concerns. This tutorial shows how to use AOP to implement crosscutting conerns in a concise modular way. It works with AspectJ, a seamless aspect-oriented extension to the Java(tm) programming language, and with AspectC, an aspect-oriented extension to C in the style of AspectJ. It also… 

Figures from this paper

Language-independent aspect-oriented programming

The term aspect-oriented programming (AOP) has come to describe the set of programming mechanisms developed specifically to express crosscutting concerns, which are composed, or woven, with traditionally encapsulated functionality referred to as components.

Replacing Object Oriented Programming Features through Aspect Oriented Programming with Crosscutting Concerns

This work examines the use of the language, as well as its features, and lays out a common crosscutting problem to illustrate the general syntax of the traditional AspectJ language.

Aspect-Oriented Programming with AspectJ

In Aspect-Oriented Programming with AspectJ, expect to learn the basics of AOP, why it is useful, and how it relates to object-oriented programming.

Aspect-Oriented Programming

In this paper, AOP is compared to OOP, and the AspectJ tutorial is included in this report to illustrate the effectiveness of AOP.

A Survey of Aspect-Oriented Programming Languages

Aspect-Oriented Software Development (AOSD) is one of the newest approaches for managing complexity by further modularizing code for large software systems. Software code continues to grow in size as

Review on Aspect Oriented Programming

It has been concluded that AOP is promising and deserves more attention from developers and researchers, however, more systematic evaluation studies should be conducted to better understand its implications.

Towards a model-driven join point model

This work presents a possible solution based on modeling aspects at a higher level of abstraction which are, in turn, transformed to specific targets to solve problems of tight coupling of existing approaches with the implementing code.

Aspect-Oriented Programming with AspectJ

This paper presents a conceptual framework for aspect- oriented programming and demonstrates this with a code example in AspectJ, a general-purpose aspect-oriented extension to Java.

Refactoring the JUnit framework using aspect-oriented programming

The refactoring of the JUnit object-oriented framework using the AspectJ programming language has brought benefits to the understanding and maintainability of the framework, as well as to implement more flexible extensions.

Aspect-oriented Programming in PHP

A new approach is taken by weaving advices into the concerns in runtime in PHP, resulting in a fast and easy to use solution for Aspect Oriented Programming in PHP.



An Overview of AspectJ

AspectJ provides support for modular implementation of a range of crosscutting concerns, and simple extensions to existing Java development environments make it possible to browse the crosscutting structure of aspects in the same kind of way as one browses the inheritance structure of classes.

Discussing aspects of AOP

Aspect-oriented programming is a new evolution in the line of technology for separation of concerns technology that allows design and code to be structured to reflect the way developers want to think

An initial assessment of aspect-oriented programming

Two exploratory experiments are conducted that considered the impact of aspect oriented programming, as found in AspectJ version 0.1, on two common programming activities: debugging and change and provide insights into the usefulness and usability of aspectoriented programming.

Handling crosscutting constraints in domain-specific modeling

Whenever the description of a software artifact exhibits crosscutting structure, the principles of modularity espoused by AO offer a powerful technology for supporting separation of concerns, which is found to be true especially in the area of domain-specific modeling.

AP/S++: Case-study of a MOP for purposes of software evolution

AP/S++ is an implementation of the AP using the Scheme-based, objectoriented language S++, a compile-time MOP that can easily be reproduced in many object-oriented programming languages.

Subject-oriented programming: a critique of pure objects

This paper explores this shift to a style of objectoriented technology that emphasizes the subjective views: Subject-Oriented Programming.

Abstracting Process-to-Function Relations in Concurrency Object-Oriented Applications

A programming model for concurrent object-oriented applications by which concurrency issues are abstracted and separated from the code, and a solution based on lessons learned with adaptive software is proposed, introducing the concept of synchronization patterns.

A metaobject protocol for C++

This paper presents a metaobject protocol (MOP) for C++ that avoids penalties on runtime performance by adopting a new meta-architecture in which the metaobjects control the compilation of programs instead of being active during program execution.

From transience to persistence in object-oriented programming: architectures and patterns

This work states that the object-oriented community is moving in this direction through its work on software architecture and patterns, and captures the persistent parts of a program allows us to better maintain the integrity of the program during evolution.

Aspect-Oriented Programming of Sparse Matrix Code

AML, a system for sparse matrix computation that deals with aspect-oriented programming concerns separately and explicitly while preserving the expressiveness of the original functional language is created.