seminar i o aspect os

51
Seminario.Pr ogramació nOrientad aaAspectos IngenieríadelSo8wareII PabloSánchezBarreiro DPTO.DEMATEMÁTICAS,ESTADÍSTICAY COMPUTACIÓN [email protected] EstetemasepublicabajoLicencia: CreaveCommonsBYNCSA3.0

Upload: iadominguez

Post on 03-Apr-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 1/51

Seminario.ProgramaciónOrientadaaAspectos

IngenieríadelSo8wareII

PabloSánchezBarreiro

DPTO.DEMATEMÁTICAS,ESTADÍSTICAYCOMPUTACIÓN

[email protected]

EstetemasepublicabajoLicencia:

CreaveCommonsBY‐NC‐SA3.0

Page 2: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 2/51

Table of Contents

1 Introduction: Why we need Aspect-Oriented Programming

2 Aspect-Oriented Programming

3 Current Challenges

4 What AOSD Is Not About

5 AOSD and Related Technologies

6 Conclusions

7

References

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 2 / 51

Page 3: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 3/51

Introduction Crosscutting Concerns

Crosscutting Concerns Drawbacks

Happiness

Sadness

ModuleA ModuleEModule DModuleCModuleB

Base Functionality

Fault Tolerance v2.0

Access Control

Encryption

@#&

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 3 / 51

Page 4: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 4/51

Introduction Crosscutting Concerns

Case Study: Apache Tomcat

XML parsing

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 4 / 51

I d i C i C

Page 5: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 5/51

Introduction Crosscutting Concerns

Case Study: Apache Tomcat

URL pattern matching

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 5 / 51

I t d ti C tti C

Page 6: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 6/51

Introduction Crosscutting Concerns

Case Study: Apache Tomcat

Logging

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 6 / 51

Introduction Crosscutting Concerns

Page 7: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 7/51

Introduction Crosscutting Concerns

Motivating example: Access Control

AccessControlclass [ ]

+askForCredentials( out username : String, out password : String )

AccessControlView

+getAccess() : Boolean+getSelectiveAccess( String : String )

AccessControl

-name : String-address : String

-religion : String-diseases : String [0..*]

+getName() : String+getAddress() : String+getReligion() : String+getDiseases() : String [0..*]

Student +authenticator

«use»

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 7 / 51

Introduction Crosscutting Concerns

Page 8: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 8/51

Introduction Crosscutting Concerns

Motivating example: Access Control

public class Student {

protected String religion;

protected AccessControl authenticator =

new AccessControl();

public String getReligion() {

String result = null;

if (authenticator.getAccess()) {

result = this.religion;

} // if

return result;} // getReligion

} // Student

public class Student {

protected String religion;

protected AccessControl authenticator =

new AccessControl();

public String getReligion() {

String result = null;

if (authenticator.getAccess()) {

result = this.religion;

} // if

return result;} // getReligion

} // Student

Crosscutting code

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 8 / 51

Introduction Crosscutting Concerns

Page 9: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 9/51

Introduction Crosscutting Concerns

Motivating example: Access Control

 public List<String> getDiseases() {

List<String> result = null;

if (authenticator.getAccess()) {result = this.diseases;

} // if

return result;

} // getDiseases

Crosscutting code

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 9 / 51

Introduction Crosscutting Concerns

Page 10: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 10/51

Introduction Crosscutting Concerns

Main Shortcoming of Crosscutting Concerns

Happiness

Sadness

ModuleA ModuleEModule DModuleCModuleB

Base Functionality

Fault Tolerance v2.0

Access Control

Encryption

@#&

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 10 / 51

Introduction Conclusions

Page 11: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 11/51

t o ct o Co c s o s

Conclusions

Scattering

A concern appears spread over several software modules.

Tangling

Several concern appears software modules.

1 Scattering: Decreases encapsulation, (consequently decreasescohesion), creates redundancies, hinders reutilization of thecrosscutting concern and increase coupling.

