views:

224

answers:

2

Where I work, people don't like to write specs. (Boy, does anyone?) So they don't do it, unless forced by their bosses. If they are forced to write them, they make them as short as possible. (By the way, they also includes me.)

This results in specifications like

  • This software logs the time between event A and B to the event log
  • Name and path of parameter X are set in a configuration file in ini format.
  • The software is active without a user needing to log on to the computer (implementation as a Windows service)

This example is taken from a very small project, and it worked out pretty well, But I don't think that it will suffice for anything more complex. I did not specify OS/hardware requirements because this is in-house development and we have company or department standards covering those.

So my question is: What do you consider the absolute minimum level of detail in a functional specification for any non-trivial software?

+1  A: 

Joel on Software wrote a cracking article on specifications.

You can find it here Specification Discussion

Dean
I should have thought of browsing through his archive... "specs are like flossing: everybody knows they should be writing them, but nobody does." So true!
Treb
+1  A: 

IMHO the important thing about Functional Specs (and all other formal methods/tools for software development and project planning (Yourdon, SSADM, PRINCE2, UML, etc) is that they encourage good practice by making you think along common lines.They don't guarantee success but they encourage success by formalising good practice

So the fact that FSs are created is a good thing, even if perhaps they could be better. Some planning and preparation is better than none at all - which is what a lot developers do.

What should ideally go into a FS? As much as is necessary and as little as possible. Just because some functional specs cover X, Y & Z doesn't mean yours should. If you become too prescriptive, you will add unnecessary bureaucracy to simpler projects; correspondingly, for complicated projects, a prescriptive approach might encourage the developer to stop short of the level of detail that they really ought to go to.

CJM