Slashdot Mirror


Getting Accurate Specifications for Software?

spiffcow asks: "I design internal software for users that are largely computer-illiterate, and obtaining accurate specs for these programs has become a huge challenge. In the most recent instance, I asked for detailed specs on what an accounting program should do (i.e. accounting rules, calculation methods, and so forth), and received a Word document mock-up of an input screen, complete with useless stickers. This seems to be the norm around here. When I asked my boss (the head Sales manager) for specs, he responded saying that it was my responsibility to determine what was needed. How do I convey to the users that, in order to develop the software they want, I need detailed, accurate specs?"

4 of 147 comments (clear)

  1. he's right by Anonymous Coward · · Score: 5, Insightful

    Your boss is correct: it is your job to get accurate specs.

    In my experience, the best way to get these is *not* asking people what they want or need (because they are usually not capable of putting that into words), but to observe how they do things right now, and determine which features they need (or which features would ease their workload) that way.

    1. Re:he's right by KDan · · Score: 5, Insightful

      Absolutely. Get your ass off your chair, walk over to the users, and talk to them about what they need. Then write yourself a detailed spec if you feel you need it. Then turn that spec into some paper-based mockups and walk the users through it. Then make any corrections needed. Then write the software.

      And count your lucky stars that your company is incapable of writing proper specs - if they were, they would have outsourced your job to India or Brazil a long time ago.

      Daniel

      --
      Carpe Diem
  2. Force them to say What, not How by Bloke+down+the+pub · · Score: 5, Informative

    I try to get them to tell me how they would do it with a pencil and paper. They won't anwser the question as asked, of course. They'll say "I need some trancaction where I can put..." or "there needs to be some file where..."[1] - at this point you interrupt and ask them, again, how they would do it with pencil and paper. Eventually, you'll get to the answer. Then you, the developer/analyst, should be able to work out how to do it.

    This forces them to concentrate on the what, not the how. You'd hope people would have the ability to intellectually grok the difference, without such a trick. You'd be disappointed.

    [1] To them, file/screen/transaction/table/program are all synonyms. Never, ever, trust their terminology.

    --
    It's true I tell you, feller at work's next door neighbour read it in the paper.
  3. Impossible by synx · · Score: 5, Interesting

    What you think your job is, and what your actual job is are two quite different things. Traditional software 'methodology' is bunk and doesn't work - this is why you are confused.

    You think it works like this:
    - User knows what they want
    - They write it down
    - You...?
    - Programmers implement it (probably wrongly)

    If you consider your job more like an architect, then you will see the flow is really more like:

    - Users think they know what they want (maybe)
    - They can tell you what they DONT want
    - You interpret their needs/desires in to a design and spec
    - Programmers implement it (probably wrongly, but nothing is perfect)

    If you think about what architects do for their clients, they figure out roughly what the client wants (house, building, garden, etc) and various parameters specified and unspecified in fuzzy things (building code, safety margins, design principles, aesthetics, etc). They then produce a number of different designs and design ideas to run past the client. Iterate a few times and then once they have sign off, build it.

    If you were required to write some 300 page doc about the house you want, you'd be finding a new architect. Likewise, make life easy on your customers. I'm sure they have pre-existing documents and references regarding the accounting rules they need implemented (I assume you are familiar with accounting - if not, why the hell are you building it?!). But as for the UI and other software design features, most people just want something that (a) works (b) well (c) usable (d) does what they need. Meaning, don't ask for label or window placement.

    If you have a RAD tool such as interface builder on OS X then you can create semi-functional mocks easily. I'm sure .NET has something similar.