Requirements Engineering · Software Engineering

Software Requirements

Watch lectures

Software Requirements

Definition

A software requirement is a documented, precise statement of a capability, condition, or constraint that the software system must satisfy, in order to solve a real-world problem or fulfill a user need.

IEEE definition: "A condition or capability needed by a user to solve a problem or achieve an objective" OR "a condition or capability that must be met or possessed by a system to satisfy a contract, standard, specification, or other formally imposed document."

Levels of Requirements (Requirement Abstraction Hierarchy)

  1. Business Requirements — high-level organizational goals ("increase sales by 20%")
  2. User Requirements — what users need to do with the system ("user shall be able to place an order")
  3. Functional Requirements — specific system behaviors ("system shall calculate tax on checkout")
  4. Non-functional Requirements — quality attributes (performance, security, usability)

Characteristics of a Good Requirement

A well-written requirement should be:

  • Correct — accurately represents user need
  • Unambiguous — only one interpretation possible
  • Complete — all necessary info included
  • Consistent — doesn't conflict with other requirements
  • Verifiable/Testable — can be checked via a test
  • Traceable — linked to its source and to design/test elements
  • Feasible — realistically implementable within constraints
  • Prioritized — ranked by importance/necessity

Requirement Types (broad classification)

  • Functional Requirements (FR) — what the system should do
  • Non-functional Requirements (NFR) — how well the system does it (quality attributes)
  • Domain Requirements — imposed by the application domain (e.g., banking regulations)
  • Constraints — limitations (technology, budget, time, legal)

Exam tip: The "Characteristics of a good requirement" list (Correct, Unambiguous, Complete, Consistent, Verifiable, Traceable, Feasible) is a very frequently asked short-answer question — memorize it as a checklist (mnemonic: CUCCVTF).

Free AppAndroid App

Coursify Android App

Generate AI courses, take quick quizzes between classes, and master complex engineering concepts on the go.

← All Software Engineering modules