• Documents
  • Authors
  • Tables
  • Log in
  • Sign up
  • MetaCart
  • DMCA
  • Donate

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Refactoring: Improving The Design of Existing Code (1999)

by M Fowler
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 1,897
Next 10 →

ArchJava: Connecting Software Architecture to Implementation

by Jonathan Aldrich, Craig Chambers, David Notkin , 2001
"... Software architecture describes the structure of a system, enabling more effective design, program understanding, and formal analysis. However, existing approaches decouple implementation code from architecture, allowing inconsistencies, causing confusion, violating architectural properties, and inh ..."
Abstract - Cited by 248 (29 self) - Add to MetaCart
Software architecture describes the structure of a system, enabling more effective design, program understanding, and formal analysis. However, existing approaches decouple implementation code from architecture, allowing inconsistencies, causing confusion, violating architectural properties, and inhibiting software evolution. ArchJava is an extension to Java that seamlessly unifies software architecture with implementation, ensuring that the implementation conforms to architectural constraints. A case study applying ArchJava to a circuit-design application suggests that ArchJava can express architectural structure effectively within an implementation, and that it can aid in program understanding and software evolution.

An empirical study of code clone genealogies

by Miryung Kim, Vibha Sazawal, David Notkin, Gail C. Murphy , 2005
"... It has been broadly assumed that code clones are inherently bad and that eliminating clones by refactoring would solve the problems of code clones. To investigate the validity of this assumption, we developed a formal definition of clone evolution and built a clone genealogy tool that automatically ..."
Abstract - Cited by 191 (9 self) - Add to MetaCart
It has been broadly assumed that code clones are inherently bad and that eliminating clones by refactoring would solve the problems of code clones. To investigate the validity of this assumption, we developed a formal definition of clone evolution and built a clone genealogy tool that automatically extracts the history of code clones from a source code repository. Using our tool we extracted clone genealogy information for two Java open source projects and analyzed their evolution. Our study contradicts some conventional wisdom about clones. In particular, refactoring may not always improve software with respect to clones for two reasons. First, many code clones exist in the system for only a short time; extensive refactoring of such short-lived clones may not be worthwhile if they are likely diverge from one another very soon. Second, many clones, especially long-lived clones that have changed consistently with other elements in the same group, are not easily refactorable due to programming language limitations. These insights show that refactoring will not help in dealing with some types of clones and open up opportunities for complementary clone maintenance tools that target these other classes of clones.

Software factories: assembling applications with patterns, models, frameworks and tools

