I've always viewed the Functional Specification document as the document that describes the product in terms the users understand. Probably the best way to think about the Functional Specification is that it's the user interface document that you can hand to a Subject Matter Expert (SME) to review and ensure you are meeting the needs of the users. The Design Specification on the other hand is the document that describes the subsystems and the interfaces between those subsystems. It's the developer view of the system. The other documents you need to plan are the Schedule and the Testing Plan. If you have well thought out Functional Specifications and Design Documents, the Scheduling document is moderately easy to do because you've covered all the bases. The Testing will list exactly how you will go about testing the individual features and the final product. Probably the best way to learn about what documentation you need for a good design is to look at Steve McConnell's excellent Rapid Development (Microsoft Press). I've generally followed Steve's advice when planning my own projects. When it comes to Testing Plans, Russ Black's Managing the Testing Process (Microsoft Press) will show you exactly how to proceed.
This was first published in September 2002