I'm taking all my paper notes that I've accumulated over the last year (or two) on what the next version of my Internet advertisement server application will look like, and putting them into an electronic specification document. Not wanting to start from scratch, I did a bit of Googling to see what the latest and greatest wisdom is on writing functional specifications. Google yielded two notable resources:
Painless Functional Specifications by JoelOnSoftware
Software Design Specification from Software Project Survival Guide (by legend Steve McConnell)
Of the two, my preference definitely lies with Joel's take on things. Specifications need to be easy to read and not unnecessarily complicated. They need to focus primarily on scenarios as viewed from the user's perspective and provide enough of a description of the behavior of the system, though not its architecture or implementation, as required for developers to write the code to implement the system.
So, I still have quite a bit of work ahead of me before the spec is anywhere close to ready, but it feels good to organize my thoughts and to finally be able to consolidate all my paper notes in one place. This will also give me a real document I can share with future users of the system to get their extremely valuable feedback.