Title: ASPECT ORIENTED SOFTWARE DEVELOPMENT
1ASPECT ORIENTEDSOFTWARE DEVELOPMENT
2Presentation Outline
- Current Methods and Languages
- Separation of Concerns (SOC)
- Problem cross-cutting
- Concepts of Aspect-Oriented Development
- Aspect Oriented Programming (AOP)
- Applications Tracer example
- Integration Aspects and Components
- Conclusions
- References
3Current Methods and Languages
- Support abstraction mechanisms for breaking a
system down into components - Concentrate on finding and composing functional
units
4Benefits of Good Modularity
- Also known as clean separation of concerns
- no scattered code
- no tangling
- highly cohesive loosely coupled
5Separation of Concerns - Cohesion
- Cohesive component performs only one concern/task
6Separation of Concerns - Coupling
- Two components are independent if they do not
have interactions - Highly coupled components have many
dependencies/interactions
7Modularity is not always possible...
- Some concerns dont localize to objects
- their code tends to be orthogonal to the rest
of the requirements - and is spread out through many modules
8Examples of crosscutting concerns
- Synchronization
- Real-time constraints
- Error-checking
- Object interaction constraints
- Memory management
- Persistency
- Security
- Caching
- Logging
- Monitoring
- Testing
- Domain specific optimization
- ...
9Example - Figure Editor - Design
10Figure Editor Example contd
11Crosscutting Concern - Example
12Aspect-oriented development
- Aspect-oriented development addresses separation
of concerns (SOC) - Concerns are associated with cross-cutting
- Cross-cutting concerns are implemented as aspects
and are dynamically woven into a program
13Motivation for Aspect-Oriented Programming
- Programming paradigm for encapsulating
crosscutting concerns into aspects. - AOP builds on top of other programming paradigms
object-oriented, procedural or functional. It
does not supplant them.
14Key Abstractions for Different Programming
Paradigms
Paradigm Abstraction Modularization
Structured programming control flow control structure
Procedural programming computations procedure
Object-oriented programming data types class/object
Aspect-Oriented programming crosscutting concerns aspect
15Concepts of AOP (I)
- Aspect unit encapsulating a crosscutting
concern. - Join point point in the execution of a program
where an aspect might intervene. - ... whenever condition C arises, perform
action A - Pointcutexpression of a subset of join points
(condition C) - Advice piece of code for action A.
- Pointcuts and advice encapsulated into aspects.
16Concepts of AOP (II)
17Few Examples of Existing AOP technologies
- AspectJ
- HyperJ
- AspectC
- Aspect
- Caesar
- CompositionFilters
- AspectWerkz
- JBoss-AOP
18Most Popular AOP technology
- AspectJ
- a general purpose AO programming language
- just as Java is a general-purpose OO language
- extension to Java
19AspectJ
- Five simple steps to create an AOP
- Define the core/base functionality classes
- Define the aspect class
- Define the pointcut
- Declare the advice
- Weave Compile
20Tracer Example Without AOP
21Tracer Example With AOP
22Advantages of AOP
- Improves performance
- Allows better code reuse
- Enables better code encapsulation
23Componentizing Aspects
- Representing each aspect as a single reusable
component - Map the characteristics of a component on aspect
- Explore the applicability of concepts on aspect
24Conclusions
- Crosscutting concerns are typically scattered
over several modules and result in tangled code. - This reduces the modularity and as such the
quality of the software system. - AOSD provides explicit abstractions mechanisms to
represent these so-called aspects and compose
these into programs. - Increases the modularity of systems.
25References
- http//www.aosd.net/
- http//www.eclipse.org/aspectj/
- http//en.wikipedia.org/wiki/Aspect-oriented_progr
amming - http//csl.ensm-douai.fr/fakih/phd
- Fil05 Aspect-Oriented Software Development by
R.Filman et al., ISBN 0321219767