Software unit test coverage and adequacy
ACM Computing Surveys (CSUR)
A refactoring tool for Smalltalk
Theory and Practice of Object Systems - Special issue object-oriented software evolution and re-engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Design erosion: problems and causes
Journal of Systems and Software
Laws of Software Evolution Revisited
EWSPT '96 Proceedings of the 5th European Workshop on Software Process Technology
Dynamic Type Inference to Support Object-Oriented Reenginerring in Smalltalk
ECOOP '98 Workshop ion on Object-Oriented Technology
``Good Enough'' Analysis for Refactoring
ECOOP '98 Workshop ion on Object-Oriented Technology
Beyond the Refactoring Browser: Advanced Tool Support for Software Refactoring
IWPSE '03 Proceedings of the 6th International Workshop on Principles of Software Evolution
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Extreme Programming Explained: Embrace Change (2nd Edition)
Extreme Programming Explained: Embrace Change (2nd Edition)
Refactoring Tools: Fitness for Purpose
IEEE Software
Designing refactoring tools for developers
Proceedings of the 2nd Workshop on Refactoring Tools
Communications of the ACM
Refactoring using type constraints
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Refactoring is a crucial activity in agile software development. As a consequence, automated tools are expected to support refactoring, both for reducing the developer's effort as well as for avoiding errors due to manual changes. In this context, the chosen programming language has a major impact on the level of support that an automated refactoring tool can offer. One important aspect of a programming language concerning the automation of refactoring is the type system. While a static type system, present in languages such as Java, provides information about dependencies in the program, the dynamic type system of the Smalltalk programming language offers little information that can be used by automated refactoring tools. This paper focuses on the challenges in the context of refactoring raised by the dynamic type system of Smalltalk. It highlights the problems caused by the absence of static type information and proposes the use of static code analysis for performing type inference to gather information about the dependencies in the program's source code. It explains the mechanism of the static code analysis using sample code and presents a prototype of an enhanced refactoring tool, which uses the structural information extracted through static code analysis. Empirical samples build the base for evaluating the effectiveness of the approach.