2 Tangling: Decreases cohesion, (consequently hampers reutilization),and increases coupling.

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 11 / 51

Introduction Empirical Evidence

Page 12: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 12/51

p

Concern-Oriented Metrics [Sant’Anna et al., 2007]

CDC Concern Diffusion over Classes

CDO Concern Diffusion over Operations

CIC Class-Level Interlacing between Concerns

OOC Operation-Level Overlapping between Concerns

ACC Afferent Coupling between Classes

ECC Efferent Coupling between Classes

LCC Lack of Concern-Based Cohesion

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 12 / 51

Introduction Empirical Evidence

Page 13: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 13/51

Concern-Oriented Metrics [Sant’Anna et al., 2007]

AccessControlclass [ ]

+askForCredentials( out username : String, out password : String )

AccessControlView

+getAccess() : Boolean+getSelectiveAccess( String : String )

AccessControl

-name : String-address : String-religion : String-diseases : String [0..*]

+getName() : String+getAddress() : String+getReligion() : String+getDiseases() : String [0..*]

Student +authenticator

«use»

CDC CDO CIC OOCData Storage (base) 1 4 1 1

AccessControl 3 5 1 1

ACC ECC LCCStudent 0 1 2

AccessControl 1 1 1

AccessControlView 1 0 1

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 13 / 51

Aspect-Oriented Programming

Page 14: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 14/51

Table of Contents

1 Introduction: Why we need Aspect-Oriented Programming

2 Aspect-Oriented Programming

3 Current Challenges

4 What AOSD Is Not About

5 AOSD and Related Technologies

6 Conclusions

7 References

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 14 / 51

Aspect-Oriented Programming Overview

Page 15: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 15/51

Aspect-Oriented Programming Principle

Module B

Module A

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 15 / 51

Aspect-Oriented Programming Overview

Page 16: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 16/51

Aspect-Oriented Programming Principle

Module B

Module A

Joinpoint

Joinpoint

Joinpoint

Joinpoint

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 16 / 51

Aspect-Oriented Programming Overview

Page 17: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 17/51

Aspect-Oriented Programming Principle

 Access Control

Module B

Module A

Fault Tolerance

Encryption

Aspect

Aspect

Aspect

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 17 / 51

Aspect-Oriented Programming Overview

Page 18: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 18/51

Aspect-Oriented Programming Principle

 Access Control

Module B

Module A

Fault Tolerance

Encryption

Pointcut

Pointcut

Pointcut

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 18 / 51

Aspect-Oriented Programming Aspect-Oriented Weaving

Page 19: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 19/51

Weaving Process

Base Model

Aspect-Oriented Weaving Process

    A   s   p   e   c    t    W   e   a   v   e   r

Pointcut Model

Aspect Model

Woven Base Model

    C   o   m   m   o   n    C   o   m

   p    i     l   e   r

100101

101100

010101

Compiled Code

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 19 / 51

Aspect-Oriented Programming Aspect-Oriented Weaving

Page 20: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 20/51

Weaving Process

ConcernIdentifier 

Requirements

Weaver 

Concernimplementation

AspectualDecomposition

AspectualRecomposition

Final System

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 20 / 51

Aspect-Oriented Programming Aspect-Oriented Weaving

Page 21: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 21/51

Kinds of Aspect-Oriented Weaving

Static Weaving Aspects are woven at compile time [Kiczales et al., 2001].

Load-Time Weaving Aspects are woven at classload-time [Laddad, 2001, Chiba, 2000].

Dynamic Weaving Aspects can be woven and even unwoven atruntime [Pinto et al., 2005, Suvee et al., 2003]. It isparticulary interesting for context-awaresystems [Fuentes et al., 2009].

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 21 / 51

Aspect-Oriented Programming Example: Access Control as an Aspect

Page 22: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 22/51

