Software modularity group Gregor Kiczales Professor and NSERC/Xerox/Sierra Systems Software Design Chair University of British Columbia Principal Scientist.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

A Brief Introduction to Aspect-Oriented Programming Zhenxiao Yang.
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.
1 An Aspect-Aware Outline Viewer Michihiro Horie and Shigeru Chiba Tokyo Institute of Technology, Japan.
Secure Systems Research Group - FAU Aspect Oriented Programming Carlos Oviedo Secure Systems Research Group.
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.
Aspect-Oriented Programming Gregor Kiczales University of British Columbia © Copyright 2004, Gregor Kiczales. All rights reserved.
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.
ASPECT ORIENTED SOFTWARE DEVELOPMENT Prepared By: Ebru Doğan.
University of British Columbia Software Practices Lab CAS Seminar 06 Fluid AJ - A Simple Fluid AOP Tool Terry Hon Gregor Kiczales.
Aspect-oriented programming Laura Ricci A.A
Aspect-Oriented Software Development (AOSD) Tutorial #2 AspectJ Basics.
(c) Copyright Palo Alto Research Center Incroporated. All rights reserved.1 AO Tools: State of the (AspectJ™) Art and Open Problems Mik Kersten.
Technion Israel 1 Aspect-Oriented Software Development (AOSD) An Introduction Shmuel Katz Part of this lecture: Johan Brichau & Theo D’Hondt
Session 15 Modeling Traceability of Concerns in Architectural Views Mark Stobbe October 29,
Aspect-Oriented Programming with AspectJ™ AspectJ.org Xerox PARC Erik Hilsdale Gregor Kiczales with Bill Griswold, Jim Hugunin, Wes Isberg, Mik Kersten.
An Introduction to AOP Original slides developed by Julie Waterhouse and Mik Kersten for OOPSLA 2004 AspectJ Tutorial ( kerstens.org/mik/publications/aspectj-
Introduction to Aspect Oriented Programming Presented By: Kotaiah Choudary. Ravipati M.Tech IInd Year. School of Info. Tech.
Object Oriented Design and Programming Alan Goude Room: Sheaf 9323.
Aspect Oriented Programming Razieh Asadi University of Science & Technology Mazandran Babol Aspect Component Based Software Engineering (ACBSE)
1 An Aspect-oriented Weaving Mechanism Based on Component-and-Connector Architecture Naoyasu Ubayashi (Kyushu Institute of Technology) February 12, 2008.
Aspect Oriented Programming Sumathie Sundaresan CS590 :: Summer 2007 June 30, 2007.
1 A Parameterized Interpreter for Modeling Different AOP Mechanisms Naoyasu Ubayashi(Kyushu Institute of Technology, Japan) Genki Moriyama(Kyushu Institute.
POSL (Principles of Software Languages) Gr. Kyushu Institute of Technology, Japan Pointcut-based Architectural Interface.
Aspect Oriented Programming Gülşah KARADUMAN.
Kiczales and Mezini - FOAL AOP and Modular Reasoning [ICSE05] Start with first-principles definition of modularity and modular reasoning –localization,
Design Rules for Increasing Modularity with CaesarJ Carlos Eduardo Pontual Advisor: Paulo Borba 17/06/2010.
AOSD1 Aspect-Oriented Software Design Karl Lieberherr Theo Skotiniotis.
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
Aspect-Oriented Programming An Introductory Presentation Mike Landi MSCS Candidate Union University.
Aspect-Oriented Programming and Modular Reasoning G. KiczalesM. Mezini Presented by Alex Berendeyev.
Unified Modeling Language. Object Oriented Methods ► What are object-oriented (OO) methods?  OO methods provide a set of techniques for analyzing, decomposing,
IDENTIFYING SEMANTIC DIFFERENCES IN ASPECTJ PROGRAMS Martin Görg and Jianjun Zhao Computer Science Department, Shanghai Jiao Tong University.
1 Modularization of crosscutting concerns Write this public class Shape { protected double x_= 0.0, y_= 0.0; protected double width_=0.0, height_=0.0;
Introducing Allors Applications, Tools & Platform.
1 Contract-based Verification for Aspect-oriented Refactoring Naoyasu Ubayashi(Kyushu Institute of Technology) Jinji Piao(Kyushu Institute of Technology)
Demeter Aspects We study techniques for the emerging area of Aspect-Oriented Software Development and focus on the following areas:  Aspectual Collaborations.
Shanghai Jiao Tong University 上海交通大学软件工程中心 Object Oriented Analysis and Design Aspect-Oriented Software Development (AOSD)
Alloy-based Lightweight Verification for Aspect-oriented Architecture Naoyasu Ubayashi(Kyushu Institute of Technology) Yuki Sato(Kyushu Institute of Technology)
Aspect Mining Jin Huang Huazhong University of Science & Technology, China
AOP and observer pattern. Design pattern General reusable solution to a commonly occurring problem in software design Not a finished design that can be.
aspectj tools new and noteworthy Mik Kersten University of British Columbia Adrian Colyer IBM Hursley OOPSLA, October
Applying Aspect-Orientation in Designing Security Systems Shu Gao Florida International University Center for Advanced Distributed Systems Engineering.
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.
Lecture 2 Object-oriented programming. Definitions of OOP OOP is a programming paradigm, which utilizes encapsulation, inheritance and polymorphism. (From.
University of British Columbia Software Practices Lab Uniform Support for Modeling Crosscutting Structure Maria Tkatchenko Gregor Kiczales Work supported.
Aspect-Oriented Software Development (AOSD)
AspectJ Development Tools Mik Kersten University of British Columbia October 28, 2003.
Structuring OS Aspects how do small aspects compose? Yvonne Coady, Gregor Kiczales, Mike Feeley, Norm Hutchinson, Joon Suan Ong University of British Columbia.
MANAGING COMPLEXITY Lecture OO01 Introduction to Object-oriented Analysis and Design Abstract Data Types.
Object Oriented Systems Design
Software Engineering Lecture 7
An Interface Mechanism for Encapsulating Weaving in Class-based AOP
Demeter Aspects Who We Are Aspectual Collaborations
Subprograms and Programmer Defined Data Type
A Brief Introduction to Aspect-Oriented Programming
Aspect-oriented programming
Aspects at the Design Level
Chapter 2. Problem Solving and Software Engineering
Aspect Oriented Software Design
Presentation transcript:

software modularity group Gregor Kiczales Professor and NSERC/Xerox/Sierra Systems Software Design Chair University of British Columbia Principal Scientist Xerox PARC

UBC software modularity group 2 successful separation of concern paradigms structured programming object-orientation intuitive efficient profound and incremental  separation of concern paradigms school of: organization design, separation of concerns, abstraction, information hiding… and some of their key properties approaches to a fundamental problem of software engineering

UBC software modularity group 3 problem: separation of crosscutting concerns synchronization, access control, accounting, scheduling, performance optimization, power management, distribution, replication, logging, context dependence… crosscut blocks, layers, objects vm_fault vm_pager_getpages vnode_pager_getpages ffs_getpages ffs_valid ufs_bmap ffs_calc_size … …VM module FFS module Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) Figure * 2 FigureElement tracking when objects move in a simple figure editor classic sources of complexity in embedded systems 2 prefetching modes in Free BSD

UBC software modularity group 4 multiple views enable separation of concerns simple statics more detailed statics simple dynamics m views differ in level of detail views crosscut each other

UBC software modularity group 5 multiple views enable separation of concerns m aspect MoveTracking { pointcut moves(): call(void Line.setP1(Point)) || call(void Line.setP2(Point)) || call(void Point.setX(int)) || call(void Point.setY(int))); after(): moves() { display.update(); } Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) 2 class Point implements FigureElement { private int _x = 0, _y = 0; int getX() { return _x; } int getY() { return _y; } void setX(int x) { _x = x; } void setY(int y) { _y = y; } } interface Point extends FigureElement { int getX(); int getY(); void setX(int x); void setY(int y); } Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) 2 MoveTracking

UBC software modularity group 6 other ideas in “the AO space” programming –Intentional Programming, MDSOC, model-based, AO frameworks… patterns –a pattern is a name for a non-modularized crosscutting concern collaborative development environments –simultaneous crosscutting organizations of code SDP working group: Grady Booch, Ralph Johnson, Gregor Kiczales, Charles Simonyi, John Vlissides

UBC software modularity group 7 object-orientation model world as objects classify objects into inheritance hierarchy analysis design programming trace-ability separation of concerns –within each level –across the levels objects all the way through Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) Figure * 2 FigureElement a simple figure editor

