[fct-java-geeks] A rational design process; How and why to fake it

  • From: Tom Adams <tom.adams@xxxxxxxxxxxxxxxxxxx>
  • To: FCT Geeks <fct-java-geeks@xxxxxxxxxxxxx>
  • Date: Tue, 29 Nov 2005 10:34:16 +1000

(1) In most cases the people who commission the building of a software
system do not know exactly what they want and are unable to tell us all
that they know.

(2) Even if we knew the requirements, there are many other facts that we
need to know to design the software. Many of the details only become
known to us as we progress in the implementation. Some of the things
that we learn invalidate our design and we must backtrack. Because we
try to minimize lost work, the resulting design may be one that would
not result from a rational design process.

(3) Even if we knew all of the relevant facts before we started,
experience shows that human beings are unable to comprehend fully the
plethora of details that must be taken into account in order to design
and build a correct system. The process of designing the software is one
in which0 we attempt to separate concerns so that we are working with a
manageable amount of information. However, until we have separated the
concerns, we are bound to make errors. 

(4) Even if we could master all of the detail needed, all but the most
trivial projects are subject to change for external reasons. Some of
those changes may invalidate previous design decisions. The resulting
design is not one that would have been produced by a rational design
process. 

(5) Human errors can only be avoided if one can avoid the use of humans.
Even after the concerns are separated, errors will be made. 

(6) We are often burdened by preconceived design ideas, ideas that we
invented, acquired on related projects, or heard about in a class.
Sometimes we undertake a project in order to try out or use a favourite
idea. Such ideas may not be derived from our requirements by a rational
process. 

(7) Often we are encouraged, for economic reasons, to use software that
was developed for some other project. In other situations, we may be
encouraged to share our software with another ongoing project. The
resulting software may not be the ideal software for either project,
i.e., not the software that we would develop based on its requirements
alone, but it is good enough and will save effort."

http://web.cs.wpi.edu/%7Egpollice/cs3733-b05/Readings/FAKE-IT.pdf

-- 
tom adams
p: +61.7.3011.7509 | e: tom.adams@xxxxxxxxxxxxxxxxxxx

************************************************************

List homepage: //www.freelists.org/list/fct-java-geeks

PLEASE NOTE: This list is for general technical discussions.            
Please do not post sensitive company specific information to 
this list.                   

************************************************************

Other related posts: