Software specification, also called program specification, is the part of the software design process in which it is stated (as exactly as possible) just what it is that the program is supposed to do.
The following techniques and tools are commonly used in software specifications:
- Visual mock-ups can show various particulars (dialog boxes, error messages, menus, etc.) of how the software should appear
- Diagrams of various sorts, including flow-charts, data-flow diagrams, component diagrams, etc.
- Wikipedia: Program specification