CSC407F - Software Architecture & Design
Course Information Sheet


General Information

Instructor: Prof. Penny (e-mail: penny@cs.toronto.edu) (office: LP396C)
Teaching Assistant: Ken Cheung

Lectures: TR1-2, LM162
Tutorial: W9-10 (place TBA). First tutorial Sep.20
Course Web page: http://www.cs.toronto.edu/~csc407h

Course Description

An introduction to the development of architectures and class-level designs for software systems.

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?

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. During the last decade, a large number of such patterns have been captured and systematized. We will be speding approximately 80% of our time studying these patterns and learning how to apply them appropriately.

The remaining time will be spent surveying related topics such as architecture description languages, architecture assessment, product lines, architecture extraction, and code re-factoring.


Prerequisistes


Textbooks

Required

Design Patterns: Elements of Reusable Object-Oriented Software
Gamma et. al.
Addison-Wesley (Professional COmputing Series), 1995
ISBN 0-201-63361-2
We will be using this text for a good 60% of the course Practitioners consider this one of the most valuable books published on software design. By the end of the course, you will know it intimately.

Recommended

A System of Patterns: Pattern-Oriented Software Architecture
Buschmann et. al.
John Wiley & Sons, 1996
This text complements Design Patterns by extending the concept to the sphere of larger-scale systems architectures. Topics from this book will be covered during the lectures. Useful reading if you wish to more fully understand the material.
Software Architecture in Practice
Bass et. al.
Addison-Wesley, 1998
ISBN 0-201-19930-0
A more broadly-scoped book than the above two. Discusses the concept of software architecture and how it relates to a software development organization. Covers architecture assessment, architecture description languages, product lines, and contains several interesting case studies to illustrate the concepts. Topics from this book will be covered during the lectures. Useful reading if you wish to more fully understand the material.

Reference

The Unified Modeling Language User Guide
Booch et. al.
Addison-Wesley, 1998
ISBN 0-201-57168-4
The course will make use of UML, and you will be required to hand in assignments containing some UML. We assume that you have been introduced to object-oriented analysis in CSC340. UML for use in design will be taught in the tutorials. If you don't own a reference book on UML, you should get one. Any suitable book will do. This one is good and is from the source.

Course Grades

Your course grade will be determined by four assignments (15% each) and a final exam (40%).

Assignments 1-3 will require you to hand in UML, written documentation, and working Java code appropriately printed. Assignment 4 will be a paper architecture, not requiring any programming.

Assignments are due before 5:00 p.m. the day of the tutorial (Wednesday) and are to be handed in to the T.A.
Assignments handed in before 5:00 p.m., Thursday will receive a late penalty of -15% (absolute).
Assignments handed in before 5:00 p.m., Friday will receive a late penalty of -30% (absolute).
After that, late assignments will be given a grade of 0 except under extenuating circumstances as determined on a case-by-case basis by Professor Penny.

You are expected to work alone on all your assignments without help from, or collaboration with, anybody else. If you are caught doing otherwise, the case will be considered plagiarism and will be handed over to the Dean of Arts & Science. Possible penalties include expulsion from the University or a mark of 0 for the course.