Features: An Agile Introduction

A feature is a small, client-valued function expressed in the form <action><result><object>. As the name implies, features are an important aspect of Feature-Driven Development (FDD) (Palmer and Felsing 2002). Figure 1 shows several features for the university system. Features are very small and typically can be implemented within a few hours.

Figure 1. Features.

  • Add a student to a seminar waiting list.

  • Calculate fee for a parking pass.

  • Calculate the average mark on a transcript.

  • Display the name and address of a student on a transcript.

  • Drop a student from a seminar.

  • Enroll a student in a seminar.

  • List the prerequisites for a seminar.

  • List the seminars of a student on a transcript.

  • Track number of parking passes.

The features in Figure 1 are basically a formalized version, wording wise at least, of traditional features. Another formalized approach is to write features as shall statements. For example "calculate the average mark on a transcript" would be worded "The system shall calculate the average mark on a transcript". Although the wording changes slightly in the end features and shall statements are effectively the same thing in my experience.

Although one of the primary advantages of features is that their small size makes them easy to estimate and to implement their size also poses a problem in that one feature by itself rarely provides significant value to stakeholders. The solution is to organize features into groups called "feature sets". Figure 2 depicts how the features of Figure 1 would be organized into three feature sets - Transcript, Enrollment, and Parking Passes. As you can see each feature set contains two or more related features.


Figure 2. Feature sets.

Transcript

  • Calculate the average mark on a transcript.

  • List the seminars of a student on a transcript.

  • Display the name and address of a student on a transcript.


Enrollment

  • List the prerequisites for a seminar.

  • Enroll a student in a seminar.

  • Drop a student from a seminar.

  • Add at student to a seminar waiting list.


Parking Passes

  • Calculate fee for a parking pass.

  • Track number of parking passes.


From a requirements point of view features are to FDD as use cases are to the Rational Unified Process (RUP) and user stories are to XP - they're a primary source of requirements and the primary input into your planning efforts. However, from a size point of view feature sets are much closer conceptually to use cases. Features are estimated and prioritized in a similar manner to user stories. Because features are so simple to create it is common to use very simple tools - such as index cards or a spreadsheet - to capture them.

Source

This artifact description is excerpted from Chapter 7 of The Object Primer 3rd Edition: Agile Model Driven Development with UML 2.


Translations