You are on page 1of 51

IngenieradelSo8wareII

Seminario.ProgramacinOrientadaaAspectos

PabloSnchezBarreiro
DPTO.DEMATEMTICAS,ESTADSTICAY COMPUTACIN
p.sanchez@unican.es
EstetemasepublicabajoLicencia: CreaNveCommonsBYNCSA3.0

Table of Contents

1 2 3 4 5 6 7

Introduction: Why we need Aspect-Oriented Programming Aspect-Oriented Programming Current Challenges What AOSD Is Not About AOSD and Related Technologies Conclusions References

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

2 / 51

Introduction

Crosscutting Concerns

Crosscutting Concerns Drawbacks


@#& Happiness

Base Functionality Access Control Fault Tolerance v 2 . 0 Encryption


Sadness

M o dul eA

M o dul eB

M o dul eC

Module D

M o dul eE

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

3 / 51

Introduction

Crosscutting Concerns

Case Study: Apache Tomcat

XML parsing

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

4 / 51

Introduction

Crosscutting Concerns

Case Study: Apache Tomcat

URL pattern matching

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

5 / 51

Introduction

Crosscutting Concerns

Case Study: Apache Tomcat

Logging

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

6 / 51

Introduction

Crosscutting Concerns

Motivating example: Access Control

class [

AccessControl ] AccessControl Student +authenticator +getAccess() : Boolean +getSelectiveAccess( String : String ) use AccessControlView +askForCredentials( out username : String, out password : String )

-name : String -address : String -religion : String -diseases : String [0..*] +getName() : String +getAddress() : String +getReligion() : String +getDiseases() : String [0..*]

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

7 / 51

Introduction

Crosscutting Concerns

Motivating example: Access Control


