Refactoring Functional Programs
[back to project home page]
A small, but growing heap of potentially related work, in no
particular order. To be harvested, amended, summarised and sorted..
some first non-functional pointers..
- Martin Fowler.
- Refactoring Home Page.
Refactoring: Improving the Design of Existing Code by MartinFowler,
ISBN 0201485672 . (Addison-Wesley Object Technology Series, 1999).
- William G. Griswold.
Restructuring as an Aid to Software Maintenance. PhD thesis,
University of Washington, 1991.
- W. G. Griswold, D. Notkin,
assistance for program restructuring, Transactions on Software
Engineering and Methodology, ACM, vol. 2, no. 3, pp. 228-269, July
- William F. Opdyke.
Object-Oriented Frameworks. PhD thesis, University of Illinois,
- Bill Opdyke
- Refactoring, Reuse & Reality
- Don Roberts.
Analysis for Refactoring. PhD thesis, University of Illinois at
Urbana Champaign, 1999.
- Don Roberts, John Brant, Ralph Johnson.
- A Refactoring
Tool for Smalltalk. Published in Theory and Practice of Object
Systems special issue on software reengineering.
- Don Roberts, John Brant, Ralph Johnson.
- Why every
Smalltalker Should use the Refactoring Browser. Published in the
- Robert W. Bowdidge and William G. Griswold.
the restructuring of data abstractions through manipulation of a
program visualization, ACM TOSEM, Volume 7, No. 2 (April 1998)
- Refactoring mailing list at Yahoo
- Wiki Pages About Refactoring.
Refactoring at the Program Transformation Wiki
Refactoring Project at Universiteit
Antwerpen and Vrije Universiteit Brussel:
The aim of the project is to provide a solid foundation for software
refactoring by the development of a suitable formal model. We aim at
a lightweight model, facilitating the investigation of basic
properties of refactoring, as well as the design of tools supporting
the refactoring process. In particular, the potential of graph
rewriting as a basis for such a model will be explored. There are
several reasons to assume that graph rewriting is a good basic
technique for building the model. In the first place, the notion of
a (typed) graph enables one to express numerous kinds of
diagrammatic representations in a natural way. Secondly, the
existing body of results concerning the representation and analysis
of graph rewriting processes provides a good starting point for the
description and manipulation of complex refactoring processes. This
should lead to, e.g., methods for the detection of conflicting
refactorings, and methods for the optimization of refactoring
processes. Thirdly, the question whether a given set of refactorings
is allowable in the sense that it preserves program behaviour is
obviously related to the characterization of graph properties that
are preserved by the corresponding rewriting rules. Other important
aspects are the complexity of refactorings, which can be studied in
terms of the number of graph rewriting steps needed, perhaps in
combination with the sizes of the graphs involved, and the issue of
consistency between various levels of abstraction, which is related
to work about hierarchical graphs.
mostly non-functional refactoring: people and tools
See also Martin Fowler's refactoring tools
- home pages:
- Martin Fowler
- William G. Griswold
- Bill Opdyke
- Don Roberts
The Ada Semantic Interface Specification (ASIS) is an interface
between an Ada environment (as defined by ISO/IEC 8652:1995) and any
tool or application requiring information from it. An Ada
environment includes valuable semantic and syntactic information.
ASIS is an open and published callable interface which gives CASE
tool and application developers access to this information. ASIS has
been designed to be independent of underlying Ada environment
implementations, thus supporting portability of software engineering
tools while relieving tool developers from needing to understand the
complexities of an Ada environment's proprietary internal
representation. In short, ASIS can provide the foundation for your
code analysis activities.
Garrido, University of Illinois at Urbana-Champaign is working
on a C refactoring tool, with specific focus on taking preprocessor
directives into account.
(1997 - ). A C and Java refactoring browser for Emacs and
XEmacs. Marian Vittek's
favorite project: "Finally, I have got the development tool I
always needed :-) . Currently I am trying to commercialize
Xrefactory in order to ensure its further evolution."
- IntelliJ IDEA is
a full-featured Java IDE with a high level of usability and
outstanding advanced code editing and refactoring support.
- The aim of the "Refactoring
Browser for Poseidon" is to aid developers in refactoring
not "just" code but also UML-models. Currently 13 refactorings
for class-, state- and activity diagrams are supported - with
far more to come.
for Java, XP Tools takes refactoring browsers to a new
level. It's unique combination of extensive code analysis and
powerful refactoring lets you keep your code in top shape at all
times. And every operation is available at your fingertips with
Java Refactoring Tool.
- jFactor is
a product family that provides powerful new code refactoring
tools to professional Java integrated development environments
(IDE). jFactor's unique set of refactoring tools helps Java
developers to safely and efficiently restructure their code to
greatly improve its quality, reliability and maintainability.
- Freefactor is a
Java refactoring framework. It consists of a tool-independent
refactoring system and an interface to allow it to be integrated
with other tools. Currently a prototype Java-based tool is
provided as well as bindings for Emacs
- a review assistant for Java programs
Gosling talks with Bill Venners about his current
research project, code-named Jackpot, which
builds annotated parse trees for programs and can help you analyze,
visualize, and refactor your program.
If you are aware of other relevant pointers, please send us an email, and we'll
eventually get round to updating this page.