An introduction to the development of system-level architectures
and class-level object-oriented designs for software systems.
This course places special emphasis on the study of architecture and design patterns:
the core of solutions to commonly occurring design problems.
Other topics include representations of design/architecture
(with emphasis on the use of UML as a class-level design notation),
architectural assessment,
product lines,
architecture extraction,
and re-factoring.
The course does not have a major project,
but does have a series of smaller design and architecture exercises requiring some programming.
A knowledge of UML as used for requirements analysis and a working knowledge
of both the C++ and Java languages is assumed.
Even once we fully understand the requirements for a software system
it is rarely clear how to begin the programming task
(except for the most trivial of programs).
The steps in-between requirements and coding are first architecture and then design.
Architecture involves specifying the construction of the system at the highest level.
What are the major modules?
What are the major processes?
How do the processes communicate with one another?
Design involves specifying the construction of a single module or program at the class level.
What classes should we have?
What are their responsibilities?
With what other classes should they collaborate?
What methods should they contain?
This course teaches students how to come up with and then descirbed
system-level architectures and class-leve designs.
|