[ IBM Research ]
[ Find ] [ News ] [ Products ] [ Support ] [ Business solutions ] [ Inside IBM ] [ Interest groups ]

back to home page

Selected Publications and Other Materials

Books · Papers · Articles · Presentations · Miscellaneous


Design Patterns Design Patterns CD Pattern Hatching Pattern Languages of Program Design 2 Object-Oriented Application Frameworks


  • "Pluggable Reflection: Decoupling Meta-Interface and Implementation." Co-authored with David Lorenz, observes that reflection remains a second-class citizen in current programming models, where it's assumed to be imperative and tightly bound to its implementation. In contrast, most object-oriented APIs allow interfaces to vary independently of their implementations. Components take this separation a step further by describing unforeseeable attributes---the key to pluggable third-party components. This paper describes how reflection can benefit from a similar evolutionary path. Presented at ICSE '03.

  • "A Perturbation-Free Replay Platform for Cross-Optimized Multithreaded Applications." Co-authored with members of the Jalapeño and DejaVu teams at IBM Research, describes how cross-optimization, symmetric instrumentation, and remote reflection work together to help you debug non-deterministic multithreaded code. Presented at IPDPS '01.

  • "Designing Components versus Objects: A Transformational Approach." Co-authored with David Lorenz, explores the component design space as an outgrowth of the object-oriented design space as constrained by the JavaBean component model. Develops a taxonomy for the component design space and contrasts it with a corresponding taxonomy for objects. Presented at ICSE '01.

  • "Automated Architectural Transformation: Objects to Components" (192 KB PDF). A precursor to the ICSE '01 paper focusing on automated transformation of object designs to JavaBeans-based component counterparts. Published as IBM Research Research Report RC 21773 (98045).
  • "A Debate on Language and Tool Support for Design Patterns." POPL '00 shoot-out between Craig Chambers, Bill Harrison, and myself over the roles and relative merits of patterns, languages, and tools.
  • "Execution Patterns in Object-Oriented Visualization." COOTS '98 paper describing new visualization techniques for object-oriented programs.
  • "Industrial Experience with Design Patterns." ICSE-18 paper, co-authored with a bunch of other pattern people, relating our experiences using design patterns in the field.
  • "Automatic Code Generation from Design Patterns" (227 KB PDF). Draft version of paper that appears in IBM Systems Journal, Vol. 35, No. 2. An HTML version is also available.
  • "Modeling Object-Oriented Program Execution." ECOOP '94 paper on Jinsight's mechanism for storing execution information.
  • "Visualizing the Behavior of Object-Oriented Systems." Original OOPSLA '93 paper on what is now called Jinsight, a framework for visualizing the execution of object-oriented software.
  • "Design Patterns: Abstraction and Reuse of Object-Oriented Design" (272 KB PostScript, 67 KB compressed). Original ECOOP '93 paper on design patterns.
  • "An Object-Oriented Architecture for Constraint-Based Graphical Editing." In Proceedings of the Third Eurographics Workshop on Object-Oriented Graphics, pages 1–22, Champéry, Switzerland, October 1992. Also available as IBM Research Division Technical Report RC 18524 (79392). Presents an object-oriented architecture that integrates Unidraw, a graphical editing framework, and QOCA, a powerful constraint solving toolkit. Referred to in Design Patterns.
  • "A Unidraw-based User Interface Builder." The definitive paper on ibuild, which pioneered the Generation Gap pattern described in Pattern Hatching. Appears in ACM UIST Proceedings, 1991:201-210.
  • "Unidraw: A Framework for Building Domain-Specific Graphical Editors" (ACM TOIS 8(3):237-268 (1990)). Second only to my thesis as a definitive guide to Unidraw. An early version of this paper appears in ACM UIST Proceedings, 1989:158-167 (136 KB PDF).
  • "Composing User Interfaces with InterViews." A good overview of InterViews 2.6—alas, not the definitive version. Appears in IEEE Computer, 22(2):8-22 (1989).
  • "InterViews: A C++ Graphical Interface Toolkit" (103 KB PDF). An early InterViews paper, much more "what" than "how" or "why." Published as Technical Report CSL-TR-88-358, Stanford University Computer Systems Laboratory, July 1988.
  • "Applying Object-Oriented Design to Structured Graphics." My first technical publication, I believe. Appears in USENIX C++ Conference Proceedings, 1988:81-94.



  • "An Introduction to Design Patterns" (426 KB PDF). 2-up slides from the ubiquitous tutorial, presented dozens of times in forums like OOPSLA, ECOOP, C++ World, ObjectWorld, USENIX C++/COOTS, various IBM conferences, ICSE, PLDI—you name it.
  • "Designing with Patterns" (424 KB PDF). 2-up slides from another arguably overexposed tutorial. This one focuses on showing you how (not) to apply design patterns. Covers a slight superset of the material in Chapter 2 of Pattern Hatching.
  • "Patterns: The Top Ten Misconceptions" (297 KB PDF). A talking-head version of the section in Pattern Hatching by the same name. Describes and dispels 10 recurring myths about patterns.


For problems or questions regarding this web site, contact vlis@us.ibm.com.
Last updated 9 January 2004.