c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco

Size: px
Start display at page:

Download "c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco"

Transcription

1 c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco do Prado, Luiz Carlos Zancanella. Permission is granted to copy for the SugarLoafPLoP 2004 conference. All other rights reserved.

2 Manipulating Crosscutting Concerns Vinicius Cardoso Garcia 1, Eduardo Kessler Piveta 2, Daniel Lucrédio 1, Alexandre Alvaro 3, Eduardo Santana de Almeida 3, Antonio Francisco do Prado 1, Luiz Carlos Zancanella 2 1 GOES Software Engineering Group Federal University of São Carlos, Department of Computer Science São Carlos, SP, Brazil (vinicius, lucredio, prado)@dc.ufscar.br 2 Federal University of Santa Catarina, CTC Technological Center Florianópolis, SC, Brazil (kessler, zancanella)@inf.ufsc.br 3 C.E.S.A.R. Recife Center for Advanced Studies and Systems Federal University of Pernambuco, Informatic Center Recife, PE, Brazil (aa2, esa2)@cin.ufpe.br Abstract. The patterns in this paper describe how to extract crosscutting concerns when developing systems. Introduction When using an object-oriented methodology and decomposing a system into a set of individual classes and objects, there are some functionalities that are spread over several classes. Figure 1 illustrates this scenario. Figure 1: Crosscutting Concern tangled in the class Code scattering and code tangling are problems that affect applications in a systematic way. They decrease maintainability, flexibility and reuse, mixing business code Supported by Fundação de Amparo à Pesquisa do Estado da Bahia (FAPESB) - Brazil Supported by Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP) - Brazil