Access Control With AspectJ

 public aspect AccessControlAspect {

 pointcut guardedMethods():

call(String Student.getReligion());

String around () : guardedMethods() {

AccessControl guard = new AccessControl();

String returnValue = null;

if (guard.getAccess()) {

returnValue = proceed ();

} // if

return returnValue;

} // around guardedMethods

} // AccessControlAspect

 public aspect AccessControlAspect {

 pointcut guardedMethods():

call(String Student.getReligion());

String around () : guardedMethods() {

AccessControl guard = new AccessControl();

String returnValue = null;

if (guard.getAccess()) {

returnValue = proceed ();

} // if

return returnValue;

} // around guardedMethods

} // AccessControlAspect

 public aspect AccessControlAspect {

 pointcut guardedMethods():

call(String Student.getReligion());

String around () : guardedMethods() {

AccessControl guard = new AccessControl();

String returnValue = null;

if (guard.getAccess()) {

returnValue = proceed ();

} // if

return returnValue;

} // around guardedMethods

} // AccessControlAspect

 public aspect AccessControlAspect {

 pointcut guardedMethods():

call(String Student.getReligion());

String around () : guardedMethods() {

AccessControl guard = new AccessControl();

String returnValue = null;

if (guard.getAccess()) {

returnValue = proceed ();

} // if

return returnValue;

} // around guardedMethods

} // AccessControlAspect

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 22 / 51

Aspect-Oriented Programming Example: Access Control as an Aspect

Page 23: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 23/51

A Clean Student Class

 public class Student {

 protected  String religion;

 public String getReligion() {

return this.religion;

} // getReligion

} // Student

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 23 / 51

Aspect-Oriented Programming Quantification

Page 24: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 24/51

Wildcard-based Quantified Pointcuts

 public aspect QuantifiedAccessControlAspect {

 pointcut guardedMethods(): call(* Student.get*(..));

Object around () : guardedMethods() {

AccessControl guard = new AccessControl();

Object returnValue = null;

if (guard.getAccess()) {

returnValue = proceed ();

} // if

return returnValue;

} // around guardedMethods

} // QuantifiedAccessControlAspect

 public aspect QuantifiedAccessControlAspect {

 pointcut guardedMethods(): call(* Student.get*(..));

Object around () : guardedMethods() {

AccessControl guard = new AccessControl();

Object returnValue = null;

if (guard.getAccess()) {

returnValue = proceed ();

} // if

return returnValue;

} // around guardedMethods

} // QuantifiedAccessControlAspect

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 24 / 51

Aspect-Oriented Programming Annotation-based Quantification

Page 25: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 25/51

Annotation-based Quantified Pointcuts

 public class Student {

 protected  String religion;

@AccessControlRequired public String getReligion() {

return this.religion;

} // getReligion

} // Student

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 25 / 51

Aspect-Oriented Programming Annotation-based Quantification

Page 26: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 26/51

Annotation-based Quantified Pointcuts

 public aspect AnnotationBasedAspect {

 pointcut guardedMethods():

call(@AccessControlRequired * *.*(..));

Object around () : guardedMethods() {

AccessControl guard = new AccessControl();

Object returnValue = null;

if (guard.getAccess()) {

returnValue = proceed ();

} // if

return returnValue;} // around guardedMethods

} // AnnotationBasedAspect

 public aspect AnnotationBasedAspect {

 pointcut guardedMethods():

call(@AccessControlRequired * *.*(..));

Object around () : guardedMethods() {

AccessControl guard = new AccessControl();

Object returnValue = null;

if (guard.getAccess()) {

returnValue = proceed ();

} // if

return returnValue;} // around guardedMethods

} // AnnotationBasedAspect

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 26 / 51

Aspect-Oriented Programming Reflection

S B i & F R fl i

Page 27: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 27/51

Some Basic & Free Reflection

 A c c e s s C o n t r o lc l a s s [ ]

+ a s k F o r C r e d e n tia ls ( o u t u s e r n a m e : S t r in g , o u t p a s s w o r d : S t r in g )

A c c e s s C o n t r o l V i e w

+ g e tA c c e s s ( ) : B o o le a n+ g e tS e le c t i v e A c c e s s ( S tr in g : S tr in g )

