Aspect-Oriented Composition Tools for Composition Filters

Slides:



Advertisements
Similar presentations
A Workflow Engine with Multi-Level Parallelism Supports Qifeng Huang and Yan Huang School of Computer Science Cardiff University
Advertisements

MDI 2010, Oslo, Norway Behavioural Interoperability to Support Model-Driven Systems Integration Alek Radjenovic, Richard Paige The University of York,
From Model-based to Model-driven Design of User Interfaces.
Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
An Aspect-Oriented Approach For Web Application Access Control Presented by: Mohamed Hassan Carleton University Carleton University
1 JAC : Aspect Oriented Programming in Java An article review by Yuval Nir and Limor Lahiani.
© 2007 ATLAS Nantes 1 Atlas Model Weaver Use Case: Aspect Oriented Modeling Marcos Didonet Del Fabro Atlas Group (INRIA & LINA), Université de Nantes,
Presented by: Thabet Kacem Spring Outline Contributions Introduction Proposed Approach Related Work Reconception of ADLs XTEAM Tool Chain Discussion.
Introduction To System Analysis and Design
ASPECT ORIENTED SOFTWARE DEVELOPMENT Prepared By: Ebru Doğan.
1/31 CS 426 Senior Projects Chapter 1: What is UML? Chapter 2: What is UP? [Arlow and Neustadt, 2005] January 22, 2009.
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
Strategies to relate the program and problem domains using code instrumentation Mario Marcelo Berón University of Minho Pedro Rangel Henriques University.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Database Systems Group Department for Mathematics and Computer Science Lars Hamann, Martin Gogolla, Mirco Kuhlmann OCL-based Runtime Monitoring of JVM.
C++ Code Analysis: an Open Architecture for the Verification of Coding Rules Paolo Tonella ITC-irst, Centro per la Ricerca Scientifica e Tecnologica
Introduction to MDA (Model Driven Architecture) CYT.
What is “model transformation”? Distinction between source and target Source may be same as target May be multiple sources, or targets Reaching a fixed.
Introduction To System Analysis and Design
Porting Implementation of Packet Utilization Standard from ADA to JAVA Annelie Hultman (TEC-EME) Donata Pedrazzani (TEC-EMS) ESA/ESTEC 2004 JPUS de-briefing.
Aspect Oriented Programming Sumathie Sundaresan CS590 :: Summer 2007 June 30, 2007.
Aspect Oriented Programming Gülşah KARADUMAN.
A Meta-Level Specification and Profile for AspectJ in UML Joerg Evermann School of Information Management Victoria University of Wellington.
1 A Model-Driven Approach For Information System Migration Raymonde Le Delliou 1, Nicolas Ploquin 2, Mariano Belaunde 3, Reda Bendraou 4, Louis Féraud.
A Logic Meta-Programming Approach to support the Co-Evolution of Object-Oriented Design and Implementation Roel Wuyts , PROG.
Introducing Allors Applications, Tools & Platform.
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,
MDD approach for the Design of Context-Aware Applications.
Design of an Integrated Robot Simulator for Learning Applications Brendon Wilson April 15th, 1999.
2000 Research Overview Dr. Kim Mens Programming Technology Lab Vrije Universiteit Brussel.
A Framework for Automated and Composable Testing of Component-based Services Miguel A. Jiménez, Ángela Villota, Norha M. Villegas, Gabriel Tamura, Laurence.
TTCN-3 Testing and Test Control Notation Version 3.
The PLA Model: On the Combination of Product-Line Analyses 강태준.
Slide 1 Unified Modeling Language, Version 2.0 Object-Oriented SAD.
Introduction The concept of a web framework originates from the basic idea that every web application obtains its foundations from a similar set of guidelines.
Principles of Programming & Software Engineering
The Role of Reflection in Next Generation Middleware
Chapter 1: Introduction to Systems Analysis and Design
Done By: Ashlee Lizarraga Ricky Usher Jacinto Roches Eli Gomez
Sumant Tambe* Akshay Dabholkar Aniruddha Gokhale
SE goes software engineering; (practically) managing the Compose
Object-Oriented Analysis and Design
What is UML? What is UP? [Arlow and Neustadt, 2005] October 5, 2017
SysML v2 Formalism: Requirements & Benefits
Multi-Methods in Cecil
Aspect-Oriented Programming with the Eclipse AspectJ plug-in
Presented by Gitit Amihud
Demeter Aspects Who We Are Aspectual Collaborations
Designing Software for Ease of Extension and Contraction
SE goes software engineering; managing the Compose* project.
Ada – 1983 History’s largest design effort
Implementing Language Extensions with Model Transformations
Component-Based Software Engineering
Tools for Composing and Deploying Grid Middleware Web Services
Chapter 20 Object-Oriented Analysis and Design
SE goes software engineering; managing the Compose* project.
SE goes software engineering; managing the Compose* project.
Constructing MDA-based Application Using Rational XDE for .NET
Chapter 1: Introduction to Systems Analysis and Design
Ivan Kurtev, Klaas van den Berg Software Engineering Group
Guided Research: Intelligent Contextual Task Support for Mails
Automated Analysis and Code Generation for Domain-Specific Models
Introducing Java.
SE goes software engineering; (practically) managing the Compose
Implementing Language Extensions with Model Transformations
Chapter 1: Introduction to Systems Analysis and Design
ONAP Architecture Principle Review
Presentation transcript:

