• Publications
  • Influence
Design patterns: elements of reuseable object-oriented software
The book is an introduction to the idea of design patterns in software engineering, and a catalog of twenty-three common patterns. The nice thing is, most experienced OOP designers will find outExpand
Designing Reusable Classes
This paper describes what it is like to design systems in Smalltalk and how classes are developed so that they will be reusable. Expand
Design Patterns: Abstraction and Reuse of Object-Oriented Design
This work describes how to express and organize design patterns and introduces a catalog of design patterns, which provide a common vocabulary for design and reduce system complexity by naming and defining abstractions. Expand
Building application frameworks: object-oriented foundations of framework design
Object Technology The first experience-based guide to building object-oriented frameworks Building Application Frameworks By providing reusable skeletons on which to build new applications,Expand
Practical analysis for refactoring
A new definition of refactoring is given that focuses on preconditions and postconditions of the refactorings, rather than on the program transformation itself, and the criteria that are necessary for anyRefactoring tool to succeed are identified. Expand
A Refactoring Tool for Smalltalk
The Smalltalk Refactoring Browser is a tool that carries out many refactorings automatically, and provides an environment for improving the structure of Smalltalk programs, and so reduces the cost of making reusable software. Expand
Automated Detection of Refactorings in Evolving Components
An algorithm is presented that detects refactorings performed during component evolution with accuracy over 85% and uses a combination of a fast syntactic analysis to detect refactoring candidates and a more expensive semantic analysis to refine the results. Expand
How do APIs evolve? A story of refactoring
It is discovered that the changes that break existing applications are not random, but tend to fall into particular categories, which suggests that refactoring-based migration tools should be used to update applications. Expand
Frameworks = (components + patterns)
nition we use most is “a framework is a reusable design of all or part of a system that is represented by a set of abstract classes and the way their instances interact.” Another common definition isExpand
Documenting Frameworks using Patterns
This paper shows one way to document frameworks with patterns, and includes a set of patterns for HotDraw as an example to see how well patterns work to describe a framework. Expand