- Project tools
- How do I...
|Over 500 more tools...
SRS > Feature Set > Feature Description Format
Process impact: This reference page
documents the format of feature descriptions and gives tips on writing
them. You can copy and paste the sample feature descriptions into
your features.html file. This file itself should not be edited to
hold specific features.
F-00: FEATURE NAME
||Essential Expected Desired Optional
||Months Weeks Days Hours
||Dangerous 3-Risk 2-Risk 1-Risk Safe
||WORD, WORD, WORD
1-4 PARAGRAPHS. USE BULLETS OR TABLES TO ORGANIZE INFORMATION.
LINK TO WORKSHEETS OR ADDITIONAL INFORMATION.
- LOGICAL CONSTRAINT
- LOGICAL CONSTRAINT
|Notes and Questions:
Feature Attribute Values
- Essential: The system could not or would never be used without
this feature. It would be much harder to test, document, or
package the product without this feature.
- Expected: Key stakeholders strongly desire and expect this
feature. It may have been promised to them in a certain release.
It's absence would substantially reduce the success of the
- Desired: Stakeholders desire this feature. It's absence would
reduce the success of the project.
- Optional: This feature would be nice to have. Adding it could
have some advantage, but delaying it would not have a big effect on
the success of the project.
- Months: A very large feature that is too big to estimate and
should be broken in to smaller, better-defined features.
- Weeks: A large feature that will take 40 to 160 hours to add.
- Days: An average or easy feature that would take less than 40 hours to add.
- Hours: A very easy feature that would take less than 8 hours to add
- Note that "adding" a feature means doing all of it's design,
implementation, technical documentation, user documentation, and
testing. Even the easiest feature takes hours to add.
- Dangerous: Implementing this feature successfully would require
overcoming risk factors that are more than three or unknown in
number. It should be broken down into parts, better specified, or
risk factors should be eliminated prior to implementation.
- 3-Risks: Implementing this feature would require three risk
factors to be overcome. Any single release should contain at most
a few such high-risk features, and contingency plans should be
considered. You should be able to list the risks.
- 2-Risks: Implementing this feature would require two risk
factors to be overcome. This is normal for challenging
features. You should be able to list the risks.
- 1-Risk: Implementing this feature as specified would require
one risk factor to be overcome. This is normal for many features.
You should be able to describe the risk.
- Safe: Implementing this feature as specified is just a matter
of time and effort, there is no real risk of failure.
- A "risk factor" is a task or fact that is currently in doubt,
but that must turn out well in order for the feature to be
successfully implemented. See tips on managing risk below.
Tips on Specifying Features
- Textual Descriptions...
- Algebraic specifications...
- Tiny mockups...
- Pseudo code...
- State-based specifications...
- Decision trees and tables...
- Flow charts and UML activity diagrams...
Tips on Managing Feature Risk
- If you have features that are high priority, high effort, and
high risk, you should go back to the drawing board to change what you
are trying to do, break those features down into more manageable
parts, or add more time or resources.
- High risk means more effort, because effort must be put into
assessment and mitigation of risk factors up front. Some of the risk
factors will not turn out in your favor, so you will need to put in
additional effort for rework and re-planning.
- Many risks arise from missing information. The simplest way to
address these is to ask someone who knows or look it up. E.g., does a
particular software component work with internationalized character
- Many computer science issues of algorithms and data structure
capacity and performance can be worked out mathematically. Although
these do not give precise performance measures, they can determine
the difference between a useful approach and a hopeless approach.
E.g., we are storing catalog item descriptions in a flat file, the
time it takes to update that file grows linearly with the number of
catalog items, which will be hopelessly slow in practice. E.g., our
Java applet will be about 260KB in size, how long will that take to
download over a 56Kbps modem?
- A feasibility study is often an exercise in building a small
prototype to demonstrate and test some risky aspect of the system.
For example, do the web browsers that we want to support properly
database work reliably when it's files are stored on a different file