A c c e s s C o n t r o l

- n a m e : S tr in g- a d d r e s s : S t r in g- r e l ig io n : S t r in g

- d is e a s e s : S tr in g [0 . . * ]

+ g e tN a m e ( ) : S tr in g+ g e tA d d r e s s ( ) : S t r in g+ g e t R e l ig io n ( ) : S t r in g+ g e t D is e a s e s ( ) : S t r in g [ 0 .. * ]

S t u d e n t + a u th e n tic a to r 

« u s e »

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 27 / 51

Aspect-Oriented Programming Reflection

S B i & F R fl i

Page 28: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 28/51

Some Basic & Free Reflection

 public aspect ReflectionAccessControlAspect {

 pointcut guardedMethods():

call(String Student.getReligion());

String around () : guardedMethods() {

AccessControl guard = new AccessControl();

String returnValue = null;

if (guard.getSelectiveAccess(

thisJoinPoint.getSignature().

getName())) {

returnValue = proceed ();

} // if

return returnValue;

} // around guardedMethods

} // ReflectionAccessControlAspect

 public aspect ReflectionAccessControlAspect {

 pointcut guardedMethods():

call(String Student.getReligion());

String around () : guardedMethods() {

AccessControl guard = new AccessControl();

String returnValue = null;

if (guard.getSelectiveAccess(

thisJoinPoint.getSignature().

getName())) {

returnValue = proceed ();

} // if

return returnValue;

} // around guardedMethods

} // ReflectionAccessControlAspect

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 28 / 51

Aspect-Oriented Programming Reflection

C O i d M i R i i d

Page 29: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 29/51

Concern-Oriented Metrics RevisitedAccessControlAspectclass [ ]

+askForCredentials( out username : String, out password : String )

AccessControlView

-name : String

-address : String-religion : String-diseases : String [0..*]

+getReligion() : String+getName() : String+getAddress() : String+getDiseases( diseases : String [0..*] )

Student

+getAccess() : Boolean+getSelectiveAccess( String : String )

AccessControl

«crosscut»

CDC CDO CIC OOCData Storage (base) 1 (1) 4 (4) 0 (1) 0 (1)

AccessControl 2 (2) 3 (5) 0 (1) 0 (1)

ACC ECC LCCStudent 1 (0) 0 (1) 1 (2)

AccessControl 0 (1) 2 (1) 1 (1)

AccessControlView 1 (1) 0 (0) 1 (1)

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 29 / 51

Current Challenges

T bl f C t t

Page 30: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 30/51

Table of Contents

1 Introduction: Why we need Aspect-Oriented Programming

2 Aspect-Oriented Programming

3 Current Challenges

4 What AOSD Is Not About

5 AOSD and Related Technologies

6 Conclusions

7 References

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 30 / 51

Current Challenges

C t H t R h T i AOSD

Page 31: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 31/51

Current Hot Research Topics on AOSD

1 Semantic pointcuts [Ostermann et al., 2005].

2

Reusable aspects (e.g Complex TransactionManagement) [Kienzle and Gelineau, 2006].

3 Aspect interference/conflicts [Douence et al., 2002,Douence et al., 2004, Altahat et al., 2008].

4 Complex pointcuts [Allan et al., 2005].

5 Aspect Influence on Interfaces [Ostermann, 2008].

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 31 / 51

Current Challenges

Current Hot Research Topics on AOSD

Page 32: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 32/51

Current Hot Research Topics on AOSD

<<CallBehavior>>

calculateDiscount

<<CallBehavior>>

minus

first

proceed

<<proceed>>

price

price : Real

checkOut(..)

(.*):(.*) <?cart>(.*) :

ShoppingCart

(.*):(.*)

newCreditCard(..)

<?ws>(.*):

WebServiceBank

termsAndConditionsOfSeasonalRebate

[*]

<?jp>:

approveCredit(<?cc>(.*):PaymentMethod, <?price>(.*):Real))

<?cc>(.*):CreditCard

?jp

?price

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 32 / 51

