From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_00,INVALID_MSGID, RATWARE_MS_HASH,RATWARE_OUTLOOK_NONAME autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,1042f393323e22da X-Google-Attributes: gid109fba,public X-Google-Thread: 1014db,1042f393323e22da X-Google-Attributes: gid1014db,public X-Google-Thread: 103376,1042f393323e22da X-Google-Attributes: gid103376,public From: "Dann Corbit" Subject: Re: Software Engineering and Dreamers Date: 1997/05/27 Message-ID: <01bc6ae2$e4dd6900$cb61e426@DCorbit.solutionsiq.com>#1/1 X-Deja-AN: 244322471 References: <5m57nu$7si@bcrkh13.bnr.ca><5m859v$2qr@mtinsc04.worldnet.att.net> <5mb3ra$1qj@bcrkh13.bnr.ca> Organization: PSI Public Usenet Link Newsgroups: comp.lang.c++,comp.lang.c,comp.lang.ada Date: 1997-05-27T00:00:00+00:00 List-Id: [relevant discussion about technology snipped] I agree with Kaz from one standpoint [in software engineering being separate from other engineering disciplines]. In electrical engineering (for instance) we have measured, known tolerances and capacities for the devices we use. Consider a resistor of 150 ohms with a 5% tolerance. We know how it behaves and what the accuracy is. We also know what the failure rate is for a given brand. We know how much power will definitely cause it to fail. When we build a circuit board from the design specification we know how the circuit behaves and what its failure rate is, for the entire board, for each component and for all acceptable inputs [we also should know what those are]. In software engineering, we have not progressed very far beyond the schematic. We do not know how the circuit performs for all possible inputs. With complex IC's, we may not always validate every input [as the Intel 80 bit float an the infamous divide bug shows] but even in those cases testing is [or should be] done which explains the inputs and outputs from a probability basis. Consider some examples: 1. Booch components (Ada) 2. C Standard Library (C) 3. STL (C++) for an object in one of the above repositories, do we know how it will behave for all inputs? Do we know how it will behave, at least as far as a probability basis? If we should happen to know for some component, how is this documented? We can't pick up the spec sheet like we would for an IC and see what the permissible voltages are and what the performance curve is like and what probability of failure is. When a component fails [e.g. given an address outside of the user's allowed bounds] how does the component behave? Are failure modes uniform or even documented? Tested components tend to be stamped "PASS/FAIL" and as new problems arise are corrected. This reactionary approach to software design can hardly be termed 'engineering'. I suggest that software could become an engineering discipline by formation of a database of components, performance, accuracies and tolerances. This database would contain the component, the test driver, and definitions for which environment it was tested under. This database does not exist right now. -- Anonymous ftp sites for C-FAQ: ftp://ftp.eskimo.com ftp://rtfm.mit.edu ftp://ftp.uu.net Hypertext C-FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-FAQ Book: ISBN 0-201-84519-9. Looking for something? Software? Algorithms? Publications? http://www.altavista.digital.com or http://www.infoseek.com