 |
The Engineer
“Requirement” is sub-divided into six categories (per IEEE recommendations):
- Product environment. Describes the environment in which the software will run.
-
Product features. Describes the features (from the user's perspective).
-
User characteristics. Describes the user, such as expected level of education.
-
Design constraints. Anything that constrains the design, such as communication interfaces to other systems.
-
Assumptions and dependencies. This can include any applicable standards or dependencies to other projects.
-
Specific Requirements. This is the motherlode! THESE requirements describe what we are actually creating. When an engineer says "requirement," this is what is meant. These are further decomposed into:
-
Functional Requirements - the functionality to be provided.
-
Performance Requirements - such as speed, number of transactions.
-
External Interfaces - interfaces to other systems or the user.
-
Design Constraints - any other implementation constraints.
-
Attributes - e.g. reliability, availability, security, portability
Since the Specific Requirements actually describe what is being built, they must be verified! Testing is the most common means of verification.
The other requirements (the non-specific requirements) cannot be verified. While the information they provide is necessary, and although the English Professor would call them "requirements," they describe things that either pre-exist, or exist outside of, the software being built. Therefore, non-specific requirements are not verifiable. That is why when engineers say "requirement," they generally mean "specific requirement." |