What AOSD is not about

Table of Contents

Page 33: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 33/51

Table of Contents

1 Introduction: Why we need Aspect-Oriented Programming

2 Aspect-Oriented Programming

3 Current Challenges

4 What AOSD Is Not about

5 AOSD and Related Technologies

6 Conclusions

7 References

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 33 / 51

What AOSD is not about AOSD is not View-Based Software Development

AOSD is not View Based Software Development

Page 34: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 34/51

AOSD is not View-Based Software Development

class addItem

UserGUI ShoppingCartIShop

+ books

0..*

+addItem (book :Book , amount :int )

<< theme >>

AddItem<< theme >>

CheckOut

class checkOut

UserGUI ShoppingCartIShop

Delivery

+ checkOut ()

IDelivery

Bank

IBank

sd checkOut

UserGUI ShoppingCart Delivery Bank

checkDelivery (address = -,weight =- ,size =- )

approveCredit (ccNumber =-,amount =- )

merge

Books

sd addItem

UserGUI ShoppingCart

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 34 / 51

What AOSD is not about AOSD is not Feature-Oriented Software Development

AOSD is not Feature Oriented Software Development

Page 35: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 35/51

AOSD is not Feature-Oriented Software Development

 Architectureclass [ ]

SmartEnergyMng

+openWindow( id : Integer )+closeWindow( id : Integer )+adjustTemperature( id : Integer, temp : float )

Gateway

+operationMode : TempUnits

ThermometerCtrl Sensor 

InitialModel

+changeValue( id : Integer, value : float )+emergence( a : Sensor, value : float )

Gateway

+id : Integer 

+setValue( value : float )

 Actuator 

+id : Integer 

+getValue() : float

Sensor 

HeaterMng

+adjustTemperature( id : Integer, temp : float )

Gateway

+units : TempUnits

+set( t : float )

HeaterCtrl

FAHRENHEITCELSIUS

«enumeration»

TempUnits

 Actuator 

WindowMng

+openWindow( id : Integer )+closeWindow( id : Integer )

Gateway

+open()

+close()

WindowCtrl Actuator 

LightMng

+switchLight( id : Integer )

Gateway

+switch()

LightCtrl

 Actuator 

+indoorTherm

1

+outdoorTherm

1

+sensors

0..*+actuators

0..* +gtw

0..1

+heaters

1..*

+windows

1..*

+lights

1..*

«merge»

«merge»

«merge»«merge»

«merge»

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 35 / 51

AOSD and Related Technology

Table of Contents

Page 36: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 36/51

Table of Contents

1 Introduction: Why we need Aspect-Oriented Programming

2 Aspect-Oriented Programming

3 Current Challenges

4 What AOSD Is Not About

5 AOSD and Related Technologies

6 Conclusions

7 References

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 36 / 51

AOSD and Related Technology

AOSD and Related Technology

Page 37: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 37/51

AOSD and Related Technology

1 Component platforms/Application Servers/ContainerTechnology

◮ Component platforms offer a set of fixed services.◮ Configuration of each service is often different.◮ Component platforms are often heavier.

2 Reflection: AOP is reflection for human beings.

3

Design Patterns, Dynamic Proxies: The aspect-oriented weaverdoes it for you.

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 37 / 51

AOSD and Related Technology

AOSD in Industry

Page 38: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 38/51

AOSD in Industry

1 Spring framework for Enterprise Java.

2

SpringSource dm Server, SpringSource tc Server, Spring Roo yMagma.

3 GlassBox, Perf4J, Contract4J, JXInsight, MaintainJ.

4 Websphere, MySQL, JBoss, Oracle Toplink,J2ME [Rashid et al., 2010].

5 Siemens Healthcare [Rashid et al., 2010].

6 Motorola Weavr [Cottenier et al., 2007].

7 Oficina Virtual Fundacion Retevision [Pinto et al., 2005]

8

Digital Publishing [de Beeck et al., 2009].9 Isis Project (Stop Pedophilia).

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 38 / 51

