Using Aspects to Support the Software Process: XP over Eclipse Oren Mishali and Shmuel Katz Technion, Israel Institute of Technology.

Slides:



Advertisements
Similar presentations
Chapter 1 Writing a Program Fall Class Overview Course Information –On the web page and Blackboard –
Advertisements

Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
Chapter 7 User-Defined Methods. Chapter Objectives  Understand how methods are used in Java programming  Learn about standard (predefined) methods and.
ASTA Aspect Software Testing Assistant Juha Gustafsson, Juha Taina, Jukka Viljamaa University of Helsinki.
Alternate Software Development Methodologies
Overview of AspectJ Aspect Oriented Software Development Seminar Technion presented by Oren Mishali.
University of British Columbia Software Practices Lab 2005 CASCON A Fluid AOP Editor Terry Hon Gregor Kiczales.
Designing Classes Chapter 3. 2 Chapter Contents Encapsulation Specifying Methods Java Interfaces Writing an Interface Implementing an Interface An Interface.
The Unified Software Development Process - Workflows Ivar Jacobson, Grady Booch, James Rumbaugh Addison Wesley, 1999.
Aspect-Oriented Programming: An Overview Brandon Wirick Feb
University of British Columbia Software Practices Lab CAS Seminar 06 Fluid AJ - A Simple Fluid AOP Tool Terry Hon Gregor Kiczales.
Chapter 6 Prototyping, RAD, and Extreme Programming
AspectJ2EE/Clasa Israel Institute of Technology The Computer Science department Itay Maman.
Practical project in software engineering Chosen project and environment: Feed reader XP Java –Swing –Eclipse Database Blog Wiki.
Aspect-Oriented Software Development (AOSD) Tutorial #3 AspectJ - continued.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Deriving AO Software Architectures using the AO-ADL Tool Suite Luis Fernández, Lidia Fuentes, Mónica Pinto, Juan A. Valenzuela Universidad de Málaga
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Java Classes, Interfaces, and Types 1.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
1/151/15 ENT Metamodel Implementation & Applications ENT metamodel, prototype implementation Component substitutability checking, ENT based component comparison.
Ontologies Reasoning Components Agents Simulations The Eclipse Process Framework Breno Machado.
1 Advanced Computer Programming Project Management: Methodologies Copyright © Texas Education Agency, 2013.
Introduction to Aspect Oriented Programming Presented By: Kotaiah Choudary. Ravipati M.Tech IInd Year. School of Info. Tech.
Embracing change with Extreme Programming Method Engineering Erik ten Brinke
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development 1.
Hyper/J and Concern Manipulation Environment. The need for AOSD tools and development environment AOSD requires a variety of tools Life cycle – support.
Aspect Oriented Programming Sumathie Sundaresan CS590 :: Summer 2007 June 30, 2007.
A Novel Approach to Unit Test: The Aspect-Oriented Way Guoqing Xu and Zongyuan Yang Software Engineering Lab (SEL) East China Normal University
POSL (Principles of Software Languages) Gr. Kyushu Institute of Technology, Japan Pointcut-based Architectural Interface.
Finalizing Design Specifications
Methodology: The AOP Refactoring Process Aspect-Oriented Refactoring of the Apache Cocoon Shared-Object Resource Allocation System Jeff Dalton Advisor:
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
AOP-1 Aspect Oriented Programming. AOP-2 Aspects of AOP and Related Tools Limitation of OO Separation of Concerns Aspect Oriented programming AspectJ.
CPSC 372 John D. McGregor Module 3 Session 1 Architecture.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 other methodologies 1 Method/Process = step-by-step description of the steps involved.
Chapter 6 Prototyping, RAD, and Extreme Programming Systems Analysis and Design Kendall & Kendall Sixth Edition.
 The need for a formal methodology description  SPEM for describing an agent oriented methodology  PASSI: an example  The needed extension  Discussion.
1 An Aspect-Oriented Implementation Method Sérgio Soares CIn – UFPE Orientador: Paulo Borba.
DAVID STOTTS DEPT. OF COMPUTER SCIENCE UNIV. OF NORTH CAROLINA AT CHAPEL HILL Extreme Programming.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
ECSE Software Engineering 1I HO 4 © HY 2012 Lecture 4 Formal Methods A Library System Specification (Continued) From Specification to Design.
Alloy-based Lightweight Verification for Aspect-oriented Architecture Naoyasu Ubayashi(Kyushu Institute of Technology) Yuki Sato(Kyushu Institute of Technology)
MDA & RM-ODP. Why? Warehouses, factories, and supply chains are examples of distributed systems that can be thought of in terms of objects They are all.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Object Oriented Analysis and Design 1 Chapter 9 From Design to Implementation  Implementation Model  Forward, Reverse, and Round-Trip Engineering  Mapping.
Data Design and Implementation. Definitions Atomic or primitive type A data type whose elements are single, non-decomposable data items Composite type.
Agile Methods Presentation By: Jason Abbett. Definition A process to rapidly develop software Many kinds of agile methods but few are practiced.
EXtreme Programming and Open Source engineering paradigm A comparison
AOSD'04, Lancaster, UK 1 Remote Pointcut - A Language Construct for Distributed AOP Muga Nishizawa (Tokyo Tech) Shigeru Chiba (Tokyo Tech) Michiaki Tatsubori.
AOP/cross-cutting What is an aspect?. An aspect is a modular unit that cross-cuts other modular units. What means cross-cutting? Apply AOP to AOP. Tease.
Meghe Group of Institutions Department for Technology Enhanced Learning 1.
JAVA COLLECTIONS LIBRARY School of Engineering and Computer Science, Victoria University of Wellington COMP T2, Lecture 2 Marcus Frean.
COM1205 TraversalJ Project* Pengcheng Wu Feb.25,2003.
AOP with AspectJ Awais Rashid, Steffen Zschaler © Awais Rashid, Steffen Zschaler 2009.
Design Pattern Support based on principles of model driven development Zihao Zhao.
PPL 2004, Gamagori, AICHI1 Remote Pointcut - A Language Construct for Distributed AOP Muga Nishizawa (Tokyo Tech, Japan) Shigeru Chiba (Tokyo Tech, Japan)
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Lecture 6:Interfaces and Abstract Classes Michael Hsu CSULA.
Software Development.
Lecture 5:Interfaces and Abstract Classes
Unified Modeling Language (UML)
Interfaces.
Inheritance and Polymorphism
Software Development Process
CSE 501N Fall ‘09 13: Interfaces and Multiple Representation
Structuring Adaptive Applications using AspectJ and AOM
Refactoring the Aspectizable Interfaces: An Empirical Assessment
Presentation transcript:

