Watch a video introduction to this course on YouTube.
This course introduces students to the requirements definition phase of software development. It will discuss models, notations, and processes for software requirements identification, representation, validation, and analysis. An important component is a group project: the software requirements specification of a large software system.
CS 445 is a course for CS major students and is usually taken in a student's 3B term. This course is one of three that form the core of the software engineering option. This option will be of particular interest to students specializing in the development of large software systems. Students from other plans in Computer Science may elect to enrol in this course.
Prerequisites: CS 350; Computer Science students only.
Antirequisites: SE 463.
Related courses: CS 446, CS 447.
Cross-listed as: ECE 451.
Requirement Engineering by Axel van Lumsweerde Published by Wiley (optional)
Used in Course: SDL/SDT, UML/Rose.
Assumed Background: UNIX. Familiarity with document processing tools is an asset.
Course notes are required. Applying UML and Patterns, 2nd ed., C. Larman, Prentice Hall, 2002 is required. UML Distilled, 2nd ed., by M. Fowler, Addison-Wesley, Requirements Analysis and Systems Design, by L. Maciaszek, Addison-Wesley, SDL: Formal Object-Oriented Language for Communicating Systems, 2nd ed., by J. Ellsberger et al, Prentice Hall, Mastering the Requirements Process by S. Robertson and J. Robertson, Addison-Wesley, Exploring Requirements: Quality Before Decision by D. Gause and G. Weinberg, Dorset House, and Managing Software Requirements, A Unified Approach, by Leffingwell and Widrig, Addison Wesley are all recommended.
3 lecture hours, 1 tutorial hour, and 1 discussion hour (for project group meetings). Normally available in Fall and Winter.
Overview of the software development process and life cycle models. Requirements: identification, representation, validation, analysis; related standards and CASE tools.
Project discussion, including group management, member duties and group dynamics.
Methods for obtaining requirements from various sources.
Overview of notations and presentation of case studies: entity relationship models, data flow diagrams and structured analysis, SDL and UML.
Classification of requirements specification notations; relationship to application characteristics. Specification of control, functional, data requirements.
Specification of maintainability, safety, reliability, performance, etc.
Methods for validating a requirements specification: active reviews, scenarios and threads, executable specifications, automated analysis, formal verification.
Estimating duration and cost of project: CPM graphs, Gantt charts, milestones, algorithmic cost models, expert judgement, Delphi estimates.
Relationship between requirements and design specifications; estimation of resources, cost, and schedule for a large software project.

David R. Cheriton School of Computer Science
University of Waterloo
Waterloo, Ontario, Canada N2L 3G1
Tel: 519-888-4567 x33293
Fax: 519-885-1208
Contact | Feedback: cs-uops@cs.uwaterloo.ca | David R. Cheriton School of Computer Science | Faculty of Mathematics