Aspect-Oriented Composition Tools for Composition Filters Compose Aspect-Oriented Composition Tools for Composition Filters Lodewijk Bergmans, Istvan Nagy, Gurcan Gulesir & Mehmet Aksit: TRESE project, University of Twente Sverre Boschman, Raymond Bosman, Pascal Durr, Frederik Holljen, Carlos Noguera, Tom Staijen, Christian Vinkes, .. +

Introduction About Composition Filters Goal: support and reason about robust, scalable, composition most AOP is language-specific CFs are a language-independent extension But the native type systems do not like us always.. most AOPLs allow breaking encapsulation CFs do only ‘interface programming’ this even allows for extending precompiled objects.. declarative specifications support conflict detection & verifying consistency including reasoning about semantics

Introduction About Compose* A platform for experimentation & proof of concept but also for third parties (mostly) independent of target platform Supports multiple target languages/component models Framework supports any (mixed) approach from interpreter to inlining compiler

Outline of this presentation Introduction Example Application: Pacman Composition Filters in a Nutshell The Compose* tool Demonstrating some Features

The example application: Pacman

The Core Design … package pacman; public abstract class Glyph // This is Java (J#) { private int speed = 0; private int direction = 3; protected int x = 0; protected int y = 0; protected int dx = 0; protected int dy = 0; protected int vy = 0; protected int vx = 1; protected World world; public Glyph(World world) this.world = world; this.reset(); } … Public Class Score // This is Visual Basic Private score As Integer Public Function intValue() As Integer Return score End Function Sub increase(ByVal points As Integer) score = score + points End Sub Sub setValue(ByVal points As Integer) score = points End Class

Composition Filters in a Nutshell input~ & output~ internals & externals conditions superimposition selectors filtermodules binding

Example Concern DynamicStrategy filtermodule dynamicstrategy { internals flee_strategy : FleeStrategy; stalk_strategy:StalkStrategy; conditions isEvil inputfilters flee_filter : Dispatch = { isEvil => <*.getNextMove>flee_strategy.getNextMove }; stalk_filter : Dispatch = { True => <*.getNextMove>stalk_strategy.getNextMove }; } superimposition{ selectors strategy = { *=RandomStrategy }; conditions strategy <- isEvil; filtermodules strategy <- dynamicstrategy; }

Picture After Superimposition of DynamicStrategy fleeStrategy FleeFilter isEvil stalkStrategy StalkFilter get Next Move DynamicStrategy.isEvil RandomStrategy

