There’s innovation in Linux. There are some really good technical features that I’m proud of. There are capabilities in Linux that aren’t in other operating systems.

—Linus Torvalds, creator of Linux

Features and Capabilities

A Feature is a service that fulfills a stakeholder need. Each feature includes a benefit hypothesis and acceptance criteria, and is sized or split as necessary to be delivered by a single Agile Release Train (ART) in a Program Increment (PI).

A Capability is a higher-level solution behavior that typically spans multiple ARTs. Capabilities are sized and split into multiple features to facilitate their implementation in a single PI.

Features also lend themselves to the Lean UX process model, which includes a definition of the Minimum Marketable Feature (MMF), a benefit hypothesis, and acceptance criteria. The MMF helps limit the scope and investment, enhances agility, and provides fast feedback. Capabilities behave the same way as features. However, they are at a higher level of abstraction and support the definition and development of large Solutions.

Details

Features and capabilities are central to the SAFe Requirements Model. They are critical to the defining, planning, and implementing Solution value. Figure 1 provides the broader context for these work items:

Figure 1. Features in the SAFe context

Figure 1 shows that solutions are developed using features. Each reflects a service provided by the system that fulfills some important stakeholder need. They are maintained in the Program Backlog and are sized to fit in a PI so that each delivers new value. Features can originate from either the local context of the ART or they may result from splitting Epics or capabilities.

The Program and Solution Kanban systems support the flow of features and capabilities, where they progress through the funnel, analyzing, backlog, implementing, validating, deployment, and release states. This process provides reasoned economic analysis, technical impact, and strategy for incremental implementation.

Product Management and System Architect/Engineering own the features and enablers, respectively. Nonfunctional Requirements (NFRs) define system attributes such as security, reliability, performance, maintainability, scalability, and usability. NFRs serve as constraints or restrictions on the design of the system across the different backlogs. Features are prioritized using Weighted Shortest Job First (WSJF) and are planned and reviewed at PI boundaries. They are split into Stories, and are implemented, integrated, tested, and demoed as the functionality becomes available.

Describing Features

Features are defined using a Features and Benefits (FAB) Matrix:

Feature – A short phrase giving a name and context

Benefit hypothesis – The proposed measurable benefit to the end user or business

Avoid defining features with the ‘user story voice’ format that’s designed to support one user role; features typically provide functionality for multiple user roles. Furthermore, using the same method to describe user stories and features may confuse the business, especially since they are not normally familiar with stories.

Figure 2 illustrates an example FAB with four different features:

Figure 2. Features and benefits matrix

Creating and Managing Features

Product Managers, in collaboration with Product Owners, and other key stakeholders, define features in the local context of an ART. Some arise as a result of splitting epics.

System Architects typically create enabler features. The program backlog is used to maintain enablers alongside business features. Enablers pave the Architectural Runway and support exploration, or may provide the infrastructure needed to develop, test, and integrate the initiative.

Just like business features, enabler features may originate from epics or emerge locally at the ART level. Enablers that make it through the Kanban system will be subject to capacity allocation in the program backlog to ensure that enough emphasis is placed on both furthering the solution and extending the architectural runway. At each PI boundary, the percentage of resources to be allocated to new features (or capabilities) versus enablers is estimated to guide the train.

Prioritizing Features

The WSJF prioritization model is used to sequence jobs (e.g. features, capabilities) based on the economics of product development flow. Since implementing the right jobs in the right sequence produces the maximum economic benefit—it is hard to overestimate the importance of this critical process.

Product and Solution Management have authority to prioritize features, while System and Solution Architects and Engineering have authority to prioritize enabler features.

Estimating Features

Feature estimation supports forecasting value delivery, applying WSJF prioritization, and sizing epics by splitting them into features and summing their individual estimates. Feature estimation usually occurs in the analysis state of the Program Kanban and relies on normalized estimation techniques, similar to the methods used by Agile teams (see the Iteration Planning article for more detail). During analysis, select subject matter experts from the ART engage in exploration activities and preliminary sizing. During the analysis state, sizing features do not require splitting them into stories or the inclusion of all the teams that might develop them.

Accepting Features

Acceptance criteria are used to determine whether the implementation is correct and delivers the business benefits. Figure 3 provides an example:

Figure 3. Feature with acceptance criteria

Acceptance criteria mitigate implementation risk and enable early validation of the benefit hypothesis. Moreover, acceptance criteria are typically the source of various stories, as well as functional tests, which are developed and automated to support refactoring and regression testing.

Product Management is responsible for accepting the features. They use acceptance criteria to determine whether the functionality is properly implemented and nonfunctional requirements met.

Capabilities

Most of this article is devoted to describing the definition and implementation of features, as they are the most common description of system behavior. Capabilities exhibit the same characteristics and practices as features. For example, they:

Are described using a phrase and benefit hypothesis.

Are sized to fit within a PI, however, they often take multiple ARTs to implement.

Have associated enablers to describe and bring visibility to all the technical work necessary to support efficient development and delivery of business capabilities.

Are accepted by Solution Managers, who use the acceptance criteria to determine whether the functionality is fit for purpose.

Capabilities may originate in the local context of the solution or occur as a result of splitting portfolio epics that may cut across more than one Value Stream. Another potential source of capabilities is the Solution Context, where some aspect of the environment may require new solution functionality.

Splitting Features and Capabilities

Capabilities must be decomposed into features to be implemented. They, in turn, are split into stories consumable by teams within an iteration. SAFe provides ten patterns for splitting work, as described in Leffingwell [1], chapter 6.