Ingeniería del So8ware II



Similar documents
A COMPARISON OF AOP BASED MONITORING TOOLS

Generating Aspect Code from UML Models

Using an Aspect Oriented Layer in SOA for Enterprise Application Integration

Component-Based Software Development with Aspect-Oriented Programming

Aspect-Oriented Programming

Keywords Aspect-Oriented Modeling, Rule-based graph transformations, Aspect, pointcuts, crosscutting concerns.

How to Model Aspect-Oriented Web Services

How To Combine Feature-Oriented And Aspect-Oriented Programming To Support Software Evolution

Introducing a Graduate Course on. called Aspect-Oriented Software Development

Combining Feature-Oriented and Aspect-Oriented Programming to Support Software Evolution

Aspect-Oriented Software Development

Toward Configurable Access Control for. Healthcare Information Systems

Aspects for Testing Aspects?

Composing Concerns with a Framework Approach

Expressing Aspectual Interactions in Design: Experiences in the Slot Machine Domain

Encapsulating Crosscutting Concerns in System Software

Aspect-Oriented Web Development in PHP

Distributed Systems Development: Can we Enhance Evolution by using AspectJ?

Rapid Development of Extensible Profilers for the Java Virtual Machine with Aspect-Oriented Programming

Aspect-oriented software engineering

Unification of AOP and FOP in Model Driven Development

Representation-Oriented Software Development: A cognitive approach to software engineering

The Nature and Importance of a Programming Paradigm

Implementing Application and Network Security using Aspectoriented

Automated Test Generation for AspectJ Programs

Combining Static and Dynamic Impact Analysis for Large-scale Enterprise Systems

AOJS: Aspect-Oriented JavaScript Programming Framework for Web Development

Dynamic Reconfiguration Using Template Based Web Service Composition

An Aspect-Oriented Product Line Framework to Support the Development of Software Product Lines of Web Applications

Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona

Dungeon: A Case Study of Feature-Oriented Programming with Virtual Classes

Using Aspect Programming to Secure Web Applications

Aspect-Oriented Software Development based Solution for Intervention Concerns Problems:Case Study

Using Aspects to Design a Secure System

The Concern-Oriented Software Architecture Analysis Method

Integration of Application Business Logic and Business Rules with DSL and AOP

Evaluating the Use of AOP and MDA in Web Service Development

Extending an Open-Source BPEL Engine with Aspect-Oriented Programming

Implementing QoS Aware Component-Based Applications

Variability in Service-Oriented Systems: An Analysis of Existing Approaches

Identification of Crosscutting in Software Design

USING ASPECT-ORIENTED SOFTWARE DEVELOPMENT IN REAL-TIME EMBEDDED SYSTEMS SOFTWARE A Review of Scheduling, Resource Allocation and Synchronization

PESTO: A Tool for Migrating DOM-based to Visual Web Tests

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

GECO: Automatic Generator-Composition for (Aspect-oriented) DSLs

Concern Driven Software Development

An Architecture-Based Approach for Component-Oriented Development

Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C

Considering Additional Adaptation Concerns in the Design of Web Applications

Load balancing using Remote Method Invocation (JAVA RMI)

Chapter 5 Aspect Oriented Programming

Transcription:

Ingeniería del So8ware II Seminario. Programación Orientada a Aspectos Pablo Sánchez Barreiro DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN p.sanchez@unican.es Este tema se publica bajo Licencia: CreaNve Commons BY NC SA 3.0

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 Sánchez (MATESCO) Aspect-Oriented Programming 2 / 51

Introduction Crosscutting Concerns Crosscutting Concerns Drawbacks @#& Happiness Sadness Base Functionality Access Control Fault Tolerance v2.0 Encryption ModuleA ModuleB ModuleC Module D ModuleE Pablo Sánchez (MATESCO) Aspect-Oriented Programming 3 / 51

Introduction Crosscutting Concerns Case Study: Apache Tomcat XML parsing Pablo Sánchez (MATESCO) Aspect-Oriented Programming 4 / 51

Introduction Crosscutting Concerns Case Study: Apache Tomcat URL pattern matching Pablo Sánchez (MATESCO) Aspect-Oriented Programming 5 / 51

Introduction Crosscutting Concerns Case Study: Apache Tomcat Logging Pablo Sánchez (MATESCO) Aspect-Oriented Programming 6 / 51

