Semi-automatic Refactoring to Aspect-oriented Platform
|
|
- Abner Bell
- 6 years ago
- Views:
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
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 informationSort-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 informationMetrics 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 informationIdentification 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 informationExperiences 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 informationEmploying 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 informationAutomated 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 informationA 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 informationRefactoring 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 informationInformation 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 informationInternational 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 informationChapter 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 informationGuidelines 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 informationRefactoring 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 informationAnalyzing 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 informationModeling 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 informationModeling 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 informationInsECTJ: 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 informationSERG. 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 informationControl-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 informationMore 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 informationTowards 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 informationHow 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 informationAJDT: 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 informationExploring 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 informationIngegneria 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 informationAgenda. 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 informationAspect 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 informationKeywords 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 informationImagine 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 informationStatic 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 informationLecture 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 informationThe 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 informationIntroduction 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 informationApplying 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 informationCourse 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 informationSpecifying 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 informationAn 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 informationDAT159 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 informationEECS168 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 informationTowards 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 informationVisualization 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 informationDetecting 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 informationc 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 informationHOW 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 informationRefactoring 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 informationA 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 informationAOP 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 informationWorkflow 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 informationAssessing 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 informationWhat 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 informationRefactoring 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 informationISSN: (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 informationEnhanced 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 informationA 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 informationFluid 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 informationAspect-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 informationApplying 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 informationAssessing 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 informationTransformation 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 informationDCC / 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 informationSoftware 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 informationEvolution 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 informationToken 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 informationIntroduction 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 informationImplementing 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 informationChapter 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 informationIMPROVING 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 informationA 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 informationRecovery 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 informationEvolizer 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 informationSimilarities 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 informationEnterprise 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 informationTowards 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 informationScience 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 informationCATALOGUE 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 informationGenerating 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 informationKeywords: 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 informationImplementing 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 informationRefactorings. 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 informationQuantifying 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 informationA 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 informationAspect-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 informationConceptual 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 informationXRay 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 informationAn 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 informationRefactoring 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 informationCPS 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 informationComposition 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 informationV2 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 informationSEN. 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 informationThe 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 informationScaling 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 informationCSE 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 informationOn 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 informationProgramming 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 informationCASE 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 informationSpecification 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 informationExtensible 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 informationA 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