250 likes | 279 Views
ASPECT ORIENTED SOFTWARE DEVELOPMENT. Prepared By: Ebru Doğan. Presentation Outline. Current Methods and Languages Separation of Concerns (SOC) Problem: cross-cutting Concepts of Aspect-Oriented Development A spect Oriented Programming (AOP) Applications: Tracer example
E N D
ASPECT ORIENTEDSOFTWARE DEVELOPMENT Prepared By: Ebru Doğan
Presentation Outline • Current Methods and Languages • Separation of Concerns (SOC) • Problem: cross-cutting • Concepts of Aspect-Oriented Development • Aspect Oriented Programming (AOP) • Applications: Tracer example • IntegrationAspects and Components • Conclusions • References
Current Methods and Languages • Support abstraction mechanisms for breaking a system down intocomponents • 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 haveinteractions • Highly coupled components have manydependencies/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 • ...
Aspect-oriented development • Aspect-oriented development addressesseparation of concerns (SOC) • Concerns are associated with cross-cutting • Cross-cutting concerns are implemented as aspects and are dynamically woven into a program
Motivation forAspect-OrientedProgramming • Programming paradigm for encapsulating crosscutting concernsintoaspects. • AOP builds on top of other programming paradigms: object-oriented, procedural or functional. It does not supplant them.
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 ExistingAOPtechnologies • AspectJ • HyperJ • AspectC++ • Aspect# • Caesar • CompositionFilters • AspectWerkz • JBoss-AOP
Most Popular AOP technology • AspectJ • a general purpose AO programminglanguage • just as Java is a general-purpose OO language • extension to Java
AspectJ • 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
Advantages of AOP • Improves performance • Allows better code reuse • Enables better code encapsulation
Componentizing Aspects • Representing each aspect as a singlereusable component • Map the characteristics of a componenton aspect • Explore the applicability of conceptson 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