Introduction Crosscutting Concerns Motivating example: Access Control class [ AccessControl ] Student -name : String -address : String -religion : String -diseases : String [0..*] +getname() : String +getaddress() : String +getreligion() : String +getdiseases() : String [0..*] +authenticator AccessControl +getaccess() : Boolean +getselectiveaccess( String : String ) «use» AccessControlView +askforcredentials( out username : String, out password : String ) Pablo Sánchez (MATESCO) Aspect-Oriented Programming 7 / 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 if (authenticator.getaccess()){{ result = = this.religion; }}/// if if return result; }}/// getreligion }}/// Student Crosscutting code Pablo Sánchez (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ánchez (MATESCO) Aspect-Oriented Programming 9 / 51

Introduction Crosscutting Concerns Main Shortcoming of Crosscutting Concerns @#& Happiness Sadness Base Functionality Access Control Fault Tolerance v2.0 Encryption ModuleA ModuleB ModuleC Module D ModuleE Pablo Sánchez (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. 2 Tangling: Decreases cohesion, (consequently hampers reutilization), and increases coupling. Pablo Sánchez (MATESCO) Aspect-Oriented Programming 11 / 51

Introduction Empirical Evidence 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 Sánchez (MATESCO) Aspect-Oriented Programming 12 / 51

Introduction Empirical Evidence Concern-Oriented Metrics [Sant Anna et al., 2007] class [ AccessControl ] Student -name : String -address : String -religion : String -diseases : String [0..*] +getname() : String +getaddress() : String +getreligion() : String +getdiseases() : String [0..*] +authenticator AccessControl +getaccess() : Boolean +getselectiveaccess( String : String ) «use» AccessControlView +askforcredentials( out username : String, out password : String ) CDC CDO CIC OOC Data Storage (base) 1 4 1 1 AccessControl 3 5 1 1 ACC ECC LCC Student 0 1 2 AccessControl 1 1 1 AccessControlView 1 0 1 Pablo Sánchez (MATESCO) Aspect-Oriented Programming 13 / 51

Aspect-Oriented Programming 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 Sánchez (MATESCO) Aspect-Oriented Programming 14 / 51

Aspect-Oriented Programming Overview Aspect-Oriented Programming Principle Module A Module B Pablo Sánchez (MATESCO) Aspect-Oriented Programming 15 / 51

Aspect-Oriented Programming Overview Aspect-Oriented Programming Principle Joinpoint Joinpoint Joinpoint Module A Joinpoint Module B Pablo Sánchez (MATESCO) Aspect-Oriented Programming 16 / 51

Aspect-Oriented Programming Overview Aspect-Oriented Programming Principle Fault Tolerance Aspect Access Control Aspect Module A Encryption Aspect Module B Pablo Sánchez (MATESCO) Aspect-Oriented Programming 17 / 51

Aspect-Oriented Programming Overview Aspect-Oriented Programming Principle Fault Tolerance Pointcut Access Control Pointcut Module A Encryption Module B Pointcut Pablo Sánchez (MATESCO) Aspect-Oriented Programming 18 / 51

Aspect-Oriented Programming Aspect-Oriented Weaving Weaving Process Aspect-Oriented Weaving Process Base Model Pointcut Model Aspect Model Aspect Weaver Woven Base Model Common Compiler Compiled Code 100101 101100 010101 Pablo Sánchez (MATESCO) Aspect-Oriented Programming 19 / 51

Aspect-Oriented Programming Aspect-Oriented Weaving Weaving Process Concern implementation Weaver Requirements Concern Identifier Final System Aspectual Decomposition Aspectual Recomposition Pablo Sánchez (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ée et al., 2003]. It is particulary interesting for context-aware systems [Fuentes et al., 2009]. Pablo Sánchez (MATESCO) Aspect-Oriented Programming 21 / 51

