[comp.society.futures] More large-scale design talk...

joeisuzu@pawl.rpi.edu (Anthony Sute) (11/30/90)

A few weeks ago I brought up the subject on this network of current trends in
large-scale software system design and what should be done both to improve
the process as well as bring an enhanced sense of "professionalism" to the
industry that it desperately needs.  This message is in reply to that pos- 
ted by Mr. George and addresses some of the concerns and ideas he brought
up.  First of all, he is absolutely correct when he says that for any soft-
ware system, there MUST be sufficient time devoted to the requirement
specification and definition phase.  Essentially this is a formal name for
that part of the design phase where the analysts simply define what it is
the users want the system to do.  The users must be absolutely sure of their
expectations for the system so that there is no interpretation required on
the part of the system designers of system operation.  The analysts are
expected to aid the customer during this requirement specification phase, but
they should not impose any restrictions on the user in terms of how the     
system must work.  In other words, the analyst must work with the client in
evaluating current operating procedures which are to be automated by the    
intended system in order to arrive at an optimized way of tackling the pro-
blem through use of the system.  Mr. George also brought up a valid point
when he stated that often times the design specification is so inadequate
that the coders have to "interpret" what they believe the system is to do.
Of course, as we all know, this ultimately leads to misunderstandings and
ultimately to code modifications in order to achieve what was originally
required.  This leads to my next point which he also mentioned, and that
design often occurs during the coding phase.  I don't want to portray
programmers (like myself) as being "grunts", but it's my belief that when
we are given a formal specification to create code for, we must stick to
that specification and not make our own modifications.  Some people may argue
that this wreaks havoc with the creativity factor, but creativity is what
helps us achieve the end result within the code.  So long as the code produces
the desired output, creativity has free reign over how the code was created.

It is a sad commentary on the state of our industry when it seems to be a
widely-accepted fact that the goal of most software design companies is to
simply get the product out when it meets minimum design specs.  Testing of
the software MUST be exhaustive, to the point that the design company is
willing to stake its reputation on the code.  After all, it is providing a
service for a fee and quality-control is a very important issue.  A clear
example of what poor quality-control can do to an industry is reflected in
the American auto industry.  If we want the American software design industry
to flourish, we must improve our quality so as to not prompt customers to look
elsewhere (doesn't Japan seem like the most obvious candidate?!?!).

More remarks on testing:  Mr. George is entirely correct when he says that with
modern systems, it is nearly impossible for any one person to wholly understand
all the facets of a system, but that is why we employ design teams.  Making
everyone responsible for one specific part of the system is essential for
success.  In addition, communication within the design team is necessary simply
to gauge progress on the various parts as well as ensuring that all of the     
parts will be compatible with each other in the end when everything is put
together.