Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

comment on

( #3333=superdoc: print w/replies, xml ) Need Help??

You probably will want to read Software Fundamentals. Collected Papers by David L. Parnas.. In the papers in this book, Parnas not only gives a formal definition of what a specification is (and how a program can be said to fulfill it), but also contrasts it with other related concepts (model, prototype, description) and gives some useful techniques to improve the writing of specifications.

If one goes straight to the commonsense meaning of "specification", a specification is nothing more than a statement of what we want to build. Given this definition, I have not seen any manager or customer resist working up at least a short specification for the work to be done.

The real problem IMHO is to choose the detail level necessary for a specification. If chosen too deep, the specification will strongly resemble the program to be built. If chosen to high, the specification will be meaningless to the programmer.

Usually, managers or customers will start with an extremely high-level specification. The trick seems to be how to get them to provide more detail, without swamping them with technicalities that they don't want to see and that they probably can't absorb.

In my experience, focusing on these items will provide relatively useful specifications that can be agreed upon in minimal time (e.g., 15 minutes to an hour for a 2 day programming project):

  • critical success factors - what objectives the project has to fulfill to be considered a success
  • user screens (pencil drawing) or other example inputs and outputs
  • rough description of data to be handled from user point of view
  • any functionality that is *not* just create/update/delete for the data items (security is always worth a question)
  • performance constraints (interaction time for user screens, maximum batch loads, etc.)
  • budget available (time or money) - very important - this is your negotiation parameter!
  • who will make the decisions on this project (your direct customer)
  • contacts for further questions

If a manager or customer resists discussion of these items, I usually try to get to his reasons for doing so (feelings of over-complication of trivial tasks, no time, not responsible, etc.) and to counter each one with a proposal on how to go on (explain I don't understand as much about his business as he does, ask to be given a date for a short meeting, asking who else can I ask, etc.). If really nobody can or wants to give you a specification, another option is to declare the project a "Research and Development" project, and to proceed in tight feedback loops with users and other participants to the project. Most of the time, a suggestion like this makes the argument for writing up a specification. The rest of the time - well, you have hit upon a nice playground - or you are being chosen as The Scapegoat (tm). Make sure you got a budget to play with to make the decision.

Christian Lemburg
Brainbench MVP for Perl

In reply to Re: Specify, Specify, Specify by clemburg
in thread Specify, Specify, Specify by Ovid

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or or How to display code and escape characters are good places to start.
Log In?

What's my password?
Create A New User
Domain Nodelet?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2022-08-18 07:21 GMT
Find Nodes?
    Voting Booth?

    No recent polls found