Skip to main content

Currently Skimming:

B: Position Statements
Pages 32-92

The Chapter Skim interface presents what we've algorithmically identified as the most significant single chunk of text within every page in the chapter.
Select key terms on the right to highlight them within pages of the chapter.


From page 32...
... 2. What do you see as the most critical problem that industry and the nation have with current software production, and what solutions do you suggest?
From page 33...
... Computer scientists must become more relevant and must understand the realities of the market place. The most critical problem that industry and the nation have with current software production is the number of lines of code needed to accomplish a function.
From page 34...
... A second solution would be to develop sophisticated programming environments that present to the user a higher level computational model, coupled with translators that automatically produce code for different targets. The most critical software problem faced by industry and the nation is the cost of maintenance and evolution: most studies of software costs indicate that over two-thirds of the cost of a large system is incurred after the system is delivered.
From page 35...
... Even more importantly, experience gathered in the computer aided system project setting could spawn much needed efforts in computer aiding the training and restraining process needed everywhere to keep the nation's workforce attuned to changing circumstances, and thus competitive. Perhaps the experience accumulated over decades in Computer Aided Instruction (CAI)
From page 36...
... Making four semesters of engineering science a requirement for computer scientists is a minimal solution. Apprenticeships and identifying software architectures are quite useful.
From page 37...
... · Functional scenario testing is thirty times more effective than coverage testing. We need to build systems in anticipation of change by understanding the correct granularity of components and forcing localization of change.
From page 38...
... BUTLER AND THOMAS A CORBI Program Understanding: Challenge for the 1990's There are a variety of motivatorsi which are continuing to encourage corporations to invest in software tools and training to increase software productivity, including: increased demand for software; limited supply of software engineers; rising software engineer support expectations (e.g., for CASE tools)
From page 39...
... Even when more "modern" software development techniques and technologies are widespread, new and unanticipated requirements for "ities" (e.g., usability, installability, reliability, integrity, security, recoverability, reconfigurability, serviceability, etc.) which are not yet taught in software engineering, are not yet part of the methodology being used, and are not yet "parameters" to the code generator will necessitate rediscovery and rework of our complex systems.
From page 40...
... reports2i the automatic generation of low level Jackson or Warnier/Orr documents which are totally consistent with COBOL source code. Both Sneed and CRIAI/DIS agree, however, that determining higher level design abstractions will require additional knowledge outside that which can be analyzed directly from the source code.
From page 41...
... Old architectural designs and blueprints may be of some use, but to be certain that a modification will be successful, they must discover or rediscover and assemble detailed pieces of information by going to the "site." In programming, regardless of the 'waterfall" or "iterative" process, this kind of investigation happens at various points along the way: · While requirements are being examined, lead designers or developers are typically navigating through the existing code base to get a rough idea of the size of the job, the areas of the system which will be impacted, and the knowledge and skills which will be needed by the programming team which does the work · As design proceeds from the high level to low level, each of the team members repeatedly examines the existing code base to discover how the new function can be grafted onto the existing data structures and into the general control flow and data flow of the existing system. · Wise designers may tour the existing code to get an idea of performance implications which the enhancement may have on various critical paths through the existing system.
From page 42...
... Therefore the program understanding process Is a crucial sub-element In achieving many of the project deliverables: sizings high level design low level design build plan actual code debugged code fuses etc. The programmer attempts to understand a programming systems so he can make Informed decisions about the changes he Is making.
From page 43...
... An English education curriculum does not teach "basic language skills" (programming language syntax and semantics) , "recommended sentence structures" (structural programming)
From page 44...
... Pyster, "A Software Development Environment for Improving Productivity," IEEE Computer, 17, No.
From page 45...
... Tutorial on Software Maintenance, p. ix, IEEE Computer Society Press, Silver Spring, MD, 1983.
From page 46...
... Ever improving U.S. software technology research and development and growing computer literacy are crucial to our industry and nation, if we are to continue to compete worldwide in developing new complex software systems to support future economic growth.
From page 47...
... They have been following developments in software engineering methodologies since the mid-1970's (structured programming, top-down design, inspections, quality control circles, etc.~. In the late 1970's and early 1980's, they began to institutionalize these methodologies and began building various tool sets to automate or control various software development tasks (library control, graphics for low level design, reusable parts, test coverage, etc.~.
From page 48...
... Ibe Japanese have also made impressive gains in the development of software tools and have encouraged their widespread use to boost productivity. Both the Japanese government and the leading computing manufacturers began investing in the automation of the software development process nearly seven years ago.
From page 49...
... for traditional software development · Forming national or joint venture research organizations focusing on software technologies Yet there has not been an equivalent, coordinated, national investment in technology and training with the goals to bring advanced software development technology into widespread usage in the U.S. What we are seeing now is the logical continuation of what was reported five years ago in the work done by University of South Florida t6 and the IBM-sponsored project at the University of Maryland.~7 If the published reports are true, the Japanese computer manufacturers and Japanese computer science research community appear to be continuing a steady advance on a broad set of software issues and deployment and usage of software development methodologies, tools and workstations.
From page 50...
... A much wider, coordinated, national agenda on advanced software development technology and computer science literacy is needed.
From page 51...
... Basili, "Software Engineering Practices in the U.S. and Japan," IEEE Computer, 17, No.
From page 52...
... Even a small running system may be quite complex and ultimately large when all the development, operational, and interface aspects are considered. A complex software systems is much more than just code.
From page 53...
... Programming languages have come a long way toward providing good structuring mechanisms and principles, but there are still few tools for evaluating the structural complexity of a system or presenting the structure in an intelligible graphical manner. Timing and reactivity are yielding to a few good real-time CASE products on the market, but the theory is still weak and the design methodology is obscure.
From page 54...
... trained software engineers at the level of the Wang Institute curriculum is a suitable goal for 1995.
From page 55...
... Second, current software engineers are hung up with interactive interfaces, and may have forgotten or never learned how to manage large computations. The proof of correct implementation of a top-level of a microprocessor may take 50 hours of computer time, which seems enormous, and six months of grueling work, which seems like a lifetime for a researcher.
From page 56...
... A second stage might introduce changes to a standard version requiring the players to adapt the system where the rewards were based on analytic rather than traditional approaches. Later as the program became very well understood, there might be optimization techniques applied what's the best data structure?
From page 57...
... Sensor or Communication Systems Skill Base · Industry Management Experience · Capital Investment Limited · Schedule Driven Inefficiency · Government Management Experience · Requirements (size of job) · Knowledge of off-the-shelf Products FIGURE 1 Seven software development problems in order of importance.
From page 58...
... Nowhere is this seen more clearly than in software development tools. Because the abstract representations required to describe software specifications and designs are-poorly understood today, each new tool developed is likely to have its own unique representation.
From page 59...
... The focus should, of course, be on the application, rather than the raw material to implement it. The resulting costs that result from misdirected focus, both the opportunity cost and expended time and funds, are exceedingly high.
From page 60...
... It's not so likely that managers of typing pools would have demanded that new people "look at the keys while you type, like I do." But software managers with only heuristic experience and large project responsibilities are likely to direct that "since we'll have a lot of debugging to do, I want you to start coding right away", and continue to be right with a self fulfilling prophecy, while unwittingly preventing the use of rigorous methods. As noted, there is a simple way to hasten the state of contract practice toward the state of art, that sounds more drastic at first hearing than it really is-prohibit program debugging in contract software development, and require the use of rigorous methods of mathematical program verification with group inspections in place of debugging.
From page 61...
... Program debugging is the counter productive sacred cow of this first human generation of software development. More time is spent in debugging programs today than in writing them.
From page 62...
... The major surprise in Adams' data is the relative power of finding and fixing errors in usage testing over coverage testing, a factor of 30 in reducing failure rates. An analysis of Adams' data shows that finding and fixing an error causing a failure in representative usage testing increases the mean time to the next failure 30 times as much as finding and fixing an error in coverage testing.
From page 63...
... Finally, line 5, denoted FD/M, is the contribution of each class, on the average, in reducing the failure rate by fixing the next error found by usage testing. The sums of the two lines ED/M and FD/M turn out to be proportional to the decrease in failure rate from the respective fixes of errors found by coverage testing and usage testing.
From page 64...
... Other Issues I have another pet "hobby horse" I would like to explore if the committee feels it's important. We have a tremendous effort and investment going on in trying to develop software development
From page 65...
... It appears to me all we are doing at this point is raising the cost of doing business. Today, with little or no tooling, our only "overhead" cost is learning different programming languages-a relatively modest expense.
From page 66...
... Of itself, this shows that we have made some progress since the Garmisch and Rome NATO Software Engineering Conferences (1968 and 1969) , where "the software crisis" focused on a narrower view of the problems of software production with high emphasis on mechanics and little attention to the purpose of software, which is to improve the lot of the ultimate end user.
From page 67...
... ) attack on our understanding of understanding, but rather to assume, Dot for~d to think otherwise, that the fundamental nature of nature muse be simplicity itself that the rich complexity thatis so apparentis an artifact of sheermagnitudes.
From page 68...
... A sequence of models, each related to the earlierones, builds up a rich formal language canabilirv and a very deep understanding all supported by the models.
From page 69...
... To make the method work, it is necessary that only Picture Language Models (PLMs) be formally shown.
From page 70...
... This is why the Marked Model must be seen as it is known to be a superposition (denoted in Plex by with ~ rather than a composition (denoted by "amp')
From page 71...
... readyfor your See~ndSay Seeing to similarly be PLMed. Just as the Marked Model was an opposite seeing of the Clear Model, this new Model is an opposite seeing of the Marked Model.
From page 72...
... 72 By the nonexisting, non-nature of Nothingness, non-Nothing existence, i.e. non-Nothingness, itself, Is the unique relationship which is the relation between the relation between itself and the relation between itself and the relation between itself , i.e.
From page 73...
... 73 Appendix: The meaning of any word Let = , i.e. let "point" name the meaning of any one word.
From page 74...
... Potential solutions include: 1. Reinvention of the software development process to suit the inherent nature of computer science rather than force fitting of software production to a proven hardware method; there Is probably more than one valid process.
From page 75...
... Current programming language research focuses on incremental improvements, not on major changes to the nature of software development But major breakthroughs are needed in two areas: · Non-programmers dominate modem computer use. Low computing costs have enabled a wide spectrum of application, and end users who are not programmers need to control their own computations.
From page 76...
... But they do not address the most pressing needs of the users of software. The nation, and ultimately the programming language research community, would benefit from the identification and pursuit of good research problems motivated by the practical problems of software production.
From page 77...
... They want a programming language that matches the mathematical notations they already use and makes it possible for other scientists to read, understand, and check a program. One particular complaint is that conventional programming languages force programs to be organized primarily around the order in which the calculations are performed which does not match the logical order for these calculations to be explained [3]
From page 78...
... If they are applied with the needs of these users in mind. research rem from 1lePr ink ALA programming languages can help.
From page 79...
... In addition, large software system development requires coordination among many programmers. Conventional programming languages were designed for programmers working as individuals.
From page 80...
... and the calmlina h~lw~.n nr~tir~ nr~hl~me and good research ideas is weak ~ ~&,5~ v~& ~t ~lVvl~111~ Language Concepts Can Support a Design Level Above the Algorithm/Data Structure Level. Progress in programming languages is closely coupled with the development of useful abstractions and the associated analytic techniques.
From page 81...
... Programming Language Designers Must Look Beyond Traditional Areas. Programming languages are notations for defining and controlling computations.
From page 82...
... References [1] Mary Shawl Abstraction techniques in modern programming languages.
From page 83...
... The requirements always tend to increase in complexity, and there is nothing wrong with that. These notions have direct parallels in software production.
From page 84...
... For instance, we still cannot schedule software development with any accuracy, but we learned to manage the uncertainty and we can expect much smaller absolute errors (even at the same relative error) if productivity can be improved.
From page 85...
... I would also like to make a second-order point. Let us call the solution to the nation's software problems the "next generation tools." It is safe to guess that these will be very complex software systems and that they will be developed by using more current tools, which connects to my response to Question #1.
From page 86...
... Insofar as the user interface to the editor, compiler, debugger, etc., is also a language, possibly larger than a programming language, this commonality is certainly within reach with the advent of the graphical user interfaces, and in particular of the SAA standard. The computer language is a greater problem.
From page 87...
... Software is already the limiting factor in many areas; the situation win only get worse unless by some magic programmer productivity increases dramatically. The Basic Problem The problems of software development are so well articulated in Fred Brooks' article "No Silver Bullets" and the Defense Science Board Report that preceded it, that there is little that I can add.
From page 88...
... I am not sure that the software research community itself is willing to admit how hard the problem really is, and we have lost a great deal of credibility by advocating a long series of panaceas that weren't (flowcharting, documentation, time-sharing, high-level languages, structured programming, verification, .
From page 89...
... 1b that end, we have been concentrating on improving the support infrastructure (QA, CM, software development standards, etc.) , standardizing and strengthening our engineering environment 'end process for developing software, and developing a base of reusable software components.
From page 90...
... have learned a great deal about what works and what doesn't work in software development. The acceptance of Ada and with it a renewed emphasis on good software engineering practice also needs to be factored into the software development process (e.g., more design time, different testing strategies)
From page 91...
... Brooks identified two types of software development difficulties. The first was that set of problems created in trying to improve the process.
From page 92...
... The effort requires the use of rigorous scientific practice in the development, testing and refinement of hypothesis leading to theory. The Complex Software Systems Workshop would be an excellent forum to provide a national focus on the need to develop a science to underlie software engineering.


This material may be derived from roughly machine-read images, and so is provided only to facilitate research.
More information on Chapter Skim is available.