Example Concern Tracing filtermodule trace{ inputfilters trace: Meta = { <*.*>inner.traceMessage }; }; superimposition { selectors tracedItems = {*=pacman_Ghost, *=pacman_RandomStrategy }; filtermodules tracedItems <- trace; methods tracedItems <- inner.traceMessage; // …

Picture after superimposition of Tracing trace traceMessage trace dynamicstrategy fleeStrategy FleeFilter isEvil Tracing.traceMessage stalkStrategy StalkFilter get Next Move DynamicStrategy.isEvil RandomStrategy

Implementation of Composition Filters Compose* is a modular language extension Current target: extend .NET Implementation implementation is crucial for our own verification for the trust of the community for the learning process internal/external many past implementations throw-away prototypes; wasted effort

Current project: Compose* A platform for experimentation & proof of concept but also experimentation for third parties (mostly) platform independent target language/component model independent (multiple) targeting any approach from interpreter to inlining compiler currently 6 MSc students active, 1 finished Current state: pre-alpha (…)

About the Architecture (.NET instantiation)

Execution Model Currently: interpreter of the filtering & superimposition only! focus on functionality experiment with dynamic composition

Preprocessing & Analysis Resolve References Superimposition Analysis Filter Ordering .. Filter Reasoning Selector Reasoning … Parse Syntactic sugar semantic checks … Filter Consistency Filter Composition Semantic consistency …

Some Important Characteristics of Compose* Language/Model & Platform are variable e.g. .NET (any .NET language), Java (JVM), C, .. The filter specifications remain unaffected! Various execution engines possible: only for filters & superimposition interpreter … code transformation … inlining compiler Set of Analysis Tools e.g. superimposition analysis, semantic conflict analysis Architecture is a repository-centered toolkit adding e.g. new analysis tools is flexible (make and run)

Multi-language Support How does it work? The filter specifications are language independent so reuse base and aspect code in any language. Notations are based on UML and OCL .NET has a language-agnostic component model; the implementation is ‘for free’ But: the native compilers have to compile against enhanced interfaces due to introductions!

Demonstration of some Features: Filter Reasoning (‘FIRE’) The Filter Language is declarative limited expressiveness, e.g. not Turing-complete domain specific semantics are encapsulated in the filter type hence we can ‘predict’ when a filter (or a composition of filters) will do what flee_filter : Dispatch = { isEvil => <*.getNextMove>flee_strategy.getNextMove }; (FIRE output)

Demonstration of some Features: Filter Composition (‘FILTH’) As filtermodules are superimposed upon the same join point, there are several ways to compose them, such as ordering. this is not in the language (yet), but as a separate specification: define individual ordering constraints between superimposed filtermodules if not restrained, all possible orderings are allowed (FILTH output before and after constraint)

Demonstration of some Features: Semantic Reasoning (‘SECRET’) Since: Filters are declarative Filter types encapsulate (domain-specific) behaviour By annotating the filter types with a (common) behavioral model/abstraction And analyzing superimposition and possible orderings We can detect possible semantic conflicts (SECRET output)

Conclusion Filters aim at robust, predictable composition they are declarative, language independent and highly composable Compose* is a tool/framework for composition filters architecture supports multiple targets, repository-based set of analysis tools We demonstrated a few simple examples and current output of the tools

Conclusion Future beta-release this summer open source (composestar.sf.net) things to do before release: stabilize & missing features (e.g. filter types) improve semantic detection by integrating FIRE (filter reasoning) and SECRET (semantic reasoning) full integration with .NET Subsequent releases: full OCL support for conditions & selectors (PCDs) more advanced aspect composition at shared join points, specifications integrated with language. support abstract specifications of semantics in ACTs & user-defined filter types experiment with dynamic weaving

Credits The Development Team

Lost Puppies After this slide

Motivation The OO model has known deficiencies, need for additional mechanisms, e.g. AOP techniques solving it by extending CIL is not feasible because languages do not support new concepts solving this at the language level requires extending all prog. languages use selection of email example to illustrate -an AOP- problem? solution is a language neutral modular extension to CIL new challenges caused by language-heterogeneous composition (?) because languages have different abstractions semantic consistency checks really hard (n2 language combinations) more advanced consistency checking needed, e.g. for accidental composition conflicts

Characteristics of CF approach most AOP is language-specific CFs are a language-independent extension But the native type systems do not like us always.. most AOPLs allow breaking encapsulation CFs do only ‘interface programming’ this even allows for extending precompiled objects.. but CFs are not meant for ‘patching’ declarative specifications support conflict detection & verifying consistency