Title: Aspect-Oriented Programming
1Aspect-Oriented Programming
2Coming up
- What is AOP?
- Why do we need AOP?
- How does AOP work?
- Hello World
3What is AOP?
- Part of AOSD
- An extension of OOP extracting cross-cutting
functional units of systems - A means of programming such functional units
separate from other code, which are then woven
together - An attempt at promoting good SE practices within
OOP
4Why do we need AOP?
- Situation in a typical O-O system
- A single requirement implemented by multiple
components (tangling) - A single component may include elements of
multiple requirements (scattering) - Change could require understanding and changing
many components - This impacts on software reuse
5Tangling example shared buffer
Source Sommerville, I. (2007)
6Scattering example patient records
Source Sommerville, I. (2007)
The highlighted operations implement secondary
concerns for the system, such as keeping patient
and consultant details anonymous If the policy
regarding anonymity changed, we would need to
recode each version of anonymise() throughout the
system
7The AOP approach
- Three key stages
- Aspectual Decomoposition
- Concern Implementation
- Aspectual Recomposition
8How are concerns identified?
A prism
Source Laddad, R. (2003)
9Concern Types
- Functional
- Quality of Service
- Policy
- System
- Organisational
- Functional
- related to specific functionality to be included
in the system - in a train control system, a specific functional
concern is train braking
- Quality of Service
- related to the non-functional behaviour of a
system - performance, reliability, availability
- Policy
- related to the overall policies that govern the
use of the system - security, safety, concerns related to business
rules
- System
- related to attributes of the system as a whole
- maintainability, configurability
- Organisational
- related to organisational goals and priorities
- producing a system within budget, making use of
existing software assets, maintaining the
reputation of an organisation
10Concern Classifications
- Core
- Functional concerns that directly relate to the
primary purpose of a system. - Secondary
- Functionality that shares information with the
core concerns - Functionality that satisfies NFRs
- Cross-cutting
- Concerns that apply to the system as a whole
11Cross-cutting example
Source Sommerville, I. (2007)
12Implementing Concerns
- Core
- Classes Operations
- Cross-cutting / Secondary
- Aspects
- Advice Join Points Pointcuts
13Aspect
- Aspects are similar to classes in that they can
- include data members and operations
- have access specifications
- declare themselves to be abstract
- extend classes and abstract aspects and implement
interfaces - be embedded inside classes and interfaces as
nested aspects - They are dissimilar in that they cannot
- be directly instantiated
- inherit from concrete aspects
- be marked as privileged
14Join Point
- Any identifiable execution point in a system
- A call to a method
- The methods execution
- Assignment to a variable
- Return statement
- Object construction
- Conditional check
- Comparison
- Exception handler
- Loops
- Not all may be exposed by each AOP language
- AspectJ does not expose loops
15Pointcut
- Pointcuts capture, or identify, one or more join
points -
- Need not be given a name
- Anonymous pointcuts must be specified as part of
advice - Can include wildcards
16Advice
- The code to be executed at a join point
- The join point must have been selected by a
pointcut - Can be defined as
- Before
- After
- Around
17O-O Hello World
gt javac MessageCommunicator.java Test.java gt java
test Wanna learn AspectJ Harry, having fun?
18A-O Hello World
pointcut
advice
gt ajc MessageCommunicator.java MannersAspect.java
Test.java gt java Test Hello! Wanna learn
AspectJ? Hello! Harry, having fun?
19A-O Hello World 2
gt ajc MessageCommunicator.java MannersAspect.java
Hindi Salutation.java Test.java gt java
Test Hello! Wanna learn AspectJ? Hello! Harry-ji,
having fun?
20Another aspect example
21How do we get a working program?
Source Laddad, R. (2003)
22Benefits of AOP
- Cleaner responsibilities of the individual module
- Higher modularisation
- Easier system evolution
- Late binding of design decisions
- More code reuse
- Improve time-to-market
- Reduced costs of feature implementation
23Realities of AOP
- Program flow is hard to follow
- Doesnt solve any new problems
- Breaks encapsulation
24Terms to remember
- Advice
- the code implementing a concern
- Aspect
- program abstraction defining a cross-cutting
concern. Includes a definition of one or more
pointcuts and the advice associated with that
concern - Join point
- an event in a program where the advice associated
with an aspect may be executed - Join point model
- set of events referenced in a pointcut
- Pointcut
- aspect statement defining join points where the
associated aspect advice should be executed - Weaving
- incorporation of advice code at specified join
points by an aspect weaver
25Useful Sources
- Books
- Laddad, R. (2003), AspectJ in Action, Manning
Publications Co. - Sommerville, I. (2007), Software Engineering, 8th
edition, Pearson Education Ltd. - Online
- The AspectJ Project - http//www.eclipse.org/aspec
tj/ - Video
- GoogleTechTalks (2007), Aspect Oriented
Programming Radical Research in Modularity.
Available at http//www.youtube.com/watch?vcq7wp
LI0hco