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

  • From: Tom Adams <tom.adams@xxxxxxxxxxxxxxxxxxx>
  • To: fct-java-geeks@xxxxxxxxxxxxx
  • Date: Tue, 29 Nov 2005 11:30:56 +1000

I should have mentioned that this is from Dave Parnas, the guy who
invented information hiding, exceptions, interfaces, etc.

All his papers have also been collected into a book:

http://www.amazon.com/gp/product/0201703696/103-6514027-5351008?v=glance&n=283155

Tom

On Tue, 2005-11-29 at 10:34 +1000, fct-java-geeks@xxxxxxxxxxxxx wrote:
> (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: