The craft of Prolog
Software maintenance management: changes in the last decade
Journal of Software Maintenance: Research and Practice
Neural networks and pattern recognition in human-computer interaction
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
Applying complexity measures to rule-based prolog programs
Journal of Systems and Software
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Software engineering (2nd ed.): principles and practice
Software engineering (2nd ed.): principles and practice
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Leveraging Legacy System Dollars for E-Business
IT Professional
Redundant Argument Filtering of Logic Programs
LOPSTR '96 Proceedings of the 6th International Workshop on Logic Programming Synthesis and Transformation
Tool support for refactoring functional programs
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Identifying Refactoring Opportunities Using Logic Meta Programming
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Mining longest repeating subsequences to predict world wide web surfing
USITS'99 Proceedings of the 2nd conference on USENIX Symposium on Internet Technologies and Systems - Volume 2
Searching semantically equivalent code fragments in logic programs
LOPSTR'04 Proceedings of the 14th international conference on Logic Based Program Synthesis and Transformation
Declarative programming for verification: lessons and outlook
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
An Algorithm for Sophisticated Code Matching in Logic Programs
ICLP '08 Proceedings of the 24th International Conference on Logic Programming
Automatic refactoring of Erlang programs
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Clones in logic programs and how to detect them
LOPSTR'11 Proceedings of the 21st international conference on Logic-Based Program Synthesis and Transformation
Hi-index | 0.03 |
Refactoring is an established technique from the object-oriented (OO) programming community to restructure code: it aims at improving software readability, maintainability, and extensibility. Although refactoring is not tied to the OO-paradigm in particular, its ideas have not been applied to logic programming until now. This paper applies the ideas of refactoring to Prolog programs. A catalogue is presented listing refactorings classified according to scope. Some of the refactorings have been adapted from the OO-paradigm, while others have been specifically designed for Prolog. The discrepancy between intended and operational semantics in Prolog is also addressed by some of the refactorings. In addition, ViPReSS, a semi-automatic refactoring browser, is discussed and the experience with applying ViPReSS to a large Prolog legacy system is reported. The main conclusion is that refactoring is both a viable technique in Prolog and a rather desirable one.