面向方面的编程 Aspect Oriented Programming 2015-10-4 Institute of Computer Software Nanjing University 1.

Slides:



Advertisements
Similar presentations
AspectWerkz 2 - and the road to AspectJ 5 Jonas Bonér Senior Software Engineer BEA Systems.
Advertisements

A Brief Introduction to Aspect-Oriented Programming Zhenxiao Yang.
Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
1 JAC : Aspect Oriented Programming in Java An article review by Yuval Nir and Limor Lahiani.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development.
An Overview of AspectJ Sabine Hauert. Today's Deserts  Whipped introduction served with its three berries syrup  Chocolate history soufflé  Design.
Secure Systems Research Group - FAU Aspect Oriented Programming Carlos Oviedo Secure Systems Research Group.
Overview of AspectJ Aspect Oriented Software Development Seminar Technion presented by Oren Mishali.
Aspect-Oriented Programming In Eclipse ® Aspect-Oriented Programming in Eclipse with AspectJ Dr Helen Hawkins and Sian January.
Review Amit Shabtay. March 3rd, 2004 Object Oriented Design Course 2 Review What have we done during the course? Where to learn more? What is for the.
ASPECT ORIENTED SOFTWARE DEVELOPMENT Prepared By: Ebru Doğan.
University of British Columbia Software Practices Lab CAS Seminar 06 Fluid AJ - A Simple Fluid AOP Tool Terry Hon Gregor Kiczales.
More on AspectJ. aspect MoveTracking { private static boolean _flag = false; public static boolean testAndClear() { boolean result = _flag; _flag = false;
Introduction to Aspect- Oriented Programming CS 3360 Gregor Kiczales, et. al. Getting started with AspectJ, CACM, 44(10):59-65, October Fall 2012.
Programming Languages and Paradigms Object-Oriented Programming.
CSM-Java Programming-I Spring,2005 Introduction to Objects and Classes Lesson - 1.
Outline Introduction Problem Statement Object-Oriented Design Aspect-Oriented Design Conclusion Demo.
Secure Systems Research Group - FAU Aspects and mobile applications Sergio Soares Paulo Borba, “PaDA: A Pattern for Distribution Aspects” In Second Latin.
Introduction to Aspect Oriented Programming Presented By: Kotaiah Choudary. Ravipati M.Tech IInd Year. School of Info. Tech.
Aspect Oriented Programming (AOP) in.NET Brent Krueger 12/20/13.
Aspect Oriented Programming Razieh Asadi University of Science & Technology Mazandran Babol Aspect Component Based Software Engineering (ACBSE)
Aspect Oriented Programming Scott Nykl CSSE 411 Senior Seminar.
Tool support for crosscutting concerns of API documentation Michihiro Horie, Shigeru Chiba Tokyo Institute of Technology, Japan.
Composing Adaptive Software Authors Philip K. McKinley, Seyed Masoud Sadjadi, Eric P. Kasten, Betty H.C. Cheng Presented by Ana Rodriguez June 21, 2006.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development 1.
Aspect Oriented Programming Sumathie Sundaresan CS590 :: Summer 2007 June 30, 2007.
Aspect-Oriented Refactoring of the Apache Cocoon Shared-Object Resource Allocation System Jeff Dalton February 28th, 2003 Advisor: David G. Hannay Client:
Aspect Oriented Programming Gülşah KARADUMAN.
Joel Phinney March 31, ◦ Concerns  Separation of Concerns, Tangled and Scattered Concerns, Cross-Cutting Concerns, Aspects ◦ Aspect-Oriented Software.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 13 Introduction to Classes.
Methodology: The AOP Refactoring Process Aspect-Oriented Refactoring of the Apache Cocoon Shared-Object Resource Allocation System Jeff Dalton Advisor:
AOSD1 Aspect-Oriented Software Design Karl Lieberherr Theo Skotiniotis.
AOP-1 Aspect Oriented Programming. AOP-2 Aspects of AOP and Related Tools Limitation of OO Separation of Concerns Aspect Oriented programming AspectJ.
Introduction Better Faster Cheaper (pick any two) On-going issue that continues to motivate research in software engineering Applications: –continue to.
1 An Aspect-Oriented Implementation Method Sérgio Soares CIn – UFPE Orientador: Paulo Borba.
IDENTIFYING SEMANTIC DIFFERENCES IN ASPECTJ PROGRAMS Martin Görg and Jianjun Zhao Computer Science Department, Shanghai Jiao Tong University.
Inter-Type Declarations in AspectJ Awais Rashid Steffen Zschaler © Awais Rashid, Steffen Zschaler 2009.
AspectJ – AOP for Java Tom Janofsky. Instructor at Penn State Abington Consultant with Chariot Solutions JUG Member.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
Topics for exam in AOSD Basic concepts: tangling, scattering, joinpoint, advice, cross-cutting, weaving AspectJ: syntax, pointcut notations, around, proceed,
Demeter Aspects We study techniques for the emerging area of Aspect-Oriented Software Development and focus on the following areas:  Aspectual Collaborations.
Chapter 8: Aspect Oriented Programming Omar Meqdadi SE 3860 Lecture 8 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Alloy-based Lightweight Verification for Aspect-oriented Architecture Naoyasu Ubayashi(Kyushu Institute of Technology) Yuki Sato(Kyushu Institute of Technology)
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Aspect Oriented Programming Adlux Consultancy Services Pvt Ltd
Kansas City Java User’s Group Jason W. Bedell July 12, 2006
问题 Code scattering Blocks of duplicated code Blocks of complementary code, and different modules implementing complementary parts of the concern Code.
Comparison of Different AOP Approaches Presented by: Xiaojing Wang.
aspectj tools new and noteworthy Mik Kersten University of British Columbia Adrian Colyer IBM Hursley OOPSLA, October
Aspect Security - RaviShekhar Gopalan - Prof. Lieberherr Software Security (CSG379)
Introduction to Yan Cui Aspect Oriented Programming by
R R R A Brief Introduction to Aspect-Oriented Programming.
Introduction to Aspect- Oriented Programming CS 3360 Gregor Kiczales, et. al. Getting started with AspectJ, CACM, 44(10):59-65, October Spring 2012.
CSC450 Software Engineering Devon M. Simmonds University of North Carolina, Wilmington 1.
Aspect-Oriented Software Development (AOSD)
AspectJ Development Tools Mik Kersten University of British Columbia October 28, 2003.
L’origine dei mali: le dipendenze tra componenti Stefano Leli 14° Workshop DotNetMarche Venerdì 16 aprile
Features of AOP languages AOP languages have the following main elements: –a join point model (JPM) wrt base PL –a specification language for expressing.
Leveraging ColdSpring to build a robust Flex applications Chris Scott, Cynergy Systems.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Software Engineering Lecture 7
An Interface Mechanism for Encapsulating Weaving in Class-based AOP
Aspect-Oriented Programming with the Eclipse AspectJ plug-in
Object-Orientated Programming
Demeter Aspects Who We Are Aspectual Collaborations
Advanced Programming Behnam Hatami Fall 2017.
Aspect Oriented Programming
AspectAda Aspect-Oriented Programming for Ada95
Aspect Oriented Software Design
Presentation transcript:

面向方面的编程 Aspect Oriented Programming Institute of Computer Software Nanjing University 1

摘要  Background and Motivation  AOP  AspectJ  Summary Institute of Computer Software Nanjing University 2

摘要  Background and Motivation  AOP  AspectJ  Summary Institute of Computer Software Nanjing University 3

Background and Motivation  Where OOP has brought us  Reusability of components  Modularity  Less complex implementation  Reduced cost of maintenance  ……  Modularity is a universal advancement over structured programming that leads to clearer and better understood software Institute of Computer Software Nanjing University 4

Modularity in Reality  Code from org.apache.tomcat Institute of Computer Software Nanjing University 5 XML Parsing Red shows relevant lines of code Nicely fits in one box Good Modularity

Modularity in Reality Institute of Computer Software Nanjing University 6 URL pattern matching Pretty Good Modularity fits in two boxes

Modularity in Reality Institute of Computer Software Nanjing University 7 Logging Red shows lines of code that handle logging Not in just one place Not even in a small number of places Bad Modularity Code tangling and scattering

History of Programming Paradigms  In the beginning: Programming in whichever way.  Monolithic programs Institute of Computer Software Nanjing University 8

History of Programming Paradigms  Structured Programming  Functional decomposition Institute of Computer Software Nanjing University 9 Modularity

History of Programming Paradigms  Object-Oriented Programming  Encapsulation & Inheritance Institute of Computer Software Nanjing University 10 Modularity

Nice things of OOP  Modular structure  Reuse  Class  Design patterns  Framework Institute of Computer Software Nanjing University 11

Limitations of OOP Institute of Computer Software Nanjing University 12 Some things cannot be modeled well in object hierarchies!!

A motivating example: Tracing Institute of Computer Software Nanjing University 13 class Point{ void set (int x, int y){ TraceSupport.traceEntry(“Point.set”); this.x =x; this.y=y; TraceSupport.traceExit(“Point.set”); }

Java API Example Institute of Computer Software Nanjing University 14 package java.io; public class File implements java.io.Serializable{ private String path; … public boolean exists(){ SecurityManager security = System.getSecurityManager(); if(security!=null){ security.checkRead(path); } return exits0(); } public boolean canRead(){ SecurityManager security = System.getSecurityManager(); if(security!=null){ security.checkRead(path); } return canRead0(); } Same code repeated 16 times in java.io.File

Crossing cutting concerns Institute of Computer Software Nanjing University 15

What is a concern?  A particular goal, concept, or area of interest (requirement)  A software system contains:  Business (application) logic concerns  System-level concerns Institute of Computer Software Nanjing University 16

Crosscutting Concerns  Crosscutting is how to characterize a concern than spans multiple units of OO modularity  Crosscutting concerns resist modularization using normal OO construct Institute of Computer Software Nnjing University 17

Separation of Concerns (SoC)  Object-Oriented Programming separates and encapsulates some concerns  Others end up tangled and scattered  Basic problem  N dimensions of concerns  1 dimension of implementation structure  Tyranny decomposition Institute of Computer Software Nanjing University 18

Approaches to SoC  Composition Filters Composition Filters  Multi-dimensional Separation of Concerns Multi-dimensional Separation of Concerns  Adaptive Programming Adaptive Programming  Aspect-Oriented Programming  Was developed at Xerox PARC (施乐公司 帕洛阿尔托研究中心)  (Related) Meta-Object Protocol (MOP)  Reflective programming, meta-object protocol Institute of Computer Software Nanjing University 19

摘要  Background and Motivation  AOP  AspectJ  Summary Institute of Computer Software Nanjing University 20

The AOP Idea  Many cross-cuts aren’t random!  They serve specific purposes  They have well-defined structure  So…let’s capture the cross-cutting structure in a modular way to better support for “Separation of Concerns” Institute of Computer Software Nanjing University 21

Two central problems AOP tries to solve  Code tangling  One module, many concerns Institute of Computer Software Nanjing University 22 Code scattering One concern, many modules Example: logging

Two central problems AOP tries to solve Institute of Computer Software Nanjing University 23

AOP approach to SoC Institute of Computer Software Nanjing University 24

Prism Analogy Institute of Computer Software Nanjing University 25 Crosscutting concerns Implement each concern separately Weave concerns together

Basic Mechanisms of AOP Institute of Computer Software Nanjing University 26 Aspect Pointcut Advice Weaving

Summary so far  AOP is a software development technique that complements and extends OOP  Provides new and powerful ways to modularize “crosscutting concerns”  Crosscutting concerns: Behavior that cuts across class boundaries  AspectJ is the leading implementation of AOP that extends Java’s OOP model Institute of Computer Software Nanjing University 27

摘要  Background and Motivation  AOP  AspectJ  Summary Institute of Computer Software Nanjing University 28

What is AspectJ?  A simple and practical aspect-oriented extension to Java  A general purpose AO language  Based on over ten years of research at Xerox PARC   Launched in 1998  Transferred to Eclipse.org in 2002   Latest version: AspectJ

Design assumptions  Real Community Users  Writing aspects  Reading aspects  Idioms  How effective for concerns  Modular, reusable and easy to develop and maintain  Java compatibility  Upward compatibility  Platform compatibility  Tool compatibility  Programmer Compatibility Institute of Computer Software Nanjing University 30

AspectJ Compilation Process Institute of Computer Software Nanjing University 31 weaving Application System Application modules.java or jar files Aspects.aj files ajc: javac extension

Dynamic VS Static crosscutting  Dynamic crosscutting  define additional behavior to run at certain well- defined points in the execution of the program  Static crosscutting  modify the static structure of a program (e.g., adding new methods, implementing new interfaces, modifying the class hierarchy) Institute of Computer Software Nanjing University 32

Concepts in AspectJ  Join Points 连接点  Pointcut 切入点  Advice 通知  Aspect 方面  Introduce 引入 Institute of Computer Software Nanjing University 33

High level View of AspectJ Institute of Computer Software Nanjing University 34 Java Program AspectJ Advice pointcut advice body join point

Join Points Model  Join point is a well-defined point in a program’s execution  Method call: Institute of Computer Software Nanjing University 35 Public void move(int dx, int dy){ setX(_x+dx); setY(_y+dy); } Method call join point

More Join Points public void setX(int x){ _x = x; } Institute of Computer Software Nanjing University 36 Method execution join point Field set join point

All Join Points  method & constructor execution  method & constructor call  field get & set  exception handler execution  static & dynamic initialization  dynamic joinpoints (cflow, cflowbelow) Institute of Computer Software Nanjing University 37

Pointcuts  Pointcut:  Predicate on join points: selecting a collection of joinpoints  Example: call (void Point.setX(int))  Wildcard characters are allowed. The following pointcut matches any method call to the methods of the class Point whose names begin with “set”  call (void myPackage..*Point.set*()); Institute of Computer Software Nanjing University 38

Named Pointcuts  Can be a Named set of join points  Capture all the executions of the  or method Institute of Computer Software Nanjing University 39 pointcut move(): execution (void Point.setX(int)) || execution (void Point.setY(int)); Name and parameters Executions of methods with the specified sig. or

More on Pointcuts  Basic pointcuts and pointcuts composition  Pointcuts can be composed as boolean expressions with “&&”, “||” and “!”  Pointcuts can have arguments Institute of Computer Software Nanjing University 40

Pointcut Designators  call, execution (method or constructor)  get, set (field)  within (type), withincode(method or constructor)  this, target (type or id)  args(type or id list)  cflow, cflowbelow(pointcut)  handler, throwing (exception type)  combine with ||, && and !  use *, + and.. wildcards  bind arguments (autoboxing!), this, target 41

Advice  Code that runs before, after, or around (instead of) a join point Institute of Computer Software Nanjing University 42 after() returning(): move() { //code here runs after each move } Type of advice Pointcut it applies to

Advice Types in AspectJ  Before advice: runs at the moment join point is reached, before method runs  After advice: runs at the moment control returns through join point, just after method  After, after returning, after throwing  Around advice: runs when join point is reached and has control over whether method itself runs at all Institute of Computer Software Nanjing University 43

Aspects Aspect HistoryUpdating{ pointcut move(): execution(voidPoint.setX(int)) || execution(voidPoint.setY(int)); after() returning: move() { //code here runs after each move } Institute of Computer Software Nanjing University 44 Example:

Aspects  Mix everything we’ve seen up to now and put it one or more modular units called Aspects.  Looks a lot like a class!  Can contain pointcuts, advice declarations, methods, variables … Institute of Computer Software Nanjing University 45

How it works  Short answer: bytecode modification Institute of Computer Software Nanjing University 46

A first example Institute of Computer Software Nanjing University 47

What it does Institute of Computer Software Nanjing University 48 Sample Code

AspectJ’s Introductions  An introduction is an aspect member that allows to  Add methods to an existing class  Add field to an existing class  Extend an existing class with another  Implement an interface in an existing class  Convert checked exceptions into unchecked exceptions Institute of Computer Software Nanjing University 49

Introduction examples  public int foo.bar(int x);  private int foo.counter;  declare parents: mammal extends animal;  declare parents: MyThread implements MyThreadInterface; Institute of Computer Software Nanjing University 50

Some Advanced Topics  Aspect Extension (Inheritance)  example Institute of Computer Software Nanjing University 51

Some Advanced Topics  Aspect Creation (Association)  Aspect instance Single (static) vs. Multiple (dynamic)  Default: Singleton, created when program begins  Object (Class) association: perthis, pertarget  Controlflow association Percflow, percflowbelow  Aspect & Advice Precedence & Interactions Institute of Computer Software Nanjing University 52

Performance impact  See “Advice Weaving in AspectJ”Advice Weaving in AspectJ  “The implementation of advice weaving introduces very little performance overhead when compared to the same functionality coded by hand.”  Does make it easy to create performance destroying code…  But allows powerful optimizations Institute of Computer Software Nanjing University 53

AspectJ Terminology  a join point is a well-defined point in the program flow  a pointcut is a group of join points  advice is code that is executed at a pointcut  introduction modifies the members of a class and the relationships between classes  a compile time declaration introduces a compile time warning or error upon detection of certain usage patterns  an aspect is a module for handling crosscutting concerns  Aspects are defined in terms of pointcuts, advice, and introduction  Aspects are reusable and inheritable Institute of Computer Software Nanjing University 54

Dynamic AOP Systems  Creating aspects at run-time  Specifying pointcuts at run-time  Dynamic code translation (or some special feature of the run-time environment)  Enabling/disabling aspects at run-time  Pointcuts are dynamic: it can be decided only at run-time whether advices have to be executed or not (based on run-time values, call-stack, etc.) Institute of Computer Software Nanjing University 55

Other Java AOP sightings  AspectWerkz: load-time/run-time weaving, AOP constructs defined using javadoctags  BEA: AOP framework for Weblogic  JBoss AOP framework  AOP with interceptors  Spring framework  Limited AOP with proxies  J2EE without EJB  AspectJ2EE  JasCo …… Institute of Computer Software Nanjing University 56

Other Aspect-Oriented Languages  AspectC  AspectC++  Aspect.Net  Lightweight Python AOP  AspectL(Lisp)  AspectML  AspectPHP Institute of Computer Software Nanjing University 57

Middleware & System Level Applications  Security  Transaction  Persistence  Mobility  Realtime& Embedded Systems  OS  …… Institute of Computer Software Nanjing University 58

AOSD  AOSD is a promising approach to encapsulate and modularize crosscutting concerns  AOSD is not a substitute of the OO paradigm but an extension to it Institute of Computer Software Nanjing University 59

AOSD Institute of Computer Software Nanjing University 60

A fast development area  AOP  Aspect-Oriented Programming  AOSD  Aspect-Oriented Software Design (Development)  AORE (AOR)  Aspect-Oriented Requirements Engineering  AOM  Aspect Oriented Modeling Institute of Computer Software Nanjing University 61

Where to Get More Information  The AspectJ website   AOSD website   Books  Mastering AspectJ  AspectJ in Action  Google Institute of Computer Software Nanjing University 62

作业(本次作业不用提交)  运行 demo 程序,研究 AspectJ 的语法、编译过程  注意:先安装 Eclipse AJDT 插件  思考为什么说 AOP 不会取代 OOP ,而是对 OOP 的补充? Institute of Computer Software Nanjing University 63