Features and Components
Innovation comes from the producer, not the customer.
—W. Edwards Deming
Features and Components include two key abstractions we use to build software and systems:
Features are those behaviors of the system that directly fulfill some user need.
Components are distinguishable system parts that provide and encapsulate common functions needed to implement features.
The Agile model’s value delivery focus emphasizes features (and constituent stories) that solve user needs and differentiate solutions. However, resilient large-scale systems are built out of components that provide for separation of concerns, foster logic reuse, ...