This is a brief description of why we need the widget and what it will do.
Explanation of the problem set and what we intend to accomplish
References to any other documents of interest to us.
Define here all the terms needed.
Lay out the functional requirements of the widget.
The environment in which the widget runs. We assume certain things about it. Tell us.
Define how this interacts with other components in the system.
How to invoke it.
Structure of any data going in/out of it.
If there are specific operations that can be performed, describe them here.
How do we keep from corrupting data or databases?
Specify how we address reliability.
Specify how we address security and privacy issues.
If the software could cause safety issues (e.g., could make a robot arm tatoo the Ford logo on a lineman's rear), address those here.
How we will make it work right.
How we will make it work fast.
Any other stuff related to implementation that we need to mention
What could make this part of project fall behind schedule.