Computer Science 3311

Software Design

 

Term: Fall 2000 Instructor: Gunnar Gotshalks
(gunnar@cs.yorku.ca)
Course Outline
Term: Fall 1999 Instructor: Richard Paige
(paige@cs.yorku.ca)
Course Outline

Description:

A study of design methods and their use in the correct construction, implementation, and maintenance of software systems. Topics include design, implementation, testing, documentation needs and standards, support tools. This course focuses on design techniques for both small and large software systems. Techniques for the design of components (e.g., modules, classes, procedures, executables) as well as complex architectures will be considered. Principles for software design and rules for helping to ensure software quality will be discussed. The techniques will be applied in a set of small assignments, and a large-scale project, where students will design, implement, and maintain a non-trivial software system.

Specific topics to be discussed may include the following:

  • software design principles: coupling and cohesion, information hiding, open-closed, interface design.
  • abstract data types
  • seamless software construction and process models; a rational design process
  • design-by-contract and its implementation in programming languages and design methods; writing and testing contracts; debugging contracts.
  • abstraction and data design; choosing data structures.
  • the Business Object Notation (BON) for modeling designs; alternative modeling languages like UML, data-flow diagrams, structure charts, etc.
  • static software modeling; dynamic modeling and behavioural modeling.
  • case studies in design: designing architectures; comparisons; design of OO inheritance hierarchies; class library design.
  • methods for finding classes; designing class interfaces
  • CASE tools: forward and reverse engineering of code from models.
  • software testing.
  • design patterns; applications of patterns; implementing patterns.

Prerequisites: general prerequisites, including COSC 2001 3.0 and MATH2090 3.0 and COSC2031 3.0

Course List


This page was last updated 09/30/2000.
Contents copyright ©, 2000, University of Toronto.