Writing High-Quality Requirements

Copyright 2007 Karl Wiegers

This is a self-training version of Process Impact's live course that emphasizes the requirements specification aspect of the requirements engineering process. The course consists of 9 modules with 7 hours of audio and more than 20 practice sessions. It covers many techniques that can help requirements analysts on any software or system development project write clearer functional and nonfunctional requirements.

Each module contains slides that animate and advance automatically, synchronized with the audio presentation. Some modules have reference documents available, including white papers, checklists, and other work aids. You can also access those reference documents from the module descriptions on this page. From this page you can print a PDF version of a handout with the slides and worksheets for the entire course. Practice sessions give you a chance to begin applying the techniques described to your own project. Most modules include short quizzes so you can test your knowledge of the key points.

The course consists of the following modules:
  1. Objectives and Agenda
  2. Software Requirements Refresher
  3. Reviewing Requirements
  4. Depicting Project Scope
  5. Elements of Requirements Style
  6. Using Multiple Requirements Views [available for preview]
  7. Some Sample Functional Requirements
  8. Writing Other Types of Requirements
  9. An Overview of Use Cases

Course Description and Outline

Print Handout with Slides and Work Aids

View License Terms


The instructor for this presentation is Dr. Karl Wiegers, Principal Consultant at Process Impact, who developed the course and has presented it live to many audiences.

Karl's Biography
Process Impact web site
Send Karl email


The textbooks for this course are More About Software Requirements (Microsoft Press, 2006) by Karl Wiegers and Software Requirements, 3rd Edition (Microsoft Press, 2013) by Karl Wiegers and Joy Beatty. Each course module refers you to relevant chapters in the books.

Order from Amazon.com

System Requirements

Module 1: Objectives and Agenda (13 minutes plus 1 practice session)

This module introduces the "Writing High-Quality Requirements" course. It describes the system requirements for getting full value from the course and how to use the presentation player. It also summarizes the course objectives.

(back to top)

Module 2: Software Requirements Refresher (60 minutes plus 2 practice sessions)

This module begins with some definitions about requirements. You'll see several characteristics that will let you distinguish good requirements from poor requirements. You'll hear several suggestions for how to write better quality requirements that clearly communicate the intended system behaviors and characteristics to the various project stakeholders. The module also addresses some thorny issues around writing requirements, such as how detailed the requirements ought to be and how to distinguish requirements information from design information.

Reference documents for this module:

(back to top)

Module 3: Reviewing Requirements (53 minutes plus 1 practice session)

This module provides a brief overview of the important principles and practices of reviewing requirements specifications, which is the highest-leverage quality practice available to the software industry.

Reference documents for this module:

(back to top)

Module 4: Depicting Project Scope (35 minutes plus 2 practice sessions)

In this module you will see four ways to represent the scope of a software project: context diagram, use case diagram, feature levels, and system events.

(back to top)

Module 5: Elements of Requirements Style (41 minutes plus 1 practice session)

After going through this module, you'll be able to describe several styles of writing software functional requirements. You'll recognize several common types of requirements ambiguity and know how to rewrite ambiguous requirements to make them clearer. This module also discusses the common issue of having solution ideas, or design constraints, embedded in requirements.

Reference documents for this module:

(back to top)

Module 6: Using Multiple Requirements Views (38 minutes plus 2 practice sessions) [available for preview]

In many cases, it's valuable to represent requirements information using some other technique besides natural language. In this module you will get a quick look at some of the various kinds of requirements representation techniques you could use and hear some suggestions about how to choose appropriate requirements views.

Start Presentation

(back to top)

Module 7: Some Sample Functional Requirements (43 minutes plus 6 practice sessions)

This module presents a number of less-than-perfect functional requirements drawn verbatim from a variety of actual projects. You are invited to examine them for possible problems and, in some cases, to try rewriting them to improve their effectiveness as a communication medium. It's a good idea to study this module in collaboration with a colleague, so you can both get some practice reviewing requirements and presenting useful feedback.

Reference documents for this module:

(back to top)

Module 8: Writing Other Types of Requirements (64 minutes plus 6 practice sessions)

Although the emphasis so far has been on functionality, in this module we will talk about quality attribute requirements. We will also see a technique for documenting data definitions in the data dictionary. Finally, we will see how business rules often lead to derived functional requirements. You will have an opportunity to practice writing these different kinds of requirements information in this module.

(back to top)

Module 9: An Overview of Use Cases (69 minutes plus 1 practice session)

This final module presents an introduction to the valuable requirements elicitation tool of use cases. We will see the kinds of information that go into a use case, see an example of writing a use case, and learn how to derive more detailed functional requirements from a use case description.

Reference documents for this module:

(back to top)