<At my company I have seen a lot of bad software development practices over the years, so I have created a set of software development guidelines to help establish a set of best practices and baseline software requirements. I am publishing a series of experts from those guidelines here so that I might get some useful feedback that will help improve them.
The requirements specification should detail all of the processes and functionalities that the finished software should contain. This specification should include both functional specifications and non-functional specifications. The functional specification should employ use cases that describe the users interaction with the system (Graphical User Interface, Reporting Requirements). And, the non-functional specification should include any constraints not imposed by the user (Database Requirements, performance requirements, quality requirements).
It is recommended that a flowchart with detailed descriptions be used to document the manual and automated processes.
Screen mock-ups can be used to remove ambiguity about the final appearance of the graphical user interface, but this is optional.
Applications requiring the generation of reports must contain detailed descriptions of the report formats and the desired report data as this could impact the definition of the database schema.
If the application will read, write, delete, display or in any other way touch sensitive personnel or corporate data then descriptions of the steps taken to protect this data must be described.
Applications requiring a database or any other type of long-term data storage should contain the desired database schema and a description of methods for adhering to data retention policies.
The analyst/programmer should also list any assumptions that he is making.