[comp.unix.internals] A quick side note on software development

croft@csusac.csus.edu (Steve Croft) (04/20/91)

amolitor@eagle.wesleyan.edu writes:
>Software development cycles should not proceed as: add every concievable
>feature, then tune. Something more like: get something minimally useful,
>tune, then see if something more is needed. If not, STOP. If more
>features are needed, add them, and re-tune.

Software development consists of determining your needs and programming
a complete solution for it.  If you only take into consideration a minimal
set of requirements at first, then you may be doomed when you try to
add items later and find basic design conflicts.  There are multiple
examples of software which started out as small, simple designs which
grew very complex when it was decided that "features are needed, add
them, and re-tune".

Let me just state again that if your analysis determines a set of features
are needed, you better take them all into consideration during your
design phase.  You don't have to implement all the features, but you
better consider them in your design...

Steve Croft
stevec@water.ca.gov
(a more reliable email address than above)

xtdn@levels.sait.edu.au (04/21/91)

amolitor@eagle.wesleyan.edu writes:
>Software development cycles should not proceed as: add every concievable
>feature, then tune. Something more like: get something minimally useful,
>tune, then see if something more is needed.

croft@csusac.csus.edu (Steve Croft) writes:
> Software development consists of determining your needs and programming
> a complete solution for it.  If you only take into consideration a minimal
> set of requirements at first, then you may be doomed when you try to
> add items later and find basic design conflicts.

This man speaks wisely.

The best intentions will not guarantee that your software will scale well,
feature wise, unless you plan for those features.  I have seen too many
programs ruined by adding features beyond the initial design.  (If you are
now nodding your head, ask yourself: Does Unix suffer this problem?)

Unfortunately it is not always possible to accurately predict what future
features will be required.  I think it follows from this that adding features
might make a re-design necessary.

My opinion: For a quality product, rewrite; don't patch.

In the words of a wise man: "All programs start perfectly.  From there they
can only go downhill."

David Newall, 16:32:56.04, Tuesday, 1991     Phone:  +61 8 344 2008
"Life is uncertain: Eat dessert first"       E-mail: xtdn@lux.sait.edu.au