Conclusions

Table of Contents

Page 39: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 39/51

Table of Contents

1 Introduction: Why we need Aspect-Oriented Programming

2 Aspect-Oriented Programming

3 Current Challenges

4 What AOSD Is Not About

5 AOSD and Related Technologies

6 Conclusions

7 References

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 39 / 51

Conclusions

Conclusions

Page 40: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 40/51

Conclusions

Aspect-Oriented Software Development

Aspect-Oriented Software Development can help to improvemodularization of crosscutting concerns, easing maintenance and evolution.

Access Control Code:

http://personales.unican.es/sanchezbp/teaching/ao/accesscontrol.zip

More Information:

http://www.aosd-europe.net

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 40 / 51

References

Table of Contents

Page 41: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 41/51

Table of Contents

1 Introduction: Why we need Aspect-Oriented Programming

2 Aspect-Oriented Programming

3 Current Challenges

4 What AOSD Is Not About

5 AOSD and Related Technologies

6 Conclusions

7 References

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 41 / 51

References

Referencias I

Page 42: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 42/51

Allan, C., Avgustinov, P., Christensen, A. S., Hendren, L. J., Kuzins,S., Lhotak, O., de Moor, O., Sereni, D., Sittampalam, G., and Tibble,J. (2005).Adding trace matching with free variables to AspectJ.In Johnson, R. E. and Gabriel, R. P., editors, Proc. of the 20th Annual Conference on Object-Oriented Programming, Systems, Languages,

and Applications, (OOPSLA), pages 345–364.Altahat, Z., Elrad, T., and Tahat, L. (2008).Applying Critical Pair Analysis in Graph Transformation Systems toDetect Syntactic Aspect Interaction in UML State Diagrams.In Proc. of the 20th Int. Conference on Software Engineering &Knowledge Engineering (SEKE), pages 905–911, San Francisco(California, USA).

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 42 / 51

References

Referencias II

Page 43: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 43/51

Brichau, J. and D‘Hondt, T. (2005).Introduction to Aspect-Oriented Software Development.Deliverable D17 AOSD-Europe-VUB-02, AOSD-Europe Network of Excellence, Brussels.

Chiba, S. (2000).Load-Time Structural Reflection in Java.

In Bertino, E., editor, Proc. of the 14th European Conference onObject-Oriented Programming (ECOOP), pages 313–336, SophiaAntipolis and Cannes (France).

Colyer, A., Clement, A., Harley, G., and Webster, M. (2004).

Eclipse AspectJ: Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools .Addison-Wesley Professional.

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 43 / 51

References

Referencias III

Page 44: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 44/51

Cottenier, T., van den Berg, A., and Elrad, T. (2007).Motorola WEAVR: Aspect and model-Driven Engineering.Journal of Object Technology (JOT), 6(7):51–88.

de Beeck, S. O., Landuyt, D. V., Truyen, E., and Joosen, W. (2009).Building a Next-Generation Digital News Publishing Platform withAOSD.

In Proc. of the 8th Int. Conference on Aspect-Oriented Software Development (AOSD), Charlottesvile (Virginia, USA).Demostration.

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 44 / 51

References

Referencias IV

Page 45: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 45/51

Douence, R., Fradet, P., and Sudholt, M. (2002).A Framework for the Detection and Resolution of Aspect Interactions.

In Batory, D. S., Consel, C., and Taha, W., editors, Proc. of the Int.Conference on Generative Programming and Component Engineering (GPCE), volume 2487 of  LNCS , pages 173–188, Pittsburgh,(Pennsylvania, USA).

Douence, R., Fradet, P., and Sudholt, M. (2004).Composition, Reuse and Interaction Analysis of Stateful Aspects.In Proc. of the 3rd Int. Conference on Aspect-Oriented Software Development (AOSD), pages 141–150, Lancaster (UK).

Elrad, T., Aksit, M., Kiczales, G., Lieberherr, K., and Ossher, H.(2001).Discussing Aspects of AOP.Communications of the ACM , 44(10):33–38.

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 45 / 51

