1 / 25

Aspect-Oriented Programming

Aspect-Oriented Programming. Coming up…. What is AOP? Why do we need AOP? How does AOP work? Hello World. What is AOP?. Part of AOSD An extension of OOP extracting cross-cutting functional units of systems

Télécharger la présentation

Aspect-Oriented Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 – sharedbuffer Tangled buffer management code Tangled synchronisation code 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 • related to specific functionality to be included in the system • in a train control system, a specific functional concern is train braking • Functional • Quality of Service • Policy • System • Organisational • 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 New customer req. Customer management req. Account management req. Security req. Cross-cutting concerns Recovery req. Core concerns 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 method’s 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 pointcutsmust 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 > javacMessageCommunicator.java Test.java > java test Wanna learn AspectJ Harry, having fun?

  18. A-O Hello World pointcut advice > ajc MessageCommunicator.java MannersAspect.java Test.java > java Test Hello! Wanna learn AspectJ? Hello! Harry, having fun?

  19. A-O Hello World 2 > ajc MessageCommunicator.java MannersAspect.java Hindi Salutation.java Test.java > 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 • Doesn’t 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 pointcutsand 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/aspectj/ Video • GoogleTechTalks (2007), Aspect Oriented Programming: Radical Research in Modularity. Available at: http://www.youtube.com/watch?v=cq7wpLI0hco

More Related