Model Problems

The software architecture community would benefit from sharing a set of standard example problems. These would improve our ability to work out ideas, exhibit techniques, and compare results. The Composable Systems Group at Carnegie Mellon has been assembling such a collection of problems. These pages are intended to stimulate a discussion about suitable problems: what characteristics should they have, what specific problems would serve us well?

The idea of model problems

The utility of model problems

Current model problems

Keyword in Context (KWIC)
Given a set of lines, create an alphabetized list of the rotations of those lines.
Sea Buoy
Collect and transmit weather data both automatically and on demand; allow preemption for emergency services.
Cruise Control
Maintain the speed of a vehicle.
Conference Refreeeing
Solicit, referee, and select papers for a conference.
Mailing List Handler
Merge address information from multiple sources, eliminating duplicates and observing reader preferences.
Printer Spooler
Manage print jobs within a printer network.
Automate traditional library tasks, such as check-in and check-out of books.
Automated Teller Machine (ATM)
Provide the usual banking functions with a remotely-located machine.
Calendar Scheduler
Organize a meeting schedule.
Translate source code for a programming language to executable form.
Mobile Robot
Design a mobile robot capable of executing tasks while monitoring the environment, e.g., avoiding obstacles.
All the problems have short problem statements. Keyword in Context and Mobile Robot have solutions. Calendar Scheduler has an extended problem specification. We have some material in hand that isn't included yet. We'll be happy to include new material, especially links to other on-line material. Check back periodically for updates.



  • Mary Shaw
  • David Garlan
  • Robert Allen
  • Daniel Klein
  • John Ockerbloom
  • Curtis Scott
  • Marco Schumacher
  • Acknowledgements

    [Content last modified Halloween 1995. Mail suggestions to the current maintainer.]