A Requirement is a condition or capability that must be met by a system or component to satisfy a contract, standard, specification, or other form of request.
A Feature is a distinct characteristic, property, quality or attribute of a system. A feature is a high level capability displayed by a system representing a distinguishing selling point for a product.
Features are the main selling points for a solution. If the Product was something that would be sold in a physical box, then features are the items that would appear in a bullet point list on the side of the box. As such, features are well suited to use as top level scope elements defining in broad terms what is in and out of scope while leaving implementation details free to be iteratively elaborated. Features are often used to define scope for Contractual Phases.
Features are often simple textual requirements and can be a mix of functional and non-functional requirements. Lists of features can be collected together into top level programme backlogs, and once prioritized, provide product roadmaps. Lower level requirements such as User Stories typically trace up to Features.
Many organisations find that they need a middle level requirements type between Features and User Stories to:
- Scope a Release, Product of Product Family
- Indicate how business value is achieved across a number of User Stories
- Focus integration testing and acceptance activity
- Provide context for the mass of User Stories
- Hook governance milestones on
This requirement leads many organisations to dysfunctionally create hierarchies of User Stories or Epics. In HSD we recommend the use of Integration Scenarios to solve this problem.
Integration Scenarios describe an end-to-end workflow across a Product or Product Family resulting in Business Value for a Product Customer in flexible format.Integration scenarios are threads across a number of other requirements such as Features and User Stories that don’t deliver Business Value on their own. They are ideally suited to describing the scope of Releases and providing the input for integration testing, necessary to achieve higher levels of acceptance.Integration Scenarios can also be used to manage cross-cutting Non-Functional Requirements and drive the discovery of Architectural Mechanisms.Integration Scenarios provide the context for discussions around User Stories.