|
Requirements Ron Graham |
|
|
Requirements associated with a project may be presented
to you by your organization, or you may have to gather
and document them yourself. Having requirements gives
the engineer something to target in design, something
that (if they're well prepared) will tend to remove (or
at least lessen) doubt.
Functional requirements: describe the quantitative tasks the system is to perform. These are likely to be based on physical (and readily measurable) quantities. Nonfunctional requirements: describe how the system fits into its context:
The nonfunctional requirement is an attribute of the system or its environment. (e.g. "ilities" -- reliability, usability, portability, flexibility, scalability, maintainability) This requirement tends to be based on perspectives and possibly even feelings. It can sometimes be made into (or close to) a functional requirement through adding measurable details, though
Another way of looking at the difference is to consider functional requirements as objectives, and nonfunctional requirements as constraints. Traceability In some engineering environments, part of the "big picture" of requirements is the making of an historical record of the design process. In that case, every non-trivial aspect of a design can be traced back to some requirement that was previously agreed upon by the engineers and other stakeholders. The advantages of traceability in engineering design:
Once you have traceability, you generally have some formal process when requirements must be changed. (Many engineers I've met would rather avoid that process; this means the justification for the change is critical.) Traceability may provide a more efficient "buy-in" to design changes than you'd see otherwise. |
|