CSE584 (Winter 2001): Assignment #2
Assigned: 30 January 2001
Due: 13 February 2001


  • See the home page for details about turning in the assignment, the specific time for the due date, the assignment's weight, etc.
  • It will be immediately obvious that the form of this assignment is entirely different from Assignment #1, as I have promised.

Mary Shaw and others at CMU once started a set of "model problems" in software architecture, intended to lay down a set of shared examples for the community to study, to allow them to compare and contrast results, etc.  There is a relatively standard format for these problems, which is perhaps best seen in the page for the classic KWIC problem: the standard format addresses the history of the problem, the design considerations, and alternative solutions.   

There are another 10 or so model problems listed on the web page, most of them without significant content.  (Indeed, the content for KWIC isn't especially complete.)  Your assignment is simple (to state): take any one of the model problems (except KWIC) and flesh it out to a really significant degree.  You don't necessarily need to expand every part (for instance, in some cases the history may be hard for you to acquire), and I would expect in general that the "design considerations" and "solutions" parts will be where you spend the bulk of your effort.  You are permitted to work in pairs on this assignment (you'll share the same grade), if you want; I will have somewhat higher expectations in terms of what you produce if you work in pairs, for obvious reasons.

A few odds & ends of comments:

  • Just because they are called model problems in "software architecture" doesn't mean that you need to come at this from that point of view per se: I think of them as general software design problems, and you can do this, too.
  • You may want to think about architecture, patterns, frameworks, aspect-oriented programming, and other (say, component-based) approaches that you know as part of the potential solution space.
  • What I am really looking for in this assignment is your ability to pick up one of the problems, hold it to a bright light to understand it deeply, and to be able to convey to the rest of the software engineering world what the issues and alternative designs are (and how they compare).
  • Mary Shaw has agreed to let us submit improvements to this page (as you'll be able to tell, it's been in disuse for some time, and she'd love to revive it).  I'd be thrilled if we were successful in this regard for a couple of the problems.