(c) Copyright 1998-2002 Palo Alto Research Center Incroporated. All rights reserved.1 AO Tools: State of the (AspectJ™) Art and Open Problems Mik Kersten.

Slides:



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

1..28 comparison of the leading aop tools report on February developerWorks articles Mik Kersten University of British Columbia.
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.
Secure Systems Research Group - FAU Aspect Oriented Programming Carlos Oviedo Secure Systems Research Group.
Aspect-Oriented Programming In Eclipse ® Aspect-Oriented Programming in Eclipse with AspectJ Dr Helen Hawkins and Sian January.
1 The JQuery Tool A Generic Query-Based Code browser for Eclipse Project leaders: Kris De Volder, Gregor Kiczales Students: Doug Janzen, Rajeswari Rajagopalan,
Java.sun.com/javaone/sf | 2004 JavaOne SM Conference | Session BUS JavaOne 2004 What is AOP? Gregor Kiczales AspectMentor.com and University of.
359C 10/1/05 Eric Wohlstadter Introductions –Name –Degree objective/Year –Research Area (or interests) Syllabus Aspect-Oriented Programming –AspectJ –AspectC.
University of British Columbia Software Practices Lab 2005 CASCON A Fluid AOP Editor Terry Hon Gregor Kiczales.
1 Aspect Oriented Programming Programming Languages Seminar Presenter: Barış Aktemur University of Illinois 18 Feb Mostly taken from Bedir Tekinerdogan’s.
October - December 2013CSC5021: The Problem With Aspects (J P Gibson)1 The Problem With Aspects (AOP) A style of programming that attempts to abstract.
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.
University of British Columbia Software Practices Lab CAS Seminar 06 Fluid AJ - A Simple Fluid AOP Tool Terry Hon Gregor Kiczales.
Software modularity group Gregor Kiczales Professor and NSERC/Xerox/Sierra Systems Software Design Chair University of British Columbia Principal Scientist.
Technion Israel 1 Aspect-Oriented Software Development (AOSD) An Introduction Shmuel Katz Part of this lecture: Johan Brichau & Theo D’Hondt
Review David Rabinowitz. March 3rd, 2004 Object Oriented Design Course 2 Review What have we done during the course? Which topics we have not discussed?
Aspect-Oriented Programming with AspectJ™ AspectJ.org Xerox PARC Erik Hilsdale Gregor Kiczales with Bill Griswold, Jim Hugunin, Wes Isberg, Mik Kersten.
© 2005 UBC; made available under the EPL v1.0 mylar a degree-of-interest model for eclipse Mik Kersten Gail Murphy Shawn.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
An Introduction to AOP Original slides developed by Julie Waterhouse and Mik Kersten for OOPSLA 2004 AspectJ Tutorial ( kerstens.org/mik/publications/aspectj-
© 2005 University of British Columbia mylar a degree-of-interest model for IDEs Mik Kersten Gail Murphy University of.
Outline Introduction Problem Statement Object-Oriented Design Aspect-Oriented Design Conclusion Demo.
Aspect-Oriented Programming with AspectJ Using slides from Jorrit N. Herder ( Mik Kersten ( aspectj.org Palo Alto.
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University Mining Coding Patterns to Detect Crosscutting Concerns.
Introduction to Aspect Oriented Programming Presented By: Kotaiah Choudary. Ravipati M.Tech IInd Year. School of Info. Tech.
Session 2: AspectJ Mark Stobbe September 13,
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.
©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.
Kiczales and Mezini - FOAL AOP and Modular Reasoning [ICSE05] Start with first-principles definition of modularity and modular reasoning –localization,
Methodology: The AOP Refactoring Process Aspect-Oriented Refactoring of the Apache Cocoon Shared-Object Resource Allocation System Jeff Dalton Advisor:
AOP-1 Aspect Oriented Programming. AOP-2 Aspects of AOP and Related Tools Limitation of OO Separation of Concerns Aspect Oriented programming AspectJ.
Devon M. Simmonds Computer Science Department, CSC592 1 Devon M. Simmonds Computer Science Department University of North Carolina, Wilmington
An Introduction to Programming and Object Oriented Design using Java 3 rd Edition. Dec 2007 Jaime Niño Frederick Hosch Chapter 18 Integrating user interface.
1 An Aspect-Oriented Implementation Method Sérgio Soares CIn – UFPE Orientador: Paulo Borba.
Aspect-Oriented Programming and Modular Reasoning G. KiczalesM. Mezini Presented by Alex Berendeyev.
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.
Chapter 8: Aspect Oriented Programming Omar Meqdadi SE 3860 Lecture 8 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Presented by Vishy Grandhi.  Architecture (Week 1) ◦ Development Environments ◦ Model driven architecture ◦ Licensing and configuration  AOT (Week 2)
Alloy-based Lightweight Verification for Aspect-oriented Architecture Naoyasu Ubayashi(Kyushu Institute of Technology) Yuki Sato(Kyushu Institute of Technology)
AOP and observer pattern. Design pattern General reusable solution to a commonly occurring problem in software design Not a finished design that can be.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
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
Introduction to Yan Cui Aspect Oriented Programming by
R R R A Brief Introduction to Aspect-Oriented Programming.
CSC450 Software Engineering Devon M. Simmonds University of North Carolina, Wilmington 1.
AspectScope: An Outline Viewer for AspectJ Programs Michihiro Horie, Shigeru Chiba Tokyo Institute of Technology, Japan.
AOP with AspectJ Awais Rashid, Steffen Zschaler © Awais Rashid, Steffen Zschaler 2009.
AspectJ Development Tools Mik Kersten University of British Columbia October 28, 2003.
aspectj tools new and noteworthy Mik Kersten University of British Columbia Andy Clement, George Harley IBM Hursley Labs.
L’origine dei mali: le dipendenze tra componenti Stefano Leli 14° Workshop DotNetMarche Venerdì 16 aprile
An Interface Mechanism for Encapsulating Weaving in Class-based AOP
Chengyu Sun California State University, Los Angeles
Aspect-Oriented Programming with the Eclipse AspectJ plug-in
Systems Science For situations where tools are disjoint
Chengyu Sun California State University, Los Angeles
Aspect-oriented programming
CS520 Web Programming Spring – Aspect Oriented Programming
Presentation transcript:

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.1 AO Tools: State of the (AspectJ™) Art and Open Problems Mik Kersten aspectj.org Palo Alto Research Center

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.2 good modularity XML parsing in org.apache.tomcat –red shows relevant lines of code –nicely fits in one box XML parsing

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.3 good modularity URL pattern matching in org.apache.tomcat –red shows relevant lines of code –nicely fits in two boxes (using inheritance) URL pattern matching

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.4 problems like… logging in org.apache.tomcat –red shows lines of code that handle logging –not in just one place –not even in a small number of places logging is not modularized

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.5 logging, zoomed in //From ContextManager public void service( Request rrequest, Response rresponse ) { // log( "New request " + rrequest ); try { // System.out.print("A"); rrequest.setContextManager( this ); rrequest.setResponse(rresponse); rresponse.setRequest(rrequest); // wront request - parsing error int status=rresponse.getStatus(); if( status < 400 ) status= processRequest( rrequest ); if(status==0) status=authenticate( rrequest, rresponse ); if(status == 0) status=authorize( rrequest, rresponse ); if( status == 0 ) { rrequest.getWrapper().handleRequest(rrequest, rresponse); } else { // something went wrong handleError( rrequest, rresponse, null, status ); } } catch (Throwable t) { handleError( rrequest, rresponse, t, 0 ); } // System.out.print("B"); try { rresponse.finish(); rrequest.recycle(); rresponse.recycle(); } catch( Throwable ex ) { if(debug>0) log( "Error closing request " + ex); } // log( "Done with request " + rrequest ); // System.out.print("C"); return; } // log( "New request " + rrequest ); // System.out.print(“A”); // System.out.print("B"); // log("Done with request " + rrequest); if(debug>0) log("Error closing request " + ex); // System.out.print("C");

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.6 aspect PublicErrorLogging { Log log = new Log(); pointcut publicInterface (): call(public * org.apache.tomcat..*.*(..)); after() throwing (Error e): publicInterface() { log.write(e); } logging, modularized crosscutting concerns –tangled implementation  complex, difficult to maintain –modular implementation  can be clear, easy to maintain crosscutting concerns per se not complicated! captures public interface of tomcat package

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.7 crosscutting modularity aspect modularity cuts across class modularity HistoryUpdating Display * 2 Point getX() getY() setX(int) setY(int) moveBy(int, int) Line getP1() getP2() setP1(Point) setP2(Point) moveBy(int, int) Figure makePoint(..) makeLine(..) FigureElement moveBy(int, int)

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.8 that’s great, but… “how do I know what aspects affect my code?” “what will be executed?” “do you support my IDE?” “do you support Emacs?” “do you support Vi?”

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.9 where we are: crosscutting structure

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.10 crosscutting structure harder to show –not hierarchical –global structure –must be compatible with OO tools important to show –tool support helped OO win –advice invocation is implicit –hard to infer structure from source alone

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.11 demos… modularize concern build configurations crosscutting structure

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.12 where we are: tool platform support

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.13 multiple tool platforms development task-specific functionality –compilation & build management –editing & structure navigation –documentation must be presented consistently in –command line tools –IDEs Eclipse JBuilder NetBeans

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.14 netbeans screenshot…

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.15 ajbrowser screenshot…

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.16 emacs

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.17 jdee

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.18 ajdoc

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.19 tools architecture core framework provides –AspectJ-specific tool functionality –AspectJ structure model –GUI for Swing platforms –abstract UI and event model tool clients extend core –present task-specific views of crosscutting –goal is seamless integration with host platform

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.20 tools architecture overview

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.21 abstract structure model graph of program element nodes and associations longer lifecycle than AST, smaller footprint generic for AO and OO structure

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.22 where we are: unsolved problems

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.23 join point terminology several kinds of join points –method & constructor call –method & constructor execution –field get & set –exception handler execution –static & dynamic initialization a Line dispatch method call join points method execution join points

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.24 problems dynamic information (what actually executes) advice ordering runtime inspection (show abstraction, not execution) better build configuration support eager parsing

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.25 where we’re going: more problems…

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.26 enterprise apps, lifecycle

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.27

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.28 future work richer structure model –crosscutting (of classes) –crosscutting (of enterprise tiers, resources) –runtime (joinpoints, test suite) –emergent (evolution) better views –dynamic information –comprehensive refactoring –structure mining –version control –design and global structure

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.29 future work

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.30 logging (again) logging in org.apache.tomcat –red shows lines of code that handle logging –not in just one place –not even in a small number of places

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.31 demo: visualizer

(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.32 credits AspectJ.org is a PARC project (partially funded by DARPA under contract F C0246) Erik Hilsdale, Jim Hugunin, Wes Isberg, Mik Kersten and Gregor Kiczales download the tools and docs at: get the eclipse plug-in: the team: find more information on AOP: is coming!