One of the questions that seems to frequently come up in my discussions these days is:
What’s the difference between a Requirement and a Feature?
Let me try and explain this difference in this short blog post.
What is a Requirement?
One of my favorite books on requirements, “Software Requirements,” by Karl Wiegers defines a requirement as follows:
A statement of a customer need or objective, or of a condition or capability that a product must possess to satisfy such a need or objective.
Another of my favorite books on requirements, “Mastering the Requirements Process,” by Suzanne & James Robertson defines a requirement as follows:
A requirement is something the product must do or a quality it must have.
Great definitions, both. Taking these into account, I’d define it as follows:
A requirement is a capability that a product must possess or something a product must do in order to ultimately satisfy a customer need.
A requirement tends to be more granular, and is usually written with the implementation in mind. Those who consume requirements tend to be engineers or technical audience.
What is a Feature, Then?
Again, culling from the books linked above, I’d define a feature as follows:
A feature is a set of related requirements that allows the user to satisfy a business objective or need.
Do you find the definitions above a little hazy? Here’s an example to help give you a more tangible feel. Let’s say you’re designing an online bookstore to compete with Amazon. [P.S. I wish you good luck, you’re gonna need it! 😉 ]
For such a project, here’s an example of a feature:
- 1-Click Ordering
Here are some examples of requirements related to this feature:
User shall be able to activate 1-click ordering within his account
- User shall be able to deactivate 1-click ordering within his account
- User shall be able to order books with just 1 click
- User shall be able to “Undo” his 1-click order for a period of 30 minutes from the time he placed such an order
I hope you find this brief blog post helpful to understand the distinction between a requirement and a feature.