Features are small, client-valued functionality expressed in the form “Action subject object”. As the name implies, features are an important aspect of Feature-Driven Development (FDD). 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 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.