Aspect-Oriented Programming - PowerPoint PPT Presentation

Loading...

PPT – Aspect-Oriented Programming PowerPoint presentation | free to download - id: 8623ec-YTY4Y



Loading


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation
Title:

Aspect-Oriented Programming

Description:

AOSD Aspect Oriented Software Development. SE Software Engineering. OOP Object-Oriented Programming. Why do we need AOP? Situation in a typical O-O system: – PowerPoint PPT presentation

Number of Views:76
Avg rating:3.0/5.0
Slides: 26
Provided by: 123se144
Category:

less

Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Aspect-Oriented Programming


1
Aspect-Oriented Programming
2
Coming up
  • What is AOP?
  • Why do we need AOP?
  • How does AOP work?
  • Hello World

3
What 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

4
Why 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

5
Tangling example shared buffer
Source Sommerville, I. (2007)
6
Scattering 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
7
The AOP approach
  • Three key stages
  • Aspectual Decomoposition
  • Concern Implementation
  • Aspectual Recomposition

8
How are concerns identified?
A prism
Source Laddad, R. (2003)
9
Concern 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

10
Concern 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

11
Cross-cutting example
Source Sommerville, I. (2007)
12
Implementing Concerns
  • Core
  • Classes Operations
  • Cross-cutting / Secondary
  • Aspects
  • Advice Join Points Pointcuts

13
Aspect
  • 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

14
Join 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

15
Pointcut
  • 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

16
Advice
  • 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

17
O-O Hello World
gt javac MessageCommunicator.java Test.java gt java
test Wanna learn AspectJ Harry, having fun?
18
A-O Hello World
pointcut
advice
gt ajc MessageCommunicator.java MannersAspect.java
Test.java gt java Test Hello! Wanna learn
AspectJ? Hello! Harry, having fun?
19
A-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?
20
Another aspect example
21
How do we get a working program?
Source Laddad, R. (2003)
22
Benefits 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

23
Realities of AOP
  • Program flow is hard to follow
  • Doesnt solve any new problems
  • Breaks encapsulation

24
Terms 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

25
Useful 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
About PowerShow.com