home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-05-03 | 111.9 KB | 2,032 lines |
- .RR--!----!----!----!----!----!----!----!----!----!----!-------------------!-R
- .po 5
- ..po 1
- .he ASR Newsletter, Issue 12 Supplement, Oct 87
- .fo Page #
- Ada (tm) Software Repository (ASR) Newsletter Issue 12 Supplement, Oct 87
- Richard Conn, Newsletter Editor Published by Echelon, Inc.
-
- THIS SUPPLEMENT
- Theme: Ada Education, Software Engineering, and Reuse
-
- I. Ada Education and Training ................................. 2
- A. Part 1 ........ 2 D. Comments on Parts 1-3 ........ 8
- B. Part 2 ........ 4 E. Part 4 ....................... 14
- C. Part 3 ........ 6 F. Comments on Parts 1-4 ........ 17
-
- II. The Human Element in Software Engineering .................. 19
-
- III. The DoD and Software Reuse ................................. 21
- A. Part 5 ................................................ 21
- B. Comments on Part 5 .................................... 23
- -----------------------------------------------------------------------------
- I wish to thank the following people for sharing their insights and opinions
- on the Defense Data Network:
-
- Drew Adams Mike Feldman
- Laboratories de Marcoussis Department of EE & CS
- Centre de Recherche de la The George Washington University
- Compagnie Generale
- d'Electricite Sam Harbaugh
-
- Ed Berard Bob Munck
- EVB Software Engineering, Inc. The MITRE Corporation
-
- Carsten Bormann Lt. Scott A. Norton, USN
- Communications and Operating Naval Postgraduate School
- Systems Research Group
- Technical University of Berlin Pat Rogers
- University of Houston at Clear Lake
- Lawrence Crowl
- Computer Science Department Pete Schilling
- University of Rochester ALCOA Laboratories
-
- Dennis Doubleday D. Schimisky
- Department of Computer Science Naval Air Development Center
- University of Maryland
- Stanley Shebs
- Dick Dunn University of Utah
- NASA Ames Research Center
- Craig Wylie
- Department of Computing
- University of Lancaster, UK
-
- -- Richard Conn, Editor
- ASR Newsletter 12 Supplement
- ---------------------
- NOTE: Statements made in this supplement should generally be
- considered to be personal opinions of the individuals and not necessarily the
- opinions of the U.S. government or any specific company or organization.
- .pa
- ==============================================================================
- I. A. Ada Education and Training - Part 1
- Date: 1 May 1987 04:12:44 PDT
- Subject: Ada Education and Training - Part 1
- From: Edward V. Berard <EBERARD@AJPO.SEI.CMU.EDU>
-
- It has happened again. Some DoD contractor has contacted our company for some
- "Ada training," and has described a "recipe for disaster." Let me fill you in
- on the details:
-
- 1. Apparently this contractor was awarded a contract even though there is
- little evidence to suggest that anyone working on the software has any real
- Ada experience. (You know how this works - pick a scenario: a) the contractor
- added the word "Ada" to the list of languages on the resumes at the back of
- the winning (?) proposal; b) the contractor assured the naive contracting
- office that the technical staff would have "adequate Ada training" by the time
- any software was written; c) the contractor used resumes of "qualified"
- individuals who are too busy on other projects to be assigned to the current
- project, so management thought that they could either hire someone with the
- needed skills by the time the coding started, or provide some absolute minimum
- of training to the people actually assigned to the project.)
-
- 2. Not realizing that Ada technology impacts the entire software life-
- cycle (including business practices), management has waited until the coding
- is about to start to train their technical staff in what, to the management,
- is "just another programming language."
-
- 3. Not wanting to waste any money on "software foolishness" (after all,
- the management believes that it is the hardware
- engineering/mathematics/science that is the "real work"), management has
- dictated that the "Ada education" will consist almost entirely of one week of
- classroom instruction. Being somewhat generous, management has also provided
- some "Booch books" and some "Alsys tapes" which the technical staff can look
- at, on their own time. (I am not knocking the quality or usefulness of these
- products, just their misuse.)
-
- 4. Since the only computer that has an Ada compiler on it is tied up with
- useful work, the one week of training they wish us to provide is a "hands-off"
- course. We may provide the students with some small "paper exercises," but we
- are being encouraged to forego any labs so that we can "cram as much of the
- language into the heads of the participants as possible."
-
- 5. The management is not open to any suggestions on how to improve the
- quality of the Ada training. It also happens that some other well-known Ada
- experts have attempted to enlighten the management, but have been rebuffed.
-
- The results of this project can be foretold quite easily.:
-
- - The programmers will find the Ada language to be "large, complex and
- confusing." The code they produce will be "AdaTRAN" at best. There will be a
- great deal of time spent trying to understand that "dumb reference manual."
- Ada books that emphasize syntax to the exclusion of software engineering will
- become prized possessions. Especially valuable will be books and references
- which treat Ada as "a superset of Pascal."
-
- - The programmers will find that the Ada development system is confusing
- to use. Since it is likely that the design will be in a constant state of
- revision, the specification parts of the Ada program units will change fairly
- often, necessitating frequent re-compilation and relinking. As the amount of
- code grows, the time spent re-compiling and relinking will quickly reach an
- intolerable level. Frequent references will be made to the large amount of
- object code produced, and its inefficient running speed. But after all, isn't
- that what one would expect from such a large language?
-
- - The programmers will find many features of the Ada language to be
- extremely bothersome. There will be frequent complaints about strong typing,
- private types (if they are used at all), the time for task rendezvouses, and
- those strange generic things.
-
- - More source code will be produced than for a comparable project
- written in FORTRAN or Pascal. The detractors of Ada will gleefully point to
- this as an expected result.
-
- - The project will be late, overbudget, and the software will not
- perform at anywhere near the original specifications. Looking for a scapegoat,
- management and the technical staff will grab the first inanimate object they
- can find (you guessed it -- Ada), and blame it for any shortcomings or project
- failures. The contracting office, being equally naive about Ada technology,
- will accept without question that Ada is the culprit.
-
- There will, of course, be many other problems, but let us now focus our
- attention on the root causes.
-
- The Ada language was designed by first identifying a number of desirable
- software engineering features (e.g., data abstraction, information hiding, and
- encapsulation), and then incorporating these features into a programming
- language. Since a good number of these concepts are foreign to most
- programmers and managers, it comes as no surprise that the concepts are often
- abused, if they are used at all.
-
- Many advocates of Ada technology have pushed the language, and ignored the
- software engineering. Yes, there have been some people within the DoD, and
- outside of the DoD, who have stressed software engineering, but their voices
- have been lost in the din. [Note the on-again, off-again funding for STARS.]
- Part of the blame lies at the feet ofthe DoD for not stressing software
- engineering strongly enough.
-
- Within the Ada Joint Program Office (AJPO) is the Ada Software Engineering and
- Education and Training (ASEET) group. Hopefully, one of ASEET's goals is to
- define minimal qualifications for an Ada software professional. This should be
- in addition to definitions for course content in an industry targeted Ada and
- software engineering training curriculum. Without any guidance, contractors
- are free to train (or not train) their technical staffs in any manner they
- choose. Further, contracting offices continue to have no idea as to what
- constitutes a qualified Ada professional.
-
- Of course, I am not going to let the contractor's management off the hook.
- Unfortunately, they learned a long time ago that software quality was little
- more than a buzzword. (Note: Much is known about software quality, including
- how to measure it. Sadly, this technology seems to be largely ignored.) They
- seem to get paid regardless of the "quality" of the software product. Is it
- any wonder why they view software as a necessary evil, and software
- engineering training as a useless luxury? So what if the software fails, so
- long as the hardware holds up.
-
- There is a one-word definition for learning: change. The hope behind Ada
- technology is that this change will be for the better. Until there is a
- greater recognition that Ada education and training is different, the change
- may not be what the proponents of the new technology have predicted.
-
- -- Ed Berard
- (301) 695-6960
-
- ==============================================================================
- I. B. Ada Education and Training - Part 2
- Date: 1 May 1987 05:20:10 PDT
- Subject: Ada Education and Training - Part 2
- From: Edward V. Berard <EBERARD@AJPO.SEI.CMU.EDU>
-
- Some years ago, when I began offering one of the first hands-on Ada courses, I
- invited some of the members of the Ada Joint Program Office (AJPO) to sit in
- on the course. Those that accepted my proposition gave me some interesting
- feedback. It seem to the AJPO folks that my Ada courses were severely lacking
- in software engineering. I was puzzled. I had incorporated sections on
- structured programming and coding style into my notes. What more did they
- want?
-
- I now know that my first attempt at an Ada course was little more than a
- glorified Pascal seminar. I gave short coding examples for labs, and treated
- packages, tasks, and generics as "advanced features." There was little
- discussion of abstraction, information hiding, and encapsulation. The message
- eventually got through to me that a "syntax course" was a "no no," and that
- software engineering was much more than just structured programming. However,
- there was still a major problem.
-
- As you know, the software community, as a whole, is initially not very
- receptive to software engineering concepts. Managers and programmers alike are
- obsessed with code. The sooner you can get down to coding the more comfortable
- they feel. Software engineering is mockingly referred to as "software
- religion" by many. Management continually assures me that there may be time to
- learn something other than coding "later."
-
- Let me assure you that it takes a great deal of persuasion ("singing and
- dancing," cajoling) to get management and the technical staff to consider
- software engineering as an important part of Ada training. Fortunately, I
- have two things going for me. First, most software professionals want to do a
- good job. If I can show them a way which will make their software products
- better, and justify my reasoning, they will generally accept the idea. Second,
- software types are extremely goal oriented. Given proper goals, they will work
- hard to achieve them.
-
- Unfortunately, there are those Ada trainers who are not as persuasive as
- myself. They are easily bullied by their client's management and technical
- staff into giving syntax-only courses. Since their clients are often
- blissfully ignorant of the impact of poor software engineering, especially on
- an Ada project, the clients often see no immediate benefit from the
- incorporation of software engineering technology into an Ada training course.
-
- In a perfect world, software contractors would want to do everything in their
- power to produce a quality product. Unfortunately, many DoD contractors seem
- to be primarily driven by money and DoD regulations which must be adhered to
- to ensure the continued flow of money. (Don't get me wrong. I am very much a
- capitalist.) This implies that one way to improve the current state of Ada
- education and training might be some gentle prodding by the DoD. Say, in the
- form of some recommendations from the Ada Software Engineering and Education
- and Training (ASEET) group.
-
- Two months ago, I received a message from Doug Bryan who, among other things,
- teaches an Ada course at Stanford University. I think you will find his
- message to be of general interest.
-
- ------------------- Message Follows ------------------------
-
- I tried something new (and costly) with my Stanford class this year. Usually
- I teach
-
- abstraction -> misc. s/w eng -> OOD -> reuse -> the details of Ada
-
- This year I tried reversing it since "the powers above" wanted it to be more
- of a programming class and less of a Software Engineering class. So, I taught
-
- the details of Ada -> abstraction -> OOD (OOx) -> reuse
-
- I'm now grading some of the final projects and realizing this was a real
- mistake. Their code is terrible and it's my fault. Their packages are best
- classified as "collections of stuff"; Private types, generic formal
- parameters, and decent use of attributes are practically non-existent; most
- every subprogram is a procedure, all parameters of which are mode in out; ...
- the list goes on and on.
-
- It was costly, but I have seen first hand empirical evidence of what the Ada
- community has been telling itself (and others) for years:
-
- Ada without a software engineering foundation is MIL-STD Pascal.
-
- live and learn...
-
- ------------------ End of Message --------------------
-
- -- Ed Berard
- (301) 695-6960
-
- .pa
- ==============================================================================
- I. C. Ada Education and Training - Part 3
- Date: 3 May 1987 12:23:12 PDT
- Subject: Ada Education and Training - Part 3
- From: Edward V. Berard <EBERARD@AJPO.SEI.CMU.EDU>
-
- Recently, an instructor at one of the military academies told me how she had
- selected a book for an introductory Ada class. She had rejected Booch's book
- (Software Engineering With Ada) in favor of another text. It was not so much
- the text she had selected that bothered me, as it was her reason for rejecting
- Booch's book. "Booch takes too long to get to any code.", she said, "I want to
- see something like 'Hello World' real quick." [For those of you who have never
- programmed in C, or, more precisely, read Kernighan and Ritchie's book on the
- C programming language, the "Hello World" program is the first C program
- covered in many introductory C courses.]
-
- Kernighan and Ritchie (K&R) and Booch represent two very different views on
- teaching programming. K&R stresses the age old thinking which says that
- students of software must see, write, and execute code before anything else
- will be meaningful. Booch, on the other hand, stresses that students should
- know what they are doing before they attempt to write code. The K&R approach
- has its roots in software antiquity.
-
- Programming code is the "cocaine" of the software world. To many programmers
- and managers it is all that matters. While software is being designed,
- managers wait nervously and the programmers/coders wait impatiently. One the
- design document is finished, the "real work" can begin. With any luck the code
- which is produced may closely resemble what is described in the design
- documentation.
-
- To an outsider this infatuation with code seems strange. One hears from many
- sources that coding usually takes up only 10 to 15 percent of the software
- life-cycle. Why then do we focus so much attention on the syntax and semantics
- of the programming language? Several reasons come to mind:
-
- 1) Many of those who are already programmers and instructors believe
- strongly that, only if one is intimately familiar with code, can one fully
- understand the implications of any other part of the software life-cycle.
-
- 2) Some in the Ada community feel that the software engineering embodied
- in the Ada language will either be obvious to the neophytes or that through
- constant use of the Ada language, good software engineering concepts will be
- absorbed "via osmosis."
-
- 3) The concept of "instant gratification" is very much entrenched in
- modern software production. Sitting at their terminals in their offices or
- cubicles, programmers very much resemble "rats in Skinner boxes" who
- continually press a lever (the RETURN key) for constant reenforcement of their
- behavior. We are only now beginning to see tools which will allow us to
- "execute a design."
-
- 4) Software people have little faith in those concepts that come before
- the coding phase. "How can anyone possibly describe something which is not yet
- coded?", they reason. There is little emphasis on non-coding tasks in most
- commonly available training.
-
- It seems that most people have not understood the intentions of the U.S.
- Department of Defense (DoD) regarding the Ada effort. It is better engineered
- software that is desired, not merely "FORTRAN rewritten using the syntax and
- semantics of the Ada language." Too much emphasis has been placed on a tool
- (Ada) and not on the task (better software).
-
- Learning the details of the Ada language is at the "noise level" of most
- software projects. In fact, only a very small part of any "Ada education
- effort" needs to focus on the language itself. Concepts like configuration
- management, software design methodologies, data abstraction, concurrency,
- software testing, and project management must be an important part of any Ada
- training effort.
-
- Of course, there are many problems which must be solved, for example:
-
- - Contracting offices and project managers must recognize that the least
- significant part of any Ada training effort is the learning of the syntax and
- semantics of the language. Yes, it is important for programmers to learn the
- Ada language, but this is a trivial task compared to learning about modern
- software engineering.
-
- - Many of those who "teach" the Ada language are unfamiliar with the
- bulk of modern software engineering. For example, most may only have
- familiarity with functional decomposition approaches to software development.
- Few can name any references on software quality assurance. A surprising number
- cannot cite any studies which correlate coding style with debugging and
- testing efficiency.
-
- - When software engineering concepts are introduced into an Ada
- curriculum, it is often introduced in a very "watered down" form. This is so
- that those least prepared to develop quality software can maintain their
- positions -- managers *and* programmers.
-
- - There is still a widely-held belief that all that is involved with
- transitioning to Ada technology is a change of programming language. In
- reality, software development and maintenance practices will have to change,
- in-house and government software standards will be impacted, and business
- practices will change. [It is often those in the commercial sector who pick
- this up more readily than those in the defense sector. Further, those doing
- business applications using Ada technology more quickly see the impact of Ada
- technology than those doing scientific and engineering applications.]
-
- I would recommend that those charged with procuring Ada training, and who
- determine the Ada qualifications of a potential contractor, beyond mere coding
- ability. We must recognize that probably the greatest effort facing the
- advocates of Ada technology will be reformation of "code junkies."
-
- -- Ed Berard
- (301) 695-6960
-
- .pa
- ==============================================================================
- I. D. Comments on Parts 1-3
- Date: Mon, 4 May 1987 09:48 EST
- From: mike feldman <MFELDMAN%GWUVM.BITNET@wiscvm.wisc.edu>
- Subject: Ed Berard's postings on education
-
- Nice going again, Ed.
-
- A cynic's view of all this might be that some of these contractors (and their
- opposite numbers in the DoD project offices) may - precisely - _want_ Ada to
- fail so they can continue with business as usual or find a convenient excuse
- for a waiver.
-
- You might accuse me of coming from a self-serving position, which I am, but
- I'm still convinced that the "Ada community" is still going about this in a
- short-term fashion. Ada and modern software engineering will succeed in the
- long run if we make it pervasive in the education process, which means - in
- the long run - pervasive in university/college computing education.
-
- This means a number of things:
-
- 1. Get the computer science and computer engineering accreditation
- bureaucracies to recognize that software engineering is a legitimate
- discipline for undergraduates. It's no coincidence that most software
- engineering teaching is done at the grad level - you don't have to satisfy
- accreditation bean-counters because graduate programs aren't accredited, only
- undergrad (did you know that?).
-
- 2. Get the recognized textbook authors and mainstream publishers to write
- books that will fit university curricula, which will not change overnight.
- _Very few_ Ada-oriented books fit into the right undergrad pigeonholes. I
- tried to do that with my Data Structures book, which sneaks Ada and software
- engineering into a mainstream undergrad course - where is my competition?
- Booch's new components book is _wonderful_ but probably too voluminous and
- overtly Ada-oriented to work in undergraduate courses, although I would love
- to be proved wrong.
-
- 3. The Ada compilers-and-tools industry is also taking the let's-get-the
- short-term-bucks approach. This is a well-known hobbyhorse of mine, so I won't
- bore you with it again - but until the schools can get into Ada and Ada
- environments without going broke in the process, they'll stick to good ol'
- Pascal or whatever (Modula-2 _is_ starting to catch fire, though: do you think
- most of the same software engineering can be done with packages but no other
- Ada goodies?).The quality of PC and Mac tools for Pascal and C oriented
- education gets better every day. And students can buy it for $35-50 a copy.
- Where is the _software engineering_ education tool stuff? Where is Ada for the
- Mac? Does anyone seriously believe that a school will plunk down $10000 for
- _one_ copy of AdaGraph,even if you buy into the Pamela culture? Does anyone
- seriously think a school will invest heavily in Alsys systems? We have _30_
- AT's in a lab. Shall we put Alsys on 30 machines, or spend the same money to
- buy 30 Macs or PS2/50's? If you were the guy making a recommendation to
- University managers (who are _really_ naive about software engineering), what
- would you recommend? This is not a hypothetical question: I am in in _exactly_
- that position.
-
- Ed, and all the rest of you on the net: I'm not asking you for a handout. I've
- spent the last five years building grassroots support for Ada in my own
- school. I got it, but boy was it hard work, and I am not sure I would invest
- the effort again, because 5 years ago I thought industry would recognize the
- need to do this nationally, but boy have I been disillusioned!
-
- Ada and modern software engineering have _tremendous_ potential, and not just
- in the military community. I have spent five years as a computer-science
- professor trying to realize some of this potential. Industry: a few of us in
- the schools out here are really workin' hard to help you out; anybody ready to
- help _us_?
-
- Michael Feldman, Professor
- Department of Electrical Engineering and Computer Science
- The George Washington University
- Washington, DC 20052
- 202-994-7593
- MFELDMAN@GWUVM.BITNET
- MFELDMAN%GWUVM.BITNET@WISCVM.WISC.EDU
-
- ---------------------------------------------------------------------------
- Date: 13 May 87 07:45:04 GMT
- From: hao!ico!rcd@ames.arpa (Dick Dunn)
- Subject: Re: Ada Education and Training - Part 3
-
- In one part of a rather lengthy article, Edward Berard takes on Kernighan &
- Ritchie's _The_C_Programming_Language_. He was talking about an introductory
- text, so I'm not sure why he's picking on K&R, but he compares their book with
- Booch:
-
- > Kernighan and Ritchie (K&R) and Booch represent two very different
- > views on teaching programming. K&R stresses the age old thinking which
- > says that students of software must see, write, and execute code
- > before anything else will be meaningful.
-
- This is nothing more than an unthinking cheap attack on K&R. It would seem
- that Mr. Berard believes that K&R intends to teach programming simply because
- he thinks it ought to do so. However, if one manages to read as far as the
- fourth paragraph of the Preface, one finds:
-
- "This book is not an introductory programming manual; it assumes some
- familiarity with basic programming concepts..."
-
- Perhaps this was overlooked--after all, the Preface of a book may not be good
- reading (unless you want to know the purpose of the book:-), so let's have a
- look at the beginning of the "real" text. If we read as far as page 1 of
- "Chapter 0" we find the following terms used without prior definition:
-
- programming language, operating system, text-processing, data-base,
- characters, character strings, addresses, storage allocation, heap,
- garbage collection, file-access methods, single-thread control
- flow, coroutines
-
- I cannot, in my wildest dreams, imagine a normal neophyte being able to read
- this section...; he won't even be able to parse some of the sentences.
-
- It is not the case that K&R present the "programming first, thinking later"
- approach. They have set out to provide a ready introduction and reference for
- a particular programming language, and have succeeded in doing so. K&R have
- been set up. "We want an introductory text. We will label them an
- introductory text. Then we will demonstrate that they have failed." [Hey,
- look, the shop manual for my car doesn't provide spiritual guidance either.]
-
- 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:
-
- >...Booch, on the other hand,
- > stresses that students should know what they are doing before they
- > attempt to write code...
-
- The reality of teaching lies in between the code-first approach (mis-
- attributed to K&R, but it does exist elsewhere) and an approach which holds
- off the code until the concepts are ingrained...because the fact of the matter
- is that very few students can hang on to a substantial abstract framework
- without something concrete to which they can relate it.
-
- This is easy to observe in engineering and physical science undergraduate
- curricula. In the first year the students will be taking (let us say)
- calculus and some substantial classical physics which requires calculus. If
- the calculus courses follow a purely mathematical development of functions,
- series, limits, etc. without adequate illustration of the application of the
- concepts, the math instructors find that their students are learning calculus
- better--and faster--in their physics courses.
-
- (There are, of course, areas where it's hard to find the concrete material--
- for example, some concepts in topology--but the production of software is not
- such an area.)
-
- I'm not going to argue that the coding should come first. That's not what I'm
- saying and it's not even in the back of my mind. It would be silly to teach
- that way...but it's equally silly to think that you can (let alone should)
- teach the concepts first and the programming later. That's as absurd (and
- antiquated) as the "waterfall model" of software lifecycle. Consider it an
- overreaction to the "code first" approach.
-
- It's all too simple: Teach the two together. Start developing the idea of a
- programming language and a programming environment as you develop the first
- concepts. By the time you've got enough concepts to think about interesting
- problems, you've also got enough concrete information to show what an actual
- solution to a simple problem might look like. And, I know it's heresy in this
- group where so many people think that there is One True Language, but you can
- use a couple of different programming languages to illustrate examples--if
- you're careful, that can prevent students getting hung up on one language.
-
- (This is somewhat how I was first taught. Perhaps the two languages were not
- the best choices--FORTRAN and BASIC--but hey, that was twenty-odd years ago,
- and it worked then.)
-
- Another way to look at what I'm saying: overemphasizing the coding is bad;
- ignoring it is just as bad. A little more from Berard's article:
-
- > Programming code is the "cocaine" of the software world. To many
- > programmers and managers it is all that matters...
-
- Replace "cocaine" with "currency". To many clients in the commercial world,
- the code is [almost!] all that matters, because they aren't interested in
- plans and studies except insofar as they help produce the end result, and they
- don't believe that they can sell specs-by-the-pound.
-
- The methodology is not the end product.
-
- >...While software is
- > being designed, managers wait nervously and the programmers/coders
- > wait impatiently...
-
- So get some good managers! Sheeeesh! As for the programmers/coders: If you
- divide your world into "those who design" and "those who implement the design"
- you have created a caste system. You have a social problem and you cannot
- solve it by waving methodology about.
-
- >...To an outsider this infatuation with code seems strange. One hears
- > from many sources that coding usually takes up only 10 to 15 percent
- > of the software life-cycle...
-
- This is a favorite litany of the methodology mavens...but if you think about
- it, it's only reasonable. Why is coding only 10-15%? Well, one set of
- reasons is that the code produced is so often late, inefficient, not robust,
- inscrutable, unadaptable, and nonportable. We spend the bulk of our time
- screwing around with code that's already written because it was lousy code in
- the first place...somehow I don't buy the idea that the solution is to improve
- our ability to screw around with the code! Couldn't we try just a little to
- reduce the need to screw around with it? If we had done a good job with the
- 10-15% of the work, a lot of the 85-90% remaining wouldn't have been
- necessary.
-
- A couple more comments from Berard:
-
- > 4) Software people have little faith in those concepts that come
- > before the coding phase. "How can anyone possibly describe
- > something which is not yet coded?", they reason...
-
- Rubbish. These aren't software people.
-
- > It seems that most people have not understood the intentions of the
- > U.S. Department of Defense (DoD) regarding the Ada effort. It is
- > better engineered software that is desired, not merely "FORTRAN
- > rewritten using the syntax and semantics of the Ada language." Too
- > much emphasis has been placed on a tool (Ada) and not on the task
- > (better software).
-
- I agree with this in a perverse sense: I do not understand it to be the
- intent of DoD to produce better engineered software instead of a new language.
- If that is what they desired, why did the requirements used in Ada development
- (the *man sequence) specify nitty details of syntax and semantics instead of
- focusing on requirements? Why did they spend a decade screwing around with a
- programming language before getting on to the environment? Berard is quite
- right that "too much emphasis has been placed on a tool...and not on the
- task..." - and the nature of the development of Ada is the best example of
- that misplaced emphasis.
- --
- Dick Dunn {hao,nbires,cbosgd}!ico!rcd (NOT CSNET!) (303)449-2870
-
- ---------------------------------------------------------------------------
- Date: Thu, 14 May 87 17:06:02 PDT
- From: "LT Scott A. Norton, USN" <4526P%NAVPGS.BITNET@wiscvm.wisc.edu>
- Subject: Re: Ada Education and Training - Part 3
-
- 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
-
- ---------------------------------------------------------------------------
- Date: 6 May 87 08:56:00 GMT
- From: mcvax!unido!tub!cabo@seismo.css.gov
- Subject: Re: Ada Education and Training - Part 3 - (nf)
-
- In an otherwise very reasonable article in comp.lang.ada, ucbvax!EBERARD
- (probably wrong address) writes:
-
- () [...] K&R stresses the age old thinking which
- () says that students of software must see, write, and execute code
- () before anything else will be meaningful. Booch, on the other hand,
- () stresses that students should know what they are doing before they
- () attempt to write code. The K&R approach has its roots in software
- () antiquity.
-
- K&R is a book about a programming language (a good one at that, by the way).
- Grady Booch's book is a book about software design in a programming language.
- These are two entirely separate subjects. You can learn software engineering
- methods without learning the syntax of the Ada language at the same time, and
- you can learn programming in C without simultaneously learning software
- engineering methods.
-
- A book that both teaches software engineering and a programming language seems
- to assume that the intended audience still needs to learn both subjects.
- Probably a reasonable assumption for many people who are now learning Ada.
- Even more so in that Ada does have a few fine points that only can be
- unleashed in conjunction with knowledge about software engineering.
-
- For the C language novice in 1978 (when K&R was written), such an assumption
- would have been invalid; I would have been bored if K&R had placed more
- emphasis on the methods I already had been comfortable with in languages like
- Simula etc. that I had used before. Its successor, the book about the C++
- language (Bjarne Stroustrup 1986) still assumes some basic knowledge about
- software engineering when giving rules of thumb for the use of C++. The Ada
- Reference Manual (which is comparable to the reference sections of both K&R
- and BS) also does not give any guidelines for design and testing methods (and
- we all agree it should not do that), but if you know anything about design you
- immediately understand what packages and all these Ada concepts are about,
- although these are complex enough that a good text will help you use the right
- concept at the right time.
-
- For the software engineering novice (as opposed to the C language novice that
- K&R addresses), it is an interesting issue (e.g. see comp.edu) whether some
- early experience in simple programming helps understand software engineering
- concepts later or just helps people to start programming without design.
-
- For university education, I still prefer first to learn to put letters on
- paper (i.e. programming) before learning to write entire books (i.e. software
- design). However, just being able to put letters on paper does not make you a
- writer (i.e. just being able to program does not make you a programmer).
-
- Carsten Bormann, <cabo@tub.UUCP> <cabo@db0tui6.BITNET> <cabo@tub.BITNET>
- Communications and Operating Systems Research Group
- Technical University of Berlin (West, of course...)
-
- ==============================================================================
- I. E. Ada Education and Training - Part 4
- Date: 7 May 1987 04:27:38 PDT
- Subject: Ada Education and Training - Part 4
- From: Edward V. Berard <EBERARD@AJPO.SEI.CMU.EDU>
-
- You might say that this is a discussion of the "dynamics of Ada technology
- education." First, a few simple ground rules:
-
- 1) Education is different from training. To be crude about it, training
- is what you do with dogs, education is what you do with people. Seriously,
- training of people works best with material which is extremely simple and has
- well-defined ("black and white") rules. If something can be done by rote, then
- training is appropriate. Education of people is what is required when the
- rules and guidelines of a technology do not easily lend themselves to
- simplistic ("black and white") interpretations. There may be many possible
- answers to a single problem, and the identification of a specific acceptable
- set of solutions will change depending on the particular constraints you put
- on the problem.
-
- 2) A consequence of the above is that education may require certain
- skills and aptitudes that are not necessary for training. For example, while
- training might be appropriate for an electronics technician, education is what
- is required for an electronics engineer (here, an electronics engineer is
- taken to mean someone with at least a bachelors degree in electronics
- engineering).
-
- 3) A one-word definition for learning is: change. Both education and
- training require change. Often this change is not limited to the mental state
- of the individual being educated or trained, but also extends to the working
- environment of that individual.
-
- 4) Two very different paths are taken with the activities associated with
- training and education. Since training is appropriate for situations requiring
- little original human thought or judgment, the activities for which a human is
- trained can often be easily automated. (Consider, for example, the training of
- a welder on an assembly line, and the eventual replacement of that welder by
- robots.) Activities requiring education, on the other hand, usually involve
- many constantly varying pieces of information. The tools, techniques, and
- methods used to handle situations for which education is appropriate, may
- themselves be quite complex. (Consider, for example the use of mathematics to
- calculate the dynamics of the liquid fuel in a rocket during take-off.)
- Typically, situations requiring education lend themselves to being assisted
- by, but not replaced by, automation.
-
- There are many players in the dynamics of Ada technology education. In the
- case of U.S. Department of Defense (DoD) related efforts, the player farthest
- removed from the actual engineering of the Ada software is the customer, i.e.,
- the DoD. These people must be educated to the point where they realize that
- training is NOT appropriate for Ada technology, but that education is
- required.
-
- Many of us have been denying the truth for years. We may have felt that
- software production and maintenance required training, not education. This is
- not true. In fact, we should have been educating our technical and managerial
- personnel in software engineering technology all along. The DoD's Ada effort
- is the collection agent, and it is here to collect all our past due software
- engineering education. This is what makes Ada technology education so
- difficult. Ada educators must not only teach the syntax and semantics of Ada,
- but they must also educate their students in software engineering technology.
-
- Closer to home, we have the management of the organization requiring the Ada
- technology education. Management must understand that they must help and
- encourage Ada technology education. They must provide the tools and people
- necessary for good Ada technology education. They must let the people they
- manage know that they take software seriously. It is management which can make
- or break an Ada technology education effort.
-
- Two contrasting examples are necessary here. At Magnavox in Ft. Wayne,
- Indiana, Management was seriously committed to the concept of Ada technology
- education:
-
- - Management required themselves to go through the same training that
- they put their technical staff through. This began to make them aware of what
- their technical could expect, and gave management a chance to ask questions in
- context.
-
- - Management had themselves trained first. This gave them the lead time
- to begin preparing themselves and their staff for the changes which were to
- come.
-
- - Training was from 7:30 A.M. to 4:30 P.M. every day with one-half hour
- off for lunch. The class participants were already working on their labs when
- the instructor arrived, and continued to work after the instructor left for
- the day.
-
- - No one was allowed to disturb the class. Unless it was a truly life-
- and-death matter, the best that anyone could do was to place a note on the
- classroom door if they wanted to get the attention of a class participant.
-
- - Management made sure that tools (e.g., an Ada compiler) were procured
- as early as possible, and that all that needed to, had access to the tools.
-
- Another organization (unfortunately, a well-known name in the Ada business)
- had management which did about everything they could do to prevent Ada
- education from happening:
-
- - They delayed any kind of Ada technology education until shortly before
- the coding was to start on the project.
-
- - They did not allow their technical staff to participate in classroom
- activities on a regular basis. The number of students in the class room varied
- from zero to about seven. (That's right, one day the instructor showed up, and
- there were no students in the class for most of the day.)
-
- - Management themselves kept well away from the classroom.
-
- - During the first course which required the use of an Ada compiler, the
- labs were delayed because the compiler was not even installed until the middle
- of the week. Even when the compiler was installed, it was installed so badly
- that it was all but unusable.
-
- In summary, management can either aid the dynamics of Ada technology
- education, or ensure the failure of Ada technology transfer.
-
- Inside the classroom, we have another set of dynamics, specifically the
- relationship between the instructor and the students. A good instructor knows
- that "education is a two-way street." The instructor must listen to the
- students and be sensitive to their needs. The instructor must make reasonable
- attempts to reach most, if not all of the people in the class.
-
- In industry (as opposed to academia), at least fifty percent of an
- instructor's job is leadership. An instructor must both listen to and
- understand the needs of the people he or she is charged with educating.
- However, it is the instructor who must motivate and lead the class. This is
- especially crucial in the case of Ada technology education.
-
- Many students arrive at their first Ada class fully expecting a syntax course.
- It takes work and a good deal of persuasion to foster a desire for software
- engineering as opposed to just learning the syntax of "just another language."
- Some Ada instructors are bullied by their students into providing a syntax-
- only course. (I remember advising one of these instructors to "get up early on
- Sunday morning and watch some of the TV evangelists for inspiration.")
-
- Just getting into the classroom can be a challenge. The perspective instructor
- must successfully persuade management that software engineering is a good
- thing, and is more important than Ada syntax.
-
- The instructor must not insult the intelligence of his or her students.
- Students are fully capable of learning about software engineering on the very
- first day of instruction. The belief that students must know code syntax
- before software engineering will make any sense is just plain wrong. Software
- engineering instructors have two things going for them. First, software
- professionals are very "goal oriented." Once proper goals are set perspective
- software engineers will strive for them. Second, most software engineers want
- to to the best job they possible can. Showing how each piece of software
- engineering technology aids in achieving this goal helps the Ada technology
- instructor get the job done.
-
- If, however, the instructor does not have a firm grasp of software engineering
- technology, he or she cannot hope to convey the technology to the students.
- Merely saying the words "abstraction" and "information hiding" a few times
- does not merit being called a software engineering approach. Software
- engineering is an enormous discipline encompassing methodologies, metrics,
- mathematics, computer science, engineering disciplines, analytical and logical
- thinking, communication skills, and other factors.
-
- The classroom dynamics I have just described also work in academia. Having
- taught in college classrooms for regular college courses myself, I can attest
- that from the first day in their freshmen classes, college students are fully
- capable of understanding engineering disciplines. Consider the freshman who is
- an electronics engineering student. He or she may have entered college
- thinking that electronics engineering was little more than "building Heath
- kits." However, engineering students soon find themselves in classes on
- complex analysis, differential equations, physics, chemistry, statics,
- dynamics, strength of materials, English, history, and other disciplines.
-
- The same kind of thinking holds for software engineering students. They may
- enter a university thinking that software engineering is "glorified hacking,"
- but they are just as capable as the electronics engineering student of
- learning the full discipline, not just the least significant part (i.e.,
- coding).
-
- -- Ed Berard
- (301) 695-6960
-
- ==============================================================================
- I. F. Comments on Parts 1-4
- Date: Mon 18 May 87 08:33:24-PST
- From: CONTR47@NOSC-TECR.ARPA
- Subject: Thoughts provoked by Ed Berard's articles
-
- I always enjoy reading Ed Berard's articles because they are very thought
- provoking. I usually agree with his observations and usually disagree with his
- conclusions and recommendations. The recent 4 part discourse is not unusual in
- that respect. While reading I mentally composed pages of response and wondered
- which responses, if any would be worthy of net resources.
-
- Then I received a paper from the SEI by Watts S. Humphrey titled
- "Software Process Management" which contains a concluding thought that seems
- to sum up my possible responses to Ed's articles. "There is a definition of
- insanity that applies to software development. It is said that insane persons
- believe they can continue doing the same thing over and over and get different
- results". Upon reading that I realized that I have been insane most of my
- career. I was insane when I expected engineers and managers to immediately see
- the advantage of transistors over vacumn tubes. I was insane when I expected
- them to see the advantage of computers over analog control. I was insane when
- I expected them to see the advantage of Ada over Fortran until I said to
- myself "Self- That's enough- Only deal with people who have already accepted
- that there is an advantage and want help realizing the advantage."
-
- This happened about the same time I started my own company and became
- interested in profit. i.e.: There isn't much profit in missionary work. I have
- a placard that says "Never try to teach a pig to sing: It will waste your time
- and it annoys the pig." I believe that Ed is attempting to teach pigs to sing
- as I have often done. It is a form of insanity according to Humphrey. It takes
- 14 or so years for a new technology to be widely used in practice according to
- SEI (from my memory) and I think it will be so for modern software
- engineering/Ada and there isn't much Ed or I can do about it. Hopefully the
- SEI can do something about it through the software engineering curriculum
- design.
-
- So Ed, my reaction to your discourse is to not criticize anyone for not
- immedialtely seeing the advantages of Ada, work with the ones who ask for
- help. The 14 years will pass quickly and you'll be working on the next new
- technology by then.
-
- regards, sam harbaugh
-
- ---------------------------------------------------------------------------
- Date: Tue, 19 May 87 23:32 CDT
- From: "Pat Rogers, High Tech Lab" <ROGERS%uhcl.csnet@RELAY.CS.NET>
- Subject: Software Engineering education, etc
-
- Of all people, I think Niccolo Machiavelli said it best:
-
- Nothing is more difficult to carry out, nor more doubtful of
- success, nor more dangerous to handle, than to initiate
- a new order of things. For the reformer has enemies in all
- those who profit by the old order, and only lukewarm defenders
- in all those who would profit by the new order, this luke-
- warmness arising partly from ... the incredulity of mankind,
- who do not truly believe in anything new until they have
- had actual experience in it. (The Prince)
-
- While Sam is correct in saying that missionaries do not usually turn a profit
- (recent televangelists notwithstanding), the missionary's position, if you'll
- pardon the pun, is that preaching to the choir is a lot easier but doesn't
- address the audience most in need. This is actually a worthwhile attitude,
- when one considers the importance of some of the projects now or soon-to-be
- underway. More than a few people I've run across sound like the people with
- which Machiavelli tangled, back in the early 1500's. (We can only assume that
- they are not the same people.) In all seriousness, I don't always agree with
- the things I read about Software Engineering education either, but it is
- important work, and is worthy of our support.
-
- Regards,
-
- Pat Rogers
- PRogers@Ada20
-
- .pa
- ============================================================================
- II. The Human Element in Software Engineering
- Date: 19 May 1987 04:31:13 PDT
- Subject: The Human Element in Software Engineering
- From: Edward V. Berard <EBERARD@ADA20.ISI.EDU>
-
- There is a good deal of wisdom in Sam Harbaugh's response to my recent four-
- part article on Ada Education and Training. I especially agree with his citing
- of the old adage: "Never try to teach a pig to sing: it will waste your time
- and it annoys the pig." In fact, another old saying: "Neither cast ye your
- pearls before swine." (Matthew 7:6) also came to mind regarding the natural
- human tendency to reject new technology.
-
- Technologists, in general, very often ignore the human element in technology.
- Many erroneously believe that it is technology that advances technology, when,
- in fact, it is economics, politics, and sociology which are the main causes of
- technological change. Nowhere is the attempt to remove human considerations
- from technology so blatant as it is in the state-of-the-practice of software
- engineering. Consider the following:
-
- 1) Although people such as Barry Boehm have been telling us for years
- that the greatest improvements in technology will occur when we improve the
- capabilities of the humans involved in the process (See the front cover of
- Barry's book, "Software Engineering Economics."), we continually ignore this
- advice. It seems we much more comfortable creating new automated tools than we
- are with measuring and improving the capabilities of the humans who will be
- using the tools.
-
- 2) Sociologists tell us that while bringing a group of people one
- generation ahead in technology is difficult, bringing a group of people ahead
- two generations of technology is all but impossible. In the area of software
- engineering, the state-of-the-practice is easily two or more generations
- behind the state-of-the-art. This leads to some interesting results. For
- example, while we currently possess the technology to increase our software
- engineering productivity by at least an order of magnitude, we cannot expect
- people to begin using this technology on a large scale for at least a decade.
- (Yes, Sam, I do agree with your observation.)
-
- 3) New technology is seldom what people expect it to be. I used to give a
- seminar on "Measuring and Improving Programmer Productivity." This seminar was
- attended chiefly by managers who expected me to tell them how to make their
- programmers code faster in the programming language of their choice. When they
- heard that the largest gains in productivity required such items as a shift to
- fourth-generation languages, off-the-shelf software, and smaller technical
- staffs, the managers often refused to accept the facts, *even when presented
- with documented evidence supporting the facts.*
-
- 4) Even when people claim that they are ready to accept new technology,
- or even to enthusiastically pursue new types of technology, they often spend
- enormous amounts of resources (in most cases, the majority of their resources)
- "re-inventing or re-discovering the wheel." The concept of a simple literature
- search is beyond most of the people in the software business today. Even those
- who are capable of even feeble scanning of the technical literature are ill-
- equipped to understand, much less accurately interpret, what they find.
- Recently, someone from one of the more prestigious centers of software
- engineering technology transfer called to ask me about a methodology. This
- person was part of a group which was researching software development
- methodologies. This person was shocked when I told him that the work he was
- charged with had been done at least six times before. Indeed, in addition to
- numerous government sponsored reports available on the topic, five or six IEEE
- tutorials, at least three hardback books, numerous foreign government studies,
- and several publicly available industry and academic studies, there is at
- least one public seminar on the topic he was researching.
-
- 5) Technical people seem very uncomfortable with concepts of ethics,
- morals, and responsibility. For example, few software engineering courses
- discuss the ethical implications of a managerial or technical decision.
- Although there are quite a number of courses and seminars about software law,
- most deal with the protection of copyrights -- as opposed to the legal
- responsibilities of the author of the software if reasonable use of the
- software results in damage to the user.
-
- As I have stated before, most people are more comfortable talking about
- technological change than doing anything about it. As a consultant, I am often
- asked to pose solutions to any number of software engineering problems. It is
- a sad fact that most of the people who pose the problems to me are "insane."
- (Insane by W.S. Humphrey's definition: "There is a definition of insanity that
- applies to software development. It is said that insane persons believe they
- can continue doing the same thing over and over and get different results.")
- They do not want to hear the best, or even a correct, answer. They want to
- hear more of the same.
-
- Sam is also right on another point. The financial rewards of being on the
- leading edge of technology are meager at best. It is little comfort to realize
- two years later that you did indeed accurately predict the technological
- future, but will have to wait another two years to take economic advantage of
- your prediction. In Greek mythology, a woman named Casandra was cursed by the
- gods. She was given the power to accurately predict the future. However, the
- gods made sure that no one would believe her predictions.
-
- There is, however, another view. Without people motivating and cajoling the
- technical population, there would be little work for people like Sam. So, in
- the future, I will continue in my attempts to "teach pigs to sing." I guess
- what motivates me is that I have had some success with changing pigs into
- quasi-rational human beings. (Another of the ancient Greeks, Homer, told us
- about Circe, a sorceress who turned men into animals. You might say that I am
- attempting to "reverse the curse.")
-
- -- Ed Berard
- (301) 695-6960
-
- .pa
- ===========================================================================
- III. A. The DoD and Software Reuse - Part 5
- Date: 15 Jun 1987 03:13:47 PDT
- Subject: DoD and Software Reuse - Part 5
- From: Edward V. Berard <EBERARD@ADA20.ISI.EDU>
-
- Recently, I have had a number of conversations with DoD contractors regarding
- software reuse. While they all refuse to have their names used, they were very
- honest with me about their opinions on the future of software reuse within the
- DoD. Some points you might find interesting are:
-
- 1. Software reuse is something which is virtually meaningless to the
- highest levels of management in most organizations doing business with the
- U.S. Department of Defense (DoD). When these high-level managers are told
- about software reuse, they have one primary question: "How does it affect the
- bottom line?" In other words, is this a concept which will make the company
- more money? Given the current state of affairs, the answer is "no."
-
- 2. One of the reasons that the answer is currently "no," is cost-plus-
- fixed-fee (CPFF) contracting practices. Specifically, the more people put on a
- project, the more money a contractor makes. Making reuse of software actually
- costs the company money. Fixed price contracts, as they currently exist, are
- not an obvious inducement to reuse software because, as more than one
- contractor told me, "once we get a fixed price contract, we can always get the
- government to give us additional money."
-
- 3. At a briefing for contractors, an Army general said that "Ada appeared
- to be "taking off" in the commercial (non-military) sector." "One of the
- reasons for this," the general continued, "was because of the software
- reusability benefits that Ada provides. We think that our contractors will
- also see these same benefits and begin to make software reuse the normal
- practice." Some of the contractors at the briefing felt that the general was
- very naive about the ways of government contracting to make such a statement.
-
- So what can we learn from the above? The first thing we must realize is that
- organizations which develop software are run by people whose primary interest
- is profit. "Ignoring the concepts of ethics and morality," one contractor told
- me, "it does not seem to be currently in the best interests of a contractor to
- develop the most cost effective solution for any government software
- contract."
-
- We must also recognize that the commercial sector and the government software
- sector are two very different animals. In the commercial sector, a developer
- often pays all the costs for product development, hoping to more than recoup
- these costs based on sales of the product. With this type of scenario,
- software reuse makes a great deal of sense, i.e., the lower the development
- costs, the lower the risks and the greater the potential profit. On the
- government side, the software developer has little risk. The software
- developer is being paid to develop a product, not to sell it. The greater the
- development costs, the more money the contractor makes. If the product fails,
- or is never completed, the only one who loses is the government. (To add
- insult to injury, many contractors take the technology they have developed
- under government contract and turn it into viable commercial products.)
-
- "In order for software reusability to take hold in government contracting
- organizations," another contractor told me, "it must be made meaningful to the
- highest levels of contractor management." If they are aware of it, software
- reusability is often only a phrase to the upper levels of contractor
- management. Since it is the highest levels of management who can most
- effectively make software reusability a reality, the government must seek ways
- to make software reusability "real" (and profitable) to these people.
-
- -- Ed Berard
- (301) 695-6960
- .pa
- ---------------------------------------------------------------------------
- III. B. Comments on Part 5
- Date: Mon 15 Jun 87 17:55:19-PST
- From: CONTR47@NOSC-TECR.ARPA
- Subject: comments on Ed Berard's S/W reuse part 5
-
- 1. I believe that the contractors skill at S/W reuse will provide him the
- most advantage at bid time. The Government is *very* considerate of price when
- awarding contracts. The contractors who are most skilled at reuse will win the
- most contracts while those who bid all new code in order to collect the higher
- fees will suffer.
-
- 2. My experience at a large DoD contractor was contrary to what is being
- told to Ed. It was *very* difficult to get add-on money to either CPFF or FFP
- contracts unless the Government was clearly getting additional value for the
- money. I have heard extreme examples of rip-offs during the Vietnam war but
- all the time I worked there it was not under war emergency conditions and the
- Government was a *tough* customer.
-
- 3. My personal opinion is to question the data being told to Ed by
- "management". My experience has been that administrative management doesn't
- always know what is going on; The program manager does but he wouldn't tell so
- unless you have some clout (like work for the Defense Contract Audit Agency)
- you are not going to know "the facts". The work I recently did on Ada cost
- modelling showed us that very few people really knew what was going on. Only
- by careful recall on the part of the development manager could he remember why
- certain costs were unusual values. It was the unusual values that caused him
- to recall that reuse played an *important* part in S/W actual costs. Since we
- have now come full circle back to the value of reuse I'll sign-off.
-
- regards, Sam Harbaugh
-
- --------------------------------------------------------------------------
- Date: 16 Jun 1987 02:17:55 PDT
- Subject: Putting Software Reuse in the RFP
- From: Edward V. Berard <EBERARD@AJPO.SEI.CMU.EDU>
-
- I have had some interesting responses to my most recent posting on
- reusability. Some are along the lines of "you are belaboring the obvious."
- Others are similar to the response that Sam Harbaugh provided, i.e., "your
- 'facts' are not on target." What this mixture of responses seems to
- demonstrate is the confusion over the "real" impact of software reuse on
- government procurements.
-
- One point that is worth mentioning is that lower price alone is not an
- indicator of software reuse. The government needs to know what they are
- getting for their money. For example, one could bid a lower price by limiting
- the scope of the delivered product, underestimating the actual costs, or
- "buying" a contract (purposely bidding less than what you know what the true
- cost of the contract will be, most often for some future profit motive).
-
- One approach that some government agencies have begun to use is to make
- software reuse highly visible in the original RFP (Request For Proposal). For
- example, bidders are required to provide some estimate of the size of the
- delivered software -- typically in "lines of code." In addition, the bidders
- must provide an estimate of how much reusable software will be incorporated
- into the delivered product, and they must also describe how this "reused
- software" will impact the cost, quality, etc. of the product.
-
- Given this, and other, information, the requester can begin to get a better
- understanding of what the different bidders are proposing. Suppose one bidder
- estimates the size of project at "50,000 lines of code," while another
- estimates the size to be "100,000 lines of code." There could be many reasons
- for the difference, but it will be likely that the bidder with fewer lines of
- code will submit a lower bid.
-
- If, however, two, or more, bidders provide similar estimates as to the size
- and scope of the delivered product, a more accurate picture of the impact of
- software reuse is possible. Everything else being equal (Yes, I know, it
- seldom is.), the bidder who plans to incorporate significantly more reusable
- software into the delivered product should be able to submit the lower bid.
-
- One government agency told me that they recently acquired an Ada application
- which was about 100,000 "lines of code" in size with an expended effort of
- "significantly less than a man-year." This was possible because of the heavy
- reuse of software on the project. (One very large company I talked with, told
- me that they might "optimistically" bid this same contract at "20 man-years"
- of effort.)
-
- -- Ed Berard
- (301) 695 - 6960
-
- ---------------------------------------------------------------------------
- Date: Tue, 16 Jun 87 11:14 EDT
- From: Pete Schilling <"VAXTSD::SCHILLING1%atc.alcoa.com"@RELAY.CS.NET>
- Subject: Software Reuse
-
- This may seem incredibly naive to those who have long experience in the
- Defense contracting game, but it deserves saying anyway:
-
- If the benefits of software reuse are real, then --
- - A product that makes significant reuse of software should be ready
- sooner than one that represents all new code.
- - Saying than another way, a product that makes significant reuse of
- software could be started later in the system development cycle.
- - The reliability of a product that makes significant reuse of software
- should be higher that an equivalent product that represents all new code.
- - Other quality characteristics of a product that makes significant reuse
- of software should be much more predictable than one that represents all new
- code.
- - The maintenance cost of the product that makes significant reuse of
- software should be lower.
-
- If all of the above is really true, then the customer should be willing to pay
- MORE for a product that makes significant reuse of software than for one that
- represents all new code.
-
- Pete Schilling CSNET: SCHILLING@ATC.ALCOA.COM
- Technical Specialist PHONE: 412/337-2724
- Process Control and PAPER MAIL: Aluminum Co. of America
- Computer Technology Divn. Alcoa Center, PA 15069
- Alcoa Laboratories USA
-
- ---------------------------------------------------------------------------
- Date: Wed, 17 Jun 87 07:43:22 EDT
- From: schimsky@nadc.arpa (D. Schimsky)
- Subject: Re: Software Reuse
-
- As a "Government" manager of major software developments, let me offer that
- most of comments I've seen here relative to "re-use" appear academic.
-
- 1. No, I would NOT pay more for a product that takes advantage of re-use,
- since virtually my entire concern is to LOWER the price of software
- development. There is no way, short of pushing my nose in it, that I will
- believe a paper analysis showing me how much I will save tomorrow if only I
- give you more today.
-
- 2. Short of absolute mandate (translate to "I order you to...") the detailed
- methods employed in the development of software are made on a very local level
- by the people first in line for the responsibilty. These are the Project
- Engineers, or Program Officers, or some equivalent title. I believe I know
- what their opinion is concerning re-use, but it would be interesting to hear
- them speak.
-
- 3. By what magic do you expect an organization as large and diverse and,
- sometimes, divergent, to adopt a methodology that begs for standardization,
- cooperation, flexibility and a non-parochial attitude, when you would do well
- to find one, small, isolated group, anywhere, doing the same?
-
- ----------------------------------------------------------------------------
- Subject: Re: Software Reuse
- Date: Thu, 18 Jun 87 12:55:43 EDT
- From: Bob Munck <munck@mitre-bedford.ARPA>
-
- I don't know if I've ever seem a more straightforward explanation of the DoD's
- Software Crises than this:
-
- > As a "Government" manager of major software developments, ... There
- > is no way, short of pushing my nose in it, that I will believe a
- > paper analysis showing me how much _I_ will save tomorrow if only I
- > give you more today.
-
- Remember that the _I_ (underlining mine) is really "the poor slob who'll be
- maintaining this system years after I get a job in Industry." Remember too,
- that EVERYBODY'S project is too important (major) to take the risk of being
- the first to use any new technique.
-
- Of course, with FORTRAN, JOVIAL, CMS-2, and/or the Chinese Army approach to
- programming, there's no risk. We KNOW that it will be late, over budget, and
- buggy. No surprises, no risks.
-
- -- Bob Munck, MITRE
-
- .pa
- ----------------------------------------------------------------------------
- Date: 18 Jun 87 08:46:36 GMT
- From: mcvax!ukc!dcl-cs!craig@seismo.css.gov (Craig Wylie)
- Organization: Department of Computing at Lancaster University, UK.
- Subject: Software Reuse -- do we really know what it is ?
-
- There have been a couple of articles recently on Software Reuse and its likely
- acceptance by Defence Contractors. In considering Software Reuse in general,
- not just with reference to Ada and DoD, do we know what it is? The scale of
- software that Ada allows the programmer to reuse seems to be primarily that of
- the package (in Modula-2 the Module). Is this sufficient? If we leave aside
- for the time being the question of whether Ada is an object oriented language
- and accept that if it isn't then you can do a reasonably good job faking it,
- reuse in Ada seems to be stuck at the level of the Abstract data type.
- Furthermore the lack of any easy (or apparent) way to derive WHAT an Ada
- program is doing rather than HOW it is doing it, does put a large amount of
- the responsibility for recovering reusable components on the programmer.
-
- In summary I would like to offer a few statements for discussion to see if we
- can clarify reuse.
-
- 1. We don't really know what it is.
-
- 2. It probably isn't a thing at all, but rather a collection of things
- depending on the scale at which the reuse is to take place.
-
- 3. Languages such as Ada and Modula-2, and imperative languages in
- general are unsuitable for writing reusable software because of
- their concentration on the HOW rather than the WHAT.
-
- 4. Reuse of Design isn't considered at all by any current applications
- language.
-
- 5. Nobody can force programmers to write good reusable code.
-
- 6. Even if they do write reusable code how the **** do we ever find it
- again so that we can reuse it ?
-
-
- All responses appreciated.
-
- Craig.
- UUCP: ...!seismo!mcvax!ukc!dcl-cs!craig| Post: University of Lancaster,
- DARPA: craig%lancs.comp@ucl-cs | Department of Computing,
- JANET: craig@uk.ac.lancs.comp | Bailrigg, Lancaster, UK.
- Phone: +44 524 65201 Ext. 4476 | LA1 4YR
-
- ---------------------------------------------------------------------------
- Date: Sat 20 Jun 87 12:27:45-PST
- From: CONTR47@NOSC-TECR.ARPA
- Subject: reuse - suggestion to include usage history in metrics
-
- You don't write reusable code, you write useable code, use it, then it
- becomes reusable. The reason I make such a statement is to set the stage for
- making the suggestion that reuseable code's useage history is an important
- attribute and one which I would like to see the reuseabilty research people
- include in their reusability metrics.
- For examples just think of selecting a spreadsheet, etc., to reuse (buy
- at the software store).
- I suspect that most software being touted as reuseable today ( at
- Simtel20 repository for instance) is not reuseable because it hasn't been used
- for the first time.
-
- regards, sam harbaugh
-
- ---------------------------------------------------------------------------
- Date: 22 Jun 1987 04:00:27 PDT
- Subject: Software Reuse -- We Know More Than You Think
- From: Edward V. Berard <EBERARD@ADA20.ISI.EDU>
-
- This is response to an honest question by Craig Wylie. Wylie asks a series of
- general questions about software reuse. He has also inadvertently tripped over
- one of my pet peeves. Let me quietly explain, and then I will get on with my
- answer to his questions.
-
- ******************** Personal tirade -- Can be ignored ************
-
- We often ignore the technical nature of software engineering. By that I mean
- that we assume there is little to software engineering other than writing code
- and opinion. Concepts which are accepted as normal practice in other technical
- disciplines (e.g., literature searches, the application of mathematical and
- engineering disciplines, and quantitative metrics) are not yet accepted by the
- masses as being relevant for software engineering.
-
- Take the issue of software reuse. Ignoring any work in this area prior to Doug
- McIlroy's article at the 1968 NATO Conference on Software Engineering,
- software reusability has a history of almost two decades of research and
- implementation. This research and implementation knows no geographical or
- political bounds. For example, the Japanese have an organization called SIGMA
- to deal with software reuse.
-
- The IEEE has recently published and entire tutorial on software reuse. A
- number of recent issues of IEEE Software have carried articles on software
- reuse. Two entire issues of the IEEE Transactions on Software Engineering were
- devoted to software reusability. Even a feeble search of the software
- engineering literature would turn up hundreds of articles on the topic. (The
- quality of these articles ranges from dismal to excellent.) Many of these
- articles offer definitions, metrics, taxonomies, and reusability systems.
-
- Some of the items which we now know about software reusability are:
-
- - Much more than source code can be reused. In fact, designs, plans,
- test data, and documentation (among others) can be reused. The smallest gains
- in productivity, reliability, etc., are obtained by only reusing source code.
- Reusing the documentation associated with "reusable source code" greatly
- enhances any gains associated with merely reusing the source code.
-
- - Reusability is not a concept that is limited to the coding phase of
- the software life-cycle. It must be a highly visible item from requirements
- analysis to the retirement of the product.
-
- - Research seems to indicate, and practice seems to show, that the
- majority of many software products can be assembled from reusable components.
-
- - There are any number of metrics associated with software reuse. They
- include metrics which measure the sheer bulk of source code and documentation
- reused in an application, to metrics which measure the affects of software
- reusability, e.g., software productivity metrics.
-
- My image of the current state-of-the-practice in software engineering is one
- of a series of blind and deaf individuals surrounded by massive amounts of
- software engineering technology. All too often when some of this technology is
- brought to the attention of one of these "handicapped" individuals, it is
- dismissed as "buzzwords," "academic," "theoretical," or "mere opinion."
-
- *********************** End of tirade *******************************
-
- Wylie asks if we know what software reuse is. There are two answers to this
- question. The vast majority of today's software practitioners either do not
- know what it is, or assume that it is "yet another buzzword." There is a small
- minority of individuals and organizations who are researching and implementing
- various aspects of software reuse. [I am reminded of the anecdote about the
- monks in their abbies who preserved the knowledge of mankind during the dark
- ages while "the winds of ignorance howled outside."]
-
- No, Ada's package concept is not enough. Grady Booch has been pointing out for
- years that some higher level concept (e.g., Rational's subsystems) is
- necessary. By the way, virtually all existing programming languages (with the
- exception of some very high-level fourth-generation languages) lack attributes
- which make them directly applicable to programming-in-the-large.
-
- Reuse in Ada is not "stuck at the level of the abstract data type." However,
- few software engineers know how to go beyond this concept (in any language).
-
- There are a number of ways to derive the "what" from a piece of Ada software,
- and to divorce this from the "how." The mechanisms for doing this range from
- crude (e.g., include the "what" in the comments), to innovative (e.g.,
- consider David Luckham's ANNA). Further, the recovery of reusable components
- can be handled in a number of ways:
-
- - level 0: the use of a hierarchical file system
-
- - level 1: the use of a relational DBMS (data base management
- system) or a hypertext system
-
- - level 2: the use of an expert system or some other artificial
- intelligence tool
-
- - level 3: incorporation of reusable components in an application
- generator (a type of fourth-generation language)
-
- These approaches have also been modified to include such things as
- documentation, test data, designs, and plans as well as source code.
-
- Software reusability technology is indeed a collection of things. These
- things include reusable components, taxonomies, reusability systems,
- composition concepts, methodologies, and others. This technology is more
- coupled with the size of the software product than it is with "the scale at
- which the reuse is to take place."
-
- The issue of language suitability for reuse is an interesting one. Stating
- that imperative languages are unsuitable for reuse shows a lack of
- understanding of software reuse technology. (But then again, I have heard any
- number of Ada people make similar misstatements about languages such as LISP
- and most fourth-generation languages.) One might re-phrase the observation by
- stating that the mere use of the Ada language does not guarantee reuse. The
- language must be accompanied by software reuse technology (e.g., tools and
- methodologies).
-
- One item which seems to have escaped the understanding of many in the Ada
- community is that one of the primary motivations behind the Ada language is
- "to build tools to build tools." Ada was designed with the intention that it
- be used as a bootstrap. Specifically, it is to be used to create libraries of
- reusable components (the first "tools"). These reusable components are to be
- used to create fourth-generation languages and "software factories" (the
- second "tools"). Using the Ada language as if it were Pascal, C, FORTRAN,
- COBOL, or assembly language is tantamount to abuse.
-
- Software design methodologies do play an important part in software reuse.
- Some methodologies enhance software reuse, others discourage it. We have known
- for some time that software designs should be constructed so that they can
- easily be modified. We are only now beginning to understand that by bringing
- software reusability issues to the first phases of the software life-cycle, we
- can greatly enhance the impact of software reusability. Finally, by studying
- the designs of many systems within a particular application domain we are
- finding designs are very much reusable, e.g., consider the basis for many
- fourth-generation languages.
-
- Nobody can force programmers to write good reusable code. However,
- programmers, as a whole, want to do a good job and are very goal-oriented.
- Getting programmers to write good reusable code is in part a motivating and
- educational process.
-
- Finally, in addition to the technical problems which must be addressed, we
- have to consider many other connected issues. Political, managerial, legal,
- cultural, financial, marketing, and productization issues must also be
- considered.
-
- -- Ed Berard
- (301) 695-6960
-
- ---------------------------------------------------------------------------
- Date: 22 Jun 87 18:59:41 GMT
- From: crowl@cs.rochester.edu (Lawrence Crowl)
- Organization: U of Rochester, CS Dept, Rochester, NY
- Subject: Re: Software Reuse -- do we really know what it is ?
-
- In article <4658@utah-cs.UUCP> shebs@utah-cs.UUCP (Stanley Shebs) writes:
-
- ]... software people fume and gnash their teeth over "wasted space". ... All
- ]the techniques for modules, objects, etc, tend to slow things down. Again,
- ]software types tear their hair out and vow to recode everything into one
- ]assembly language procedure. Worse, other software types admire them for
- ]doing so! ...
- ]
- ]In article <374@sol.ARPA> crowl@rochester.UUCP (Lawrence Crowl) writes:
-
- >>In article <371@dcl-csvax.comp.lancs.ac.uk>
- >>craig@comp.lancs.ac.uk (Craig Wylie) writes:
- )))3. Languages such as Ada and Modula-2, and imperative languages in
- ))) general are unsuitable for writing reusable software because of
- ))) their concentration on the HOW rather than the WHAT.
- >>
- >>Clearly, we need more concentration on WHAT, but we should not abandon the
- ] ^^^^^^^^^^^^^^^^^^^^^^^^^
- >>efficiency of HOW.
- ] ^^^^^^^^^^
- ]
- ]QED!
-
- Let me clarify my position. I can specify a sort as a set of predicates and
- let the system figure out how to satisfy those predicates. This is the WHAT
- approach used in languages such as Prolog. Another approach is to write a
- algorithm for sorting, e.g. quicksort. This is the HOW approach used in
- languages such as Ada. Yes, the packaging of the sort will result in some
- loss of efficiency. However, it will be substantially faster than the WHAT
- approach. I am advocating an approach in which a package interface describes
- WHAT and the implementation of the package describes HOW.
-
- Because I wish to keep the macro-efficiency of algorithmic languages, do not
- accuse me of wishing to keep the micro-efficiency of hand-tuned assembler.
-
- ]3. In general, hardware types have standards for every imaginable sort of
- ]interface, and they stick to them remarkably well. You can plug boards into
- ]a standard bus with only a small chance of sparks flying everywhere as the
- ]boards fry. In software, standards are strictly for lip service to managers;
- ]only a novice would consider combining programs from several different
- ]sources without planning a few hours or days of debugging!
-
- Programmers to this sort of program combination many times a day in the Unix
- shell. There ARE approaches to software reuse that CAN work. We need to
- provide this kind of capability within a language.
-
- ]In short, I believe there are no technical problems or issues with reuse;
- ]it's the software culture that has to change. At present, the prevailing
- ]attitude is that the densely-coded, highly-optimized, do-everything program
- ]is a sort of ideal to which everyone aspires. Until this attitude changes,
- ]software reusability will continue to be a bad joke among those who actually
- ]write programs.
-
- There are technical problems. For instance, how do you insure that the
- parameters to a generic package are appropriate.
-
- Performance will always be a goal. However, it must be balanced against cost.
- Most programming done today is in a high-level language. In the early
- sixties, most programming was done in assembler. So, the software attitude
- has changed.
-
- Modular code also allows changes in representation that can lead to orders of
- magnitude performance improvements. Non-modular code strongly inhibits such
- representational changes. In short, the micro-efficiency of non-modular code
- leads to the macro-INefficiency of poor algorithms and representations.
-
- )))5. Nobody can force programmers to write good reusable code.
- >>
- >>True. But no one need buy code that is not both good and reusable. I
- >>believe there is a market for such code.
- ]
- ]Manufacturers seem to think their interest is in maintaining secrecy of code.
-
- Again, let me clarify. I meant that the reusable software would be written by
- software houses and sold to companies which write applications. For instance,
- Reusable Software Inc. sells a sort package to Farm Software Inc. which uses
- it in its combine scheduling program. Farm Software Inc. need not divulge its
- algorithms or its use of packages written by Reusable Software Inc.
-
- ]Customers only care about speed and features. Read Infoworld and see if they
- ]ever say anything positive about a program that is slower but more modular.
-
- You forgot cost. Modular code will cost substantially less in the long run.
-
- Lawrence Crowl 716-275-5766 University of Rochester
- crowl@rochester.arpa Computer Science Department
- ...!{allegra,decvax,seismo}!rochester!crowl Rochester, New York, 14627
-
- ----------------------------------------------------------------------------
- Date: 22 Jun 87 15:40:19 GMT
- From: shebs@cs.utah.edu (Stanley Shebs)
- Organization: PASS Research Group
- Subject: Re: Software Reuse -- do we really know what it is ?
-
- In article <374@sol.ARPA> crowl@rochester.UUCP (Lawrence Crowl) writes:
-
- >In article <371@dcl-csvax.comp.lancs.ac.uk>
- >craig@comp.lancs.ac.uk (Craig Wylie) writes:
- >>1. We don't really know what it is.
- >
- >Well, I find a glimering of re-use in reading Knuth's books. I will point at
- >an analogy though. Board level designers constantly use circuits designed by
- >others. They are packaged in integrated circuits.
-
- An interesting analogy. It says a lot about prevailing software culture:
-
- 1. Available chips do not always meet requirements exactly. For instance, a
- board might need 3 NAND gates, but the 7400 has 4. EEs just ignore the extra
- gate, or tie its pins to something stable. In a similar situation, software
- people fume and gnash their teeth over "wasted space".
-
- 2. Running wires around boards loses some performance, relative to cramming
- everything onto a single chip. All the techniques for modules, objects, etc,
- tend to slow things down. Again, software types tear their hair out and vow
- to recode everything into one assembly language procedure. Worse, other
- software types admire them for doing so! Come to think of it, the advent of
- VLSI tools promotes the same idea for hardware, and we're seeing lots of
- specialized chips these days...
-
- >>3. Languages such as Ada and Modula-2, and imperative languages in
- >> general are unsuitable for writing reusable software because of
- >> their concentration on the HOW rather than the WHAT.
- >
- >Clearly, we need more concentration on WHAT, but we should not abandon the
- ^^^^^^^^^^^^^^^^^^^^^^^^^
- >efficiency of HOW.
- ^^^^^^^^^^
-
- QED!
-
- 3. In general, hardware types have standards for every imaginable sort of
- interface, and they stick to them remarkably well. You can plug boards into a
- standard bus with only a small chance of sparks flying everywhere as the
- boards fry. In software, standards are strictly for lip service to managers;
- only a novice would consider combining programs from several different sources
- without planning a few hours or days of debugging!
-
- In short, I believe there are no technical problems or issues with reuse; it's
- the software culture that has to change. At present, the prevailing attitude
- is that the densely-coded, highly-optimized, do-everything program is a sort
- of ideal to which everyone aspires. Until this attitude changes, software
- reusability will continue to be a bad joke among those who actually write
- programs.
-
- >>5. Nobody can force programmers to write good reusable code.
- >
- >True. But no one need buy code that is not both good and reusable. I believe
- >there is a market for such code.
-
- Manufacturers seem to think their interest is in maintaining secrecy of code.
- Customers only care about speed and features. Read Infoworld and see if they
- ever say anything positive about a program that is slower but more modular.
-
- > Lawrence Crowl 716-275-5766 University of Rochester
-
- stan shebs
- shebs@cs.utah.edu
-
- .pa
- ----------------------------------------------------------------------------
- Date: 23 Jun 87 17:28:26 GMT
- From: shebs@cs.utah.edu (Stanley Shebs)
- Organization: PASS Research Group
- Subject: Re: Software Reuse -- do we really know what it is ?
-
- In article <378@sol.ARPA> crowl@rochester.UUCP (Lawrence Crowl) writes:
-
- >>>Clearly, we need more concentration on WHAT, but we should not abandon the
- >] ^^^^^^^^^^^^^^^^^^^^^^^^^
- >>>efficiency of HOW.
- >] ^^^^^^^^^^
- >]
- >]QED!
- >
- >Let me clarify my position. I can specify a sort as a set of predicates and
- >let the system figure out how to satisfy those predicates. This is the WHAT
- >approach used in languages such as Prolog. Another approach is to write a
- >algorithm for sorting, e.g. quicksort. This is the HOW approach used in
- >languages such as Ada. Yes, the packaging of the sort will result in some
- >loss of efficiency. However, it will be substantially faster than the WHAT
- >approach. I am advocating an approach in which a package interface describes
- >WHAT and the implementation of the package describes HOW.
- >
- >Because I wish to keep the macro-efficiency of algorithmic languages, do not
- >accuse me of wishing to keep the micro-efficiency of hand-tuned assembler.
-
- I wasn't accusing anybody of anything, just pointing out that like any other
- culture, the software culture is very pervasive and people in it (us) don't
- always recognize when we're behaving according to those cultural norms. For
- instance, if I were to post some inefficient sort to the net, there are maybe
- ten computer people in the world who could look at it and not get at least a
- twinge of "Gee, why not use a better algorithm?" As I said, it's part of the
- culture. Not completely bad, but frequently dominates our thinking.
-
- Your typical serious C hacker will get unhappy about the overhead of a
- function call, let alone the extra functions involved in "packaging"! After
- several years of extensive Lisp hacking, I've managed to overcome resistance
- to defining lots of little data abstraction functions, and only feel guilty
- once in a while :-). An additional obstacle to using the "packaging" is that
- in the past, some systems (such as Simula and Smalltalk) were orders-of-
- magnitude slower than procedural languages, and there is perhaps a lingering
- perception that data abstraction costs a lot in performance.
-
- Requiring both WHAT and HOW is a pretty controversial thing to do. The
- biggest problem to me is the potential for inconsistency, since many things
- will be stated twice, but in different terms. That's the rationale for making
- the computer figure out the HOW itself, but that is an elusive and perhaps
- unreachable goal. (Doesn't stop me from trying though!)
-
- >Programmers [do] this sort of program combination many times a day in the Unix
- >shell. There ARE approaches to software reuse that CAN work. We need to
- >provide this kind of capability within a language.
-
- Unix is a counterexample, that's why I didn't mention it :-). A closer look
- is worthwhile. Unix tools offer basically one interface - a stream of bytes.
- More complicated interfaces, such as words, nroff commands, or source code,
- are less well supported; it's unusual to be able to pass C source through many
- filters in the way that data files can be passed. Also, at least in the
- groups of Unix users I've observed, pipes and filtering sequences longer than
- about 3 stages are relatively uncommon, and are about as difficult for many
- people to compose as a C program. Of course, my sample is not scientific, and
- I'm sure there are lots of Unix hacks that will be glad to tell me all about
- their 15-stage pipe processes!
-
- What other *working* approaches are there?
-
- >There are technical problems. For instance, how do you insure that the
- >parameters to a generic package are appropriate.
-
- Use something higher-level than Ada? This seems like an issue only for some
- languages, not a major obstacle to reuse.
-
- >Performance will always be a goal. However, it must be balanced against cost.
- >Most programming done today is in a high-level language. In the early sixties,
- >most programming was done in assembler. So, the software attitude has changed.
-
- This is how us language people justify our salaries. On the other hand, I've
- been wondering if the change was caused by other factors not directly related
- to level of language, such as sites getting a wider variety of hardware (thus
- making non-portable assembly language impractical). C is very popular for new
- applications nowadays, but many consider C to be a "portable assembly
- language".
-
- >Modular code also allows changes in representation that can lead to orders of
- >magnitude performance improvements. Non-modular code strongly inhibits such
- >representational changes. In short, the micro-efficiency of non-modular code
- >leads to the macro-INefficiency of poor algorithms and representations.
-
- I agree 100% (especially since my thesis relates to this!) BUT, flaming about
- the wonders of data abstraction is not going to change anybody's programming
- practices. Demonstrations are much more convincing, although a DoD project to
- demonstrate reusability is probably much less influential than Jon Bentley's
- CACM column. Many recent C books have been introducing substantial libraries
- for reuse, although the books' stated policies on copying are not consistent.
- More of this sort of thing would be great.
-
- >Again, let me clarify. I meant that the reusable software would be written by
- >software houses and sold to companies which write applications. For instance,
- >Reusable Software Inc. sells a sort package to Farm Software Inc. which uses
- >it in its combine scheduling program. Farm Software Inc. need not divulge its
- >algorithms or its use of packages written by Reusable Software Inc.
-
- I hadn't thought about that. Here's my reaction as a Farm Software Inc.
- programmer - "How do I know if their stuff is good enough!? ... But the
- interface isn't right! ... How can we fix the bugs without sources!" Reuse
- can't happen until the seller *guarantees* critical characteristics - they
- have to be able to say that their sort package will sort M data values in N
- seconds, and that the software will have bugs fixed within a certain number of
- days of being discovered, and so forth. This is old hat for other kinds of
- engineers, but software companies these days will only promise that there is
- data on the disk somewhere :-(. (I'm sure there are places that will certify
- performance - anybody got good examples?)
-
- >[...] Modular code will cost substantially less in the long run.
-
- I sort of believe that too, but it's hard to substantiate. Anecdotes are easy
- to come by, but this is a field where cost depends primarily on programming
- skill, and we don't have a precise measure of that skill. The other cost win
- is when a module can be used in some other program, but the extra cost of
- making code reusable can only be justified if your company has another program
- to use it in!
-
- BTW, at Boeing I proposed an engineer-maintained library of aerospace-related
- subroutines, so people didn't have to continually reinvent spherical geometry
- formulas, Zakatov equations, and the like. But management rejected the idea,
- because it would be "too difficult to coordinate" (it was supposed to cut
- across individual projects). No mention of costs...
-
- People interested in promoting software reuse should look at how expert
- systems developed as a field. Although the first ones appeared in the mid-
- 70s, it wasn't until 1980 when the expert system R1 that configured Vaxen for
- DEC was published. DEC claimed to have saved millions of dollars in the first
- year of using it. From then on, the expert system business grew
- exponentially, although it's not clear whether anybody else has ever profited
- from an expert system so dramatically...
-
- > Lawrence Crowl 716-275-5766 University of Rochester
-
- stan shebs
- shebs@cs.utah.edu
-
- ----------------------------------------------------------------------------
- Date: 25 Jun 87 17:32:39 GMT
- From: dday@mimsy.umd.edu (Dennis Doubleday)
- Organization: U of Maryland, Dept. of Computer Science, Coll. Pk., MD 20742
- Subject: Software Reuse
-
- In article <4658@utah-cs.UUCP> shebs@utah-cs.UUCP (Stanley Shebs) writes:
-
- >An interesting analogy. It says a lot about prevailing software culture:
- >
- >1. Available chips do not always meet requirements exactly. For instance,
- >a board might need 3 NAND gates, but the 7400 has 4. EEs just ignore the
- >extra gate, or tie its pins to something stable. In a similar situation,
- >software people fume and gnash their teeth over "wasted space".
- >
-
- I've seen this standardized circuits analogy to software packages a number of
- times, and I don't really buy it. Software people are attempting to deal with
- a much larger and less well-defined problem domain than hardware people.
- Otherwise, we wouldn't even need software. We could just design hardware to
- handle every application.
-
- >2. Running wires around boards loses some performance, relative to cramming
- >everything onto a single chip. All the techniques for modules, objects, etc,
- >tend to slow things down. Again, software types tear their hair out and
- >vow to recode everything into one assembly language procedure.
-
- Performance is an important issue in many time-critical applications. I don't
- know anybody who wants to code everything in assembler. I do know people who
- are WILLING to code in assembler if it's the only way timing constraints can
- be met.
-
- >In short, I believe there are no technical problems or issues with reuse;
- >it's the software culture that has to change. At present, the prevailing
- >attitude is that the densely-coded, highly-optimized, do-everything program
- >is a sort of ideal to which everyone aspires.
-
- I don't think you're up to date on what's happening, at least in the Ada
- community. I just completed a 13.5K source line Ada program, of which 7.5K
- source lines were contributed by reusable utility packages that I got from the
- Ada repository (abstract string, stack, list, counted ordered set, and binary
- tree data types as well as packages for command line interface, lexical
- analysis of Ada, and parsing).
-
-
- UUCP: seismo!mimsy!dday Dennis Doubleday
- CSNet: dday@mimsy University of Maryland
- ARPA: dday@brillig.umd.edu College Park, MD 20742
- Fan of: Chicago Cubs, Chicago Bears, OU Sooners (301) 454-6154
-
- ---------------------------------------------------------------------------
- Date: 2 Jul 87 07:55:43 GMT
- From: mcvax!prlb2!crcge1!adams@seismo.css.gov (Drew Adams)
- Organization: Laboratoires de Marcoussis (CGE) - France
- Subject: Re: Software Reuse -- do we really know what it is ?
-
- Let me play provocateur and recommend a little known paper introducing another
- point of view regarding software reusability and modularity:
-
- Hughes, John, "Why Functional Programming Matters", Report 16, Programming
- Methodology Group, University of Goteborg and Chalmers
- University of Technology, Goteborg, Sweden, 1984,
- ISSN 0282-2083
-
- Here's the abstract:
-
- "As software becomes more and more complex, it is more and more important
- to structure it well. Well-structured software is easy to write, easy to
- debug, and provides a collection of modules that can be re-used to reduce
- future programming costs. Conventional languages place conceptual limits on
- the way problems can be modularised. [Purely f]unctional languages push those
- limits back. In this paper we show that two features of functional languages
- in particular, higher-order functions and lazy evaluation, can contribute
- greatly to modularity. As examples, we manipulate lists and trees, program
- several numerical algorithms, and implement the alpha-beta heuristic (an
- algorithm from Artificial Intelligence used in game-playing programs). Since
- modularity is the key to successful programming, functional programming is
- vitally important to the real world."
-
- Hughes argues that the usual "advantages" of declarative languages over
- imperative ones (no assignment, no side effects, no flow of control) are
- negative expressions of some of the problems with imperative languages, but
- that they leave unexplained 1) why these problems are problems and, more
- importantly, 2) what are the real POSITIVE advantages of declarative
- programming. To quote from the introduction:
-
- If omitting assignment statements brought such enormous benefits then
- FORTRAN programmers would have been doing it for twenty years. It is a
- logical impossibility to make a language more powerful by omitting features,
- no matter how bad they may be.
-
- Even a functional programmer should be dissatisfied with these so-called
- advantages, because they give him no help in exploiting the power of
- functional languages. One cannot write a program which is particularly
- lacking in assignment statements, or particularly referentially transparent.
- There is no yardstick of program quality here, and therefore no ideal to aim
- at.
-
- Clearly this characterisation of functional programming is inadequate.
- We must find something to put in its place - something which not only explains
- the power of functional programming, but also gives a clear indication of what
- the functional programmer should strive towards.
-
- Hughes finds that the importance of functional languages is that they allow
- program modularisation in ways which imperative languages cannot. To quote
- again:
-
- "... recent languages such as Modula-II [Wirth 82] and Ada [DOD 80]
- include features specifically designed to help improve modularity. However,
- there is a very important point that is often missed. When writing a modular
- program to solve a problem, one first divides the program into sub-problems,
- then solves the sub-problems and combines the solutions. The ways in which
- one can divide up the original problem depend directly on the ways in which
- one can glue solutions together. Therefore, to increase one's ability to
- modularise a problem conceptually, one must provide new kinds of glue in the
- programming language.
-
- "... functional languages provide two new, very important kinds of glue
- [(higher order functions and lazy interpretation)].... This is the key to
- functional programming's power - it allows greatly improved modularisation.
- It is also the goal for which functional programmers must strive - smaller and
- simpler and more general modules, glued together with the new glues...."
-
- If you only read one article about (purely) declarative languages, let it be
- this one. You won't be disappointed.--
-
- Drew ADAMS, Laboratoires de Marcoussis, Centre de Recherche de la Compagnie
- Generale d'Electricite, Route de Nozay, 91460 MARCOUSSIS, FRANCE
- Tel. 64.49.11.54, adams@crcge1.cge.fr
-
- .pa
- ----------------------------------------------------------------------------
- Date: 1 Jul 87 08:30:40 GMT
- From: mcvax!ukc!dcl-cs!craig@seismo.css.gov (Craig Wylie)
- Organization: Department of Computing at Lancaster University, UK.
- Subject: Software reuse -- how do we reuse
-
- The recent discussion on software reuse has highlighted several points that I
- would like to take further. The question of what it is has been quite well
- covered - basically it is what ever you want it to be regarding the reuse of
- any part of the the software design process.
-
- I would like now to concentrate on one small area of reuse, reuse of Software
- Components, and more particularly the recovery of a component from some form
- of catalogue. Many of the replies, both to me personally, and to the net have
- cited 'Libraries', 'Browsers', and 'Intelligent Systems' as methods of
- retrieving software. I think that the analogy to lending libraries and online
- bibliographic retrieval is not a poor one but that it does require
- considerably more thought.
-
- Consider an example, in my research into distribution and software
- engineering I can go to a terminal, call up a bibliographic data base, and
- search on terms such as 'Reuse', 'Software Engineering', 'Distribution',
- 'Concurrency' etc.. The fact that these terms are very high level makes the
- retrieval process much easier, authors may well have included these terms in
- their keywords or abstracts. The provision of a synonyms dictionary will
- enhance the system.
-
- How can we provide similar power for components ? Obviously the keywords of a
- text can be mimiced by the provision of keywords from the authors of the
- software component (or the authors of the design work or any other object that
- might be reused), however there is no point in retrieving on whether the
- program contains a FOR loop. The automatic generation of keywords might also
- help, if not definitive it might certainly act as an aid. Yet how can we do
- this from languages such as Ada, it is far from proven that it is possible.
-
- One of the great powers of bibliographic retrieval is the fact that any paper
- retrieved will have a list of references, so if the paper found isn't exactly
- applicable then perhaps one of the referenced papers will be. How might this
- be mimiced?
-
- If we are to continue to use the library analogy then we must derive a way for
- talking about programs that is accessible to all. Remember even Math is not
- perfect - there can be more than one mathematical description of the same
- piece of software.
-
- Fuzzy logic and browsers have their place, but rather than citing them as
- answers we should be looking on them more as techniques once we know what we
- are dealing with.
-
- Sorry about the rather bitty nature of this article -- it has been a flow of
- thought article, the views are entirely my own.
-
- Craig
- UUCP: ...!seismo!mcvax!ukc!dcl-cs!craig| Post: University of Lancaster,
- DARPA: craig%lancs.comp@ucl-cs | Department of Computing,
- JANET: craig@uk.ac.lancs.comp | Bailrigg, Lancaster, UK.
- Phone: +44 524 65201 Ext. 4476 | LA1 4YR
-
-
-
-
- ==============================================================================
- Ada is a registered trademark, U.S. Government - Ada Joint Program Office. The
- following are trademarks of Digital Equipment Corporation: DEC, DECSYSTEM-20,
- ULTRIX, VAX, VMS. UNIX is a trademark of AT&T Bell Laboratories. The
- following are trademarks of Data General Corporation: AOS, ROLM. Verdix is a
- trademark of Verdix Corporation. TeleGen2 and TeleSoft are trademarks of
- TeleSoft.
-
- The Ada Software Repository Newsletter is Copyright 1986, 1987 Echelon, Inc.
- All Rights Reserved. Permission to reprint, wholly or partially, is
- automatically granted if source credit is given to Echelon.
-
- Echelon, Inc.
- 885 N. San Antonio Road
- Los Altos, CA 94022 USA
- Telephone: 415/948-3820
-
-