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.
Logistics
Audience
- 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
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
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.