by Jack Greenfield , 2004
"... The confluence of component based development, model driven development and software product lines forms an approach to application development based on the concept of software factories. This approach promises greater gains in productivity and predictability than those produced by incremental impro ..."
Abstract - Cited by 182 (0 self) - Add to MetaCart
The confluence of component based development, model driven development and software product lines forms an approach to application development based on the concept of software factories. This approach promises greater gains in productivity and predictability than those produced by incremental improvements to the current paradigm of object orientation, which have not kept pace with innovation in platform technology. Software factories promise to make application assembly more cost effective through systematic reuse, enabling the formation of supply chains and opening the door to mass customization. Categories and Subject Descriptors D.2.2 [Design Tools and Techniques], D.2.11 [Software
(Show Context)

Citation Context

...erations business process to models that describe the collaborating web services that implement the business process is a vertical transformation. Horizontal transformations may be either refactoring =-=[16]-=- or delocalizing transformations [14]. Refactoring transformations reorganize a specification to improve its design without changing its meaning. Refactoring can be applied to both tree and graph base...

Finding Refactorings via Change Metrics

by Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz - IN PROCEEDINGS OF OOPSLA ’2000 (INTERNATIONAL CONFERENCE ON OBJECT-ORIENTED PROGRAMMING SYSTEMS, LANGUAGES AND APPLICATIONS , 1999
"... ..."
Abstract - Cited by 174 (18 self) - Add to MetaCart
Abstract not found
(Show Context)

Citation Context

...borations, because redistribution of functionality reveals how classes interact with each other. In object-oriented development, changes are accomplished by means of so-called refactorings [Opdy92b], =-=[Fowl99a]-=-. Refactoring operations —such as provided by the Refactoring Browser [Robe97a]— reorganise a class hierarchy by shifting responsibilities between classes, and redistributing instance variables and me...

DMS: Program transformations for practical scalable software evolution

by Ira D. Baxter, Christopher Pidgeon, Michael Mehlich - in Proc. 26th Int. Conf. on Software Engineering , 2004
"... While a number of research systems have demonstrated the potential value of program transformations, very few of these systems have made it into practice. The core technology for such systems is well understood; what remains is integration and more importantly, the problem of handling the scale of t ..."
Abstract - Cited by 168 (5 self) - Add to MetaCart
While a number of research systems have demonstrated the potential value of program transformations, very few of these systems have made it into practice. The core technology for such systems is well understood; what remains is integration and more importantly, the problem of handling the scale of the applications to be processed. This paper describes DMS, a practical, commercial program analysis and transformation system, and sketches a variety of tasks to which it has been applied, from redocumenting to large-scale system migration. Its success derives partly from a vision of design maintenance and the construction of infrastructure that appears necessary to support that vision. DMS handles program scale by careful space management, computational scale via parallelism
(Show Context)

Citation Context

...tion as a serious tool for software evolution is largely unrealized in practice. Mechanical refactoring [13] was proposed in 1990 as a technique for restructuring programs and is recently popularized =-=[9]-=- as a methodology with suggestions for tool support. Tools for refactoring SmallTalk [14] and Java have started to appear, and some experimental work has been done in refactoring C++ [15]. The better ...

Aspect-oriented programming and modular reasoning

by Gregor Kiczales, Mira Mezini - ICSE ’05: PROCEEDINGS OF THE 27TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, 2005 , 2004
"... Aspects cut new interfaces through the primary decomposition of a system. This means that in the presence of aspects, the complete interface of a module can only be determined once the complete configuration of modules in the system is known. While this may seem anti-modular, it is an inherent prope ..."
Abstract - Cited by 153 (3 self) - Add to MetaCart
Aspects cut new interfaces through the primary decomposition of a system. This means that in the presence of aspects, the complete interface of a module can only be determined once the complete configuration of modules in the system is known. While this may seem anti-modular, it is an inherent property of crosscutting concerns, and using aspect-oriented programming serves to recover modular reasoning in the presence of such concerns.
(Show Context)

Citation Context

...nterface), and the typess(i.e. interfaces) of any other code called by the method.sNot all decisions are amendable to modular reasoning.sMany program refactorings require more information forsexample =-=[13]-=-. Expanded modular reasoning means alsosconsulting the implementations of referenced modules, andsglobal reasoning means having to examine all the modulessin the system or sub-system.sCopyright 2004 G...

Java Quality Assurance by Detecting Code Smells

by Eva Van Emden, Leon Moonen - in Proceedings of the 9th Working Conference on Reverse Engineering. IEEE Computer , 2002
"... Software inspection is a known technique for improving software quality. It involves carefully examining the code, the design, and the documentation of software and checking these for aspects that are known to be potentially problematic based on past experience. Code smells are a metaphor to describ ..."
Abstract - Cited by 151 (5 self) - Add to MetaCart
Software inspection is a known technique for improving software quality. It involves carefully examining the code, the design, and the documentation of software and checking these for aspects that are known to be potentially problematic based on past experience. Code smells are a metaphor to describe patterns that are generally associated with bad design and bad programming practices. Originally, code smells are used to find the places in software that could benefit from refactoring. In this paper, we investigate how the quality of code can be automatically assessed by checking for the presence of code smells and how this approach can contribute to automatic code inspection. We present an approach for the automatic detection and visualization of code smells and discuss how this approach can be used in the design of a software inspection tool. We illustrate the feasibility of our approach with the development of jCOSMO, a prototype code smell browser that detects and visualizes code smells in JAVA source code. Finally, we show how this tool was applied in a case study. Keywords: software inspection, quality assurance, Java, refactoring, code smells.
(Show Context)

Citation Context

...allocation, null references, array bounds errors, etc. In this paper, we will focus on a different aspect of code quality: Inspired by the metaphor of "code smells" introduced in the refacto=-=ring book [12], we revie-=-w the code for 1 problems that are generally associated with bad program design and bad programming practices. 1 Beck and Fowler introduce the metaphor of "code smells" to describe the patte...

Comparison and Evaluation of Code Clone Detection Techniques and Tools: A Qualitative Approach

by Chanchal K. Roy, James R. Cordy , Rainer Koschke - SCIENCE OF COMPUTER PROGRAMMING , 2009
"... Over the last decade many techniques and tools for software clone detection have been proposed. In this paper, we provide a qualitative comparison and evaluation of the current state-of-the-art in clone detection techniques and tools, and organize the large amount of information into a coherent conc ..."
Abstract - Cited by 144 (32 self) - Add to MetaCart
Over the last decade many techniques and tools for software clone detection have been proposed. In this paper, we provide a qualitative comparison and evaluation of the current state-of-the-art in clone detection techniques and tools, and organize the large amount of information into a coherent conceptual framework. We begin with background concepts, a generic clone detection process and an overall taxonomy of current techniques and tools. We then classify, compare and evaluate the techniques and tools in two different dimensions. First, we classify and compare approaches based on a number of facets, each of which has a set of (possibly overlapping) attributes. Second, we qualitatively evaluate the classified techniques and tools with respect to a taxonomy of editing scenarios designed to model the creation of Type-1, Type-2, Type-3 and Type-4 clones. Finally, we provide examples of how one might use the results of this study to choose the most appropriate clone detection tool or technique in the context of a particular set of goals and constraints. The primary contributions of this paper are: (1) a schema for classifying clone detection techniques and tools and a classification of current clone detectors based on this schema, and (2) a taxonomy of editing scenarios that produce different clone types and a qualitative evaluation of current clone detectors based on this taxonomy.

Implementing Distribution and Persistence Aspects with AspectJ

by Sérgio Soares, Eduardo Laureano, Paulo Borba , 2002
"... This paper reports our experience using AspectJ, a general purpose aspect-oriented extension to Java, to implement distribution and persistence aspects in a web-based information system. This system was originally implemented in Java and restructured with AspectJ. Our main contribution is to show th ..."
Abstract - Cited by 141 (16 self) - Add to MetaCart
This paper reports our experience using AspectJ, a general purpose aspect-oriented extension to Java, to implement distribution and persistence aspects in a web-based information system. This system was originally implemented in Java and restructured with AspectJ. Our main contribution is to show that AspectJ is useful for implementing several persistence and distribution concerns in the application considered, and other similar applications. We have also identified a few drawbacks in the language and suggest some minor modifications that could significantly improve similar implementations. Despite the drawbacks, we argue that the AspectJ implementation is superior to the pure Java implementation. Some of the aspects implemented in our experiment are abstract and constitute a simple aspect framework. The other aspects are application specific but we suggest that different implementations might follow the same aspect pattern. The framework and the pattern allow us to propose architecture-specific guidelines that provide practical advice for both restructuring and implementing certain kinds of persistent and distributed applications with AspectJ.
(Show Context)

Citation Context

...t all, but this would not satisfy the Health Watcher’s adaptability and extensibility requirements. As the necessary advice follow the same templates, we could use code generation [3] and refactoring =-=[9, 4]-=- techniques to reduce the problems with our solution, and also with the pure object-oriented solution, but it would be better to avoid those problems in the first place. In order to eliminate the prod...

The Story of Moose: an Agile Reengineering Environment

by Oscar Nierstrasz, et al. , 2005
"... Moose is a language-independent environment for reverseand re-engineering complex software systems. Moose provides a set of services including a common meta-model, metrics evaluation and visualization, a model repository, and generic GUI support for querying, browsing and grouping. The development e ..."
Abstract - Cited by 138 (51 self) - Add to MetaCart
Moose is a language-independent environment for reverseand re-engineering complex software systems. Moose provides a set of services including a common meta-model, metrics evaluation and visualization, a model repository, and generic GUI support for querying, browsing and grouping. The development effort invested in Moose has paid off in precisely those research activities that benefit from applying a combination of complementary techniques. We describe how Moose has evolved over the years, we draw a number of lessons learned from our experience, and we outline the present and future of Moose.
Powered by: Apache Solr
  • About CiteSeerX
  • Submit and Index Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2019 The Pennsylvania State University