Design Patterns - Study Guides - Bistro -
Smalltalk
Conceptual
Modeling - Behavior Modeling -
Diatribes
EDUCE: A Pattern Language of Language Patterns, draft paper, Feb. 2010
This pattern language shows how to rephrase problem domain statements and solution usage requirements in a consistent form, thereby supporting the creation of a common, shared team vocabulary, and providing natural conceptual models as "grist" for the object-oriented analysis and design "mill."
State Names, draft paper, July 2004 PDF (91 kb)
This design pattern offers recommendations for naming state objects developed using the State pattern.
Software Metaphors, early draft, Jan. 2004 PDF (313 kb)
This paper discusses the wide variety of metaphors used in software designs, from those present in the most basic and primitive aspects of von Neumann computers to those emerging as software design patterns and large-scale software architectures.
Promised Operations, draft paper, June 2003
This design pattern show how to separate promised operations from public operations in object-oriented subsystem designs.
Selective Visitor, draft paper, June 2003
This design pattern shows how to overcome some limitations of the traditional Visitor pattern.
Exception Registry, draft paper, June 2003
This design pattern shows how to convert legacy system exception codes into classified exceptions.
Resource Manager, final draft, May 2001
This design pattern shows how to factor resource lifecycle management out into a separate class and focus client code on resource usage.
Object Design Study Guide, initial draft, Feb. 2005
This guide provides a structured introduction to the book Object Design: Roles, Responsibilities, Collaborations by Rebecca Wirfs-Brock, Alan McKean.
Concurrent Programming Study Guide, final draft, Aug. 2002
This guide provides a structured introduction to the book Concurrent Programming in Java by Doug Lea.
Refactoring Study Guide, final draft, Nov. 2001
This guide provides a structured introduction to the book Refactoring by Martin Fowler.
EDUCE: A Pattern Language of Language Patterns, draft paper, Feb. 2010
This pattern language shows how to rephrase problem domain statements and solution usage requirements in a consistent form, thereby supporting the creation of a common, shared team vocabulary, and providing natural conceptual models as "grist" for the object-oriented analysis and design "mill."
A Conceptual Model for Software Requirements, draft paper, Feb. 2003
This paper offers a conceptual framework for software requirements that considers both the technical and the political aspects of software development. It also identifies some of the best practices in each related area of expertise.
Trace Cards, draft paper, Jan. 2003
This paper introduces a set of stylized index cards for capturing and organizing software product requirements knowledge. These cards can help developers maintain project alignment with and traceability back to business objectives in an agile manner. They can serve (requirements capture and analysis) as a natural adjunct to CRC cards (for design).
Quality Alignment and Quality Inventories, draft paper, Mar. 2002
This paper outlines a process for aligning information systems objectives with business objectives based on the consideration and formulation of quality objectives. It also inventories some of the common quality themes that concern businesses.
Using Natural Language in Software Development, Journal of Object-Oriented Programming 11(9), Feb. 1999
This paper presents a new approach to conceptual modeling based on natural language analysis. The approach serves as a natural adjunct to aspect-oriented or subject-oriented design and programming.
Natural Language Analysis for Domain and Usage Models, draft paper, Jan. 1999
This paper provides detailed examinations of the various word classes and the uses to which natural language analysis can be put during requirements formulation.
A Natural Conceptual Modeling Language, draft paper, July 1998
This paper introduces a new simplified graphical notation for building conceptual models, with an extended example.
EDUCE: Essential Domain + Usage Concept Extraction, draft paper, Mar. 1998
This white paper lays the foundation for a new approach to requirements capture.
Object Method Models, final draft, June 1997
This white paper discusses the results of research toward a graphical notation for defining object methods.
The Bistro Project, open source project (updated 2016)
This open source project provides the concrete results of research and development on the Bistro language and tools.
The Bistro Programming Language, Dr. Dobb's Journal, Feb. 2004
This introductory article summarizes the language features that Bistro inherits from both Smalltalk and Java.
Smalltalk over Java: An Introduction to Bistro, final draft, Feb. 2000
This paper introduces the Bistro programming language and compares it to Smalltalk and Java.
Bistro, final draft, Apr. 1999
This white paper outlines the differences between Bistro, Smalltalk and Java. It also compares Bistro to my previous work on Jist.
Introducing Jist, final draft, Feb. 1999
This white paper introduces a new OO programming language that combines the best language features of both Smalltalk and Java.
Toward Smalltalk and Java Language Integration, final draft, May 1997
This white paper presents the results of a feasibility study for integrating the Smalltalk and Java programming languages.
Class Naming and Privacy in Smalltalk, The Smalltalk Report 6(3), Nov. 1996
This article presented the results of my research and development of Subsystems for Smalltalk. Subsystems are classes that have private name spaces that contain private classes. The technology described in this article serves as the foundation for my implementation of Subsytems/V, an experiment in adding private name spaces to Smalltalk.
Building Object-Oriented Frameworks, The Smalltalk Report 3(1), Sep. 1993
This article presented a new view of object frameworks just prior to the advent of design patterns. In current terms, this work was based on Observers and Mediators (see the book Design Patterns). Component objects can be simplified by factoring out the behavior found in interactive systems. In addition to simplifying components, such refactoring leads to the creation of reusable framework objects (combining the Mediator and Observer design patterns).
Modules: Encapsulating Behavior in Smalltalk, The Smalltalk Report 2(5), Feb. 1993
This article presented a new view of modules for Smalltalk, describing how modules could be made first-class objects within Smalltalk. This article served as the foundation for my research and experiments in adding private name spaces to Smalltalk.
In Consideration of Trace Cards, open letter, March 2003
This open letter responds to reviews of a paper submitted to the Agile Development 2003 conference and raises some issues regarding "agile" methods.
Language Neutrality and the Java Platform, final draft, May 2002
This white paper considers criteria for assessing the language neutrality of a software development platform.