[ 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

Books

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

Papers

  • "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.

Articles

Presentations

  • "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.

Miscellaneous



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