March 16, 2010 -- Before designing a system, we need to know what we are designing. In this context, the terms "requirements" and "specifications" are used in a variety of ways - some people use them as synonyms, while others use them as distinct phases. They are used here to mean related but distinct steps in the design process.
Requirements are informal descriptions of what the customer wants, while specifications are more detailed, precise, and consistent descriptions of the system that can be used to create the architecture. Both requirements and specifications are, however, directed to the outward behavior of the system, not its internal structure.
The overall goal of creating a requirements document is effective communication between the customers and the designers. The designers should know what they are expected to design for the customers; the customers, whether they are known in advance or represented by marketing, should understand what they will get.
We have two types of requirements: functional and nonfunctional. A functional requirement states what the system must do, such as compute an FFT. A nonfunctional requirement can be any number of other attributes, including physical size, cost, power consumption, design time, reliability, and so on. A good set of requirements should meet several tests: correctness, unambiguousness, completeness, verifiability, consistency, modifiability, and traceability.
By Wayne Wolf. (Wolf is currently the Georgia Research Alliance Eminent Scholar holding the Rhesa "Ray" S. Farmer, Jr., Distinguished Chair in Embedded Computer Systems at Georgia Tech's School of Electrical and Computer Engineering.)
This brief introduction has been excerpted from the original copyrighted article.
View the entire article on the EE Times Embedded website.