References

Referencias V

Page 46: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 46/51

Filman, R. E., Elrad, T., Clarke, S., and Aksit, M., editors (2004).Aspect-Oriented Software Development .

Addison-Wesley, Boston.

Fuentes, L., Gamez, N., and Sanchez, P. (2009).Aspect-Oriented Design and Implementation of Context-AwarePervasive Applications.

Innovations in Systems and Software Engineering , 5(1):79–93.

Hannemann, J. and Kiczales, G. (2002).Design Pattern Implementation in Java and AspectJ.In Proc. of the 17th Int. Conference on Object-Oriented 

Programming, Systems, Languages, and Applications (OOPSLA),pages 161–173, Seattle (Washington, USA).

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 46 / 51

References

Referencias VI

Page 47: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 47/51

Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., andGriswold, W. G. (2001).

An Overview of AspectJ.In Knudsen, J. L., editor, Proc. of the 15th European Conference onObject-Oriented Programming (ECOOP), volume 2072 of  Lecture Notes in Computer Science , pages 327–353, Budapest (Hungary).

Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V.,Loingtier, J.-M., and Irwin, J. (1997).Aspect-Oriented Programming.In Aksit, M. and Matsuoka, S., editors, Proc. of the 11th EuropeanConference on Object-Oriented Programming (ECOOP), volume 1241of  Lecture Notes in Computer Science , pages 220–242,Jyvaskyla (Finland).

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 47 / 51

References

Referencias VII

Page 48: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 48/51

Kienzle, J. and Gelineau, S. (2006).AO challenge - Implementing the ACID properties for Transactional

Objects.In Filman, R. E., editor, Proc. of the 5th Int. Conference onAspect-Oriented Software Development (AOSD), pages 202–213.

Laddad, R. (2001).

I want my AOP!Java World,http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-asp

Ostermann, K. (2008).

Reasoning about Aspects with Common Sense.In D’Hondt, T., editor, Proc. of the 7th Int. Conference onAspect-Oriented Software Development (AOSD), pages 48–59,Brussels (Belgium).

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 48 / 51

References

Referencias VIII

Page 49: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 49/51

Ostermann, K., Mezini, M., and Bockisch, C. (2005).Expressive Pointcuts for Increased Modularity.

In Black, A. P., editor, Proc. of the 19th European Conference onObject-Oriented Programming (ECOOP), volume 3586 of  LNCS ,pages 214–240, Glasgow (UK).

Pinto, M., Fuentes, L., and Troya, J. M. (2005).

A Dynamic Component and Aspect-Oriented Platform.Computer Journal , 48(4):401–420.

Rashid, A., Cottenier, T., Greenwood, P., Chitchyan, R., Meunier, R.,Coelho, R., Sudholt, M., and Joosen, W. (2010).

Aspect-Oriented Software Development in Practice: Tales fromAOSD-Europe.IEEE Computer , 43(2):19–26.

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 49 / 51

References

Referencias IX

Page 50: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 50/51

Sant’Anna, C., Figueiredo, E., Garcia, A. F., and de Lucena, C. J. P.(2007).

On the Modularity of Software Architectures: A Concern-DrivenMeasurement Framework.In Oquendo, F., editor, Proc. of the 1st European Conference onSoftware Architecture (ECSA), pages 207–224, Aranjuez (Spain).

Suvee, D., Vanderperren, W., and Jonckers, V. (2003).JAsCo: an Aspect-Oriented Approach Tailored for Component-BasedSoftware Development.In Proc. of the 2nd Int. Conference on Aspect-Oriented Software Development (AOSD), pages 21–29, Boston (Massachusetts, USA).

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 50 / 51

Questions

Page 51: Seminar i o Aspect Os

7/28/2019 Seminar i o Aspect Os

http://slidepdf.com/reader/full/seminar-i-o-aspect-os 51/51

Questions ?

Pablo Sanchez (MATESCO) Aspect-Oriented Programming 51 / 51