CSC407S / CSC2103S
Software Architecture & Design
Course Information Sheet
This course is an introduction to the development of architectures
and class-level designs for software systems.
The goal of the course is to improve students' skills,
setting them on the road to becoming
competent software architects and designers.
Even if and when 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).
Important 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?
What technologies will be used?
Design involves specifying the construction of a single module (program).
For example, when the architecture specifies an object-oriented design
then what classes should we have?
What are their responsibilities?
With what other classes should they collaborate?
What methods should they contain?
The study of both design and architecture revolves around the study
of patterns.
A pattern describes the core of a solution to a
problem which occurs over and over again.
We will study architecture and design patterns and learn
how and when to apply them.
We will also learn how to use standard graphical notation (UML)
for specifying object-oriented designs, and how to translate
those designs into object-oriented code
(using Java as the exemplar).
Prerequisites
- CSC340H (Information Systems Analysis & Design)
- CSC378H (Data Structures & Algorithm Analysis)
Textbook
Design Patterns: Elements of Reusable Object-Oriented Software
Gamma et. al.
Addison-Wesley (Professional Computing Series), 1995
ISBN 0-201-63361-2
In addition, you should acquire for yourselves some information
on UML and Object-Oriented Analysis and Design. Two suitable books are
The Unified Modeling Language User Guide, Booch et. al.
Addison-Wesley, 1998, ISBN 0-201-57168-4
Object-Oriented Modeling and Design, Rumbaugh et. al.
Prentice-Hall, 1991, ISBN 0-13-629841-9
Course Grades
Your course grade will be determined using the following components.
- Assignment 1 (OO Analysis(1/3), OO Design/Java coding (2/3)) (20%)
- Assignment 2 (OO Design: UML/Patterns/Java coding) (20%)
- Assignment 3 (System-Level Architecture: written + diagrams) (20%)
- Final Examination (40%)
In addition, you must achieve at least 40% on the final examination to pass the course.
Otherwise, your mark will be min(your computed grade, 49%).
Lateness Policy
Assignments are due at the start of the tutorial hour (Friday at 12:00),
and are to be handed in to your T.A.
Assignments handed in late on Friday will receive a late penalty
of -10% (absolute).
Assignments handed in Monday morning at lecture time will receive
a late penalty of -30% (absolute).
For each day after, the grade will do down by -10% (absolute).
These late penalties may be waived under
extenuating circumstances as determined on a
case-by-case basis by Professor Penny (e.g., sickness).
"Too much work" is not considered an extenuating circumstance.
Course Conduct
Attendance at lectures is considered mandatory.
Much material and interpretation is covered during lectures
that is not present in textbooks or notes.
Experience has shown that your final examination grade is highly correlated
with lecture attendance.
Your individual TA will be grading your assignments.
Therefore, it is wise to attend tutorials and seek help
from your TA.
The tutorial sections will be covering background material
and going into greater depth with worked out examples.
To understand what your particular TA expects to see in an assignment,
you should attend the tutorials.
You are expected to work alone on all your assignments
without help from, or collaboration with, anybody else.
Only in this manner will you learn the material sufficiently
well to pass the final examination.
High-level discussions with others regarding assignments is
fine (including with the instructor and your TA, who may give you
valuable design advice). Copying from others, however, is considered
plagiarism, and will be dealt with accordingly.
Resources
Please read the course newsgroup ut.cdf.csc407h regularly.
All announcements will be posted there.
Additional resources (such as links, copies of the lecture slides, and handouts)
are available from the course website:
http://www.cs.toronto.edu/~penny/teaching/csc407.