Presentation is loading. Please wait.

Presentation is loading. Please wait.

Aspect Oriented Development Alex Beatty.  Purpose  Cross-cutting Concerns  Join Points, Pointcuts, and Advices  Weaving  Invasive vs. Non-Invasive.

Similar presentations


Presentation on theme: "Aspect Oriented Development Alex Beatty.  Purpose  Cross-cutting Concerns  Join Points, Pointcuts, and Advices  Weaving  Invasive vs. Non-Invasive."— Presentation transcript:

1 Aspect Oriented Development Alex Beatty

2  Purpose  Cross-cutting Concerns  Join Points, Pointcuts, and Advices  Weaving  Invasive vs. Non-Invasive  Static vs. Dynamic Introduction

3  What is a cross-cutting concern?  Examples  Reduction of code tangling and code scattering  Abstraction  Obliviousness  Expert Development  Object Reuse Purpose

4  Join Point - Point in the base code that aspect code can utilized  Examples  A method being called  A method’s code being run  Initialization Join Points

5  User defined join point(s) to utilize aspect code with  AspectJ examples  execution(!static * (Class1 || ClassA).*(..));  call(void Set*(int));  Explanation Pointcuts

6  Basically a function  before, after, and around key words  around has a special proceed() function  Has access to some information from base code  Function name, parameters, return type, return value Advice

7  Static vs dynamic  Compile-time vs load- or run-time  Invasive vs non-invasive  Directly changing base code or not Weaving

8  Logging  Coordination  Security  Mutual Exclusion Applications

9 Coordination Silent Single Bid Public English Style

10  Confusion about it’s role  Anti-pattern: Action at a distance Downsides

11  Java-based  Pointcuts  Can use logical operators  Can be named  Advices are formatted like java functions AspectJ

12  pointcut functionExecution(): execution(!static * (Class1 || ClassA).*(..))  Name  Join point type  Join point specification AspectJ Pointcuts

13  Name  Shorter than the pointcut itself  Can include parameters to capture access to an object  pointcut setter(Person p): target(p) && … AspectJ Pointcuts

14  Methods and Constructors  call(Signature) / execution(Signature) AspectJ Pointcut Types //before call Person.walk(); //after call Private void walk() { //before execution //TODO: write function body //after execution }

15  Fields  get(Signature) / set(Signature)  E.g. set(int Racer.*) AspectJ Pointcut Types private int id; … //before set id = 42; //after set

16  Instanceof checks and context exposure  this(type or id) / target(type or id) / args(type or id)  E.g. args(newval), target(Racer)  Others  http://eclipse.org/aspectj/doc/released/progguide/quick.html#quick-pointcuts http://eclipse.org/aspectj/doc/released/progguide/quick.html#quick-pointcuts AspectJ Pointcut Types

17 void around(Racer r): criticalSection(r) { int i = (int) r.getId(); …proceed(); … }  thisJoinPoint  Can be used to get arguments, signature, target, etc  thisJoinPoint.getArgs(); AspectJ Advices

18 Example of Mutual Exclusion Aspect

19 Questions

20  [1] Aspect-oriented software development. In Wikipedia. Retrieved October 20, 2013, from http://en.wikipedia.org/wiki/Aspect- oriented_software_development   [2] Rohit Sethi. “Aspect-Oriented Programming and Security”. Retrieved October 28, 2013, from http://www.symantec.com/connect/articles/aspect-oriented-programming-and-security http://www.symantec.com/connect/articles/aspect-oriented-programming-and-security   [3] Fuentes, Lidia; Sánchez, Pablo. “Aspect-Oriented Coordination”. In Science Direct. Retrieved from http://www.sciencedirect.com/science/article/pii/S1571066107004926 http://www.sciencedirect.com/science/article/pii/S1571066107004926   [4] Aspect Weaver. In Wikipedia. Retrieved October 28, 2013, from http://en.wikipedia.org/wiki/Aspect_weaver   [5] Piveta, Eduardo Kessler; Zancanella, Luiz Carlos. “Aspect Weaving Strategies”. In Journal of Universal Computer Science. Retrieved from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.2.9460&rep=rep1&type=pdfhttp://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.2.9460&rep=rep1&type=pdf   [6] The AspectJ Programming Guide. Retrieved October 28, 2013, from http://eclipse.org/aspectj/doc/released/progguide/index.html http://eclipse.org/aspectj/doc/released/progguide/index.html References


Download ppt "Aspect Oriented Development Alex Beatty.  Purpose  Cross-cutting Concerns  Join Points, Pointcuts, and Advices  Weaving  Invasive vs. Non-Invasive."

Similar presentations


Ads by Google