Logo

In Search of Excellent Requirements

Copyright © 2004 by Karl E. Wiegers

This is a self-training version of Process Impact's popular 2-day live seminar. The course consists of a course introduction and 17 modules with more than 10 hours of audio and many practice activities that provide a comprehensive introduction to software requirements development and management. Each module contains slides that animate and advance automatically, with a synchronized audio presentation. Each module has several reference documents available, including magazine articles, templates, sample requirements documents, and other work aids. You can also access those reference documents from the module descriptions on this page. From this page you can also print a PDF version of a 2-up handout master of the slides and any accompanying worksheets for each module. Most modules include short quizzes so you can test your knowledge of the key points in the module. The course consists of the following modules:

             Course Introduction [available for preview]
  1. Introduction to Requirements Engineering
  2. Requirements Development Process
  3. Customer Involvement [available for preview]
  4. Business Requirements
  5. Requirements Elicitation
  6. User Requirements
  7. Business Rules
  8. Requirements Specification
  9. Quality Attributes
  10. Requirements Prioritization
  11. Requirements Analysis and Modeling
  12. Prototyping
  13. Requirements Validation
  14. Requirements Management Principles
  15. Requirements Management Practices
  16. Process Improvement
  17. Summary

Requirements affect all project participants, so ideally, everyone will take the entire course. For those people with limited time to spend, certain modules are recommended for the following project roles:

  • Requirements, Business, or System Analysts:
    All Modules
  • Project Managers:
    Modules 1, 2, 3, 4, 10, 13, 14, 15, 16, 17
  • Customer Representatives:
    Modules 1, 2, 3, 4, 5, 6, 7, 9, 10, 12, 15
  • Developers:
    Modules 1, 2, 8, 10, 11, 12, 13, 15
  • Testers:
    Modules 1, 2, 6, 7, 8, 9, 11, 12, 13

Course Description and Outline

View License Terms


Instructor

The instructor for this presentation is Dr. Karl Wiegers, Principal Consultant at Process Impact, who developed the course and has presented it live to more than 160 seminar audiences throughout North America and Europe.

Karl's Biography
Process Impact web site
Send Karl email

Textbook

The textbook for this course is Software Requirements, 2nd Edition, by Karl E. Wiegers. The first edition of this book was published by Microsoft Press in 1999, the second edition in 2003. Each course module refers you to one or more chapters in the book.

Order from Amazon.com

System Requirements


Course Introduction (9 minutes) [available for preview]

This module presents an overview of the "In Search of Excellent 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.

Start Presentation     Print Module Handout with Slides

Reference documents for this module:

(back to top)

Module 1: Introduction to Requirements Engineering (56 minutes plus 1 practice session)

This module provides an introduction to the domain of software requirements engineering. We begin with some definitions of various types of software requirements. We'll identify ten characteristics of good requirements and some of the benefits of investing in high quality requirements processes. The five subdisciplines of requirements engineering are also described. This material is the subject of Chapter 1 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 2: Requirements Development Process (28 minutes)

Module 2 summarizes the activities that are typically performed during requirements development. You'll see how to apply selected requirements practices to different types of projects besides new custom development, including maintenance projects, projects based on package solutions, outsourced development projects, and rapidly changing or emergent projects. I also describe the role of the requirements analyst. This material is covered in Chapters 3, 4, and 16 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 3: Customer Involvement (18 minutes) [available for preview]

In this module I describe the importance of having customers involved in requirements development and the need to forge a collaborative customer-developer partnership. I'll present several rights and several responsibilities that customers have regarding the requirements for a product. I'll also explain what I think "sign-off" on requirements ought to mean. This material is the subject of Chapter 2 in Software Requirements, 2nd Edition.

Start Presentation     Print Module Handout with Slides

Reference documents for this module:

(back to top)

Module 4: Business Requirements (26 minutes plus 2 practice sessions)

The business requirements describe why a team is undertaking a particular project. This module describes the kinds of information that constitute a project's business requirements and a template for creating a vision and scope document. It dsecribes how to write a vision statement using a simple keyword notation. The context diagram is also presented as a tool for depicting the scope boundary between your system and the rest of the universe. This material is the subject of Chapter 5 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 5: Requirements Elicitation (70 minutes plus 2 practice sessions)

This module addresses the heart of requirements development, collecting the necessary information that will help you define a product's requirements. Requirements elicitation is a discovery process, not just a collection process. This module will help you guide the requirements exploration. We will identify various possible sources of requirements. You'll see how to classify requirements into various categories. You'll learn how to identify the important user classes for your product and to select key representatives from those user classes to serve as the voice of the customer. I'll also describe some techniques for facilitating elicitation workshops. This material is the subject of Chapter 6 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 6: User Requirements (64 minutes plus 2 practice sessions)

