liveBook · Manning

Capability

As explained in BDD in Action, Second Edition

A capability is an ability that enables users or stakeholders to achieve a goal or fulfill a task independently of a particular implementation.

A capability is something a user or stakeholder needs to be able to do to achieve a goal or complete a task. It describes the ability, not the way it is provided. For example, booking a flight is a capability whether someone does it online or over the telephone. When a team jumps straight to an online feature, it may overlook other ways to meet the need. section 4.2.1

Work from the desired outcome toward the software:

  • Identify the business goal and whose behavior could help achieve it. section 3.2.2
  • Name the capability as an ability, such as being able to cope with an unexpected travel delay. section 3.2.2
  • Choose features that could provide that ability, then use examples and User Stories to clarify and plan their delivery. section 4.2.1 section 5.2

Making membership renewal easier

A frequent-flyer team identifies the capability to let members renew their membership more easily. Online renewal and a notification when renewal is due are possible supporting features. Keeping the capability distinct from either feature lets the team discuss the member’s need and the business goal before committing to a particular piece of functionality. section 5.2.1

A feature is a tangible piece of functionality delivered to support a capability. Terminology can vary across teams: a product feature describes supported functionality, whereas a release feature describes new or modified functionality planned for delivery. Keep the underlying capability visible when discussing either. section 5.2.1 section 5.2.5

+ features 
    + frequent_flyers
        + account
            + register.feature 
            + change_password.feature 
            + view_flight_history.feature 
        + book_a_flight
            + book_with_points.feature 
            + book_with_points_and_cash.feature 
        + earn_points
            + earn_points_from_flights.feature
            + earn_points_from_hotel_stays.feature
            + earn_points_from_car_rentals.feature

This feature-file tree shows a practical way to preserve the relationship: group executable specifications by functional area and capability, so readers can find what the application supports. section 7.4.6

How BDD in Action, Second Edition covers it

How deep it goes
Defines an implementation-independent ability and traces it through feature discovery, examples, and specification organization without prescribing one implementation.
Examples
Uses commuter journey planning, disruption handling, frequent-flyer renewal, and a capability-organized feature-file tree.
What it assumes
Introduces the capability–feature distinction while assuming familiarity with software projects and stakeholder discussions.
What you can do after
Practice/perform capability discovery, select supporting features, and organize feature files around the abilities an application provides.
How it connects
Links business goals, Impact Mapping, features, User Stories, executable specifications, and living documentation.

Also explained in

Compare how 7 books explain capability →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of BDD in Action, Second Edition. The section links point to the parts of the book it draws on.