Revised December 11, 2015

CS 445: Software Requirements Specification and Analysis

Watch a video introduction to this course on YouTube.

General description

This course introduces students to the requirements definition phase of software development. It discusses processes, models, and notations, and processes for software requirements elicitation, identification, analysis, modeling, representation, specification, and validation. An important component is a group project: the software requirements specification of a large software system.



  • CS major students, usually taken in the second term of third year. This course benefits students with an interest in software engineering, software development, and development of large software systems.

Normally available

  • Fall and Winter

Related courses

  • Prerequisites: CS 350; Computer Science students only
  • Antirequisites: SE 463
  • Related courses: CS 446, CS 447
  • Cross-listed as: CS 645, ECE 451

For official details, see the UW calendar.

Software/hardware used

  • MagicDraw
  • Word processor, such as MS Word or LaTeX

Typical reference(s)

  • 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
  • Mastering the Requirements Process, S. Robertson and J. Robertson, Addison-Wesley
  • Exploring Requirements: Quality Before Decision, D. Gause and G. Weinberg, Dorset House
  • Managing Software Requirements, A Unified Approach, D. Leffingwell and D. Widrig, Addison Wesley

Required preparation

At the start of the course, students should be able to

  • Write programs

Learning objectives

At the end of the course, students should be able to

  • Elicit, identify, analyze, model, represent, specify, and validate requirements for a software-intensive system to be built
  • Divide the world in which a software-intensive system sits into the system to be built, its environment, and the interface between the system and the environment
  • Write a domain model and a use case model for a software-intensive system
  • Write a user's manual and a software requirements specification (SRS) for a software-intensive system

Typical syllabus

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 (10 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 (6 hours)

  • Classification of requirements specification notations; relationship to application characteristics. Specification of control, functional, and 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 schedules for a large software project.