Use cases have become recognized as a best practice for eliciting user requirements. This module presents the important characteristics of the use case approach, illustrated with a case study. This module will help you begin to identify and document use cases for your product. I'll also describe another technique for representing user requirements, event-response tables. This material is the subject of Chapter 8 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 7: Business Rules (18 minutes plus 1 practice session)

Business rules are a very important source of software functional requirements. This module describes what business rules are and suggests a scheme for classifying business rules into different types. After studying this module you should be able to identify and record business rules for your own projects and use them to reveal functionality that needs to be built. This material is the subject of Chapter 9 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 8: Requirements Specification (62 minutes plus 2 practice sessions)

Requirements information that the analyst gathers needs to be recorded in a suitable form so others can review it and use it to perform their parts of the project work. We'll see the kinds of information that typically go into a software requirements specification and see how the SRS is organized. I'll give you some tips for writing high-quality requirements. Practice sessions let you review several functional requirements for problems and improve them. I'll also tell you about a class of requirements management tools that can help a team store and manage its requirements. This material is the subject of Chapters 10 and 21 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 9: Quality Attributes (24 minutes plus 1 practice session)

In this module we explore quality attributes, a kind of nonfunctional requirement. We'll identify several categories of quality attributes and show you a way to write precise and verifiable quality and performance requirements. We'll close out this module with some examples of design and implementation constraints. This material is the subject of Chapter 12 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 10: Requirements Prioritization (18 minutes)

Nearly every project has more desired functionality than the team can build in the available time. Module 10 discusses how to prioritize requirements. I'll show you a thought process for classifying requirements into three priority levels. But some sometimes additional priority refinement is desirable, so I'll also describe a spreadsheet you can use to prioritize discretionary requirements. This material is the subject of Chapter 14 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 11: Requirements Analysis and Modeling (57 minutes plus 2 practice sessions)

This module talks about different ways to represent requirements information beyond simply writing a list of functional requirements. After completing this module, you should be able to recognize and begin to draw several types of graphical analysis models. A particularly useful model is the dialog map, which represents the architecture of a proposed user interface. You'll be able to create a data dictionary to store the definitions of your data items and structures. Decision tables and trees are useful tools for representing requirements that involve complex logic. Finally, I'll describe several techniques for finding missing requirements. This material is the subject of Chapter 11 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 12: Prototyping (14 minutes)

This module explores prototyping as a way to better engage customers in the requirements discussions. We'll look at several reasons to create prototypes and ways to use them, and we'll introduce some adjectives to distinguish the various kinds of prototypes you might create on a project. This material is the subject of Chapter 13 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 13: Requirements Validation (19 minutes)

This module begins by describing the V-model for software development to show the connections between development and verification activities. I will summarize several techniques for requirements validation and briefly describe how to review requirements specifications for errors. We'll close out our exploration of requirements development with a few words about transitioning from requirements into the other stages of software development. This material is the subject of Chapters 15 and 17 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 14: Requirements Management Principles (25 minutes)

So far in this course, we've been exploring ways to collect and record good requirements. As the project continues, you need to manage changes to those requirements, track status as requirements move from concepts to code, and create logical links between requirements and related work products. This module summarizes several principles, goals, and practices of requirements management. Some of this material is addressed in Chapter 19 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 15: Requirements Management Practices (56 minutes plus 1 practice session)

In this module we'll discuss several specific practices that you can use to manage your requirements baseline. After completing this module, you should be able to adopt a scheme to distinguish each version of your requirements documents. The module emphasizes practical techniques for requirements change control. You can track project status in part by tracking the status of the requirements. We'll also discuss how and why to create a requirements traceability matrix. The module concludes with some suggestions about how to manage risks that threaten the success of your project, including requirements-related risks. This material is the subject of Chapters 18, 19, 20, and 23 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 16: Process Improvement (48 minutes plus 3 practice sessions)

It can be very difficult to change the way individuals and teams perform their work. This module addressses the practical aspects of process improvement. Many software organizations have used the Capability Maturity Model (CMM) to guide their systematic process improvement efforts. This module describes the overall structure of the CMM and shows where requirements fit into it. Several other key principles of process improvement also are addressed, including the learning curve. This material is the subject of Chapter 22 in Software Requirements, 2nd Edition.

Reference documents for this module:

(back to top)

Module 17: Summary (13 minutes plus 1 practice session)

In this closing module I summarize several of the key practices for requirements development and management. Next, I warn you about several common requirements traps you should try to avoid. To wrap up this course, I will invite you to take some time to chart a personal path forward to select requirements practices that you think would lead to better results on your projects.

Reference documents for this module:

(back to top)