Login | Register
My pages Projects Community openCollabNet
Project highlights: Browse templates | Download | Words-of-wisdom | Translations: Spanish

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.


Priority: Essential Expected Desired Optional
Effort: Months Weeks Days Hours
Risk: Dangerous 3-Risk 2-Risk 1-Risk Safe
Functional area(s): WORD, WORD, WORD
Use case(s): UC-01
Notes and Questions:
  • NOTE
  • NOTE

Feature Attribute Values

  • Priority
    • 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 project.
    • 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.
  • Effort
    • 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.
  • Risk
    • 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...
  • Constraints...
  • Schema...
  • 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 sets?
  • 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 handle the CSS or JavaScript feature that plan to use? E.g., can the database work reliably when it's files are stored on a different file server?
TODO: Check for words of wisdom and discuss ways to improve this template.
Company Proprietary
Copyright © 2003 Jason Robbins. All rights reserved. License terms. Retain this copyright statement whenever this file is used as a template.