3 with code that is related to non-functional requirements, such as exception handling and concurrency control, among others. After the crosscutting concerns are identified, the extraction should be planned through well defined techniques. The problem is how to extract concerns that are tangled within the application code and spread over several classes. A solution is to use Aspect-Oriented Programming [Kiczales et al., 1997], which allows to separate different concerns into separate units. To extract these concerns from object-oriented systems into aspects, it is possible to use refactorings [Fowler et al., 1999], adapted to the aspectoriented paradigm. Consider the following source code: import java.lang.reflect.*; public class ShoppingCart { private List items = new Vector(); public void additem(item item) { System.out.println("Log:"+this.getClass().getName()); items.add(item); public void removeitem(item item) { System.out.println("Log:"+this.getClass().getName()); items.remove(item); public void empty() { System.out.println("Log:"+this.getClass().getName()); items.clear(); This code mixes business logic with logging. The logging code (shaded) must be extracted to an aspect. To perform this, the patterns described in this paper could be used, allowing to move fields, pieces of code and entire methods that are related to logging into the new aspect. Figure 2 shows the inter-relationship among the patterns. The arrows inform which refactoring are commonly used given the resultant context of the patterns application. In some cases, the patterns point at the inverse pattern. The patterns in gray are not described in this work. Figure 2: Patterns to Extract Crosscutting Concerns The AspectJ language was used in the examples to demonstrate the use of the

4 patterns. The format used to describe the patterns in this paper is the same used in refactorings [Fowler et al., 1999]. EXTRACT FIELD TO ASPECT Figure 3: Extract Field to Aspect A class has a field that is related to a crosscutting concern that is implemented or is being extracted to an aspect. import java.lang.reflect.*; public class ShoppingCart { private List items = new Vector(); private java.io.printwriter logwriter = System.err; public void additem(item item) { logwriter.println("log:"+this.getclass().getname()); items.add(item); public void removeitem(item item) { logwriter.println("log:"+this.getclass().getname()); items.remove(item); public void empty() { logwriter.println("log:"+this.getclass().getname()); items.clear(); The solution is to move the field to the aspect that implements the concern, as an introduction declaration. Motivation By extracting the field into an aspect, the code tangling problem is reduced, since the aspect will contain all the fields related to a single concern, and no field related to that concern is located outside the aspect. Mechanisms If the field is defined as being public, consider the use of Encapsulate Field ([Fowler et al., 1999], p.206) before this pattern is applied. Move the field declaration to the aspect, including the initial value declaration, if there is one. This must be done in accordance to the introduction syntax of the aspect language used. Analyze if there is the need to declare namespace statements. Modify the field visibility to public. The visibility could be decreased after the whole pattern is applied. If there is still the need to keep the code related to the field in the class, consider using Self Encapsulate Field ([Fowler et al., 1999], p.146).

5 Check all pointcuts containing within() declarations that must be updated after the application of this pattern. Compile and test. You could use EXTRACT FIELD TO ASPECT to extract fields related to the logging concern to the aspect. After the pattern is applied: public aspect LoggingAspect { private java.io.printwriter ShoppingCart.logWriter = System.err; pointcut loggedmethods(shoppingcart shoppingcart): this(shoppingcart) && (execution(void ShoppingCart.*(..))); before(shoppingcart shoppingcart): loggedmethods(shoppingcart) { logwriter.println("log:"+shoppingcart.getclass().getname());... after the EXTRACT FIELD TO ASPECT is applied, some methods that refer to those fields should also be moved to the aspect, since they probably refer to the same concern that is being extracted. To extract those methods, as well as other methods that refer to this concern, use EXTRACT METHOD TO ASPECT. EXTRACT METHOD TO ASPECT Figure 4: Extract Method to Aspect There are methods in the class that relate to a crosscutting concern implemented as an aspect or that is being extracted to one. The problem is how to extract the method to the aspect, since the method has its own visibility, return value and is part of the class context. import java.lang.reflect.*; public class ShoppingCart { private List items = new Vector(); private void addlogmessage(string message) { System.out.println("Log "+(lognumber++)+":"+message); public void additem(item item) { addlogmessage(this.getclass().getname()); items.add(item); public void removeitem(item item) { addlogmessage(this.getclass().getname()); items.remove(item); public void empty() { addlogmessage(this.getclass().getname()); items.clear(); The solution is to move the method to the aspect that implements the crosscutting concern, as an introduction declaration.

6 Motivation A method that refers to a particular concern should be located inside the aspect that implements this concern, in order to reduce the code tangling and spreading. Mechanisms Move the method declaration from the class to the aspect. This must be performed in accordance with the introduction syntax of the aspect language used. Analyze if there are namespaces declarations that must be inserted. Check all pointcuts with the declaration within() that should be updated after the application of this pattern. Compile and test. You could use EXTRACT METHOD TO ASPECT to extract method related to the logging concern to the aspect. After it is applied: public aspect LoggingAspect { private void ShoppingCart.addLogMessage(String message) { System.out.println("Log :"+message); pointcut loggedmethods(shoppingcart shoppingcart): this(shoppingcart) && (execution(void ShoppingCart.*(..))); before(shoppingcart shoppingcart): loggedmethods(shoppingcart) { addlogmessage(shoppingcart.getclass().getname());... after the EXTRACT METHOD TO ASPECT is applied, there are no methods that refer to the concern being extracted. However, calls to these methods remain located in other methods that were not extracted to the aspect. There could also be pieces of code that are related to this concern, but are not separated as entire methods. To extract these method calls and other pieces of code, use EXTRACT CODE TO ADVICE. EXTRACT CODE TO ADVICE Figure 5: Extract Code to Advice Some piece of code is related to a concern that could be implemented as an aspect. This code is not separated in a single method, but mixed with other codes. Motivation Extract the code to an advice Method calls that appear in several classes are usually subject to this pattern. The correct separation of concerns could improve software maintainability and reuse.

7 Mechanisms Create an empty advice. Move the code that is being extracted into the advice body Add code to implement the advice context Substitute references to this (the actual object) by the variable captured in the join-point context. Analyze the extracted code, searching references to local variables in the method scope, including parameters and local variables. Any declarations to temporary variables, used only in the extracted code, could be substituted in the advice body. Compile the code and test. Example You could use this pattern to extract code related to the execution of additem to the aspect. After the pattern is applied: import java.lang.reflect.*; public class ShoppingCart { private List items = new Vector(); public void additem(item item) { items.add(item); public void removeitem(item item) { System.out.println("Log:"+this.getClass().getName()); items.remove(item); public void empty() { System.out.println("Log:"+this.getClass().getName()); items.clear(); The code related to the logging was extracted to the aspect Foo: public aspect Foo { before(shoppingcart shoppingcart): this(shoppingcart) && (execution(void ShoppingCart.addItem(..))) { Note that the context regarding the variable this has also moved to the aspect.... after applying this pattern once, there are still calls to methods that perform logging. So, execute EXTRACT CODE TO ADVICE in the other affected methods in the class. Then, the class becomes like this: import java.lang.reflect.*; public class ShoppingCart { private List items = new Vector(); public void additem(item item) { items.add(item); public void removeitem(item item) { items.remove(item); public void empty() { items.clear(); And the aspect:

8 public aspect Foo { before(shoppingcart shoppingcart): this(shoppingcart) && (execution(void ShoppingCart.addItem(..))) (execution(void ShoppingCart.removeItem(..))) (execution(void ShoppingCart.empty(..))) {... after the EXTRACT CODE TO ADVICE is applied to several methods, the join-points declaration grows and becomes highly coupled with the advice body. In order to improve clarity and make the coupling softer, EXTRACT POINTCUT DEFINITION could be used. EXTRACT POINTCUT DEFINITION Motivation Figure 6: Extract Pointcut Definition The join-points definition is coupled with the advice code. Separate the join-points definition into a pointcut. You could define a separated pointcut, defining join-points and the correct context. The separation between pointcut definitions and advices makes the code more readable and flexible, since modifications could be performed in a single place. Also, the code becomes more reusable, since a single pointcut definition could be used by several advices. Mechanisms Create a pointcut that captures the appropriate join-points. If the pointcut already exists, extend it to include the related join-point(s) to the extracted code. Ensure that the pointcut captures the entire context that is required by the code snippet. Check if the extracted code refers to this or super declarations. The most used types of predicates defined in the pointcuts use references to the object receiving a message and calls to a specific method, or a reference to the actual object combined with method execution, field read and write operations etc. Compile the code and test. Example After the pointcut definition is extracted:

9 public aspect Foo { pointcut test(shoppingcart shoppingcart): this(shoppingcart) && (execution(void ShoppingCart.addItem(..))) (execution(void ShoppingCart.removeItem(..))) (execution(void ShoppingCart.empty(..))) ); before(shoppingcart shoppingcart): test(shoppingcart) {... after applying EXTRACT POINTCUT DEFINITION, the join-points declaration could became verbose. An equivalent predicate could be used instead of individual joinpoints. To perform this, use COLLAPSE POINTCUT DEFINITION COLLAPSE POINTCUT DEFINITION Motivation Figure 7: Collapse Pointcut Definition The pointcut declaration could became verbose. An equivalent predicate could be used instead of individual join-points. When the number of affected points increase, the maintainability of the pointcut become harder. The definition grows as new classes and methods are created and references are added to the aspect. Regular expressions are used to express collections of join-points. Mechanisms Check how many determinable join-points are currently affected by the pointcut Convert the join-point declaration into a regular expression. Compile the code and test. Verify if the number of affected points is the same as previously measured Example After the COLLAPSE POINTCUT DEFINITION was applied: public aspect Foo { pointcut test(shoppingcart shoppingcart): this(shoppingcart) && (execution(void ShoppingCart.*(..))); before(shoppingcart shoppingcart): test(shoppingcart) {... after collapsing the definition, we could realize that the pointcut name does not help us to identify what it is all about. So, to provide a meaningful name, apply RENAME POINTCUT.

10 RENAME POINTCUT Motivation Figure 8: Rename Pointcut The name of a pointcut does not reveal its purpose. Change the name of the pointcut Names are one of the best mechanisms to express the intent of a feature. If you have odd names to classes, methods and aspects, your code becomes harder to understand and maintain. Provide good names to improve code quality. Mechanisms Create a new pointcut with the given name. Copy the declaration from the old pointcut to the new one. Change the old pointcut to point to the new one (if you have a few references you could skip this step) Compile and test Change the references to the old pointcut in advices and other pointcuts to the new pointcut Compile and test for each change Remove the old pointcut declaration Compile and test Example After renaming the pointcut, we have: public aspect Foo { pointcut loggedmethods (ShoppingCart shoppingcart): this(shoppingcart) && (execution(void ShoppingCart.*(..))); before(shoppingcart shoppingcart): loggedmethods(shoppingcart) { And so on, after extracting the profiling concern to the Foo aspect, we realize that this aspect should be renamed to a better name using RENAME ASPECT. RENAME ASPECT The name of an aspect does not reveal its purpose. Change the name of the aspect

11 Figure 9: Rename Aspect Motivation A good practice is to name classes, aspects, methods..., in order to improve code readability. If you have to look at the source code of a class or a method to imagine what the feature is responsible for, this feature is a candidate to this pattern. Mechanics Check to see whether the aspect name is used by a super-aspect or a sub-aspect. If it is, rename the references in the sub and super-classes Change the name of the aspect Find all references to the old aspect name and change them to the new name. Compile and test After renaming the aspect: public aspect LoggingAspect { pointcut loggedmethods(shoppingcart shoppingcart): this(shoppingcart) && (execution(void ShoppingCart.*(..))); before(shoppingcart shoppingcart): loggedmethods(shoppingcart) {... after the aspect is extracted, with its fields, methods and advices, and properly named, you could separate some features, such as the pointcut definition, from the implementation, using abstract pointcuts and abstract aspects, in order to increase reusability, flexibility and readability. PULL UP ADVICE/POINTCUT Figure 10: Pull Up Advice/Pointcut An aspect have functionalities that could be used or are effectively being used by several related aspects. Move these functionalities to a super-aspect.

12 Motivation Code duplication is one of the responsible for the high costs on maintainability. The use of inheritance could help on avoiding code duplication. Mechanisms Inspect the pointcut/advice to ensure that they are identical Create a new pointcut in the super-aspect with the same signature of those in the sub-aspects and declare it to be abstract. Create a new advice in the super-aspect and copy the body of the old advice to the advice defined in the super-class Remove the old advice Compile and test. Example After PULL UP ADVICE/POINTCUT, we have: abstract aspect AbstractLoggingAspect { abstract pointcut loggedmethods(shoppingcart shoppingcart); before(shoppingcart shoppingcart): loggedmethods(shoppingcart) { public aspect LoggingAspect extends AbstractLoggingAspect { pointcut loggedmethods(shoppingcart shoppingcart): this(shoppingcart) && (execution(void ShoppingCart.*(..)));... sometimes, separating features throughout aspects hierarchy is not good. In this case, the opposite process can be performed using COLLAPSE ASPECT HIERARCHY. COLLAPSE ASPECT HIERARCHY Figure 11: Collapse Aspect Hierarchy You have an aspect and a super-aspect that are quite similar, or the cost of having a super-aspect is dubious. Merge the aspect and its super-aspect together

13 Motivation To separate features into aspects and super-aspects is useful when you want to make these features available to other aspects. However, this separation has a cost, either in readability and maintainability, since there are two modular units to be considered: the super-aspect and the sub-aspect. If these costs are not compensated by gains in reusability, such as when a single sub-aspect reuses the features in a super-aspect, it is better if these features are grouped into a single modular unit. Mechanisms Choose which aspect is going to be removed: the aspect or its super-aspect Use PULL UP ADVICE/POINTCUT, PULL UP METHOD and PULL UP FIELD or PUSH DOWN ADVICE/POINTCUT (those are not described here), PUSH DOWN METHOD and PUSH DOWN FIELD Compile and test in each PUSH/PULL operation Modify references to the class that will be removed to use the merged aspect. This affects variable declarations, parameters and constructors. Remove the empty aspect Compile and test After COLLAPSE ASPECT HIERARCHY, we have: public aspect LoggingAspect { pointcut loggedmethods(shoppingcart shoppingcart):this(shoppingcart) && (execution(void ShoppingCart.*(..))); before(shoppingcart shoppingcart): loggedmethods(shoppingcart) {... after collapsing the aspect hierarchy, we could realize that the advice is just as clear as the related pointcut s name. So, to provide a meaningful name, apply INLINE POINT- CUT DEFINITION. INLINE POINTCUT DEFINITION Figure 12: Inline Pointcut Definition Sometimes, a pointcut is used into one advice only and its quite obvious. There is no reason to separate the pointcut definition from the advice. Motivation Put the predicate containing the affected join-points in the advice definition To maintain a pointcut definition that is used by a single advice results in unnecessary extra code. This reduces the readability and maintainability.

14 Mechanisms Check if the pointcut/advice is not overridden in the sub-classes and it is not abstract Find all references to the pointcut Replace the references with the pointcut definition Remove the pointcut predicate and make the pointcut abstract Compile and test Remove the pointcut Example After INLINE POINTCUT DEFINITION, we have: public aspect Foo { before(shoppingcart shoppingcart): this(shoppingcart) && (execution(void ShoppingCart.*(..))) { System.out.println("LOG:"+shoppingcart.getClass().getName()); Acknowledgements We shall not forget to thanks Jim Coplien. He made an outstanding work, guiding us and making us understand what patterns are really about. References Fowler, M., Beck, K., Brant, J., Opdyke, W., and Roberts, D. (1999). Refactoring: improving the design of existing code. Object Technology Series. Addison-Wesley. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., and Irwin, J. (1997). Aspect-Oriented Programming. In Proceedings of the 11st European Conference Object-Oriented Programming (ECOOP 97), volume 1241 of LNCS, pages Springer Verlag.

Using Aspects to Make Adaptive Object-Models Adaptable

Using Aspects to Make Adaptive Object-Models Adaptable Using Aspects to Make Adaptive Object-Models Adaptable Ayla Dantas 1, Joseph Yoder 2, Paulo Borba 1, Ralph Johnson 2 1 Software Productivity Group Informatics Center Federal University of Pernambuco Recife,

More information

Using Aspects to Make Adaptive Object-Models Adaptable

Using Aspects to Make Adaptive Object-Models Adaptable Using Aspects to Make Adaptive Object-Models Adaptable Ayla Dantas 1, Joseph Yoder 2, Paulo Borba, and Ralph Johnson 1 Software Productivity Group Informatics Center Federal University of Pernambuco Recife,

More information

Applying Aspect Oriented Programming on Security

Applying Aspect Oriented Programming on Security Original Article Applying Aspect Oriented Programming on Security Mohammad Khalid Pandit* 1, Azra Nazir 1 and Arutselvan M 2 1 Department of computer Science and engineering, National institute of technology

More information

Extracting and Evolving Mobile Games Product Lines

Extracting and Evolving Mobile Games Product Lines Extracting and Evolving Mobile Games Product Lines Vander Alves, Pedro Matos Jr., Leonardo Cole, Paulo Borba, and Geber Ramalho Informatics Center, Federal University of Pernambuco P.O. Box 7851-50.732-970

More information

Bugdel: An Aspect-Oriented Debugging System

Bugdel: An Aspect-Oriented Debugging System Bugdel: An Aspect-Oriented Debugging System Yoshiyuki Usui and Shigeru Chiba Dept. of Mathematical and Computing Sciences Tokyo Institute of Technology 2-12-1-W8-50 Ohkayama, Meguro-ku Tokyo 152-8552,

More information

AOP Tutorial. Written By: Muhammad Asif. Department of Computer Science, Virtual University of Pakistan

AOP Tutorial. Written By: Muhammad Asif. Department of Computer Science, Virtual University of Pakistan AOP Tutorial Written By: Muhammad Asif. Department of Computer Science, Virtual University of Pakistan Table of Contents 1.0 INTRODUCTION... 3 2.0 SCOPE AND OBJECTIVE... 4 3.0 MOTIVATION... 5 4.0 HISTORY...

More information

Analyzing effect of Aspect Oriented concepts in design and implementation of design patterns with case study of Observer Pattern

Analyzing effect of Aspect Oriented concepts in design and implementation of design patterns with case study of Observer Pattern Analyzing effect of Aspect Oriented concepts in design and implementation of design patterns with case study of Observer Pattern Deepali A. Bhanage 1, Sachin D. Babar 2 Sinhgad Institute of Technology,

More information

On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics

On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics Jean-Yves Guyomarc h and Yann-Gaël Guéhéneuc GEODES - Group of Open and Distributed Systems, Experimental Software Engineering Department

More information

A Unit Testing Framework for Aspects without Weaving

A Unit Testing Framework for Aspects without Weaving A Unit Testing Framework for Aspects without Weaving Yudai Yamazaki l01104@sic.shibaura-it.ac.jp Kouhei Sakurai sakurai@komiya.ise.shibaura-it.ac.jp Saeko Matsuura matsuura@se.shibaura-it.ac.jp Hidehiko

More information

Sort-based Refactoring of Crosscutting Concerns to Aspects

Sort-based Refactoring of Crosscutting Concerns to Aspects Sort-based Refactoring of Crosscutting Concerns to Aspects Robin van der Rijst Delft University of Technology rvdrijst@gmail.com Marius Marin Accenture Marius.Marin@accenture.com Arie van Deursen Delft

More information

APPLYING OBJECT-ORIENTATION AND ASPECT-ORIENTATION IN TEACHING DOMAIN-SPECIFIC LANGUAGE IMPLEMENTATION *

APPLYING OBJECT-ORIENTATION AND ASPECT-ORIENTATION IN TEACHING DOMAIN-SPECIFIC LANGUAGE IMPLEMENTATION * APPLYING OBJECT-ORIENTATION AND ASPECT-ORIENTATION IN TEACHING DOMAIN-SPECIFIC LANGUAGE IMPLEMENTATION * Xiaoqing Wu, Barrett Bryant and Jeff Gray Department of Computer and Information Sciences The University

More information

SERG. Sort-based Refactoring of Crosscutting Concerns to Aspects

SERG. Sort-based Refactoring of Crosscutting Concerns to Aspects Delft University of Technology Software Engineering Research Group Technical Report Series Sort-based Refactoring of Crosscutting Concerns to Aspects Robin van der Rijst, Marius Marin, and Arie van Deursen

More information

Improving Software Modularity using AOP

Improving Software Modularity using AOP B Vasundhara 1 & KV Chalapati Rao 2 1 Dept. of Computer Science, AMS School of Informatics, Hyderabad, India 2 CVR College of Engineering, Ibrahimpatnam, India E-mail : vasu_venki@yahoo.com 1, chalapatiraokv@gmail.com

More information

Implementing Producers/Consumers Problem Using Aspect-Oriented Framework

Implementing Producers/Consumers Problem Using Aspect-Oriented Framework Implementing Producers/Consumers Problem Using Aspect-Oriented Framework 1 Computer Science Department School of Science Bangkok University Bangkok, Thailand netipan@iit.edu Paniti Netinant 1, 2 and Tzilla

More information

International Association of Scientific Innovation and Research (IASIR) (An Association Unifying the Sciences, Engineering, and Applied Research)

International Association of Scientific Innovation and Research (IASIR) (An Association Unifying the Sciences, Engineering, and Applied Research) International Association of Scientific Innovation and Research (IASIR) (An Association Unifying the Sciences, Engineering, and Applied Research) ISSN (Print): 2279-0047 ISSN (Online): 2279-0055 International

More information

Refactoring of Aspect-Oriented Software

Refactoring of Aspect-Oriented Software Refactoring of Aspect-Oriented Software Stefan Hanenberg, Christian Oberschulte, Rainer Unland University of Duisburg-Essen, Institute for Computer Science and Business Information Systems (ICB) 45127

More information

Early Aspects Refactoring

Early Aspects Refactoring Early Aspects Refactoring Ricardo A. Ramos 1, Jaelson Castro 1, João Araújo 2, Ana Moreira 2, Fernanda Alencar 1 and Rosangela Penteado 3 1 Centro de Informática - Universidade Federal de Pernambuco (UFPE)

More information

Dynamic Weaving for Building Reconfigurable Software Systems

Dynamic Weaving for Building Reconfigurable Software Systems Dynamic Weaving for Building Reconfigurable Software Systems FAISAL AKKAWI Akkawi@cs.iit.edu Computer Science Dept. Illinois Institute of Technology Chicago, IL 60616 ATEF BADER abader@lucent.com Lucent

More information

Pattern Transformation for Two-Dimensional Separation of Concerns

Pattern Transformation for Two-Dimensional Separation of Concerns Transformation for Two-Dimensional Separation of Concerns Xiaoqing Wu, Barrett R. Bryant and Jeff Gray Department of Computer and Information Sciences The University of Alabama at Birmingham Birmingham,

More information

University of Huddersfield Repository

University of Huddersfield Repository University of Huddersfield Repository Ghareb, Mazen and Allen, Gary Improving the Design and Implementation of Software Systems uses Aspect Oriented Programming Original Citation Ghareb, Mazen and Allen,

More information

An Aspect-Based Approach to Modeling Security Concerns

An Aspect-Based Approach to Modeling Security Concerns An Aspect-Based Approach to Modeling Security Concerns Geri Georg Agilent Laboratories, Agilent Technologies, Fort Collins, USA geri_georg@agilent.com Robert France, Indrakshi Ray Department of Computer

More information

RUP Based Analysis and Design with Aspects

RUP Based Analysis and Design with Aspects RUP Based Analysis and Design with Aspects Leonardo Cole 1*, Eduardo Kessler Piveta 2, Augusto Sampaio 1 1 Centro de Informática, Universidade Federal de Pernambuco, Av. Prof. Luiz Freire S/N, Recife PE,

More information

Prototype Environment for Refactoring Clean Programs

Prototype Environment for Refactoring Clean Programs Prototype Environment for Refactoring Clean Programs Extended abstract Rozália Szabó-Nacsa, Péter Diviánszky, Zoltán Horváth Department of Software Technology and Methodology, Eötvös Loránd University,

More information

Aspect Design Pattern for Non Functional Requirements

Aspect Design Pattern for Non Functional Requirements Aspect Design Pattern for Non Functional Requirements FAZAL-E-AMIN¹, ANSAR SIDDIQ², HAFIZ FAROOQ AHMAD³ ¹ ²International Islamic University Islamabad, Pakistan ³NUST Institute of Information Technology,

More information

Assertion with Aspect

Assertion with Aspect Assertion with Aspect Takashi Ishio, Toshihiro Kamiya, Shinji Kusumoto, Katsuro Inoue Graduate School of Engineering Science, PRESTO, Japan Science and Technology Agency Osaka University 1-3 Machikaneyama-cho,

More information

AspectC2C: a Symmetric Aspect Extension to the C Language

AspectC2C: a Symmetric Aspect Extension to the C Language AspectC2C: a Symmetric Aspect Extension to the C Language Danfeng Zhang, Yao Guo, Xiangqun Chen Key laboratory of High Confidence Software Technologies, Ministry of Education Institute of Software, School

More information

HOW AND WHEN TO FLATTEN JAVA CLASSES?

HOW AND WHEN TO FLATTEN JAVA CLASSES? HOW AND WHEN TO FLATTEN JAVA CLASSES? Jehad Al Dallal Department of Information Science, P.O. Box 5969, Safat 13060, Kuwait ABSTRACT Improving modularity and reusability are two key objectives in object-oriented

More information

Modeling Aspects using Software Stability and UML

Modeling Aspects using Software Stability and UML Modeling Aspects using Software Stability and UML M.E. Fayad Computer Engineering Department San Jose State University One Washington Square San Jose, CA 9592-080 Ph: 408-924-7364 Fax: 408-924-453 Email:

More information

Understading Refactorings

Understading Refactorings Understading Refactorings Ricardo Terra terra@dcc.ufmg.br Marco Túlio Valente mtov@dcc.ufmg.br UFMG, 2010 UFMG, 2010 Understanding Refactorings 1 / 36 Agenda 1 Overview 2 Refactoring 3 Final Considerations

More information

Idioms for Building Software Frameworks in AspectJ

Idioms for Building Software Frameworks in AspectJ Idioms for Building Software Frameworks in AspectJ Stefan Hanenberg 1 and Arno Schmidmeier 2 1 Institute for Computer Science University of Essen, 45117 Essen, Germany shanenbe@cs.uni-essen.de 2 AspectSoft,

More information

Aspect-Orientation from Design to Code

Aspect-Orientation from Design to Code Aspect-Orientation from Design to Code Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany groher@informatik.tu-darmstadt.de Thomas Baumgarth Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739

More information

A Proposal For Classifying Tangled Code

A Proposal For Classifying Tangled Code A Proposal For Classifying Tangled Code Stefan Hanenberg and Rainer Unland Institute for Computer Science University of Essen, 45117 Essen, Germany {shanenbe, unlandr@csuni-essende Abstract A lot of different

More information

Composition Graphs: a Foundation for Reasoning about Aspect-Oriented Composition

Composition Graphs: a Foundation for Reasoning about Aspect-Oriented Composition s: a Foundation for Reasoning about Aspect-Oriented - Position Paper - István Nagy Mehmet Aksit Lodewijk Bergmans TRESE Software Engineering group, Faculty of Computer Science, University of Twente P.O.

More information

Designing Aspect-Oriented Crosscutting in UML

Designing Aspect-Oriented Crosscutting in UML Designing Aspect-Oriented Crosscutting in UML Dominik Stein, Stefan Hanenberg, and Rainer Unland Institute for Computer Science University of Essen, Germany {dstein shanenbe unlandr}@cs.uni-essen.de ABSTRACT

More information

Martin P. Robillard and Gail C. Murphy. University of British Columbia. November, 1999

Martin P. Robillard and Gail C. Murphy. University of British Columbia. November, 1999 Migrating a Static Analysis Tool to AspectJ TM Martin P. Robillard and Gail C. Murphy Department of Computer Science University of British Columbia 201-2366 Main Mall Vancouver BC Canada V6T 1Z4 fmrobilla,murphyg@cs.ubc.ca

More information

An Analysis of Aspect Composition Problems

An Analysis of Aspect Composition Problems An Analysis of Aspect Composition Problems Wilke Havinga havingaw@cs.utwente.nl Istvan Nagy nagyist@cs.utwente.nl TRESE/Software Engineering group University of Twente, The Netherlands Lodewijk Bergmans

More information

Analysis and Research on the Automated Generation of Unit Test

Analysis and Research on the Automated Generation of Unit Test 1+, 1 1, 1 (, 200062) Analysis and Research on the Automated Generation of Unit Test XU Guo-qing 1+, YANG Zong-yuan 1, HUANG Hai-tao 1 1 (Software Engineering Lab, Department of Computer Science, East

More information

Assessing Aspect-Oriented Artifacts: Towards a Tool-Supported Quantitative Method

Assessing Aspect-Oriented Artifacts: Towards a Tool-Supported Quantitative Method Assessing Aspect-Oriented Artifacts: Towards a Tool-Supported Quantitative Method Eduardo Figueiredo 1, Alessandro Garcia 2, Cláudio Sant Anna 1, Uirá Kulesza 1, Carlos Lucena 1 1 PUC-Rio, Computer Science

More information

Assessing Aspect-Oriented Artifacts: Towards a Tool-Supported Quantitative Method

Assessing Aspect-Oriented Artifacts: Towards a Tool-Supported Quantitative Method Assessing Aspect-Oriented Artifacts: Towards a Tool-Supported Quantitative Method Eduardo Figueiredo 1, Alessandro Garcia 2, Cláudio Sant Anna 1, Uirá Kulesza 1, Carlos Lucena 1 1 PUC-Rio, Computer Science

More information

Refactoring via Database Representation

Refactoring via Database Representation 6 th International Conference on Applied Informatics Eger, Hungary, January 27 31, 2004. Refactoring via Database Representation Péter Diviánszky 1, Rozália Szabó-Nacsa 2, Zoltán Horváth 1 1 Department

More information

Course 6 7 November Adrian Iftene

Course 6 7 November Adrian Iftene Course 6 7 November 2016 Adrian Iftene adiftene@info.uaic.ro 1 Recapitulation course 5 BPMN AOP AOP Cross cutting concerns pointcuts advice AspectJ Examples In C#: NKalore 2 BPMN Elements Examples AOP

More information

Refactoring Aspect Oriented Software

Refactoring Aspect Oriented Software Refactoring Aspect Oriented Software Jochem Rutgers rutgers@ewi.utwente.nl ABSTRACT Existing refactoring methods are able to rewrite object-oriented code to better object-oriented code or to aspect-oriented

More information

A Query-Based Approach for the Analysis of Aspect-Oriented Systems by

A Query-Based Approach for the Analysis of Aspect-Oriented Systems by A Query-Based Approach for the Analysis of Aspect-Oriented Systems by Eduardo Salomão Barrenechea A thesis presented to the University of Waterloo in fulfillment of the thesis requirement for the degree

More information

Software Service Engineering

Software Service Engineering Software Service Engineering Lecture 4: Unified Modeling Language Doctor Guangyu Gao Some contents and notes selected from Fowler, M. UML Distilled, 3rd edition. Addison-Wesley Unified Modeling Language

More information

Multi-Dimensional Separation of Concerns and IBM Hyper/J

Multi-Dimensional Separation of Concerns and IBM Hyper/J Multi-Dimensional Separation of Concerns and IBM Hyper/J Technical Research Report Barry R. Pekilis Bell Canada Software Reliability Laboratory Electrical and Computer Engineering University of Waterloo

More information

Aspect-Oriented Programming and AspectJ

Aspect-Oriented Programming and AspectJ What is Aspect-Oriented Programming? Many possible answers: a fad Aspect-Oriented Programming and AspectJ Aspect-oriented programming is a common buzzword lately Papers from ECOOP 1997 (early overview

More information

McCa!"s Triangle of Quality

McCa!s Triangle of Quality McCa!"s Triangle of Quality Maintainability Portability Flexibility Reusability Testability Interoperability PRODUCT REVISION PRODUCT TRANSITION PRODUCT OPERATION Correctness Usability Reliability Efficiency

More information

Untangling: A Slice Extraction Refactoring

Untangling: A Slice Extraction Refactoring Untangling: A Slice Extraction Refactoring Ran Ettinger and Mathieu Verbaere Programming Tools Group Computing Laboratory University of Oxford Thanks to our supervisor Oege de Moor Supported by an Eclipse

More information

Analysis of the Test Driven Development by Example

Analysis of the Test Driven Development by Example Computer Science and Applications 1 (2013) 5-13 Aleksandar Bulajic and Radoslav Stojic The Faculty of Information Technology, Metropolitan University, Belgrade, 11000, Serbia Received: June 18, 2013 /

More information

Language Oriented Modularity: From Theory to Practice

Language Oriented Modularity: From Theory to Practice Language Oriented Modularity: From Theory to Practice Arik Hadas Dept. of Mathematics and Computer Science The Open University of Israel Joint Work With: David H. Lorenz Language Oriented Modularity (LOM)

More information

Introduction to. Bruno Harbulot. ESNW, the University of Manchester.

Introduction to. Bruno Harbulot. ESNW, the University of Manchester. Introduction to Aspect-Oriented Software Development Bruno Harbulot ESNW, the University of Manchester http://www.cs.man.ac.uk/~harbulob/ ELF Developers' Forum Manchester - October 2005 1/24 Presentation

More information

void printowing(double amount) { printbanner(); printdetails(); void printdetails(double amount) {

void printowing(double amount) { printbanner(); printdetails(); void printdetails(double amount) { Refactoring References: Martin Fowler, Refactoring: Improving the Design of Existing Code; ; Bruce Wampler, The Essence of Object-Oriented Oriented Programming with Java and UML A recent OO technique that

More information

UML4COP: UML-based DSML for Context-Aware Systems

UML4COP: UML-based DSML for Context-Aware Systems UML4COP: UML-based DSML for Context-Aware Systems Naoyasu Ubayashi Kyushu University ubayashi@acm.org Yasutaka Kamei Kyushu University kamei@ait.kyushu-u.ac.jp Abstract Context-awareness plays an important

More information

Dynamic Instantiation-Checking Components

Dynamic Instantiation-Checking Components Dynamic Instantiation-Checking Components Nigamanth Sridhar Electrical and Computer Engineering Cleveland State University 318 Stilwell Hall, 2121 Euclid Ave Cleveland OH 44113 n.sridhar1@csuohio.edu ABSTRACT

More information

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz Results obtained by researchers in the aspect-oriented programming are promoting the aim to export these ideas to whole software development

More information

Demo Proposal. 1 General Information

Demo Proposal. 1 General Information Demo Proposal 1 General Information Demostration title: FLiP Product Line Derivation Tool Type of demonstration : Forum Contact person: Paulo Borba, phmb@cin.ufpe.br, Informatics Center UFPE, Universidade

More information

Understanding Design Pattern Density with Aspects

Understanding Design Pattern Density with Aspects Understanding Design Pattern Density with Aspects A Case Study in JHotDraw with AspectJ Simon Denier, Pierre Cointe OBASCO Project École des Mines de Nantes / INRIA ETAPS SC 2006 1 What is Pattern Density?

More information

AOP Framed! Informatics Center Federal University of Pernambuco

AOP Framed! Informatics Center Federal University of Pernambuco AOP Framed! Henrique Rebêlo Informatics Center Federal University of Pernambuco Henrique Rebêlo 2009 Contacting Me Ph.D. student Henrique Rebêlo Specialist on AOSD, DbC, Static Metrics, JML Software Architecture,

More information

A Brief Introduction to Aspect-Oriented Programming. Historical View Of Languages. Procedural language Functional language Object-Oriented language

A Brief Introduction to Aspect-Oriented Programming. Historical View Of Languages. Procedural language Functional language Object-Oriented language A Brief Introduction to Aspect-Oriented Programming Historical View Of Languages Procedural language Functional language Object-Oriented language 1 Acknowledgements Zhenxiao Yang Gregor Kiczales Procedural

More information

Aspect Refactoring Verifier

Aspect Refactoring Verifier Aspect Refactoring Verifier Charles Zhang and Julie Waterhouse Hans-Arno Jacobsen Centers for Advanced Studies Department of Electrical and IBM Toronto Lab Computer Engineering juliew@ca.ibm.com and Department

More information

A Brief Introduction to Aspect-Oriented Programming" Historical View Of Languages"

A Brief Introduction to Aspect-Oriented Programming Historical View Of Languages A Brief Introduction to Aspect-Oriented Programming" Historical View Of Languages" Procedural language" Functional language" Object-Oriented language" 1 Acknowledgements" Zhenxiao Yang" Gregor Kiczales"

More information

Separation of Concerns

Separation of Concerns Separation of Concerns Erik Ernst Dept. of Computer Science, University of Aarhus, Denmark eernst@daimi.au.dk Abstract. Separation of concerns is a crucial concept in discussions about software engineering

More information

Towards Regression Test Selection for AspectJ Programs

Towards Regression Test Selection for AspectJ Programs Towards Regression Test Selection for AspectJ Programs Jianjun Zhao Department of Computer Science and Engineering Shanghai Jiao Tong University 800 Dongchuan Road, Shanghai 200240, China zhao-jj@cs.sjtu.edu.cn

More information

Information Hiding and Aspect-Oriented Modeling

Information Hiding and Aspect-Oriented Modeling Information Hiding and Aspect-Oriented Modeling Wisam Al Abed and Jörg Kienzle School of Computer Science, McGill University Montreal, QC H3A2A7, Canada Wisam.Alabed@mail.mcgill.ca, Joerg.Kienzle@mcgill.ca

More information

On Aspect-Oriented Technology and Object-Oriented Design Patterns

On Aspect-Oriented Technology and Object-Oriented Design Patterns On Aspect-Oriented Technology and Object-Oriented Design Patterns Ouafa Hachani and Daniel Bardou Equipe SIGMA, LSR-IMAG BP 72 38402 Saint Martin d Hères Cedex, France {Ouafa.Hachani, Daniel.Bardou}@imag.fr

More information

Analysing the navigational aspect

Analysing the navigational aspect A. M. Reina Dpto. Lenguajes y Sistemas Informáticos Universidad de Sevilla. e-mail: reinaqu@lsi.us.es Analysing the navigational aspect J. Torres Dpto. Lenguajes y Sistemas Informáticos Universidad de

More information

Aspect-Oriented Programming

Aspect-Oriented Programming Aspect-Oriented Programming Based on the Example of AspectJ Prof. Harald Gall University of Zurich, Switzerland software evolution & architecture lab AOP is kind of a complicated one for me ( ) the idea

More information

Dynamic Weaving for Building Reconfigurable Software Systems

Dynamic Weaving for Building Reconfigurable Software Systems Dynamic Weaving for Building Reconfigurable Software Systems JAGDISH LAKHANI lakhjag@iitedu Computer Science Dept Illinois Institute of Technology Chicago, IL 60616 FAISAL AKKAWI akkawif@iitedu Computer

More information

Aspect-Oriented Programming and Aspect-J

Aspect-Oriented Programming and Aspect-J Aspect-Oriented Programming and Aspect-J TDDD05 Ola Leifer Most slides courtesy of Jens Gustafsson and Mikhail Chalabine Outline: Aspect-Oriented Programming New concepts introduced Crosscutting concern

More information

Aspect Oriented Programming for a component-based real life application: A case study

Aspect Oriented Programming for a component-based real life application: A case study 2004 ACM Symposium on Applied Computing Aspect Oriented Programming for a component-based real life application: A case study Odysseas Papapetrou and George A. Papadopoulos Department of Computer Science

More information

A Novel Approach to Unit Testing: The Aspect-Oriented Way

A Novel Approach to Unit Testing: The Aspect-Oriented Way A Novel Approach to Unit Testing: The Aspect-Oriented Way Guoqing Xu and Zongyuan Yang Software Engineering Lab, Department of Computer Science East China Normal University 3663, North Zhongshan Rd., Shanghai

More information

Evolvable Pattern Implementations need Generic Aspects

Evolvable Pattern Implementations need Generic Aspects Evolvable Pattern Implementations need Generic Aspects Günter Kniesel, Tobias Rho Dept. of Computer Science III, University of Bonn Römerstr. 164, D-53117 Bonn, Germany gk,rho@cs.uni-bonn.de Stefan Hanenberg

More information

A Basis for AspectJ Refactoring

A Basis for AspectJ Refactoring A Basis for AspectJ Refactoring Shimon Rura and Barbara Lerner Williams College, Computer Science Department Williamstown, MA 01267 USA srura@wso.williams.edu, lerner@cs.williams.edu Abstract. Refactorings

More information

Programming AspectJ with Eclipse and AJDT, By Example. Chien-Tsun Chen Sep. 21, 2003

Programming AspectJ with Eclipse and AJDT, By Example. Chien-Tsun Chen Sep. 21, 2003 Programming AspectJ with Eclipse and AJDT, By Example Chien-Tsun Chen Sep. 21, 2003 ctchen@ctchen.idv.tw References R. Laddad, I want my AOP!, Part 1-Part3, JavaWorld, 2002. R. Laddad, AspectJ in Action,

More information

Aspect-Oriented Generation of the API Documentation for AspectJ

Aspect-Oriented Generation of the API Documentation for AspectJ Aspect-Oriented Generation of the API Documentation for AspectJ Michihiro Horie Tokyo Institute of Technology 2-12-1 Ohkayama, Meguro-ku, Tokyo 152-8552, Japan www.csg.is.titech.ac.jp/ horie Shigeru Chiba

More information

Static rules of variable scoping in Erlang

Static rules of variable scoping in Erlang Proceedings of the 7 th International Conference on Applied Informatics Eger, Hungary, January 28 31, 2007. Vol. 2. pp. 137 145. Static rules of variable scoping in Erlang László Lövei, Zoltán Horváth,

More information

Modularizing Web Services Management with AOP

Modularizing Web Services Management with AOP Modularizing Web Services Management with AOP María Agustina Cibrán, Bart Verheecke { Maria.Cibran, Bart.Verheecke@vub.ac.be System and Software Engineering Lab Vrije Universiteit Brussel 1. Introduction

More information

Aspect-Oriented Programming On Lisp

Aspect-Oriented Programming On Lisp 6 th International Conference on Applied Informatics Eger, Hungary, January 27 31, 2004. Aspect-Oriented Programming On Lisp Miklós Espák Department of Information Technology, University of Debrecen e-mail:

More information

UML-AOF: A Profile for Modeling Aspect-Oriented Frameworks

UML-AOF: A Profile for Modeling Aspect-Oriented Frameworks UML-AOF: A Profile for Modeling Aspect-Oriented Frameworks José Uetanabara Júnior¹ Centro Universitário Eurípedes de Marília - Univem Marília, São Paulo, Brasil CEP 17.525-901 miklotovx@gmail.com Valter

More information

Chapter 7. Modular Refactoring. 7.1 Introduction to Modular Refactoring

Chapter 7. Modular Refactoring. 7.1 Introduction to Modular Refactoring Chapter 7 Modular Refactoring I n this chapter, the role of Unified Modeling Language (UML) diagrams and Object Constraint Language (OCL) expressions in modular refactoring have been explained. It has

More information

Debugging Support for Aspect-Oriented Program Based on Program Slicing and Call Graph

Debugging Support for Aspect-Oriented Program Based on Program Slicing and Call Graph Debugging Support for Aspect-Oriented Program Based on Program Slicing and Call Graph Takashi Ishio, Shinji Kusumoto, Katsuro Inoue Graduate School of Information Science and Technology, Osaka University

More information

Refactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion

Refactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion Refactorings Refactoring What is it? Why is it necessary? Examples Tool support Refactoring Strategy Code Smells Examples of Cure Demonstration: Refactoring and Reverse Engineering Refactor to Understand

More information

PIP: Progressive Implementation Pattern

PIP: Progressive Implementation Pattern PIP: Progressive Implementation Pattern Sérgio Soares and Paulo Borba Informatics Center Federal University of Pernambuco Intent Tame complexity and improve development productivity. Reduce the impact

More information

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

Integration of Application Business Logic and Business Rules with DSL and AOP Integration of Application Business Logic and Business Rules with DSL and AOP Bogumiła Hnatkowska and Krzysztof Kasprzyk Wroclaw University of Technology, Wyb. Wyspianskiego 27 50-370 Wroclaw, Poland Bogumila.Hnatkowska@pwr.wroc.pl

More information

Patterns in Software Engineering

Patterns in Software Engineering Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 10 Refactoring Patterns Part 1 1 Refactoring: Definition Refactoring: A change made to the internal structure of software to make it easier

More information

Small changes to code to improve it

Small changes to code to improve it Small changes to code to improve it 1 Refactoring Defined A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior

More information

Extending UML to Improve the Representation of Design Patterns

Extending UML to Improve the Representation of Design Patterns Extending UML to Improve the Representation of Design Patterns Marcus Fontoura and Carlos Lucena Software Engineering Laboratory (LES) Computer Science Department, Pontifical Catholic University of Rio

More information

Aspect Oriented Programming

Aspect Oriented Programming Aspect Oriented Programming Jaclyn hang, Hai Huo, Kolton Lehmann, Jeremy Nauta, Henry Rosvick, uong Truong Introduction Objectives ompare Aspect Oriented Programming (AOP) with Object Oriented Programming

More information

extrinsic members RoleB RoleA

extrinsic members RoleB RoleA ASPECT- ORIENTED PROGRAMMING FOR ROLE MODELS Elizabeth A. Kendall Department of Computer Science, Royal Melbourne Institute of Technology GPO Box 2476V, Melbourne, VIC 3001, AUSTRALIA email: kendall@rmit.edu.au

More information

Towards a formal model of object-oriented hyperslices

Towards a formal model of object-oriented hyperslices Towards a formal model of object-oriented hyperslices Torsten Nelson, Donald Cowan, Paulo Alencar Computer Systems Group, University of Waterloo {torsten,dcowan,alencar}@csg.uwaterloo.ca Abstract This

More information

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture Credit where Credit is Due Lecture 25: Refactoring Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2002 Some of the material for this lecture and lecture 26 is taken

More information

AspectC++ A Language Overview

AspectC++ A Language Overview AspectC++ A Language Overview c 2005 Olaf Spinczyk Friedrich-Alexander University Erlangen-Nuremberg Computer Science 4 May 20, 2005 This is an overview about the AspectC++ language, an

More information

Core Assets Development in Software Product Lines - Towards a Practical Approach for the Mobile Game Domain

Core Assets Development in Software Product Lines - Towards a Practical Approach for the Mobile Game Domain Core Assets Development in Software Product Lines - Towards a Practical Approach for the Mobile Game Domain Leandro Marques do Nascimento 1,2, Eduardo Santana de Almeida 1,3, Silvio Romero de Lemos Meira

More information

Compile Time and Runtime Reflection for Dynamic Evaluation of Messages : Application to Interactions between Remote Objects

Compile Time and Runtime Reflection for Dynamic Evaluation of Messages : Application to Interactions between Remote Objects Compile Time and Runtime Reflection for Dynamic Evaluation of Messages : Application to Interactions between Remote Objects Laurent Berger I3S - CNRS UPRESA 6070 - Bât ESSI 930 Rte des Colles - BP 145

More information

CScheme in Traditional Concurrency Problems

CScheme in Traditional Concurrency Problems CScheme in Traditional Concurrency Problems Nathar Shah and Visham Cheerkoot Abstract CScheme, a concurrent programming paradigm based on scheme concept enables concurrency schemes to be constructed from

More information

Chapitre 6 Programmation orientée aspect (AOP)

Chapitre 6 Programmation orientée aspect (AOP) 6 Programmation orientée aspect (AOP) 2I1AC3 : Génie logiciel et Patrons de conception Régis Clouard, ENSICAEN - GREYC «L'homme est le meilleur ordinateur que l'on puisse embarquer dans un engin spatial...

More information

Learning from Components: Fitting AOP for System Software

Learning from Components: Fitting AOP for System Software Learning from Components: Fitting AOP for System Software Andreas Gal, Michael Franz Department of Computer Science University of California, Irvine Irvine, CA 92697-3425, USA {gal,franz@uci.edu Danilo

More information

Aspect Oriented Java RMI Server

Aspect Oriented Java RMI Server Aspect Oriented Java RMI Server Inderjit Singh Dhanoa BIS College of Engineering & Tech., Moga inderp10@yahoo.co.in Er.Dalwinder Singh Salaria Lovely Professional University ds_salaria@yahoo.co.in ABSTRACT

More information

Copyright IBM Corporation 2004.All rights reserved.

Copyright IBM Corporation 2004.All rights reserved. Copyright IBM Corporation 2004.All rights reserved. http://www-106.ibm.com/developerworks/rational/library/2782.html Search help A look at aspect-oriented programming Gary Pollice Worcester Polytechnic

More information

Refactoring. Section (JIA s) OTHER SOURCES

Refactoring. Section (JIA s) OTHER SOURCES Refactoring Section 7.2.1 (JIA s) OTHER SOURCES Code Evolution Programs evolve and code is NOT STATIC Code duplication Outdated knowledge (now you know more) Rethink earlier decisions and rework portions

More information