liveBook · Manning

Requirements

As explained in Software Design for Python Programmers

A software requirement is a specified capability, constraint, or quality that a software application must satisfy.

A software requirement specifies what an application must do, allow users to do, or satisfy as a quality or constraint. Good design begins by acquiring and analyzing requirements so the result is the right application, not merely a well-built one. section 1.5 section 3.0

Treat requirements as an evolving engineering input:

  • Gather them through repeated client interviews, clarifying questions, observation of current work, and collaboration with domain stakeholders. section 3.4
  • Separate functional requirements from nonfunctional requirements, and distinguish explicitly stated needs from implications needed to automate the domain correctly. section 3.0 section 3.4.2
  • Analyze the results to derive an initial set of classes, then expect iteration, backtracking, and change rather than a single final design pass. section 1.5 section 2.3
  • Encapsulate areas likely to change, because requirements may change during development or after release and otherwise spread modifications through the application. section 2.2 section 3.4.2

Book catalogue requirements

A catalogue must let users add fiction books with titles and author names, then search using any number of attributes. Title and author matches are case-insensitive; wildcard attributes match every book by default; remaining attributes match exactly. These precise rules provide behavior that can be analyzed into an initial design. section 2.3

A black background with a black square

Description automatically generated with medium confidence

Explore the requirements timeline, including the distinction between stated and implied requirements and the point at which requirements are expected to stabilize. section 3.4.2

How Software Design for Python Programmers covers it

How deep it goes
Covers gathering, validation, functional analysis, and initial classes, while deferring detailed requirements engineering.
Examples
Uses client interviews, workplace observation, and a book catalogue with flexible, case-insensitive, wildcard searches.
What it assumes
Assumes access to clients or domain stakeholders while teaching developers to clarify needs and infer requirements from observed work.
What you can do after
Apply requirements gathering and analysis to define behavior, identify initial classes, and accommodate later changes.
How it connects
Connects functional requirements, nonfunctional requirements, use cases, functional specification, software design, and requirements freeze.

Also explained in

Compare how 13 books explain requirements →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Software Design for Python Programmers. The section links point to the parts of the book it draws on.