Extensible Plug-ins for Aspect-Oriented Programming Macneil Shonle*Ankit Shah.

Slides:



Advertisements
Similar presentations
Purdue University Center for Education and Research in Information Assurance and Security Building a distributed intrusion detection system with Perl Diego.
Advertisements

Test Case Management and Results Tracking System October 2008 D E L I V E R I N G Q U A L I T Y (Short Version)
Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
ECE 750 Topic 8 Meta-programming languages, systems, and applications Load-time structural reflection in Java – Shigeru Chiba, 2000 May 27, 2004 Shimin.
© Tally Solutions Pvt. Ltd. All Rights Reserved Customisation of Shoper 9 October 2009.
The road to reliable, autonomous distributed systems
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006.
©Silberschatz, Korth and Sudarshan1.1Database System Concepts Chapter 1: Introduction Purpose of Database Systems View of Data Data Models Data Definition.
Interpret Application Specifications
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
Reuse Activities Selecting Design Patterns and Components
Automated Tests in NICOS Nightly Control System Alexander Undrus Brookhaven National Laboratory, Upton, NY Software testing is a difficult, time-consuming.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
UNIT-V The MVC architecture and Struts Framework.
Polyglot An Extensible Compiler Framework for Java Nathaniel Nystrom Michael R. Clarkson Andrew C. Myers Cornell University.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Why Analysis Process Refer to earlier chapters Models what the system will do makes it easier for understanding no environment considered (hence, system.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University ICSE 2003 Java.
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
C++ Code Analysis: an Open Architecture for the Verification of Coding Rules Paolo Tonella ITC-irst, Centro per la Ricerca Scientifica e Tecnologica
Understanding the CORBA Model. What is CORBA?  The Common Object Request Broker Architecture (CORBA) allows distributed applications to interoperate.
An Introduction to Software Architecture
April 6, 2010GMQS Meeting1 Optional Feature Support in HDF5 Tools Albert Cheng The HDF Group.
+ A Short Java RMI Tutorial Usman Saleem
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
Exploring an Open Source Automation Framework Implementation.
RELATIONAL FAULT TOLERANT INTERFACE TO HETEROGENEOUS DISTRIBUTED DATABASES Prof. Osama Abulnaja Afraa Khalifah
Chapter 14 Part II: Architectural Adaptation BY: AARON MCKAY.
SE: CHAPTER 7 Writing The Program
Spring/2002 Distributed Software Engineering C:\unocourses\4350\slides\DefiningThreads 1 RMI.
CSC 205 – Java Programming II Applet. Types of Java Programs Applets Applications Console applications Graphics applications Applications are stand-alone.
Methodology: The AOP Refactoring Process Aspect-Oriented Refactoring of the Apache Cocoon Shared-Object Resource Allocation System Jeff Dalton Advisor:
SCALABLE EVOLUTION OF HIGHLY AVAILABLE SYSTEMS BY ABHISHEK ASOKAN 8/6/2004.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Features of AOP languages AOP languages have the following main elements: –a join point model (JPM) wrt base PL –a specification language for expressing.
Effort.vs. Software Product “Quality” Effort Product “Quality” Which curve? - linear? - logarithmic? - exponential?
Update on CORBA Support for Babel RMI Nanbor Wang and Roopa Pundaleeka Tech-X Corporation Boulder, CO Funded by DOE OASCR SBIR.
1 XAspects An Extensible System for Domain- Specific Aspect Languages Macneil Shonle (UCSD) Karl Lieberherr (Northeastern University) Ankit Shah (Northeastern.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Weaving a Debugging Aspect into Domain-Specific Language Grammars SAC ’05 PSC Track Santa Fe, New Mexico USA March 17, 2005 Hui Wu, Jeff Gray, Marjan Mernik,
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
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.
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
Advanced Software Development Karl Lieberherr CSG 260 Fall Semester
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
L10: Model-View-Controller General application structure. User Interface: Role, Requirements, Problems Design patterns: Model – View – Controller, Observer/Observable.
Copyright © 2004, Keith D Swenson, All Rights Reserved. OASIS Asynchronous Service Access Protocol (ASAP) Tutorial Overview, OASIS ASAP TC May 4, 2004.
COM1205 TraversalJ Project* Pengcheng Wu Feb.25,2003.
Be “GUI ready” developing in RPG by Robert Arce from PrismaTech. Be “GUI ready” developing in RPG-ILE Presented by: Robert Arce.
Implementing Distribution and Persistence Aspects with AspectJ WAS CLASS.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
FUNCTIONS (C) KHAERONI, M.SI. OBJECTIVE After this topic, students will be able to understand basic concept of user defined function in C++ to declare.
Software, IEE Proceedings, Vol.152, Num.3, June 2005,Page(s): Prasanthi.S March, Java-based component framework for dynamic reconfiguration.
Features of AOP languages AOP languages have the following main elements: –a join point model (JPM) wrt base PL –a specification language for expressing.
Demeter Aspects Who We Are Aspectual Collaborations
Chapter 16 – Software Reuse
Software Architecture
Chapter 16 – Software Reuse
Chapter 2: Building a System
Plug-In Architecture Pattern
Presentation transcript:

Extensible Plug-ins for Aspect-Oriented Programming Macneil Shonle*Ankit Shah

Adaptive Programming  Aspects were Specialized –DJ concentrated mostly on Traversals –AspectJ was dominated by the JoinPoint Model –COOL dealt with Co-ordination and Synchronization of Threads –RIDL concerned with Remote Invocation

AspectJ  AspectJ attempted to include COOL  JoinPoint Model did not provide for synchronization support  Result: COOL misses AspectJ bus

Basis for XAspects  Explore Possibility for uniting various Cross- Cutting Concerns under one roof –DAJ does this However,  Different File Names identify domain specific aspects  No Scope for expansion without rewrite  Uniform Syntax for various domain specific aspects

Goal for XAspects  Integrate Domain Specific Aspects into General Purpose Aspect Oriented Programming Solutions  Plugin Architecture to compile Domain Specific Aspects  Plugins to generate Aspect J Compatible Code from User Programs  AJC Compiler as Back end to generate final JVM compatible byte codes

Journey Begins ?  YES !!!  Target: –Develop a Prototype for XAspects that meets the above Goals –Provide support for existing Domain Specific Aspects –Support Uniform Syntax for all Aspects –Extensible Design

XAspects Functioning.java.class

XAspects Architecture - I ClassDictionar y Traversals Aspects Traversal Advice XAJCXAJC Compile Stubs and Interfaces Compile Generated Code Use: Input CodeGenerate: Stubs and Interfaces Use: Input Code, Compiled Stubs and Interfaces Generate: Final Code

XAspects Architecture - II ClassDictionar y Traversal Aspects Traversal Advice

Main Components of XAspects  XAJC –A Wrapper around ajc Compiler –Parse in Input Files and pass information to appropriate Plugins  Plugins –Read in Domain Specific aspect and produce corresponding AspectJ code  Interface –Interface for data Transfer between XAJC and Plugins

XAspects: Design Issues  XAJC Design  Plugin Design  Interface Design

XAspects: Interface Design  Start with Interface Design? –It demanded the most attention !!! –Crucial to successful Design  Components of Interface –CompilationEnvironment –AspectPlugin –AspectInfo

XAspects Interface: CompilationEnvironment  Record all aspects in use, File Names and File Numbers  Inventory for Error and Warnings Re-adjust line numbers to reflect actual position in file

XAspects Interface: AspectPlugin  Super Class of all Plugins  Sets up framework of Plugin Functioning  Steps (for all Plugins): –Receive Code –Generate External Interfaces –Generate Code –Generate Code

XAspects Interface: AspectPlugin  Receive Code –Initial Design: Pass aspectID and body of aspect –DrawBack:  We need more than just body to generate classes imports modifiers inheritance information –Solution:  AspectInfo class is added

Anatomy of an Aspect package i.like.this.course; import thiscourse.techniques.*; public abstract aspect (ClassDictionary) COM3360 extends fun implements goodCourse, nicePeople { … body … }

XAspects Interface: AspectInfo  Store all Information about an Aspect –FileName and line number –Package Info –Libraries Imported Info –Modifiers used –Plugin Info –Its ID (Aspect Name) –Inheritence Info –Body of code  Populated by AJC  Data read by Plugins

XAspects: AJC Design  Wrapper around ajc just like DAJ  2 Modules: –Parse Input Source Code –Wrapper around ajc (Similar to DAJ)  Invokes compilation using plugins  Feed Generated Code to ajc for compilation

XAspects: AJC Design  Parser –Read in.java source files and create an AspectInfo instance for EVERY aspect –Collect pure “Classes” in a separate file; since these don’t need any special processing

XAspects: Plugin Design  Receive Code using ReceiveBody  Generate Interfaces and Stubs when 1st pass is invoked  Generate Final Complete Code when 2nd pass is invoked. Use Compiled Byte Codes if needed to get Structure Data  Report all errors and warnings to CompilationEnvironment PRINT NOTHING TO STANDARD INPUT / ERROR

Plugins in XAspects  ClassDictionary –Generate Classes and parsers in 1 st pass –Return same files in 2 nd pass  Traversal –Generate Traversal Stubs in 1 st Pass –Generate Traversals using Reflection in 2 nd pass  TraversalAdvice –Generate Visitor classes in 1 st Pass –Return same files in 2 nd pass  AspectJ –Generate Aspects in 1 st pass –Return same files in 2 nd pass

Advantages of XAspects  Domain Specific Aspects are easy to write  Extensible and highly Flexible System –Plugins may be  added to provide additional functionality  Plugins may be removed when a technology is out-dated !!  Plugins may be upgraded without recompiling the whole XAJC

Advantages of XAspects –Updates to underlying AJC compiler are automatically reflected –Bring “Ex – Aspects” back to life (eg. COOL, RIDL) –Support Forthcoming adaptive techniques (eg. Aspectual Collaborations) –Program Modularization / Componentization Better Organization of Modules among files

XAspects: Issues  Just a Powerful Macro System ?  Inefficient due to large scale communication between main compiler and plugins  Collaboration between plugins  Clashes in Names / FileNames of various aspects

XAspects Implementation  Initial Prototype XAJC 1.1 is ready for Release

XAspects: Future Work  Modify ajc itself  Provide ClassGraph instead of ByteCodes (Irony: Generate Code using Code !!)  Improve Error / Warning Reporting System  Handling of Flags

XAspects: Future Work  Related Projects: –COOL –RIDL  Support Upcoming Techniques –Personalities –Aspectual Collaborations

XAspects on the Web  Detailed description available on XAspects Home Page

Thank You Macneil Shonle*Ankit Shah