Model Problems in
Software Engineering

The software engineering 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.

It is common for a discipline, especially one that is just getting its wits about itself, to adopt some shared, well-defined problems for teaching and study. Often known as model systems, exemplars, or type problems, they provide a way to compare methods and results, work out new techniques on standard examples, and set a minimum standard of capability for new participants. In time, a reasonable approach to some of these problems becomes the price of admission to get serious consideration of a new technique. Model problems also provide a pre-debugged source of educational exercises.

Biology, for example, has Drosophila melanogaster (the fruit fly) and Rattus rattus Norwegicus (the lab rat). Each of these is part of the common discourse in the field. Each provides a familiar concrete instance that illustrates an important set of issues. This allows discussions to start from shared knowledge of the basic example and proceed expeditiously to the result, theory, or technique of current interest.

Closer to home, computer science has model problems in many areas. Familiar examples include sorting (algorithms), stack (data abstraction), dining philosophers (synchronization), library (formal specification) and traveling salesman (combinatoric optimization).

This site provides a home for collecting model problems in software engineering.  The current activity is in high-level software design and self-adaptive systems. Earlier effort collected model problems for software architecture and psychology of programming.

Model Problems in High-level Software Design

The software engineering design community is collecting model problems that support teaching and research in high-level design. The Designing 2025 workshop at ICSE in Ottawa discussed some candidate model problems and encouraged participants to help crowdsource new model problems, new uses of existing ones, and improvements to the presentations. The Designing community is developing a repository of these problems as a community resource.

This repository is available on a Google Drive. The main document is Model Problems and the folder with supporting material (one folder per problem) is Model Problem Set. These are freely available for browsing and commenting. If you would like to contribute to editing and improving the repository, please contact SE.Design.Model.Problems@gmail.com

The top-level document contains short descriptions of problems and links to longer problem statements and discussions or solutions responding to those statements, plus other supporting resources.  Instructions for adding new contributions and editing old ones are also provided.  We invite the SE design community to contribute.    

Model Problems in Self-Adaptive Systems

The self-adaptive systems community is collecting a repository of examples, challenge problems, and solutions that the software engineering for self-adaptive systems community can use to motivate research, exhibit and evaluate solutions and techniques, and compare results. These exemplars, of which there are over three dozen, are at https://www.hpi.uni-potsdam.de/giese/public/selfadapt/exemplars/ . They include not only model problems but also testbeds, managed systems, datasets, and frameworks.

Model Problems in Software Architecture

This set contains about a dozen model problems in software architecture. The somewhat dated collection (last updated in 1995) is available as a working paper at Model Problems in Software Architecture and online at https://www.cs.cmu.edu/~ModProb/index.html

Model Problems in Requirements and Specifications

This 1997 set contains discussion of criteria for good exemplars and an extensive list of exemplars for requirements and specifications with citations to their use. It is available in a conference proceedings at Springer Nature and at CiteSeer.

Model Problems in Psychology of Programming

This set of experimental problems in the psychology of programming contains about 30 problems in implementation and comprehension. The somewhat dated collection (last updated in 1996) is available online at https://www.cl.cam.ac.uk/~afb21/poptasks.html


For questions, contact the curators, Mary Shaw mary.shaw@cs.cmu.edu  and Eunsuk Kang eunsukk@andrew.cmu.edu

Privacy Policy