Semi-automatic Refactoring to Aspect-oriented Platform

Size: px
Start display at page:

Download "Semi-automatic Refactoring to Aspect-oriented Platform"

Transcription

1 Semi-automatic Refactoring to Aspect-oriented Platform Pipík Roman, Ivan Polášek Faculty of Informatics and Information Technology, Slovak University of Technology in Bratislava, Slovakia Refactoring is necessary in large software projects and an aspect-oriented approach can help to maintain concerns in the source code. While tools for object-oriented refactoring are the usual part of development environments, support for aspect-oriented refactoring is minimal. We analyzed objectoriented bad smells applicable for an aspect-oriented approach and propose a method for the detection of crosscutting concerns and consecutive refactoring. I. INTRODUCTION An Aspect-oriented (AO) approach in refactoring can provide better results than an object-oriented (OO) approach due to its centralization of concern behavior. Concerns become separate units to the original code and they are bounded only through the information provided in the aspect. In object-oriented refactoring, concerns can be separated in the form of class but require hardwired binding (through method invocations) at all points of the application of the concern. Current projects are mostly created with OO approach. To provide semi-automatic refactoring from OO to AO platform we have to detect aspects from the code to support their future automated extractions. For this purpose we analyzed bad smells in OO code that can be extracted into an AO program. II. RELATED WORKS A. Manual refactoring Laddad [1] describes specifics of AO refactoring and the aspect effects to concerned parts of a program (method, class, package) through lexical pointcuts within() and withincode(). Binding between aspects and classes should be minimized. Aspect should not use private parts of the classes if not necessary. Refactored aspects should be placed close to affected classes. Aspects should be defined in same source file or package as affected classes. Monteiro [2] analyzed the process of refactoring OO code into AO paradigm and defines the list of transformations required for refactoring. Monteiro describes transformations with a typical situation, recommended action, motivation and mechanism of the transformation. Transformations are used to extract the crosscutting concern, restructure or generalize the aspect. Cole [3] uses a similar approach at a lower level and describes 33 transformations with preconditions. Refactoring of the exception handling is analyzed in [4] and there are some other instructive works [5], [6], [7] in this domain. We have published particular papers about searching smells with the rule based system [22], similarity scoring and bit-vector algorithms [21], about UML model refactoring [20] and tagging information and knowledge in the source code [23] (also about authors, patterns and antipatterns). B. Aspect mining Tonella et al. [9] evaluated approaches to aspect discovery and we summarized it into Table I. Approach Analysis of recurring patterns Formal concept analysis Processing natural language of Detection of unique methods Grouping of related methods Branching analysis Detection of duplicated code Program analysis in time TABLE I. APPROACHES TO ASPECT DISCOVERY Description Evaluates relations between method calls to find common patterns. Repeated patterns can be classified as aspects. Used in DynAMiT [8]. Data mining approach based on finding relations between concepts. Concepts are lexically defined uses naming information to define concept. Used in Dynamo [9] and DelfSTof [10]. Combines formal concept analysis with information from natural language. Uses existing data from natural language concepts to group related concerns in the program. Kellens et al. [11] observe that crosscutting concerns can be implemented as single entities called from different parts of the system. For example logger object representing logging concern. In the beginning every method is in its own group. Evaluates the distance between methods based on metric (name similarity, class) and group methods together. Similar to Formal concept analysis when grouping is based on similar concepts. Marin et al. [12] use metric number of code parts calling method to find scattered concerns Shepherd et al. [13] use a program dependency graph to find duplicated code. Approach is comparable to Analysis of recurring patterns. This approach was not part of Tonellas evaluation. Breu et al. [14] use information of versioning system to find differences between versions. As they describe, one change in the repository often contains crosscutting concern and is realized by calling one method from different parts of code. C. Automatic extraction of aspects Tonella et al. [15] also propose a tool for automatic refactoring as rules in TXL transformation language. The tool should support these rules (refactorings): Extraction of a program at the beginning or end of the method.