UBC software modularity group 8 aspect-orientation model world as objects/procedures/layers, and aspects are crosscutting units analysis design programming aspects (& objects & procedures) all the way through when elements move aspect MoveTracking { loc... } detect & optimize sequential access aspect SeqPrefetching { loc... } Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) Figure * 2 MoveTracking FigureElement

UBC software modularity group 9 separation of concerns is foundational class Line { private Point _p1, _p2; Point getP1() { return _p1; } Point getP2() { return _p2; } void setP1(Point p1) { _p1 = p1; MoveTracking.collectOne(this); } void setP2(Point p2) { _p2 = p2; MoveTracking.collectOne(this); } class Point { private int _x = 0, _y = 0; int getX() { return _x; } int getY() { return _y; } void setX(int x) { _x = x; MoveTracking.collectOne(this); } void setY(int y) { _y = y; MoveTracking.collectOne(this); } class MoveTracking { private static Set _movees = new HashSet(); public static void collectOne(Object o) { _movees.add(o); } public static Set getmovees() { Set result = _movees; _movees = new HashSet(); return result; } class Line { private Point _p1, _p2; Point getP1() { return _p1; } Point getP2() { return _p2; } void setP1(Point p1) { _p1 = p1; } void setP2(Point p2) { _p2 = p2; } class Point { private int _x = 0, _y = 0; int getX() { return _x; } int getY() { return _y; } void setX(int x) { _x = x; } void setY(int y) { _y = y; } Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) Figure * 2 FigureElement Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) 2 MoveTracking MAMA MBMB MAMA MBMB traceability evolution verification model-based … tangled messgood separation

UBC software modularity group 10 activities in AO space DARPA ITO PCES/NEST/MOBIES programs workshops –affiliated: ICSE, ECOOP, OOPSLA… –stand-alone: Germany, France, England, Belgium… CACM theme issue (October 01) AOSD 2002 Conference –in cooperation with SIGPLAN and SIGSOFT –FOAL workshop (POPL community)… recent papers on –semantics, verification, language design, UML integration… Java technical press –JavaReport etc.

UBC software modularity group 11 big steps in software development not just technology –languages, tools not just work practice –methods, books, management synergistic combination of both intuitive, efficient, profound, incremental –structured programming –OO programming –aspect-orientation? ideas that bridge the whole process