Post on 20-Dec-2015
ASPECT ORIENTEDSOFTWARE
DEVELOPMENT
Prepared By: Ebru Doğan
Presentation Outline
1. Current Methods and Languages2. Separation of Concerns (SOC)3. Problem: cross-cutting4. Concepts of Aspect-Oriented Development5. Aspect Oriented Programming (AOP)6. Applications: Tracer example7. Integration Aspects and Components8. Conclusions9. References
Current Methods and Languages Support abstraction mechanisms for breaking
a system down into components Concentrate on finding and composing
functional units
Benefits of Good Modularity
Also known as “clean separation of concerns”
no scattered code no tangling highly cohesive & loosely coupled
Separation of Concerns - Cohesion Cohesive component performs only one
concern/task
Separation of Concerns - Coupling Two components are independent if they do not
have interactions Highly coupled components have many
dependencies/interactions
Modularity is not always possible...
Some concerns don’t localize to objects
… their code tends to be orthogonal to the rest of the requirements
… and is spread out through many modules
Examples of crosscutting concerns
Synchronization Real-time constraints Error-checking Object interaction constraints Memory management Persistency Security Caching Logging Monitoring Testing Domain specific optimization ...
Example - Figure Editor - Design
Figure Editor Example –cont’d
Crosscutting Concern - Example
Aspect-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
Motivation 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.
Key Abstractions for Different Programming ParadigmsParadigm 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
Concepts 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”
Pointcut:expression of a subset of join points (condition C) Advice: piece of code for action A. Pointcuts and advice encapsulated into aspects.
Concepts of AOP (II)
Weaving
Few Examples of Existing AOP technologies
AspectJ HyperJ AspectC++ Aspect# Caesar CompositionFilters AspectWerkz JBoss-AOP
Most Popular AOP technology AspectJ
a general purpose AO programming language just as Java is a general-purpose OO language extension to Java
AspectJ
Five simple steps to create an AOP1. Define the core/base functionality classes
2. Define the aspect class
3. Define the pointcut
4. Declare the advice
5. Weave & Compile
Tracer Example – Without AOP
Tracer Example – With AOP
Advantages of AOP
Improves performance Allows better code reuse Enables better code encapsulation
Componentizing Aspects
Representing each aspect as a single reusable component
Map the characteristics of a component on aspect
Explore the applicability of concepts on aspect
Conclusions
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.
References
http://www.aosd.net/ http://www.eclipse.org/aspectj/ http://en.wikipedia.org/wiki/Aspect-
oriented_programming http://csl.ensm-douai.fr/fakih/phd [Fil05] “Aspect-Oriented Software
Development” by R.Filman et al., ISBN: 0321219767