2 Extraction of a program used always before or after some called method Extraction of a program with a condition Extraction of a program before a return statement Extraction of an enclosing object III. OUR SOLUTION After analyzing related works we decided to use the detection of duplicated code through a Program dependency graph. This approach requires granularity to manipulate source code for refactoring and it is easy to extract smell into the aspect. Duplicated code is converted into the aspect advice and dependencies are used to construct a point-cut. A. Evaluated bad smells We have evaluated OO bad smells in the code and decided to focus on the smell of Duplicated code and the smell of Double personality. These smells are complementary to each other. Duplicated code can be used to identify scattered concerns in general while Double personality can be used to identify intertwined concerns in general. Thus by refactoring duplicated code we can indirectly solve the additional smells like Long method, Shotgun surgery and the other smells that are caused by scattered concerns. By refactoring double personality we can indirectly solve the additional smells like Long method, Divergent change and the others that are caused by intertwined code. B. Method definition Dependencies can be used in the extraction phase to create required point-cuts. We require the use of Abstract Syntax Tree (AST) to traverse the source code and realize changes in the source code at the level of the statements. A selected approach provides this level of granularity. In the phase of AST initialization we wrap AST provided by the development environment with custom structures. AST and wrapped AST can be traversed through the Visitor pattern. Wrapper structures have the lowest granularity of the statements. C. Finding duplicated code We designed the algorithm based on duplication analysis with the program dependency graph. In the first step we find read and written variables for every local method. This will give us better understanding of dependencies of local methods because local methods can use local values without passing through the method call. Method called on object variable is taken as a read and write operation of the object. In the second step we associate each statement of the program with the value. When every statement has an associated value we use a standard algorithm for finding common sub-trees [16], [17]. Evaluation of the statement contains information associated with the dependencies of the statement. The value of the statement is defined as follows: 1. Value is the array. 2. Array can be concatenated. 3. Each part of an array represents some attribute. For example: value[0] represents a type of statement, value[1] represents the signature of the statement. 4. Value is dependent on the called method names. 5. Value must represent dependencies between the statements and hierarchical dependencies in AST. 6. Value should not depend on variable names. 7. Value should be same for similar statements. For example for and while statements can represent the same logic 8. Value is dependent on the operators in the expressions. In some programming languages, operators are represented as standard methods, so this is similar to the fourth rule. Statement i+=2 and i=i+2 would evaluate into the same value. By evaluating statements we can: Abstract information from the syntax tree. Lower analysis complexity. Enable duplication analysis through overall values. Enable comparing statements by characteristic. In Figure 1 we show the values for the statement, variable and statement dependencies. When the statement dependencies are resolved, we append them to the values. When statement B depends on the code in statement A, we can append the value of statement B to the value of statement A. We call this output (after) dependencies. Appending the value of statement A to the value of statement B is called input (before) dependencies. Appending dependencies cause the accumulation of dependencies at the beginning or end of the method, making identification and extraction of duplicated code harder. Because of this, input dependency is suited to extract code with before execution advice for the method containing statements while output dependency is suited to extract code with after execution advice for the method. Final values are in Figure 1. Counter c = new Counter(0); void count(int i) { if (i < 0) { if par(int) < lit(int), read i { exp par(int) = lit(int), write i i = 0; exp par(int) =par(int)+lit(1), read i, write i i=i+1; exp fld(counter).increment(), read c, write c c.increment(); System.out.println("i="+i+",c="+c); exp System.out.println(lit(String),par(int),lit(String),fl d(counter)) read i,c Figure 1. Statement values (dependency on variables is not part of value yet)

3 Comparing and creating text is demanding on performance and memory requirements. We can optimize performance by replacing text with numeric hash values and replacing concatenation with addition and multiplication. This can cause false positive matches. To remove false positive matches we perform a nonoptimized duplication analysis only for the statements found as duplicates. An example evaluated with hashes is shown at Figure 2. For hashing we reuse a hashing algorithm from Java String object. Counter c = new Counter(0); void count(int i) { if (i < 0) { i = 0; C i = i + 1; ECF26D3C c.increment(); System.out.println("i = " B2DF4E2B + i + ", c = " + c); Figure 2. Evaluation by hash values D. Extracting duplicated code Complexity of duplicated code is increasing with the number of dependencies for the statement. When the statement has no dependencies, it can be extracted with before execution advice for its enclosing method. From Figure 1 we can extract if statement with body and c.increment() statement in this way. When the statement has one dependency - method call, it can be extracted with after call advice for the called method. More complex situations are not extractable now. Parameter names and literal values are ignored and we have to parameterize the resulting advice to use different literals and parameters. When a field is not extracted from a class, it cannot be renamed to match other fields. For example field i from Figure 1 cannot be renamed to real and vice versa. There are various problems: Naming of a field would make no sense in some cases, or a name would be too generalized for other uses in a class. When two duplicated parts are the same but they use a different field in the same class, fields cannot be named the same. This requires uniform access to class fields through a common interface and again parameterization of the resulting advice. Requirements prevent us from creating one point-cut and advice. We have to create parameterized method implementing advice and create point-cut and advice for each duplicated statement. Advice simply calls method implementing advice with parameters specified for its point-cut. Also we have to use inter-type declarations to introduce getters and setters for the fields into classes with duplicated statements. In Figure 3 we show the skeleton of the created aspect. The skeleton contains: 0 A947B2A7 Declaration of a common interface for all classes containing duplicated code. Implementation of an interface for each class. Getters and setters require a name parameter to differentiate use of fields in duplications in the same class. Point-cut for every duplicate obtaining a class as a common interface and other parameters. Advice calling parameterized method specifying what are the real parameter names and real literals for each point-cut. Method implementing parameterized version of advice. public aspect CountingAspect {... private interface { public int getc(string realname); public void setc(string realname, int c); declare parents: EvaluationExample implements ; public int EvaluationExample.getC( String realname) { if (realname.equals("c")) { return this.c; if (realname.equals("real")) { return this.real; throw new AssertionError("Failed to resolve variable" + realname); public void EvaluationExample.setC( String realname, Counter c) { if (realname.equals("c")) { this.c = c; return; if (realname.equals("real")) { this.real = c; return; throw new AssertionError("Failed to resolve variable" + realname); public pointcut pointcut1( execution( void count(..)) && within(evaluationexample) && this(objectwithaspectinterface);

4 ... public pointcut pointcut2( execution( void countsheep(..)) && within(evaluationexample) && this(objectwithaspectinterface); before( pointcut1(objectwithaspectinterface){ adviceimplementation( objectwithaspectinterface, "c" /* other real field names and literal values*/); before( objectwithaspectinterface) : pointcut2(objectwithaspectinterface){ adviceimplementation( objectwithaspectinterface, "real" /* other real field names and literal values*/); Interface with a low score is ignored. The other interfaces are marked as secondary. If the highest score is 1.3 times higher than the second score, we mark the interface as the primary. When the primary interface is found, all secondary interfaces are marked as the smell and should be extracted into the aspect. F. Prototype as an evaluation of the method The Prototype is the plugin into the Eclipse IDE and uses standard features. Code markers are used to show identified smells. Smell can be solved through a quick fix feature. Smells can be searched manually by selecting source file(s) and pushing the analyze source button or automatically with each build by using project natures. private void adviceimplementation( objectwithaspectinterface, String realcname /* other fields and literals*/) { /* Copied implementation from one duplication. Fields and literals are parameterized */ Figure 3. Created aspect skeleton E. Finding double personality Double personality smell can be found by interfaces of a class. Interface with more accesses to class fields is primary to the class. Each interface is assigned a score. The score is calculated by a function score in (1) where: the score is the final score of the interface fieldcount is the number of fields that the interface reads or writes incount is the number of methods with input dependendency on the field incoef is the coefficient for the input dependency outcount is the number of methods with an output dependency on the field outcoef is the coefficient for the output dependency fields are all fields used in the methods of the interface Figure 4. Identified smell with quick fix solution IV. FUTURE WORK Currently we are searching for duplicates only at the class level. No inter class duplication is found. This can be solved by enlarging the evaluated tree through the selection of processed files. Using output dependencies we can extract code with other types of point-cuts. Currently we are using only input dependencies for duplication analysis and extraction. Parameterization of aspect is problematic, since the created aspect is large, contains point-cut and advice for each duplicated code. This can be more problematic than the original duplications. On the other hand with parameterization we generalized the aspect into one advice implementation for different contexts. Also using a point-cut and advice for every duplicated code is consistent when multiple duplications are found in one method and advice should be invoked multiple times. Addition of other contexts is simple. We plan to compare the effectiveness with similar works [18] or interconnect them and use modern and fast algorithms [19] to cluster duplicate code.

5 Extraction of double personality smell has not been defined. It has to use inter-type declarations to introduce and implement secondary interfaces. ACKNOWLEDGMENT This work was partially supported by the grants VG1/1221/12, and it is the partial result of the Research & Development Operational Programme for the project Research of methods for acquisition, analysis and personalized conveying of information and knowledge, ITMS , co-funded by the ERDF. REFERENCES [1] Laddad R., Aspect-Oriented Refactoring, part 1 and 2, The Server Side, 2003, [2] Monteiro M., Refactorings to Evolve Object-Oriented Systems with Aspect-Oriented Concepts, Doctoral thesis, Universidad do Minho, 2005 [3] Cole L., Borba P., Deriving Refactorings for AspectJ, Proceedings of the 4 th international conference on Aspect-oriented software development, 2005 [4] Filho F.C., Garcia A., Rubira C.M.F., Extracting Error Handling to Aspects: A Cookbook, ICSM, 2007, page [5] Rura S., Lerner B., A basis for AspectJ refactoring, GPCE, 2004 [6] Iwamoto M., Zhao J., Refactoring Aspect-oriented programs, 2003 [7] Valente M.T.O., Malta M.N., Object-oriented transformations for extracting aspects, Information and Software Technology Journal vol [8] Breu S., Krinke J., Aspect mining using event traces, Automated Software Engineering (ASE), 2004 [9] Tonella P., Ceccato M., Aspect mining through the formal concept analysis of execution traces, Working Conference of Reverse Engineering (WCRE), 2004 [10] Marin M., van Deuren A., Moonen L., Identifying aspects using fan-in analysis, Working Conference on Reverse Engineering (WCRE), 2004 [11] Kellens A., Mens K., Tonella P., A Survey of Automated Code- Level Aspect Mining Techniques, Transactions on aspect-oriented software development IV, ISBN-10: , ISBN-13: [12] Marin M., van Deuren A., Moonen L., Identifying aspects using fan-in analysis, Working Conference on Reverse Engineering (WCRE), 2004 [13] Shepherd D., Gibson E., Pollock L., Design and evaluation of an automated mining tool, International conference on Software Engineering Research and Practice, 2004 [14] Breu S., Zimmermann T., Linding C., Mining Eclipse for Cross- Cutting Concerns, Proceedings of the international workshop on Mining software, 2006 [15] Binkley D., Ceccato M., Harman M., Ricca F., Tonella P., Automated Refactoring of Object [16] Grossi R., On finding common subtrees, Dipartimento di Informatica, Universita di Piss, Theory of Computer Science vol. 108, page , 1992 [17] Valiente G, Tree Isomorphism and Related Problems, Technical University of Catalonia, c.pdf, [18] Súkeník, J., Lacko, P., Duplicated Code Detection (in Slovak), 7th Workshop on Intelligent and Knowledge Oriented Technologies Proceedings, November 22-23, 2012, STU Bratislava, ISBN , 2012, pp [19] Kovacs, L., Bednarik, L., Parameter optimization for BIRCH preclustering algorithm, 12th International Symposium on Computational Intelligence and Informatics (CINTI 2011), Budapest, Nov. 2011, pp [20] Štolc M., Polášek I., A Visual based Framework for the Model Refactoring Techniques, SAMI 2010, 8th IEEE International Symposium on Applied Machine Intelligence and Informatics, January 28-30, 2010, Herľany, Slovak Republik, IEEE, 2010, ISBN , pp [21] Polášek I., Líška P., Kelemen J., Lang J., On Extended Similarity Scoring and Bit-vector Algorithms for Design Smell Detection, INES 2012, IEEE 16th International Conference on Intelligent Engineering Systems Proceedings, June 13-15, 2012 Lisbon, Portugal, IEEE, 2012, ISBN , pp [22] Polášek I., Snopko S., Kapustík I., Automatic identification of the anti-patterns using the rule-based approach, SISY 2012, IEEE 10th Jubilee International Symposium on Intelligent Systems and Informatics, September 20-22, 2012 Subotica, Serbia, IEEE, 2012, ISBN , pp [23] Polášek I., Ruttkay-Nedecký I., Ruttkay-Nedecký P., Tóth T., Černík A., Dušek P., Information and Knowledge Retrieval within Software Projects and their Graphical Representation for Collaborative Programming, Acta Polytechnica Hungarica, ISSN , Vol. 10, No. 2 (2013), pp

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

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

Metrics for Aspect Mining Visualization

Metrics for Aspect Mining Visualization Nova Southeastern University NSUWorks CEC Theses and Dissertations College of Engineering and Computing 2018 Metrics for Aspect Mining Visualization Gisle J. Jorgensen Nova Southeastern University, jjorgensen2311@gmail.com

More information

Identification of Crosscutting Concerns: A Survey

Identification of Crosscutting Concerns: A Survey Identification of Crosscutting Concerns: A Survey Arvinder Kaur University School of IT GGSIP, University, Delhi arvinder70@gmail.com Kalpana Johari CDAC, Noida kalpanajohari@cdacnoida.in Abstract Modularization

More information

Experiences with Identifying Aspects in Smalltalk Using Unique Methods

Experiences with Identifying Aspects in Smalltalk Using Unique Methods Experiences with Identifying Aspects in Smalltalk Using Unique Methods Kris Gybels and Andy Kellens Programming Technology Lab Vrije Universiteit Brussel Pleinlaan 2 Belgium {kris.gybels, andy.kellens}@vub.ac.be

More information

Employing Query Technologies for Crosscutting Concern Comprehension

Employing Query Technologies for Crosscutting Concern Comprehension Employing Query Technologies for Crosscutting Concern Comprehension Marius Marin Accenture The Netherlands Marius.Marin@accenture.com Abstract Common techniques for improving comprehensibility of software

More information

Automated Inference of Pointcuts in Aspect-Oriented Refactoring

Automated Inference of Pointcuts in Aspect-Oriented Refactoring Automated Inference of Pointcuts in Aspect-Oriented Refactoring Prasanth Anbalagan 1 Tao Xie 2 Department of Computer Science, North Carolina State University, Raleigh, NC 27695, USA 1 panbala@ncsu.edu

More information

A Visual Based Framework for the Model Refactoring Techniques

A Visual Based Framework for the Model Refactoring Techniques A Visual Based Framework for the Model Refactoring Techniques M. Štolc *, I. Polášek *(**) * Faculty of Informatics and Information Technologies, STU Bratislava, Slovakia ** Gratex International, a.s.,

More information

Refactoring Catalog for Legacy software using C and Aspect Oriented Language

Refactoring Catalog for Legacy software using C and Aspect Oriented Language Refactoring Catalog for Legacy software using C and Aspect Oriented Language S.A.M Rizvi and Zeba Khanam, Jamia Millia Islamia, New Delhi, India Abstract- This paper explores the combination of AOP and

More information

Information and Knowledge Retrieval within Software Projects and their Graphical Representation for Collaborative Programming

Information and Knowledge Retrieval within Software Projects and their Graphical Representation for Collaborative Programming Information and Knowledge Retrieval within Software Projects and their Graphical Representation for Collaborative Programming Ivan Polášek 1, Ivan Ruttkay-Nedecký 2, Peter Ruttkay-Nedecký 2, Tomáš Tóth

More information

International Journal for Management Science And Technology (IJMST)

International Journal for Management Science And Technology (IJMST) Volume 4; Issue 03 Manuscript- 1 ISSN: 2320-8848 (Online) ISSN: 2321-0362 (Print) International Journal for Management Science And Technology (IJMST) GENERATION OF SOURCE CODE SUMMARY BY AUTOMATIC IDENTIFICATION

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

Guidelines for Enabling the Extraction of Aspects from Existing Object-Oriented Code

Guidelines for Enabling the Extraction of Aspects from Existing Object-Oriented Code Vol. 8, No. 3, May June 2009 Guidelines for Enabling the Extraction of Aspects from Existing Object-Oriented Code Marcelo Nassau Malta, Samuel de Oliveira, Marco Tulio Valente Institute of Informatics

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

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

Modeling Aspect-Oriented Change Realizations

Modeling Aspect-Oriented Change Realizations Modeling Aspect-Oriented Change Realizations Erasmus Mobility at Lancaster University Lecture 1 Valentino Vranić Institute of Informatics and Software Engineering Faculty of Informatics and Information

More information

Modeling Systems Using Design Patterns

Modeling Systems Using Design Patterns Modeling Systems Using Design Patterns Jaroslav JAKUBÍK Slovak University of Technology Faculty of Informatics and Information Technologies Ilkovičova 3, 842 16 Bratislava, Slovakia jakubik@fiit.stuba.sk

More information

InsECTJ: A Generic Instrumentation Framework for Collecting Dynamic Information within Eclipse

InsECTJ: A Generic Instrumentation Framework for Collecting Dynamic Information within Eclipse InsECTJ: A Generic Instrumentation Framework for Collecting Dynamic Information within Eclipse Arjan Seesing and Alessandro Orso College of Computing Georgia Institute of Technology a.c.seesing@ewi.tudelft.nl,

More information

SERG. An Integrated Crosscutting Concern Migration Strategy and its Application to JHoTDraw

SERG. An Integrated Crosscutting Concern Migration Strategy and its Application to JHoTDraw Delft University of Technology Software Engineering Research Group Technical Report Series An Integrated Crosscutting Concern Migration Strategy and its Application to JHoTDraw Marius Marin, Leon Moonen

More information

Control-Flow-Graph-Based Aspect Mining

Control-Flow-Graph-Based Aspect Mining Control-Flow-Graph-Based Aspect Mining Jens Krinke FernUniversität in Hagen, Germany krinke@acm.org Silvia Breu NASA Ames Research Center, USA silvia.breu@gmail.com Abstract Aspect mining tries to identify

More information

More Refactoring s: Aspect Oriented Programming with AspectJ

More Refactoring s: Aspect Oriented Programming with AspectJ More Refactoring s: Aspect Oriented Programming with AspectJ 1 Geeta Bagade, 2 Dr. Shashank Joshi 1 Ph.D. Scholar, 2 Professor/Ph.D Guide Bharati Vidyapeeth, Pune, India ABSTRACT: Even though Object Oriented

More information

Towards a Catalogue of Refactorings and Code Smells for AspectJ

Towards a Catalogue of Refactorings and Code Smells for AspectJ Towards a Catalogue of Refactorings and Code Smells for AspectJ Miguel P. Monteiro 1 and João M. Fernandes 2 1 Escola Superior de Tecnologia, Instituto Politécnico de Castelo Branco, Avenida do Empresário,

More information

How Developers Use the Dynamic Features of Programming Languages: The Case of Smalltalk

How Developers Use the Dynamic Features of Programming Languages: The Case of Smalltalk How Developers Use the Dynamic Features of Programming Languages: The Case of Smalltalk Oscar Callaú, Romain Robbes, Éric Tanter (University of Chile) David Röthlisberger (University of Bern) Proceedings

More information

AJDT: Getting started with Aspect-Oriented Programming in Eclipse

AJDT: Getting started with Aspect-Oriented Programming in Eclipse AJDT: Getting started with Aspect-Oriented Programming in Eclipse Matt Chapman IBM Java Technology Hursley, UK AJDT Committer Andy Clement IBM Java Technology Hursley, UK AJDT & AspectJ Committer Mik Kersten

More information

Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala

Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala Pavol PIDANIČ Slovak University of Technology in Bratislava Faculty of Informatics and Information Technologies

More information

Ingegneria del Software Corso di Laurea in Informatica per il Management. Introduction to UML

Ingegneria del Software Corso di Laurea in Informatica per il Management. Introduction to UML Ingegneria del Software Corso di Laurea in Informatica per il Management Introduction to UML Davide Rossi Dipartimento di Informatica Università di Bologna Modeling A model is an (abstract) representation

More information

Agenda. Tool-Supported Detection of Code Smells in Software Aspectization. Motivation. Mistakes in Software Aspectization. Advice-related mistakes

Agenda. Tool-Supported Detection of Code Smells in Software Aspectization. Motivation. Mistakes in Software Aspectization. Advice-related mistakes Agenda Tool-Supported Detection of Code Smells in Software Aspectization Péricles Alves and Diogo Santana Recurring Mistakes Code Smells ConcernReCS Tool ConcernReCS Extension 1 Motivation AOP is about

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

Keywords Clone detection, metrics computation, hybrid approach, complexity, byte code

Keywords Clone detection, metrics computation, hybrid approach, complexity, byte code Volume 3, Issue 5, May 2013 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com An Emerging Approach

More information

Imagine you ve written a piece of code but then accidentally deleted and lost it.

Imagine you ve written a piece of code but then accidentally deleted and lost it. Why Refactor? Imagine you ve written a piece of code but then accidentally deleted and lost it. Questions: How much time would it take you to reconstruct from scratch what you had the same amount, or more,

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

Lecture 16 & 17. Crosscutting Concerns N-dimensional separation of concerns, AspectJ, Mixin, Concern Graph, etc.

Lecture 16 & 17. Crosscutting Concerns N-dimensional separation of concerns, AspectJ, Mixin, Concern Graph, etc. Lecture 16 & 17 Crosscutting Concerns N-dimensional separation of concerns, AspectJ, Mixin, Concern Graph, etc. Spring 2009 EE 382V Software Evolution, Instructor Miryung Kim This week s Agenda Presentations:

More information

The Reverse Engineering in Oriented Aspect Detection of semantics clones

The Reverse Engineering in Oriented Aspect Detection of semantics clones International Journal of Scientific & Engineering Research Volume 3, Issue 5, May-2012 1 The Reverse Engineering in Oriented Aspect Detection of semantics clones Amel Belmabrouk, Belhadri Messabih Abstract-Attention

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

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

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

Specifying languages using aspect-oriented approach: AspectLISA

Specifying languages using aspect-oriented approach: AspectLISA Specifying languages using aspect-oriented approach: AspectLISA Damijan Rebernak, Marjan Mernik University of Maribor, Faculty of Electrical Engineering and Computer Science Smetanova ulica 17, 2000 Maribor,

More information

An Integrated Crosscutting Concern Migration Strategy and its Semi-Automated Application to JHOTDRAW

An Integrated Crosscutting Concern Migration Strategy and its Semi-Automated Application to JHOTDRAW Automated Software Engineering manuscript No. (will be inserted by the editor) An Integrated Crosscutting Concern Migration Strategy and its Semi-Automated Application to JHOTDRAW Marius Marin Arie van

More information

DAT159 Refactoring (Introduction)

DAT159 Refactoring (Introduction) DAT159 Refactoring (Introduction) Volker Stolz 1, with contributions by: Larissa Braz 2, Anna M. Eilertsen 3, Fernando Macías 1, Rohit Gheyi 2 Western Norway University of Applied Sciences, Universidade

More information

EECS168 Exam 3 Review

EECS168 Exam 3 Review EECS168 Exam 3 Review Exam 3 Time: 2pm-2:50pm Monday Nov 5 Closed book, closed notes. Calculators or other electronic devices are not permitted or required. If you are unable to attend an exam for any

More information

Towards the Code Clone Analysis in Heterogeneous Software Products

Towards the Code Clone Analysis in Heterogeneous Software Products Towards the Code Clone Analysis in Heterogeneous Software Products 11 TIJANA VISLAVSKI, ZORAN BUDIMAC AND GORDANA RAKIĆ, University of Novi Sad Code clones are parts of source code that were usually created

More information

Visualization of Clone Detection Results

Visualization of Clone Detection Results Visualization of Clone Detection Results Robert Tairas and Jeff Gray Department of Computer and Information Sciences University of Alabama at Birmingham Birmingham, AL 5294-1170 1-205-94-221 {tairasr,

More information

Detecting Structural Refactoring Conflicts Using Critical Pair Analysis

Detecting Structural Refactoring Conflicts Using Critical Pair Analysis SETra 2004 Preliminary Version Detecting Structural Refactoring Conflicts Using Critical Pair Analysis Tom Mens 1 Software Engineering Lab Université de Mons-Hainaut B-7000 Mons, Belgium Gabriele Taentzer

More information

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

c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco 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

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

Refactoring Support Based on Code Clone Analysis

Refactoring Support Based on Code Clone Analysis Refactoring Support Based on Code Clone Analysis Yoshiki Higo 1,Toshihiro Kamiya 2, Shinji Kusumoto 1 and Katsuro Inoue 1 1 Graduate School of Information Science and Technology, Osaka University, Toyonaka,

More information

A HIERARCHICAL CLUSTERING BASED APPROACH IN ASPECT MINING. Gabriela Czibula, Grigoreta Sofia Cojocar

A HIERARCHICAL CLUSTERING BASED APPROACH IN ASPECT MINING. Gabriela Czibula, Grigoreta Sofia Cojocar Computing and Informatics, Vol. 29, 2010, 881 900 A HIERARCHICAL CLUSTERING BASED APPROACH IN ASPECT MINING Gabriela Czibula, Grigoreta Sofia Cojocar Department of Computer Science Babeş-Bolyai University

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

Workflow Modelling Based on Process Graph

Workflow Modelling Based on Process Graph 5 th Slovakian-Hungarian Joint Symposium on Applied Machine Intelligence and Informatics January 25-26, 2007 Poprad, Slovakia József Tick Institute for Software Engineering, John von Neumann Faculty of

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

What is AOP? Business Logic Requirements Concern Identifier Security Logging (Laddad, 2003, p. 9) What is AOP? Non-AOP implementation of crosscutting

What is AOP? Business Logic Requirements Concern Identifier Security Logging (Laddad, 2003, p. 9) What is AOP? Non-AOP implementation of crosscutting Aspect Oriented Programming Todd A. Whittaker Franklin University whittakt@franklin.edu What is AOP? Addresses crosscutting concerns Requirements analysis leads to identification of concerns in a software

More information

Refactoring Framework for Instance Code Smell Detection

Refactoring Framework for Instance Code Smell Detection International Journal of Advanced Research in Computer Engineering & Technology (IJARCET) Refactoring Framework for Instance Code Smell Detection D. Raj Kumar, G.M. Chanakya Abstract Code and design smells

More information

ISSN: (PRINT) ISSN: (ONLINE)

ISSN: (PRINT) ISSN: (ONLINE) IJRECE VOL. 5 ISSUE 2 APR.-JUNE. 217 ISSN: 2393-928 (PRINT) ISSN: 2348-2281 (ONLINE) Code Clone Detection Using Metrics Based Technique and Classification using Neural Network Sukhpreet Kaur 1, Prof. Manpreet

More information

Enhanced Method Call Tree for Comprehensive Detection of Symptoms of Cross Cutting Concerns

Enhanced Method Call Tree for Comprehensive Detection of Symptoms of Cross Cutting Concerns Nova Southeastern University NSUWorks CEC Theses and Dissertations College of Engineering and Computing 2016 Enhanced Method Call Tree for Comprehensive Detection of Symptoms of Cross Cutting Concerns

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

Fluid AOP. Task-specific Modularity. Terry Hon. B.Sc., The University of British Columbia, 2004

Fluid AOP. Task-specific Modularity. Terry Hon. B.Sc., The University of British Columbia, 2004 Fluid AOP Task-specific Modularity by Terry Hon B.Sc., The University of British Columbia, 2004 A THESIS SUBMITTED IN PARTIAL FULFILMENT OF THE REQUIREMENTS FOR THE DEGREE OF Master of Science in The Faculty

More information

Aspect-oriented Refactoring of Java Programs

Aspect-oriented Refactoring of Java Programs Miguel P. Monteiro CITI, Departamento de Informática, Faculdade de Ciências e Tecnologia Universidade Nova de Lisboa, Portugal João M. Fernandes Dep. Informática / Centro Algoritmi, Escola de Engenharia

More information

Applying and combining three different aspect mining techniques

Applying and combining three different aspect mining techniques Software Qual J (2006) 14:209 231 DOI 10.1007/s11219-006-9217-3 Applying and combining three different aspect mining techniques M. Ceccato M. Marin K. Mens L. Moonen P. Tonella T. Tourwé C Science + Business

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

Transformation from the Heavy Desktop Client to the Lightweight Web Application

Transformation from the Heavy Desktop Client to the Lightweight Web Application Transformation from the Heavy Desktop Client to the Lightweight Web Application Richard BELAN* Slovak University of Technology in Bratislava Faculty of Informatics and Information Technologies Ilkovičova

More information

DCC / ICEx / UFMG. Software Code Clone. Eduardo Figueiredo.

DCC / ICEx / UFMG. Software Code Clone. Eduardo Figueiredo. DCC / ICEx / UFMG Software Code Clone Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Code Clone Code Clone, also called Duplicated Code, is a well known code smell in software systems Code clones

More information

Software Clone Detection. Kevin Tang Mar. 29, 2012

Software Clone Detection. Kevin Tang Mar. 29, 2012 Software Clone Detection Kevin Tang Mar. 29, 2012 Software Clone Detection Introduction Reasons for Code Duplication Drawbacks of Code Duplication Clone Definitions in the Literature Detection Techniques

More information

Evolution of Events in Software Systems

Evolution of Events in Software Systems Evolution of Events in Software Systems Ol ga Peštová, Ján Kollár, and Peter Václavík Department of Computers and Informatics Technical University of Košice, Letná 9, 042 00 Košice, Slovakia Abstract.

More information

Token based clone detection using program slicing

Token based clone detection using program slicing Token based clone detection using program slicing Rajnish Kumar PEC University of Technology Rajnish_pawar90@yahoo.com Prof. Shilpa PEC University of Technology Shilpaverma.pec@gmail.com Abstract Software

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

Implementing evolution: Refactoring

Implementing evolution: Refactoring 2IS55 Software Evolution Sources Implementing evolution: Refactoring Alexander Serebrenik / SET / W&I 17-5-2010 PAGE 1 Last week Problem: changing code is difficult Assignment 6 Deadline: Today Assignment

More information

Chapter 3. Interactive Software Development Assistants Logic-based Software Representation. Logic-based Software Analysis

Chapter 3. Interactive Software Development Assistants Logic-based Software Representation. Logic-based Software Analysis Advanced Logic Programming Summer semester 2012 R O O T S Chapter 3. Logic-based Analysis Interactive Development Assistants Logic-based Representation Logic-based Analysis Logic-based Transformation Motivation

More information

IMPROVING SOFTWARE MODULARITY THROUGH CROSSCUTTING CONCERN EXTRACTION

IMPROVING SOFTWARE MODULARITY THROUGH CROSSCUTTING CONCERN EXTRACTION IMPROVING SOFTWARE MODULARITY THROUGH CROSSCUTTING CONCERN EXTRACTION by Isaac Yuen School of Computer Science McGill University, Montreal April 2009 A THESIS SUBMITTED TO MCGILL UNIVERSITY IN PARTIAL

More information

A Technique to Detect Multi-grained Code Clones

A Technique to Detect Multi-grained Code Clones Detection Time The Number of Detectable Clones A Technique to Detect Multi-grained Code Clones Yusuke Yuki, Yoshiki Higo, and Shinji Kusumoto Graduate School of Information Science and Technology, Osaka

More information

Recovery of Design Pattern from source code

Recovery of Design Pattern from source code Recovery of Design Pattern from source code Amit Kumar Gautam and T.Gayen Software Engineering, IIIT Allahabad tgayen@iiita.ac.in, Ise2008004@iiita.ac.in Abstract. The approach for detecting design pattern

More information

Evolizer A Platform for Software Evolution Analysis and Research

Evolizer A Platform for Software Evolution Analysis and Research Evolizer A Platform for Software Evolution Analysis and Research Michael Würsch, Harald C. Gall University of Zurich Department of Informatics software evolution & architecture lab Friday, April 23, 200

More information

Similarities in Source Codes

Similarities in Source Codes Similarities in Source Codes Marek ROŠTÁR* Slovak University of Technology in Bratislava Faculty of Informatics and Information Technologies Ilkovičova 2, 842 16 Bratislava, Slovakia rostarmarek@gmail.com

More information

Enterprise Informatization LECTURE

Enterprise Informatization LECTURE Enterprise Informatization LECTURE Piotr Zabawa, PhD. Eng. IBM/Rational Certified Consultant e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa/en 07.10.2011 Lecture 7 Aspect-Oriented Programming

More information

Towards Locating a Functional Concern Based on a Program Slicing Technique

Towards Locating a Functional Concern Based on a Program Slicing Technique Towards Locating a Functional Concern Based on a Program Slicing Technique Takashi Ishio 1,2, Ryusuke Niitani 2, Katsuro Inoue 2 1 Department of Computer Science University of British Columbia 2366 Main

More information

Science of Computer Programming. Aspect-oriented model-driven skeleton code generation: A graph-based transformation approach

Science of Computer Programming. Aspect-oriented model-driven skeleton code generation: A graph-based transformation approach Science of Computer Programming 75 (2010) 689 725 Contents lists available at ScienceDirect Science of Computer Programming journal homepage: www.elsevier.com/locate/scico Aspect-oriented model-driven

More information

CATALOGUE OF REFACTORINGS FOR ASPECTJ

CATALOGUE OF REFACTORINGS FOR ASPECTJ CATALOGUE OF REFACTORINGS FOR ASPECTJ TECHNICAL REPORT UM-DI-GECSD-200401 Miguel Pessoa Monteiro Ph.D. student ESCOLA DE ENGENHARIA Departamento de Informática UNIVERSIDADE DO MINHO Campus de Gualtar 4710-057

More information

Generating Continuation Passing Style Code for the Co-op Language

Generating Continuation Passing Style Code for the Co-op Language Generating Continuation Passing Style Code for the Co-op Language Mark Laarakkers University of Twente Faculty: Computer Science Chair: Software engineering Graduation committee: dr.ing. C.M. Bockisch

More information

Keywords: Abstract Factory, Singleton, Factory Method, Prototype, Builder, Composite, Flyweight, Decorator.

Keywords: Abstract Factory, Singleton, Factory Method, Prototype, Builder, Composite, Flyweight, Decorator. Comparative Study In Utilization Of Creational And Structural Design Patterns In Solving Design Problems K.Wseem Abrar M.Tech., Student, Dept. of CSE, Amina Institute of Technology, Shamirpet, Hyderabad

More information

Implementing evolution: Aspect-Oriented Programming

Implementing evolution: Aspect-Oriented Programming 2IS55 Software Evolution Implementing evolution: Aspect-Oriented Programming Alexander Serebrenik Last week Assignment 8 How is it going? Questions to Marcel: m.f.v.amstel@tue.nl Deadline: Tuesday, June

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

Quantifying and Assessing the Merge of Cloned Web-Based System: An Exploratory Study

Quantifying and Assessing the Merge of Cloned Web-Based System: An Exploratory Study Quantifying and Assessing the Merge of Cloned Web-Based System: An Exploratory Study Jadson Santos Department of Informatics and Applied Mathematics Federal University of Rio Grande do Norte, UFRN Natal,

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

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

Conceptual Models of Information Content for Product Modeling

Conceptual Models of Information Content for Product Modeling Acta Polytechnica Hungarica Vol. 15, No. 2, 2018 Conceptual Models of Information Content for Product Modeling Yatish Bathla Óbuda University, Doctoral School of Applied Informatics and Applied Mathematics,

More information

XRay Views: Understanding the Internals of Classes

XRay Views: Understanding the Internals of Classes XRay Views: Understanding the Internals of Classes Gabriela Arévalo, Stéphane Ducasse, Oscar Nierstrasz Software Composition Group University of Bern (Switzerland) {arevalo, ducasse, oscar}@iam.unibe.ch

More information

An Empirical Analysis of Defect Prone Design Pattern

An Empirical Analysis of Defect Prone Design Pattern www.ijcsi.org 178 An Empirical Analysis of Defect Prone Design Pattern Mamoona Jalil 1, Javed Farzand 2 and Muhammad Ilyas 3 1 Department of Computer Science and Information Technology, University of Sargodha

More information

Refactoring with Eclipse

Refactoring with Eclipse Refactoring with Eclipse Seng 371 Lab 8 By Bassam Sayed Based on IBM article Explore refactoring functions in Eclipse JDT by Prashant Deva Code Refactoring Code refactoring is a disciplined way to restructure

More information

CPS 506 Comparative Programming Languages. Programming Language

CPS 506 Comparative Programming Languages. Programming Language CPS 506 Comparative Programming Languages Object-Oriented Oriented Programming Language Paradigm Introduction Topics Object-Oriented Programming Design Issues for Object-Oriented Oriented Languages Support

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

V2 3/5/2012. Programming in C. Introduction to Arrays. 111 Ch 07 A 1. Introduction to Arrays

V2 3/5/2012. Programming in C. Introduction to Arrays. 111 Ch 07 A 1. Introduction to Arrays Programming in C 1 Introduction to Arrays A collection of variable data Same name Same type Contiguous block of memory Can manipulate or use Individual variables or List as one entity 2 Celsius temperatures:

More information

SEN. Software Engineering. Software ENgineering. Proceedings of the 1st workshop on aspect reverse-engineering

SEN. Software Engineering. Software ENgineering. Proceedings of the 1st workshop on aspect reverse-engineering C e n t r u m v o o r W i s k u n d e e n I n f o r m a t i c a SEN Software Engineering Software ENgineering Proceedings of the 1st workshop on aspect reverse-engineering T Tourwé, M Bruntink, M Marin,

More information

The GUISurfer tool. GUI Inspection from Source Code Analysis

The GUISurfer tool. GUI Inspection from Source Code Analysis GUI Inspection from Source Code Analysis João Carlos Silva 1,2 João Saraiva 1 José Creissac 1 1 Departamento de Informática/CCTC Universidade do Minho 2 Departamento de Tecnologia Instituto Politécnico

More information

Scaling Testing of Refactoring Engines

Scaling Testing of Refactoring Engines 1 Scaling Testing of Refactoring Engines Melina Mongiovi, Rohit Gheyi (advisor) Abstract Defining and implementing refactorings is a nontrivial task since it is difficult to define preconditions to guarantee

More information

CSE 70 Final Exam Fall 2009

CSE 70 Final Exam Fall 2009 Signature cs70f Name Student ID CSE 70 Final Exam Fall 2009 Page 1 (10 points) Page 2 (16 points) Page 3 (22 points) Page 4 (13 points) Page 5 (15 points) Page 6 (20 points) Page 7 (9 points) Page 8 (15

More information

On Refactoring for Open Source Java Program

On Refactoring for Open Source Java Program On Refactoring for Open Source Java Program Yoshiki Higo 1,Toshihiro Kamiya 2, Shinji Kusumoto 1, Katsuro Inoue 1 and Yoshio Kataoka 3 1 Graduate School of Information Science and Technology, Osaka University

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

CASE TOOLS LAB VIVA QUESTION

CASE TOOLS LAB VIVA QUESTION 1. Define Object Oriented Analysis? VIVA QUESTION Object Oriented Analysis (OOA) is a method of analysis that examines requirements from the perspective of the classes and objects found in the vocabulary

More information

Specification and Automated Detection of Code Smells using OCL

Specification and Automated Detection of Code Smells using OCL Specification and Automated Detection of Code Smells using OCL Tae-Woong Kim 1, Tae-Gong Kim 2 and Jai-Hyun Seu 3 School of Computer Engineering, Inje University, Obang-dong 607, Gimhae, Gyeong-Nam, Korea

More information

Extensible Java Pre-processor

Extensible Java Pre-processor Extensible Java Pre-processor National Institute of Advanced Industrial Science and Technology(AIST) Yuuji Ichisugi http://staff.aist.go.jp/y-ichisugi/ 2002/12/17 1 What is EPP? Language extension framework

More information

A Reconnaissance on Design Patterns

A Reconnaissance on Design Patterns A Reconnaissance on Design Patterns M.Chaithanya Varma Student of computer science engineering, Sree Vidhyanikethan Engineering college, Tirupati, India ABSTRACT: In past decade, design patterns have been

More information