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=2.6 required=5.0 tests=BAYES_50,FROM_STARTS_WITH_NUMS, INVALID_DATE autolearn=no autolearn_force=no version=3.4.4 Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!gatech!hao!ames!ucbcad!ucbvax!NAVPGS.BITNET!4526P From: 4526P@NAVPGS.BITNET ("LT Scott A. Norton, USN") Newsgroups: comp.lang.ada Subject: Re: Ada Education and Training - Part 3 Message-ID: <8705150259.AA09313@ucbvax.Berkeley.EDU> Date: Thu, 14-May-87 20:06:02 EDT Article-I.D.: ucbvax.8705150259.AA09313 Posted: Thu May 14 20:06:02 1987 Date-Received: Sat, 16-May-87 13:14:41 EDT Sender: daemon@ucbvax.BERKELEY.EDU Distribution: world Organization: The ARPA Internet List-Id: In <1061@ico.UUCP>, hao!ico!rcd@ames.arpa (Dick Dunn) remarked, "A somewhat worse confusion over teaching 'programming' (I would rather a less loaded term implying 'the complete process of constructing functioning software') immediately follows in Berard's article:" I think the term he wants is "software engineering." The hard part about teaching software engineering is that the need for good engineering is not apparent at the classroom level. The programs that are written by individuals in an undergraduate software course are less than a thousand lines. They can be fully understood by one person. They do not undergo maintenance, and do not have to adapt to changes in the environment, new hardware, or changed specifications. They usually do not need to be robust, since they are not used by many different users or under tight constraints. There is certainly a skill called "Programming." Selecting algorithms and data structures, making loops start and stop in the right places, avoiding deadlocks; they are all part of programming. But, when you move to programs of over one million lines, the problems you face are different. Consistancy of the specification becomes more difficult. Testing and debugging become more difficult ( some people say impossible ) Training new staff is necessary as the work progresses. As people leave the project, the knowledge they have must be passed down to the remaining staff. Its not a difference in scale, its a difference in kind. If you teach a course in programming, you expect people to come out of it knowing how to write code. Give them clear specifications and they should be able to write modules that will meet the specs. But writing the specs, making the design decisions that determine the specs, managing the programmers, designing tests, chasing down the requirements that the system must meet, developing the documentation, training the staff ( not how to code, but what the project is supposed to do ) are part of the larger world of software engineering. Its a different dicipline, and can't be taught in a single course. Ada is supposed to be a language that makes it easier to match modules to specs, design tests, eliminate some tacit assumptions about interfaces, and make code more readable to ease the problems of bringing new people into a project or of doing maintenance. Ada will be successful if it improves not only coding, with its 15% of the load, but also these other areas. Programming : Software Engineering :: Word Processing : Writing a novel When I was in fourth grade, I thought that higher math was being able to do, like, really big long division problems. LT Scott A. Norton, USN Naval Postgraduate School Monterey, CA 93943-5018 4526P@NavPGS.BITNET