- Project tools
- How do I...
|Over 500 more tools...
- Feature Specification Template
Advice from ReadySET Users
To add your own words of wisdom, please send an email to the dev mailing
- BODY OF ADVICE
Feature specification guidelines
- The feature set should provide all the benefits claimed in the
- Features actually support users in achiving a
claimed benefit when the feature replaces some of the work that a
human would otherwise do manually. E.g., a spreadsheet supports
users who need to calculate totals and produce simple charts.
- Features allow users to achive a claimed
benefit when they make it easier for a human user to do a task, even
if that task is still largely up to the user. E.g., a spreadsheet
allows users to make business decisions based on totals and charts,
but the decisions are completely the users' responsibility: the
spreadsheet itself does not implement logic for any one particular
- Features should be described precisely enough to guide
- Each feature should be written in enough detail that a new
developer could join the team and implement the feature without
needing too much explanation.
- If only developers who already have extensive background
knowledge of the discussions leading up to this document would be
able to understand the feature, then it should be described more
clearly and precisely by taking some of these steps:
- Precisely define valid inputs, and error handling
- Specify data structures with UML or logical schema
- Specify UI aspects of features with tiny mockups
- Specify key decisions with decision trees or tables
- Specify key algorithms with pseudo-code or flow charts
- Specify state-based behavior with state machines or tables
- Specify sequences of events with scenario diagrams
- 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
the database work reliably when its files are stored on a different