Requirements
Requirements abstractly describe what a solution must and must not do and are the fundamental building blocks of product engineering. In addition to these abstract descriptions, an effective requirements document will contain enough context to explain the rationale behind the individual requirements.
Marketing vs. engineering Requirements
Requirements come in two broad forms: marketing requirements and engineering requirements. Marketing requirements describe the needs and desires of the market served by the product. Engineering requirements are derived from marketing requirements and abstractly describe in unambiguous (typically numerical) terms how the product must function to meet the marketing requirements.
For example, the marketing requirement for a camera might be: "The photo quality must be industry leading". A corresponding engineering requirement might then be: "Photos produced must be greater than 8.5 megapixels".
Elements of well-formed requirements
Abstract: Well-formed requirements abstractly describe what the solution must and must not do, without describing how the solution is achieved.
Verifiable: Well-formed requirements can be independently and precisely verified and are therefore typically described in numerical terms.
Traceable: Well-formed requirements can be traced back to the specific need being solved. Marketing requirements should be traceable to research, whereas engineering requirements should be traceable to the marketing requirements.
Realistic: Well-formed requirements can realistically be implemented by the team that will create the solution.
Constraints
Constraints are design decisions that are imposed by the environment in which the solution is being developed or delivered to. Constraints may be properties of the process or materials used, such as size, conductivity, or elasticity; or they may be limitations intentionally imposed on the build such as time, budget, or design (e.g. branding). Constraints often seed creativity. In a world of unlimited possibilities, time can be one of the most useful constraints to apply. Time constraints, even when artificial, can force decisions to be made and foster creative solutions.
Deeper Knowledge on Requirements
You Aren't Gonna Need it (YAGNI)
A simple mnemonic to help limit project scope
Architectural Decision Records (ADRs)
A method for capturing architectural decisions
System Qualities and Nonfunctional Requirements (NFRs)
Constraints on how software is engineered
Acceptance Testing
Processes and techniques to test whether a set of requirements is met
User Stories
The philosophy behind gathering, writing, and using user stories
Broader Topics Related to Requirements
Project Management
Resources for Project Management
Engineering
Apply science to create technology