Program restructuring as an aid to software maintenance
Program restructuring as an aid to software maintenance
Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
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
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Agile software development
Planning Extreme Programming
Proceedings of the 2002 ACM SIGPLAN workshop on Rule-based programming
Implementing distribution and persistence aspects with aspectJ
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
GCSE '00 Proceedings of the Second International Symposium on Generative and Component-Based Software Engineering-Revised Papers
Practical analysis for refactoring
Practical analysis for refactoring
Evolving object-oriented designs with refactorings
Evolving object-oriented designs with refactorings
Refactoring to Patterns
Algebraic reasoning for object-oriented programming
Science of Computer Programming - Special issue on program transformation
Deriving refactorings for aspectJ
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Algebraic reasoning for object-oriented programming
Science of Computer Programming - Special issue on program transformation
Deriving refactorings for AspectJ
Proceedings of the 4th international conference on Aspect-oriented software development
Deriving refactorings for AspectJ
Proceedings of the 4th international conference on Aspect-oriented software development
Refactoring-based support for binary compatibility in evolving frameworks
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Change-oriented software engineering
ICDL '07 Proceedings of the 2007 international conference on Dynamic languages: in conjunction with the 15th International Smalltalk Joint Conference 2007
Fusing a Transformation Language with an Open Compiler
Electronic Notes in Theoretical Computer Science (ENTCS)
Composition Techniques for Rule-Based Model Transformation Languages
ICMT '08 Proceedings of the 1st international conference on Theory and Practice of Model Transformations
Towards Concrete Syntax Patterns for Logic-based Transformation Rules
Electronic Notes in Theoretical Computer Science (ENTCS)
Challenge proposal: verification of refactorings
Proceedings of the 3rd workshop on Programming languages meets program verification
Using conditional transformations for semantic user interface adaptation
Proceedings of the 10th International Conference on Information Integration and Web-based Applications & Services
Fine-grain transformations to refactor UML models
Proceedings of the Warm Up Workshop for ACM/IEEE ICSE 2010
Detection and Resolution of Weaving Interactions
Transactions on Aspect-Oriented Software Development V
Perspectives on automated correction of bad smells
Proceedings of the joint international and annual ERCIM workshops on Principles of software evolution (IWPSE) and software evolution (Evol) workshops
Stepping Stones over the Refactoring Rubicon
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Composite refactoring using fine-grained transformations
Proceedings of the 2009 Annual Research Conference of the South African Institute of Computer Scientists and Information Technologists
Refactoring is not (yet) about transformation
Proceedings of the 2nd Workshop on Refactoring Tools
Practical conflict resolution for the composition of program transformations
SC'08 Proceedings of the 7th international conference on Software composition
Specifying and implementing refactorings
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Synthesis of OCL pre-conditions for graph transformation rules
ICMT'10 Proceedings of the Third international conference on Theory and practice of model transformations
On the use of graph transformations for model refactoring
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
A domain-specific language for scripting refactorings in erlang
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Let's make refactoring tools user-extensible!
Proceedings of the Fifth Workshop on Refactoring Tools
Reconstructing complex metamodel evolution
SLE'11 Proceedings of the 4th international conference on Software Language Engineering
A posteriori operation detection in evolving software models
Journal of Systems and Software
Practical use of static composition of refactoring operations
Proceedings of the 28th Annual ACM Symposium on Applied Computing
A compositional paradigm of automating refactorings
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.00 |
The number of possible refactorings is unlimited, so no tool vendor will ever be able to provide custom refactorings for all specific user needs. Therefore, we propose a new kind of refactoring tools, which allow users to create, edit and compose required refactorings just like any other documents. The heart of such a refactoring editor is the ability to compose larger refactorings from existing ones. Computing the precondition of the composite refactoring from the preconditions of the composed refactorings is non-trivial since earlier transformations influence the truth of preconditions of later ones. The ability to calculate these effects without referring to a particular program to which the refactorings should be applied is called program-independent composition. It is the prerequisite for creating composite refactorings that are reusable on arbitrary programs. The main contribution of this paper is a formal model for automatic, program-independent composition of conditional program transformations. We show that conditional transformations, including refactorings, can be composed flom a limited set of basic operations. Program-independent derivation of a precondition for the composite is based on the notion of "transformation description", which can be seen as a simplified, yet equally powerful, variant of Roberts' "postconditions" (Practical analysis for refactoring, Ph.D. Thesis (1999)). Our approach simplifies the implementation of refactoring tools--only the basic operations and the ability for composition must be hard coded in a tool. As a proof of concept, we sketch a transformation framework that implements our approach (jConditioner) and, based on the framework, an experimental refactoring tool (ConTraCT) that includes the editing capabilities that motivated our work.