'

Design by Contract, By Example

Workshop moderators:
   Richard Mitchell, Inferdata Corporatio
    Jim McKim, Rensselaer at Hartford

Design by Contract is a powerful technique that provides the promise of specifying classes in a machine checkable way. Until recently, it has failed to live up to that promise. However, the organizers of this workshop have developed, and continue to develop a disciplined approach for using Design by Contract to completely specify classes, often in ways that can be completely checked automatically. The essence of the method can be simply stated as, "e;Specify many features in terms of a few,"e; where the few make up a "e;specification set"e; for the class. The technique is sufficiently disciplined that two skilled users starting with the same specification set would generate nearly identical assertions for the remainder of the class´s features. In this workshop, participants will learn (by doing) how to build such specifications, starting with simple data structures and culminating with a small system.

Partial Bibliography:

Participants will learn about specifying classes via contracts by working through a carefully chosen set of examples. The examples will grow from simple individual data structures to small systems. A likely culminating example for the day is a framework of classes to support the observer pattern. We hope to bring people together who are interested in this subject and would like to collaborate in

To reach the workshop organizers, contact Jim McKim:

Special note: We´ll accept no more than 20 participants.

Pre-workshop activities: We will have some reading for prospective participants to do that will provide the background they´ll need for the Workshop. We´ll also ask for brief position papers in which participants outline what they will bring to the Tutorial and what they hope to take away.

Planned workshop activities: Participants will work in teams to incrementally design a small, but completely specified system or subsystem. The most likely candidate is a framework to support the Observer pattern. Along the way we´ll identify areas that are ripe for research, and discuss how we teach these techniques.

Post-workshop activities: We´ll implement the system in a variety of languages, and compare notes through the web site. We´ll also use the web site to keep track of participants´ activities in (1)-(4) above.'