Here are a couple of notes I just sent someone on how to get started writing a software requirements specification.
They may be a little vague, but I hope they show my intent, or perhaps my frame of mind, when writing a software specification.
Here are two notes on my mental approach when writing software requirements specifications:
1) On easier requirements specifications, I approach these like I am writing them for someone I don't currently know. They are sold as "Al will write these requirements, but then any competent development firm can implement the design". So, if you think of them that way, you need to include information at a detailed level, so someone you don't currently know could actually have a chance of implementing your design.
2) In some areas where I can't think of what I need to finish a software specification, I try to start writing code for that part of the application. That may not sound right, but when I hit spots where I don't know what to do, I realize that I need to do some more design and investigative work. There's nothing like trying to create the actual software application to show what your specification is missing.
I hope that helps,