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. ************************************************************