Your class project is the delivery of an executable software system that
makes use of at least three patterns. You must choose from a minimum
of one architectural pattern that we cover, and two design patterns. For
your design patterns, you must choose at least one from the design patterns
we cover in class. The second design pattern can be selected either
from those covered in class, or from any published design pattern in either
Gamma, et. al. or Buschmann, et. al.
You should produce a project proposal for review by me by November 11th.
The project proposal will specify a particular business problem that
you are solving, and will list the patterns involved in your proposed solution
to the problem, with a brief discussion of how these patterns participate
in an intelligent solution to the original problem. Allowing me to
review your project concept will give you the goahead for proceeding. You
should come up with a legitimate business concept that will benefit from your
selection of patterns. That is to say, your pattern selection should
all fit together to solve some legitimate business need. In short,
come up with an interesting problem, and solve it using the available patterns.
Some example project ideas:
One might select the Blackboard pattern as the architectural pattern, and
then write a GUI interface using the Model-View-Controller pattern, and then
integrate that with the State pattern. The controlling business idea
here might be a simple stock analysis program.
Or, one might select the Broker as the architectural pattern, and then write
a simple gui (or none at all), and integrate in to the system implementations
of the Visitor and Iterator patterns. The controlling business idea
here might be any application that deals with dynamic structures (composites)
of things.
Or, one might choose the Layers architectural pattern, and produce a simple
system built on a layered architecture that also incorporates Singletons and
the Bridge pattern. The controlling business idea here might be any
application that deals with a need for dynamic versions of things.