Using Aspects to Support the Software Process: XP over Eclipse Oren Mishali and Shmuel Katz Technion, Israel Institute of Technology

The idea …

Aspects for Software Process support 1/14 Software product SP-aspects support the Software Process (SP) Are woven into the development environment

Process management support The problem: (defined process) – (actual process) > 0 The solution: Software Process Management SP-aspects add management support The use of AOP for that purpose is novel Flexible support, no scattering and tangling 2/14

Process modeling support A need for a formal abstract representation of the process Facilitates automation, helps to define the process Promotes process understanding, training … SP-aspects can be a process model A novel non-functional role of aspects Special design considerations 3/14

Our Vision …

SP-aspects repository Supports different development methodologies SP-aspects use the ontology of the methodology key-events, entities, activities, predicates Platform-independent, general and abstract A variety of concrete forms Users can generate concrete SP-aspects 4/14

Generating concrete SP-aspects 1. Specify Methodology & Platform 2. Choose refinements to the abstract parts e.g. activity part  management strategy Measurement Enforcement Automation 5/14

So far… SP-aspects Repository –Generator Using Aspects to Support the Software Process: XP over Eclipse

A case-study: XP over Eclipse Extreme Programming (XP) Values Communication, feedback, simplicity and courage Basic-principles e.g. ‘ rapid feedback ’, ‘ honest measurement ’ Practices e.g. ‘ pair programming ’, ‘ test first ’, ‘ collective ownership ’ 6/14

A case-study: XP over Eclipse Extreme Programming (XP) Values Communication, feedback, simplicity and courage Basic-principles e.g. ‘ rapid feedback ’, ‘ honest measurement ’ Practices e.g. ‘ pair programming ’, ‘ test first ’, ‘ collective ownership ’ XP-aspects are defined using AspectJ Prototype implementation over Eclipse 6/14

An Example …

Test-first Tests should be written before the code Is not an easy practice TestFirst aspect: Upon creation of a coding-element there should already be a corresponding unit-test 7/14

public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } protected abstract boolean hasUnitTest(...); protected abstract void disapproval(...); … } Ontology: Key-events Predicates Activities Entities 8/14

public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } protected abstract boolean hasUnitTest(...); protected abstract void disapproval(...); … } Ontology: Key-events Predicates Activities Entities 8/14

public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } protected abstract boolean hasUnitTest(...); protected abstract void disapproval(...); … } Ontology: Key-events Predicates Activities Entities 8/14

public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } protected abstract boolean hasUnitTest(...); protected abstract void disapproval(...); … } Ontology: Key-events Predicates Activities Entities 8/14

public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } protected abstract boolean hasUnitTest(...); protected abstract void disapproval(...); … } Ontology: Key-events Predicates Activities Entities 8/14

XP-Elements: public interface XPElement { public boolean isArtifact(); public String getName();... } public interface Artifact extends XPElement { public static final int PLANNING = 1; public static final int DESIGN = 2; public static final int CODING = 3; public static final int TESTING = 4;... public int getPhase();... } public interface CodingElement extends Artifact { public static final int CLASS = 1; public static final int METHOD = 2;... public int getKind();... } public interface PairProgrammers extends XPElement { public String getPilotName(); public String getNavigatorName();... } 9/14

A reminder… “SP-aspects have abstract and general definition and can be realized in a variety of concrete forms”

public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } … } What kind of coding-elements are affected? What kind of management strategy is taken? 10/14

EclipseTestFirst extends TestFirst Upon creation of a coding-element there should already be a corresponding unit-test 11/14

EclipseTestFirst extends TestFirst Upon creation of a Java class there should already be a corresponding JUnit test-case named Test{ClassName} disapproval( … ) enforces the practice XP-Elements are connected using inter-type declarations The weaving is done using AJEER Load-time weaving 11/14

Implementation notes Finding the join-points is difficult Join-points are not extension-points XP-aspects can be changed The way that abstract policies are realized Modifications of the underlying environment 12/14

Related work Process Centered Engineering Environments (PCEs) Consider a process model as an input No seamless integration Eclipse-based solutions AOP and the software process 13/14

Aspects for software process support Aspects for XP over Eclipse are only one case-study RUP-aspects … A construction of a fuller set for XP has begun Refactoring, Continuous integration Preliminary experiments with users Enforcement can be irritating Automation is most popular Except setup, XP-aspects do not affect service 14/14

Thanks… Questions?