How do you plan the evolution of your programs? What preparations do you make for future amendments?

Update: Thinking about it the whole point of my post is stating that I think there are 2 lower points than the source. The lowest being what the software must do within certain constraints. The next being what would be nice if the software could do.

First I like to attempt to define the problem space appropriately. Second I spend the time to look at what does and doesn't work in the same problem space. Once I have these pieces a general framework has been defined, which will in turn define, at a high/vague level, the amount of flexibility needed in this particular space.

There are some places where a great deal of flexibility is nice, ( ala File::Find ), and others where you give up flexibility for some other prerequsite (security or speed). Granted those prereqs are a little contrived, but I think thats a decent example of the principle.

Once the base has been reasonably defined, with clear goal of what the software "can/should" do, then you can examine what you would like the software "to" do. Or at least things you think might be fun to bang out in the future, and/or use the code to do later.

With all that in mind, you can then either start developing your own code, or look at other pieces that meet those requirements.

Case in point: data center monitoring tools.
Off the top of my head I can list BigBrother, BigSister, NAGIOS, NOCOL, SolarWinds, NetSaint, NetExpert, HP OpenView. If you only want to monitor hosts, all of those will do just fine. If you have more than X hosts to monitor, you start to run into issues with some of those pieces of software. Now lets say you want to do SNMP trapping/polling on network devices, some of those apps drop right out of the available list.

So I guess what Im trying to say, is the best way I have found personally and professionally to plan the evolution of a program is to attempt to understand the problem space as thoroughly as possible. Define a base req, define what would be nice, and go from there.

Cheers

MMMMM... Chocolaty Perl Goodness.....

In reply to Re: Multilevel flexibillity by l2kashe
in thread Multilevel flexibillity by zby

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



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.