University of British Columbia Software Practices Lab CAS Seminar 06 Fluid AJ - A Simple Fluid AOP Tool Terry Hon Gregor Kiczales.

Slides:



Advertisements
Similar presentations
The Problem Decomposition of programs in terms of classes and in terms of crosscutting concerns are both useful, but languages based on source files allow.
Advertisements

AspectWerkz 2 - and the road to AspectJ 5 Jonas Bonér Senior Software Engineer BEA Systems.
University of British Columbia Software Practices Lab Experiences Building Research Tools Andrew Eisenberg & Terry Hon.
Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
ASTA Aspect Software Testing Assistant Juha Gustafsson, Juha Taina, Jukka Viljamaa University of Helsinki.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development.
1 An Aspect-Aware Outline Viewer Michihiro Horie and Shigeru Chiba Tokyo Institute of Technology, Japan.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 Modularization.
Each design pattern is designed to facilitate one kind of change, i.e. changes in one dimension. However, software evolution can happen in multiple dimensions.
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.
University of British Columbia Software Practices Lab Fluid AOP Join Point Models Terry Hon Gregor Kiczales.
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.
University of British Columbia Software Practices Lab 2005 CASCON A Fluid AOP Editor Terry Hon Gregor Kiczales.
Aspect-Oriented Programming: An Overview Brandon Wirick Feb
ASPECT ORIENTED SOFTWARE DEVELOPMENT Prepared By: Ebru Doğan.
Aspect Oriented Programming Written by Michael Beder.
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
Introduction to Aspect- Oriented Programming CS 3360 Gregor Kiczales, et. al. Getting started with AspectJ, CACM, 44(10):59-65, October Fall 2012.
Outline Introduction Problem Statement Object-Oriented Design Aspect-Oriented Design Conclusion Demo.
Taming Obliviousness in Aspects with Data-flow Analysis and Design by Contract Tim Molderez and Dirk Janssens Ansymo Antwerp Systems and Software Modelling.
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.
Chapter 1: A First Program Using C#. Programming Computer program – A set of instructions that tells a computer what to do – Also called software Software.
Aspect Oriented Programming Razieh Asadi University of Science & Technology Mazandran Babol Aspect Component Based Software Engineering (ACBSE)
Change Impact Analysis for AspectJ Programs Sai Zhang, Zhongxian Gu, Yu Lin and Jianjun Zhao Shanghai Jiao Tong University.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development 1.
MOTOROLA and the Stylized M Logo are registered in the US Patent & Trademark Office. All other product or service names are the property of their respective.
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:
Using Aspects to Support the Software Process: XP over Eclipse Oren Mishali and Shmuel Katz Technion, Israel Institute of Technology.
POSL (Principles of Software Languages) Gr. Kyushu Institute of Technology, Japan Pointcut-based Architectural Interface.
Aspect Oriented Programming Gülşah KARADUMAN.
Generative Programming. Automated Assembly Lines.
Joel Phinney March 31, ◦ Concerns  Separation of Concerns, Tangled and Scattered Concerns, Cross-Cutting Concerns, Aspects ◦ Aspect-Oriented Software.
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.
An Overview of Aspects Shmuel Katz Computer Science Department The Technion
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.
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.
Aspect Oriented Development Alex Beatty.  Purpose  Cross-cutting Concerns  Join Points, Pointcuts, and Advices  Weaving  Invasive vs. Non-Invasive.
Alloy-based Lightweight Verification for Aspect-oriented Architecture Naoyasu Ubayashi(Kyushu Institute of Technology) Yuki Sato(Kyushu Institute of Technology)
AOP-Driven Variability in Software Product Lines Vander Alves, Ayla Dantas, and Paulo Borba Informatics Center – UFPE – Brazil
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
AOSD'04, Lancaster, UK 1 Remote Pointcut - A Language Construct for Distributed AOP Muga Nishizawa (Tokyo Tech) Shigeru Chiba (Tokyo Tech) Michiaki Tatsubori.
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.
AspectScope: An Outline Viewer for AspectJ Programs Michihiro Horie, Shigeru Chiba Tokyo Institute of Technology, Japan.
UBC software modularity group 1/14/02 UCSD1 Discussion with Kiczales at UBC Ontology of AOP Ontology is the study of what there is, an inventory of what.
University of British Columbia Software Practices Lab Uniform Support for Modeling Crosscutting Structure Maria Tkatchenko Gregor Kiczales Work supported.
AOP with AspectJ Awais Rashid, Steffen Zschaler © Awais Rashid, Steffen Zschaler 2009.
1 An AOP Implementation Framework for Extending Join Point Models Naoyasu Ubayashi(Kyushu Institute of Technology, Japan) Hidehiko Masuhara(University.
AO Mechanisms in Demeter1 Discussion with Gregor Kiczales at UBC Ontology of AOP Ontology is the study of what there is, an inventory of what exists. An.
1 Aspectual Caml an Aspect-Oriented Functional Language Hideaki Tatsuzawa Hidehiko Masuhara Akinori Yonezawa University of Tokyo.
Software Engineering Lecture 7
Aspect-Oriented Generation of the API Documentation for AspectJ
Aspect-Oriented Programming with the Eclipse AspectJ plug-in
Discussion with Gregor Kiczales at UBC
Structuring Adaptive Applications using AspectJ and AOM
Implementing FOP Framework
Presentation transcript:

University of British Columbia Software Practices Lab CAS Seminar 06 Fluid AJ - A Simple Fluid AOP Tool Terry Hon Gregor Kiczales

CAS Seminar 06 2 General AOP Terminology Crosscutting concerns –Concerns that do not correspond to the core decomposition of the system Join point model –Join points –Means of identifying join points –Means of affecting join points Weaving

CAS Seminar 06 3 Crosscutting Concerns Code becomes scattered and tangled Scattered code –Spread around the system Tangled code –Mixed with other concerns Hard to maintain and manage as system evolve

CAS Seminar 06 4 Linguistic AOP Approach Crosscutting concerns are captured in aspects Aspects are new constructs in the programming language Weaving is done at compile or post-compile time

CAS Seminar 06 5 Problem Statement Linguistic AOP approach has disadvantages –Requires new language adoption –Compile time weaving means developers cannot reason about woven code Fluid AOP provides another option for programming in AOP

CAS Seminar 06 6 Fluid AOP Supports modularization of crosscutting concerns in IDE Provides temporary view that modularizes current concern These views (aspects) can be generated each time it is needed, or can be stored as a meta object

CAS Seminar 06 7 Fluid AJ Eclipse plugin Implements the principles of Fluid AOP Modularizes interaction with crosscutting code Edit time weaving

CAS Seminar 06 8 JPM for Fluid AJ Join points –Code fragments in java files Method Field Constructor Means of identifying join points –Pointcuts: method, field or constructor signatures, type patterns Means of affecting join points –Editing of text

CAS Seminar 06 9 Display Updating Consider a simple drawing application (JHotDraw) Want to implement display updating (observer pattern)

CAS Seminar Use the following pointcut to describe join points Display Updating cont’d -Display updating calls need to be added at the end of these join points pointcut change: execution(public void figures.Shape+.set*(*))

CAS Seminar Display Updating Aspect So now we have an aspect that looks like the following (very similar syntax to AspectJ) public aspect DisplayUpdating pointcut change: execution(public void figures.Shape+.set*(*)) after returning: change { }

CAS Seminar 06 12

CAS Seminar 06 13

CAS Seminar 06 14

CAS Seminar Matched join points are “prepared” by adding comments and advice block

CAS Seminar Editing the advice body here Keeps all these code blocks in synch – a crosscutting slice.

CAS Seminar Intertype Declarations Want to add a Display field for each Shape class Instead of calling static update method, we will call the update on the Display object Add the following to the DisplayUpdating aspect declare for figures.Shape { private displays.Display display; }

CAS Seminar 06 18

CAS Seminar 06 19

CAS Seminar Different Fluid AJ view Editing of crosscutting concern is modularized Viewing of the concern is still scattered and tangled with other concerns Another way developer can interact with code is to gather all the join points of a concern into one view

CAS Seminar Gather declaration Use the pointcut change defined in the previous aspect Instead of using the pointcut in an advice, we can use it in a gather declaration public aspect GatherDisplayUpdating { pointcut change: execution(public void figures.Shape+.set*(*)) gather : change }

CAS Seminar 06 22

CAS Seminar 06 23

CAS Seminar 06 24

CAS Seminar Fluid AJ vs. AspectJ (Linguistic AOP) Different join point model –Dynamic vs. static Different adoption profile –Plain old Java tools can be used on all but aspect (.fa) files –Aspect files are only meta files –Edit time weaving –Woven files are in normal java code

CAS Seminar Status Implemented a simple prototype as an Eclipse plugin –3 kinds of advice: before, after and after returning –Execution pointcut –Intertype declarations –Very basic gather declarations

CAS Seminar Open Questions What happens when a developer changes an advice body outside of the aspect file? What happens if an advice body is deleted? What is the best way to show a concern (modularizing both viewing and editing of concern)? Possible intermediate step in AOP adoption or AOP solution qua itself?

CAS Seminar Another Design Space Advice declarations gave us modularization for editing of concerns Gather declarations gave us modularization for viewing of concerns The next step would be to provide a view that can both modularize the editing and also the viewing of crosscutting concerns

CAS Seminar Overlay Gathers all join points in the concern and present an abstraction of them When you edit the abstraction, the join points also change Provides modularization for editing and viewing of concern

CAS Seminar Related Work [Toonim et. al., 04] –Linked Editing –Persistent linking of crosscutting code snippets –No semantic approach for describing crosscutting concerns –User has to manually select each join point [Miller et. al., 01] –Simultaneous Text Editing –Provides simple language for describing crosscutting concerns –Non-persistent linking

CAS Seminar Related Work cont’d [Harrison et. al., 02] –Concern Manipulation Environment (CME) –Post-compile time weaving –No mechanisms for reasoning about woven code

University of British Columbia Software Practices Lab CAS Seminar 06 Questions? Fluid AOP – Fluid AJ Editor Terry Hon