public public class class Student Student {{ protected protected String String religion; religion; protected protected AccessControl AccessControl authenticator authenticator == new new AccessControl(); AccessControl(); public public String String getReligion() getReligion() {{ null; String String result result == null; if if (authenticator.getAccess()) (authenticator.getAccess()) {{ result result == this.religion; this.religion; // if if }} // return return result; result; // getReligion getReligion }} // }} // // Student Student

Crosscutting code

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

8 / 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 S anchez (MATESCO)

Aspect-Oriented Programming

9 / 51

Introduction

Crosscutting Concerns

Main Shortcoming of Crosscutting Concerns


@#& Happiness

Base Functionality Access Control Fault Tolerance v 2 . 0 Encryption


Sadness

M o dul eA

M o dul eB

M o dul eC

Module D

M o dul eE

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

10 / 51

Introduction

Conclusions

Conclusions
Scattering
A concern appears spread over several software modules.

Tangling
Several concern appears software modules.
1

Scattering: Decreases encapsulation, (consequently decreases cohesion), creates redundancies, hinders reutilization of the crosscutting concern and increase coupling. Tangling: Decreases cohesion, (consequently hampers reutilization), and increases coupling.

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

11 / 51

Introduction

Empirical Evidence

Concern-Oriented Metrics [SantAnna et al., 2007]

CDC CDO CIC OOC ACC ECC LCC

Concern Diusion over Classes Concern Diusion over Operations Class-Level Interlacing between Concerns Operation-Level Overlapping between Concerns Aerent Coupling between Classes Eerent Coupling between Classes Lack of Concern-Based Cohesion

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

12 / 51

Introduction

Empirical Evidence

Concern-Oriented Metrics [SantAnna et al., 2007]


class [ AccessControl ] AccessControl Student -name : String -address : String -religion : String -diseases : String [0..*] +getName() : String +getAddress() : String +getReligion() : String +getDiseases() : String [0..*] +authenticator +getAccess() : Boolean +getSelectiveAccess( String : String ) use AccessControlView +askForCredentials( out username : String, out password : String )

Data Storage (base) AccessControl

CDC 1 3

CDO 4 5 ECC 1 1 0

CIC 1 1

OOC 1 1

Student AccessControl AccessControlView

ACC 0 1 1

LCC 2 1 1

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

13 / 51

Aspect-Oriented Programming

Table of Contents

1 2 3 4 5 6 7

Introduction: Why we need Aspect-Oriented Programming Aspect-Oriented Programming Current Challenges What AOSD Is Not About AOSD and Related Technologies Conclusions References

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

14 / 51

Aspect-Oriented Programming

Overview

Aspect-Oriented Programming Principle

Module A

Module B

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

15 / 51

Aspect-Oriented Programming

Overview

Aspect-Oriented Programming Principle

Joinpoint Joinpoint

Module A Joinpoint Joinpoint

Module B

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

16 / 51

Aspect-Oriented Programming

Overview

Aspect-Oriented Programming Principle


Access Control Fault Tolerance Aspect Aspect

Module A Encryption Aspect

Module B

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

17 / 51

Aspect-Oriented Programming

Overview

Aspect-Oriented Programming Principle


Access Control Fault Tolerance Pointcut Pointcut Module A Encryption

Pointcut Module B

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

18 / 51

Aspect-Oriented Programming

Aspect-Oriented Weaving

Weaving Process
Aspect-Oriented Weaving Process
Base Model

Common Compiler

Pointcut Model

Aspect Weaver

Woven Base Model

Compiled Code

100101 101100 010101

Aspect Model

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

19 / 51

Aspect-Oriented Programming

Aspect-Oriented Weaving

Weaving Process

Concern implementation Weaver

Concern Identifier Requirements Aspectual Decomposition Aspectual Recomposition Final System

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

20 / 51

Aspect-Oriented Programming

Aspect-Oriented Weaving

Kinds of Aspect-Oriented Weaving


Static Weaving Aspects are woven at compile time [Kiczales et al., 2001]. Load-Time Weaving Aspects are woven at class load-time [Laddad, 2001, Chiba, 2000]. Dynamic Weaving Aspects can be woven and even unwoven at runtime [Pinto et al., 2005, Suv ee et al., 2003]. It is particulary interesting for context-aware systems [Fuentes et al., 2009].

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

21 / 51

Aspect-Oriented Programming

Example: Access Control as an Aspect

Access Control With AspectJ


public public public public aspect aspect aspect aspect AccessControlAspect AccessControlAspect AccessControlAspect AccessControlAspect {{{{ pointcut pointcut pointcut pointcut guardedMethods(): guardedMethods(): guardedMethods(): guardedMethods(): call call call call (String (String (String (String Student.getReligion()); Student.getReligion()); Student.getReligion()); Student.getReligion()); String String String String around around around around () () () () ::: guardedMethods() : guardedMethods() guardedMethods() guardedMethods() {{{{ new new new new AccessControl(); AccessControl(); AccessControl(); AccessControl(); AccessControl AccessControl AccessControl AccessControl guard guard guard guard === = String String String String returnValue returnValue returnValue returnValue === = null null null null ;;;; if if if if (guard.getAccess()) (guard.getAccess()) (guard.getAccess()) (guard.getAccess()) {{{{ returnValue returnValue returnValue returnValue === = proceed proceed proceed proceed (); (); (); (); // // // // if if if if }}} } return return return return returnValue; returnValue; returnValue; returnValue; }}} // } // // // around around around around guardedMethods guardedMethods guardedMethods guardedMethods }}} // } // // // AccessControlAspect AccessControlAspect AccessControlAspect AccessControlAspect

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

22 / 51

Aspect-Oriented Programming

Example: Access Control as an Aspect

A Clean Student Class

public class Student { protected String religion; public String getReligion() { return this.religion; } // getReligion } // Student

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

23 / 51

Aspect-Oriented Programming

Quantication

Wildcard-based Quantied Pointcuts


public public aspect aspect QuantifiedAccessControlAspect QuantifiedAccessControlAspect {{ pointcut pointcut guardedMethods(): guardedMethods(): call call (* (* Student.get*(..)); Student.get*(..)); Object Object around around () () :: guardedMethods() guardedMethods() {{ new AccessControl(); AccessControl(); AccessControl AccessControl guard guard == new Object Object returnValue returnValue == null null ;; if if (guard.getAccess()) (guard.getAccess()) {{ proceed (); (); returnValue returnValue == proceed }} // // if if return return returnValue; returnValue; }} // // around around guardedMethods guardedMethods }} // // QuantifiedAccessControlAspect QuantifiedAccessControlAspect

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

24 / 51

Aspect-Oriented Programming

Annotation-based Quantication

Annotation-based Quantied Pointcuts

public class Student { protected String religion; @AccessControlRequired public String getReligion() { return this.religion; } // getReligion } // Student

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

25 / 51

Aspect-Oriented Programming

Annotation-based Quantication

Annotation-based Quantied Pointcuts


public public aspect aspect AnnotationBasedAspect AnnotationBasedAspect {{ pointcut pointcut guardedMethods(): guardedMethods(): call call (@AccessControlRequired (@AccessControlRequired ** *.*(..)); *.*(..)); around () () :: guardedMethods() guardedMethods() {{ Object Object around new AccessControl(); AccessControl(); AccessControl AccessControl guard guard == new Object Object returnValue returnValue == null null ;; if if (guard.getAccess()) (guard.getAccess()) {{ proceed (); (); returnValue returnValue == proceed // if if }} // return return returnValue; returnValue; // around around guardedMethods guardedMethods }} // }} // // AnnotationBasedAspect AnnotationBasedAspect

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

26 / 51

Aspect-Oriented Programming

Reection

Some Basic & Free Reection

c la s s

A c c e s s C o n tro l ] S tu d e n t + a u th e n tic a to r A c c e s s C o n tro l + g e tA c c e s s ( ) : B o o le a n + g e tS e le c tiv e A c c e s s ( S tr in g : S tr in g ) use A c c e s s C o n tr o lV ie w + 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 tr in g , o u t p a s s w o r d : S tr in g )

- n a m e : S tr in g - a d d r e s s : S tr in g - r e lig io n : S tr in g - d is e a s e s : S tr in g [0 ..* ] + + + + g g g g e e e e tN tA tR tD a m e ( ) : S tr in g d d r e s s ( ) : S tr in g e lig io n ( ) : S tr in g is e a s e s ( ) : S tr in g [0 ..* ]

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

27 / 51

Aspect-Oriented Programming

Reection

Some Basic & Free Reection


public publicaspect aspectReflectionAccessControlAspect ReflectionAccessControlAspect {{ pointcut pointcutguardedMethods(): guardedMethods(): call call (String (StringStudent.getReligion()); Student.getReligion()); around () ()::guardedMethods() guardedMethods(){{ String Stringaround AccessControl AccessControlguard guard ==new newAccessControl(); AccessControl(); String StringreturnValue returnValue ==null null ;; if if(guard.getSelectiveAccess( (guard.getSelectiveAccess( thisJoinPoint thisJoinPoint .getSignature(). .getSignature(). getName())) getName())){{ proceed (); (); returnValue returnValue==proceed }}// //if if return returnreturnValue; returnValue; }}// //around aroundguardedMethods guardedMethods

}}// //ReflectionAccessControlAspect ReflectionAccessControlAspect

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

28 / 51

Aspect-Oriented Programming

Reection

Concern-Oriented Metrics Revisited


class [ AccessControlAspect ] Student -name : String -address : String -religion : String -diseases : String [0..*] +getReligion() : String +getName() : String +getAddress() : String +getDiseases( diseases : String [0..*] ) crosscut AccessControl +getAccess() : Boolean +getSelectiveAccess( String : String )

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

Data Storage (base) AccessControl

CDC 1 (1) 2 (2)

CDO 4 (4) 3 (5)

CIC 0 (1) 0 (1)

OOC 0 (1) 0 (1)

Student AccessControl AccessControlView

ACC 1 (0) 0 (1) 1 (1)

ECC 0 (1) 2 (1) 0 (0)

LCC 1 (2) 1 (1) 1 (1)

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

29 / 51

Current Challenges

Table of Contents

1 2 3 4 5 6 7

Introduction: Why we need Aspect-Oriented Programming Aspect-Oriented Programming Current Challenges What AOSD Is Not About AOSD and Related Technologies Conclusions References

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

30 / 51

Current Challenges

Current Hot Research Topics on AOSD


1 2

Semantic pointcuts [Ostermann et al., 2005]. Reusable aspects (e.g Complex Transaction Management) [Kienzle and G elineau, 2006]. Aspect interference/conicts [Douence et al., 2002, Douence et al., 2004, Altahat et al., 2008]. Complex pointcuts [Allan et al., 2005]. Aspect Inuence on Interfaces [Ostermann, 2008].

4 5

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

31 / 51

Current Challenges

Current Hot Research Topics on AOSD


termsAndConditionsOfSeasonalRebate (.*):(.*) <?cart>(.*) : ShoppingCart (.*):(.*) <?ws>(.*): WebServiceBank
price : Real

checkOut(..) [*] newCreditCard(..) <?cc>(.*):CreditCard

<<CallBehavior>> calculateDiscount

first <<CallBehavior>> minus

<?jp>: appr oveCredit(<?cc>(.*):PaymentMethod, <?price>(.*):Real)) ?jp ?price

price <<proceed>> proceed

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

32 / 51

What AOSD is not about

Table of Contents

1 2 3 4 5 6 7

Introduction: Why we need Aspect-Oriented Programming Aspect-Oriented Programming Current Challenges What AOSD Is Not about AOSD and Related Technologies Conclusions References

Pablo S anchez (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


<< theme >>

AddItem
class addItem
UserGUI

<< theme >> CheckOut


class checkOut IShop
ShoppingCart + addItem (book :Book , amount :int ) Books + books 0 ..* UserGUI

IDelivery IShop
ShoppingCart + checkOut ()

Delivery

Bank

IBank sd checkOut

sd addItem
UserGUI ShoppingCart

UserGUI

ShoppingCart

Delivery

Bank

checkDelivery

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

approveCredit

(ccNumber = -,amount = -)

merge

Pablo S anchez (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


class [ Architecture ]

LightMng InitialModel
Actuator +id : Integer +setValue( value : float ) +actuators 0..* +changeValue( id : Integer, value : float ) +emergence( a : Sensor, value : float ) Gateway +sensors +gtw 0..1 0..* Sensor +id : Integer +getValue() : float merge Gateway +switchLight( id : Integer ) +lights 1..* merge merge LightCtrl +switch() Actuator

WindowMng
Gateway +openWindow( id : Integer ) +closeWindow( id : Integer ) merge SmartEnergyMng Gateway +openWindow( id : Integer ) +closeWindow( id : Integer ) +adjustTemperature( id : Integer, temp : float ) +windows 1..* WindowCtrl +open() +close() Actuator enumeration TempUnits CELSIUS FAHRENHEIT Gateway

HeaterMng
HeaterCtrl +heaters 1..* +units : TempUnits +set( t : float ) merge Actuator

+adjustTemperature( id : Integer, temp : float )

+indoorTherm ThermometerCtrl 1 +operationMode : TempUnits +outdoorTherm 1

Sensor

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

35 / 51

AOSD and Related Technology

Table of Contents

1 2 3 4 5 6 7

Introduction: Why we need Aspect-Oriented Programming Aspect-Oriented Programming Current Challenges What AOSD Is Not About AOSD and Related Technologies Conclusions References

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

36 / 51

AOSD and Related Technology

AOSD and Related Technology


1

Component platforms/Application Servers/Container Technology


Component platforms oer a set of xed services. Conguration of each service is often dierent. Component platforms are often heavier.

2 3

Reection: AOP is reection for human beings. Design Patterns, Dynamic Proxies: The aspect-oriented weaver does it for you.

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

37 / 51

AOSD and Related Technology

AOSD in Industry
1 2

Spring framework for Enterprise Java. SpringSource dm Server, SpringSource tc Server, Spring Roo y Magma. GlassBox, Perf4J, Contract4J, JXInsight, MaintainJ. Websphere, MySQL, JBoss, Oracle Toplink, J2ME [Rashid et al., 2010]. Siemens Healthcare [Rashid et al., 2010]. Motorola Weavr [Cottenier et al., 2007]. Ocina Virtual Fundaci on Retevisi on [Pinto et al., 2005] Digital Publishing [de Beeck et al., 2009]. Isis Project (Stop Pedophilia).

3 4

5 6 7 8 9

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

38 / 51

Conclusions

Table of Contents

1 2 3 4 5 6 7

Introduction: Why we need Aspect-Oriented Programming Aspect-Oriented Programming Current Challenges What AOSD Is Not About AOSD and Related Technologies Conclusions References

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

39 / 51

Conclusions

Conclusions

Aspect-Oriented Software Development


Aspect-Oriented Software Development can help to improve modularization 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 S anchez (MATESCO)

Aspect-Oriented Programming

40 / 51

References

Table of Contents

1 2 3 4 5 6 7

Introduction: Why we need Aspect-Oriented Programming Aspect-Oriented Programming Current Challenges What AOSD Is Not About AOSD and Related Technologies Conclusions References

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

41 / 51

References

Referencias I
Allan, C., Avgustinov, P., Christensen, A. S., Hendren, L. J., Kuzins, S., Lhot ak, 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 345364. Altahat, Z., Elrad, T., and Tahat, L. (2008). Applying Critical Pair Analysis in Graph Transformation Systems to Detect Syntactic Aspect Interaction in UML State Diagrams. In Proc. of the 20th Int. Conference on Software Engineering & Knowledge Engineering (SEKE), pages 905911, San Francisco (California, USA).

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

42 / 51

References

Referencias II
Brichau, J. and DHondt, 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 Reection in Java. In Bertino, E., editor, Proc. of the 14th European Conference on Object-Oriented Programming (ECOOP), pages 313336, Sophia Antipolis 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 S anchez (MATESCO)

Aspect-Oriented Programming

43 / 51

References

Referencias III
Cottenier, T., van den Berg, A., and Elrad, T. (2007). Motorola WEAVR: Aspect and model-Driven Engineering. Journal of Object Technology (JOT), 6(7):5188. de Beeck, S. O., Landuyt, D. V., Truyen, E., and Joosen, W. (2009). Building a Next-Generation Digital News Publishing Platform with AOSD. In Proc. of the 8th Int. Conference on Aspect-Oriented Software Development (AOSD), Charlottesvile (Virginia, USA). Demostration.

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

44 / 51

References

Referencias IV
Douence, R., Fradet, P., and S udholt, 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 173188, Pittsburgh, (Pennsylvania, USA). Douence, R., Fradet, P., and S udholt, M. (2004). Composition, Reuse and Interaction Analysis of Stateful Aspects. In Proc. of the 3rd Int. Conference on Aspect-Oriented Software Development (AOSD), pages 141150, Lancaster (UK). Elrad, T., Ak sit, M., Kiczales, G., Lieberherr, K., and Ossher, H. (2001). Discussing Aspects of AOP. Communications of the ACM, 44(10):3338.
Pablo S anchez (MATESCO) Aspect-Oriented Programming 45 / 51

References

Referencias V
Filman, R. E., Elrad, T., Clarke, S., and Ak sit, M., editors (2004). Aspect-Oriented Software Development. Addison-Wesley, Boston. Fuentes, L., G amez, N., and S anchez, P. (2009). Aspect-Oriented Design and Implementation of Context-Aware Pervasive Applications. Innovations in Systems and Software Engineering, 5(1):7993. 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 161173, Seattle (Washington, USA).

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

46 / 51

References

Referencias VI
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W. G. (2001). An Overview of AspectJ. In Knudsen, J. L., editor, Proc. of the 15th European Conference on Object-Oriented Programming (ECOOP), volume 2072 of Lecture Notes in Computer Science, pages 327353, Budapest (Hungary). Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V., Loingtier, J.-M., and Irwin, J. (1997). Aspect-Oriented Programming. In Ak sit, M. and Matsuoka, S., editors, Proc. of the 11th European Conference on Object-Oriented Programming (ECOOP), volume 1241 of Lecture Notes in Computer Science, pages 220242, Jyv askyl a (Finland).

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

47 / 51

References

Referencias VII
Kienzle, J. and G elineau, S. (2006). AO challenge - Implementing the ACID properties for Transactional Objects. In Filman, R. E., editor, Proc. of the 5th Int. Conference on Aspect-Oriented Software Development (AOSD), pages 202213.

Laddad, R. (2001). I want my AOP! Java World, http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-aspe Ostermann, K. (2008). Reasoning about Aspects with Common Sense. In DHondt, T., editor, Proc. of the 7th Int. Conference on Aspect-Oriented Software Development (AOSD), pages 4859, Brussels (Belgium).
Pablo S anchez (MATESCO) Aspect-Oriented Programming 48 / 51

References

Referencias VIII
Ostermann, K., Mezini, M., and Bockisch, C. (2005). Expressive Pointcuts for Increased Modularity. In Black, A. P., editor, Proc. of the 19th European Conference on Object-Oriented Programming (ECOOP), volume 3586 of LNCS, pages 214240, Glasgow (UK). Pinto, M., Fuentes, L., and Troya, J. M. (2005). A Dynamic Component and Aspect-Oriented Platform. Computer Journal, 48(4):401420. Rashid, A., Cottenier, T., Greenwood, P., Chitchyan, R., Meunier, R., Coelho, R., S udholt, M., and Joosen, W. (2010). Aspect-Oriented Software Development in Practice: Tales from AOSD-Europe. IEEE Computer, 43(2):1926.

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

49 / 51

References

Referencias IX
SantAnna, C., Figueiredo, E., Garcia, A. F., and de Lucena, C. J. P. (2007). On the Modularity of Software Architectures: A Concern-Driven Measurement Framework. In Oquendo, F., editor, Proc. of the 1st European Conference on Software Architecture (ECSA), pages 207224, Aranjuez (Spain). Suv ee, D., Vanderperren, W., and Jonckers, V. (2003). JAsCo: an Aspect-Oriented Approach Tailored for Component-Based Software Development. In Proc. of the 2nd Int. Conference on Aspect-Oriented Software Development (AOSD), pages 2129, Boston (Massachusetts, USA).

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

50 / 51

Questions

Questions ?

Pablo S anchez (MATESCO)

Aspect-Oriented Programming

51 / 51

You might also like