OOPSLA '99 Denver

Designfest '99




Problem Abstracts

1. Pat's Contracted Software - A Drink Vending Machine (Moderate Difficulty)

In this DesignFest problem, your job will be to finish several designs that focus on various aspects of constructing a Drink Vending Machine. Just as though you had joined a design house, you will be given a series of relatively small design problems. They will be staggered over the course of the day, so that you have time to learn to work with your teammates and evolve your design process and design discussion skills.

These problems have been solved by novices, and debated by experts, so they admit of multiple skill levels. Some DesignFest problems are large enough that a good group of people might get them done in a day. However, people who are trying out their design skills - and more significantly, meeting other designers for the first time - spend most of their energy learning how to talk about what they are doing, and may not actually finish the problem.

The problems that will be used in "Pat's Contracted Software" are simply stated and easy to understand - but they have multiple valid solutions, from naive to sophisticated.



2. A Flight/Ground/Test Event Logging Facility (Hard Problem)

Spacecraft such as Mars Pathfinder and robots like the Sojourner rover are embedded systems that operate in harsh environments far from Earth. If problems start to occur¾ whether due to environmental challenges or hardware faults or software defects¾ operators on Earth need a window into what's happening onboard. Thus it's very important for programmerto instrument the onboard software to log noteworthy events including routine telemetry, warnings, and errors. Your task is to define an object-oriented event logging facility that spacecraft programmers will use to instrument their code and that ground operators will control during mission operations. Due to the limited amount of memory onboard, events will be saved subject to an "entry policy" and discarded subject to a "retention policy", both of which will be controlled from the ground.



3. A Countdown Timer (Easy Problem)

In this design problem a simple countdown electronic timer is specified. The software design should be a copy of an existing hardware timer currently on the market. A hardware timer is loaned to the designers to model the needed classes, methods and patterns for implementation. The timer allows the user to enter time, start the countdown of the entered time, clear the entered time and stop the countdown.



4. Network Document Distribution Service (Moderate Difficulty)

The spiraling growth of Web-commerce is leading many companies to re-design how they do business to find new ways to deliver value to their customers. Loan financing companies want to be able to present the loan contract to the end consumer while the client is still looking at the product. New Web applications are being developed that gather together data about the purchase and the consumer, which is sent to a back-end service to prepare the contract. This design problem involves the Contract Generation component which must read business data from an XML data stream, choose a particular contract template, create a script to set the tag-value pairs for the template, and block itself until the merged document appears, after which it must set a return value to the calling system.



5. Concept Development (Hard Probelm)

This design problem is to design a framework that will allow a seamless approach to the provision of personal and group spaces for the development of concepts. Because it is to allow concept development in a large range of applications, it will be necessary to allow appropriate interfaces to be plugged into the framework.

A use-case might be designers developing a large design across a network using personal and group CASE-type tools. Another use-case might be distance education students learning across the Internet.

It is expected that the design will be formulated from patterns and will be presented as a "super-pattern".