Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Modular type-based reverse engineering of parameterized types in Java code
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Understanding class hierarchies using concept analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Evaluating the effectiveness of pointer alias analyses
Science of Computer Programming - Special issue n static program analysis (SAS'98)
Evolving Object-Oriented Designs with Refactorings
Automated Software Engineering
Refactoring for generalization using type constraints
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Adding wildcards to the Java programming language
Proceedings of the 2004 ACM symposium on Applied computing
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Refactoring to Patterns
Converting Java classes to use generics
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Converting java programs to use generic libraries
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Refactoring class hierarchies with KABA
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Refactoring support for class library migration
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Decoupling classes with inferred interfaces
Proceedings of the 2006 ACM symposium on Applied computing
Refactoring for Parameterizing Java Classes
ICSE '07 Proceedings of the 29th international conference on Software Engineering
From Public to Private to Absent: Refactoring Java Programs under Constrained Accessibility
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Dimensions of precision in reference analysis of object-oriented programming languages
CC'03 Proceedings of the 12th international conference on Compiler construction
Efficiently refactoring java applications to use generic libraries
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Refactoring using type constraints
SAS'07 Proceedings of the 14th international conference on Static Analysis
RefaFlex: safer refactorings for reflective Java programs
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Automated repair of HTML generation errors in PHP applications using string constraint solving
Proceedings of the 34th International Conference on Software Engineering
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Constraint-Based refactoring with foresight
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Reim & ReImInfer: checking and inference of reference immutability and method purity
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Refactoring support for Smalltalk using static type inference
Proceedings of the International Workshop on Smalltalk Technologies
CC'13 Proceedings of the 22nd international conference on Compiler Construction
A novel obfuscation: class hierarchy flattening
FPS'12 Proceedings of the 5th international conference on Foundations and Practice of Security
Wyvern: a simple, typed, and pure object-oriented language
Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
Implementing refactorings for FOP: lessons learned and challenges ahead
Proceedings of the 5th International Workshop on Feature-Oriented Software Development
Befactoring: preserving non-functional properties under behavioural change
Proceedings of the 2013 ACM workshop on Workshop on refactoring tools
Hi-index | 0.00 |
Type constraints express subtype relationships between the types of program expressions, for example, those relationships that are required for type correctness. Type constraints were originally proposed as a convenient framework for solving type checking and type inference problems. This paper shows how type constraints can be used as the basis for practical refactoring tools. In our approach, a set of type constraints is derived from a type-correct program P. The main insight behind our work is the fact that P constitutes just one solution to this constraint system, and that alternative solutions may exist that correspond to refactored versions of P. We show how a number of refactorings for manipulating types and class hierarchies can be expressed naturally using type constraints. Several refactorings in the standard distribution of Eclipse are based on our work.