Aspect-Oriented Programming Example: Access Control as an Aspect Access Control With AspectJ public aspect AccessControlAspect {{{{ pointcut guardedmethods(): call(string Student.getReligion()); String around() ::: : guardedmethods() {{{{ AccessControl guard = = = = new AccessControl(); String returnvalue = = = = null; if if if if (guard.getaccess()) {{{{ returnvalue = = = = proceed(); }}}// }// // // if if if if return returnvalue; }}}// }// // // around guardedmethods }}}// }// // // AccessControlAspect Pablo Sánchez (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ánchez (MATESCO) Aspect-Oriented Programming 23 / 51

Aspect-Oriented Programming Quantification 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 Pablo Sánchez (MATESCO) Aspect-Oriented Programming 24 / 51

Aspect-Oriented Programming Annotation-based Quantification Annotation-based Quantified Pointcuts public class Student { protected String religion; @AccessControlRequired public String getreligion() { return this.religion; } // getreligion } // Student Pablo Sánchez (MATESCO) Aspect-Oriented Programming 25 / 51

Aspect-Oriented Programming Annotation-based Quantification Annotation-based Quantified Pointcuts public aspect AnnotationBasedAspect {{ pointcut guardedmethods(): call(@accesscontrolrequired ** *.*(..)); Object around() :: guardedmethods() {{ AccessControl guard = = new AccessControl(); Object returnvalue = = null; if if (guard.getaccess()){{ returnvalue = = proceed(); }}/// if if return returnvalue; }}/// around guardedmethods }}/// AnnotationBasedAspect Pablo Sánchez (MATESCO) Aspect-Oriented Programming 26 / 51

Aspect-Oriented Programming Reflection Some Basic & Free Reflection c l a s s [ A c c e s s C o n t r o l ] S t u d e n t - n a m e : S t r i n g - a d d r e s s : S t r i n g - r e l i g i o n : S t r i n g - d i s e a s e s : S t r i n g [ 0.. * ] + g e t N a m e ( ) : S t r i n g + g e t A d d r e s s ( ) : S t r i n g + g e t R e l i g i o n ( ) : S t r i n g + g e t D i s e a s e s ( ) : S t r i n g [ 0.. * ] A c c e s s C o n t r o l + a u t h e n t i c a t o r + g e t A c c e s s ( ) : B o o l e a n + g e t S e l e c t i v e A c c e s s ( S t r i n g : S t r i n g ) «u s e» A c c e s s C o n t r o l V i e w + a s k F o r C r e d e n t i a l s ( o u t u s e r n a m e : S t r i n g, o u t p a s s w o r d : S t r i n g ) Pablo Sánchez (MATESCO) Aspect-Oriented Programming 27 / 51

Aspect-Oriented Programming Reflection Some Basic & Free Reflection public aspect ReflectionAccessControlAspect {{ pointcut guardedmethods(): call(string Student.getReligion()); String around() :: guardedmethods() {{ AccessControl guard = = new AccessControl(); String returnvalue = = null; if if (guard.getselectiveaccess( thisjoinpoint.getsignature(). getname())) {{ returnvalue = = proceed(); }}/// if if return returnvalue; }}/// around guardedmethods }}/// ReflectionAccessControlAspect Pablo Sánchez (MATESCO) Aspect-Oriented Programming 28 / 51

Aspect-Oriented Programming Reflection 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 ) CDC CDO CIC OOC Data Storage (base) 1 (1) 4 (4) 0 (1) 0 (1) AccessControl 2 (2) 3 (5) 0 (1) 0 (1) ACC ECC LCC Student 1 (0) 0 (1) 1 (2) AccessControl 0 (1) 2 (1) 1 (1) AccessControlView 1 (1) 0 (0) 1 (1) Pablo Sánchez (MATESCO) Aspect-Oriented Programming 29 / 51

Current Challenges 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 Sánchez (MATESCO) Aspect-Oriented Programming 30 / 51

Current Challenges Current Hot Research Topics on AOSD 1 Semantic pointcuts [Ostermann et al., 2005]. 2 Reusable aspects (e.g Complex Transaction Management) [Kienzle and Gélineau, 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 Sánchez (MATESCO) Aspect-Oriented Programming 31 / 51

Current Challenges Current Hot Research Topics on AOSD termsandconditionsofseasonalrebate (.*):(.*) <?cart>(.*) : ShoppingCart (.*):(.*) <?ws>(.*): WebServiceBank price : Real checkout(..) <<CallBehavior>> calculatediscount [*] newcreditcard(..) <?cc>(.*):creditcard first <<CallBehavior>> minus <?jp>: approvecredit(<?cc>(.*):paymentmethod, <?price>(.*):real)) price <<proceed>> proceed?jp?price Pablo Sánchez (MATESCO) Aspect-Oriented Programming 32 / 51

What AOSD is not about 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 Sánchez (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 << theme >> CheckOut class checkout IDelivery Delivery UserGUI IShop ShoppingCart UserGUI IShop ShoppingCart +additem (book :Book, amount :int ) + checkout () Bank Books + books 0..* sd checkout IBank sd additem UserGUI ShoppingCart Delivery Bank UserGUI ShoppingCart checkdelivery (address =-,weight =-,size =-) approvecredit (ccnumber =-,amount =-) merge Pablo Sánchez (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 ] +id : Integer Actuator +setvalue( value : float ) Gateway +openwindow( id : Integer ) +closewindow( id : Integer ) «merge» +actuators InitialModel Gateway 0..* +changevalue( id : Integer, value : float ) +gtw +emergence( a : Sensor, value : float ) 0..1 «merge» WindowMng +windows 1..* WindowCtrl +open() +close() Actuator «enumeration» TempUnits +sensors CELSIUS FAHRENHEIT 0..* +id : Integer Sensor +getvalue() : float Gateway «merge» «merge» HeaterMng +adjusttemperature( id : Integer, temp : float ) LightMng Actuator Gateway +switchlight( id : Integer ) LightCtrl +lights 1..* +switch() HeaterCtrl Actuator +heaters 1..* +units : TempUnits +set( t : float ) «merge» Gateway SmartEnergyMng +openwindow( id : Integer ) +closewindow( id : Integer ) +adjusttemperature( id : Integer, temp : float ) +indoortherm ThermometerCtrl 1 +operationmode : TempUnits +outdoortherm 1 Sensor Pablo Sánchez (MATESCO) Aspect-Oriented Programming 35 / 51

AOSD and Related Technology 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 Sánchez (MATESCO) Aspect-Oriented Programming 36 / 51

AOSD and Related Technology AOSD and Related Technology 1 Component platforms/application Servers/Container Technology 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 weaver does it for you. Pablo Sánchez (MATESCO) Aspect-Oriented Programming 37 / 51

AOSD and Related Technology AOSD in Industry 1 Spring framework for Enterprise Java. 2 SpringSource dm Server, SpringSource tc Server, Spring Roo y Magma. 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 Fundación Retevisión [Pinto et al., 2005] 8 Digital Publishing [de Beeck et al., 2009]. 9 Isis Project (Stop Pedophilia). Pablo Sánchez (MATESCO) Aspect-Oriented Programming 38 / 51

Conclusions 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 Sánchez (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ánchez (MATESCO) Aspect-Oriented Programming 40 / 51

References 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 Sánchez (MATESCO) Aspect-Oriented Programming 41 / 51

References Referencias I Allan, C., Avgustinov, P., Christensen, A. S., Hendren, L. J., Kuzins, S., Lhoták, 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 to Detect 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 Sánchez (MATESCO) Aspect-Oriented Programming 42 / 51

References Referencias II 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 on Object-Oriented Programming (ECOOP), pages 313 336, 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ánchez (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):51 88. 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ánchez (MATESCO) Aspect-Oriented Programming 44 / 51

References Referencias IV Douence, R., Fradet, P., and Südholt, 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 Südholt, 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., Akşit, M., Kiczales, G., Lieberherr, K., and Ossher, H. (2001). Discussing Aspects of AOP. Communications of the ACM, 44(10):33 38. Pablo Sánchez (MATESCO) Aspect-Oriented Programming 45 / 51

References Referencias V Filman, R. E., Elrad, T., Clarke, S., and Akşit, M., editors (2004). Aspect-Oriented Software Development. Addison-Wesley, Boston. Fuentes, L., Gámez, N., and Sánchez, P. (2009). Aspect-Oriented Design and Implementation of Context-Aware Pervasive 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 Sánchez (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 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 Akşit, 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 220 242, Jyväskylä (Finland). Pablo Sánchez (MATESCO) Aspect-Oriented Programming 47 / 51

References Referencias VII Kienzle, J. and Gélineau, 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 202 213. 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 D Hondt, T., editor, Proc. of the 7th Int. Conference on Aspect-Oriented Software Development (AOSD), pages 48 59, Brussels (Belgium). Pablo Sánchez (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 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., Südholt, M., and Joosen, W. (2010). Aspect-Oriented Software Development in Practice: Tales from AOSD-Europe. IEEE Computer, 43(2):19 26. Pablo Sánchez (MATESCO) Aspect-Oriented Programming 49 / 51

References Referencias IX Sant Anna, 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 207 224, Aranjuez (Spain). Suvée, 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 21 29, Boston (Massachusetts, USA). Pablo Sánchez (MATESCO) Aspect-Oriented Programming 50 / 51

Questions Questions? Pablo Sánchez (MATESCO) Aspect-Oriented Programming 51 / 51