University of Waterloo COVID-19 update

The University of Waterloo is constantly updating its most frequently asked questions.

Questions about buildings and services? Please visit the list of modified services.

Please note: The University of Waterloo is closed for all events until further notice.

CS 445 | SCS | UW

CS 445 Software Requirements Specification and Analysis

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.

Intended Audience

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.

Related Courses

Prerequisites: CS 350; Computer Science students only.

Antirequisites: SE 463.

Related courses: CS 446, CS 447.

Cross-listed as: ECE 451.


Used in Course: SDL/SDT, UML/Rose.

Assumed Background: UNIX. Familiarity with document processing tools is an asset.


The following textbooks are recommended:

Requirement Engineering, A. van Lamsweerde, Wiley; Applying UML and Patterns, 2nd ed., C. Larman, Prentice Hall; UML Distilled, 2nd ed., M. Fowler, Addison-Wesley; Requirements Analysis and Systems Design, L. Maciaszek, Addison-Wesley; SDL: Formal Object-Oriented Language for Communicating Systems, 2nd ed., J. Ellsberger et al, Prentice Hall; Mastering the Requirements Process, S. Robertson and J. Robertson, Addison-Wesley; Exploring Requirements: Quality Before Decision, D. Gause and G. Weinberg, Dorset House; and Managing Software Requirements, A Unified Approach, D. Leffingwell and D. Widrig, Addison Wesley.


3 lecture hours, 1 tutorial hour, and 1 discussion hour (for project group meetings). Normally available in Fall and Winter.


Introduction (3 hours)

Overview of the software development process and life cycle models. Requirements: identification, representation, validation, analysis; related standards and CASE tools.

Software Development Groups (3 hours)

Project discussion, including group management, member duties and group dynamics.

Requirements Elicitation (2 hours)

Methods for obtaining requirements from various sources.

Informal Notations for Behavioural Requirements (6 hours)

Overview of notations and presentation of case studies: entity relationship models, data flow diagrams and structured analysis, SDL and UML.

Formal Notations for Behavioural Requirements (10 hours)

Classification of requirements specification notations; relationship to application characteristics. Specification of control, functional, data requirements.

Non-behavioural Requirements (2 hours)

Specification of maintainability, safety, reliability, performance, etc.

Requirements Validation (5 hours)

Methods for validating a requirements specification: active reviews, scenarios and threads, executable specifications, automated analysis, formal verification.

Cost Estimation (3 hours)

Estimating duration and cost of project: CPM graphs, Gantt charts, milestones, algorithmic cost models, expert judgement, Delphi estimates.

Other Topics (2 hours)

Relationship between requirements and design specifications; estimation of resources, cost, and schedule for a large software project.