Click for next page ( 20

The National Academies | 500 Fifth St. N.W. | Washington, D.C. 20001
Copyright © National Academy of Sciences. All rights reserved.
Terms of Use and Privacy Statement

Below are the first 10 and last 10 pages of uncorrected machine-read text (when available) of this chapter, followed by the top 30 algorithmically extracted key phrases from the chapter as a whole.
Intended to provide our own search engines and external engines with highly rich, chapter-representative searchable text on the opening pages of each chapter. Because it is UNCORRECTED material, please consider the following text as a useful but insufficient proxy for the authoritative book pages.

Do not use for reproduction, copying, pasting, or reading; exclusively for search engines.

OCR for page 19
4 Research Modes ~ complement existing directions in software engineering research and to better address the problem of developing software for large systems, CSTB workshop partic- ipants identified a need for cross-fertilization between academic software engineering researchers and practitioners as well as between software engineers and specialists in the behavioral and managerial sciences. CSTB workshop participants also urged universities to encourage additional topics and styles of software engineering research and to seek commensurate funding. SHORT-TERM ACTION: FOSTER PRACTITIONER AND RESEARCHER INTERACTIONS There is little academic investigation of the practices, techniques, or problems out in the field today. To rectify this situation, greater interaction among researchers and practitioners is needed as a first step. Such interaction has proved a boon in, for example, manufacturing engineering. Industry and university collaboration in that field has provided researchers and students access to real-world problems and constraints, while providing practitioners with access to creative problem-solving talent and new techniques. The interaction of academia, industry, and government in software engineering has been inhibited by culture and tradition (Besemer et al., 1986~. Although much is known about how complex software systems are built, there are few connections among the various repositories of practical knowledge. Much of the expertise in complex software systems resides in corporations, government research centers, and other nonacademic institutions. It is largely inaccessible to the academic community because of considerations of product delivery, proprietary knowledge, and cultural differences between the corporate and academic communities involved in software research. That academic computer scientists do not often study large software systems and the process of developing them is one reason that practitioners often feel that the issues studied by academia do not adequately address the problems and challenges faced by builders of large systems-despite an apparently large body of systems analysis, systems design, and other university courses that do address systems issues. This is particularly so, for example, for complex systems involving software embedded in other products or 19

OCR for page 19
20 systems (ranging from spacecraft to medical technology) and those systems that involve distributed processes in multiple nonhomogeneous computing and storage elements. There are a number of reasons that information generated in our universities flows only slowb into the commercial sector: Academics do not study large systems because they do not have them or have access to them, and commercial and academic software specialists tend to read and have their work published in different journals. On the other hand, many topflight corporate researchers and developers, to the extent that they publish at all, do not publish in archival computer science journals because their topics-problems of practice-are not deemed scholarly. The disparity in perspective and exposure existing between the academic software engineering research community and the practitioners of the corporate world hinders U.S. progress in developing complex software systems. Reducing that disparity is imperative, and it will require a greater degree of interaction between the two groups. Special meetings like the CSTB workshop are but a beginning to this process; implementing an initiative to preserve and study major artifacts, as discussed above, and legitimizing academic exploration of large software systems, discussed below, are other vehicles for interaction. LONG-TERM ACTIONS Legitimize Academic E - loration of Large Software Systems Academic investigation of research topics based on problems encountered in the "real world" by software developers could help industrial and other practitioners in both the short and long terms. For this to happen, new attitudes and incentives must be adopted. As currently structured, most academic departments are not conducive to large- system research. The tendency of universities to encourage and reward narrow spe- cializations compounds the problem of a lack of opportunity or funding for access to large, complex systems by academic software researchers. Another side of this prob- lem is the focus of the academic world on individual actions, whereas the corporate world is more team oriented. The realities of academic life-funding, tenure tracks, and other career concerns militate against an individual academic researcher making a strong commitment to large Vim r~.~P~rrh unthn,~t rnnciA^ratir~n Fr^~ the ~..~..~;~ environment. __~_ __ ^ , ~. ,, _~1V&t lIVI11 L11 ~OUllQUllU1118 Furthers whereas industry tends to focus on a problem as it appears in production, researchers (whether corporate or academic) need to find the underlying conceptual problems that are amenable to the development of knowledge that transcends a partic- ular system manifesting a problem. Identification of good research problems based on production problems is a nontrivial problem that itself requires focused efforts. And to pursue that research requires analytical advances, as discussed above, inasmuch as abstract formal models are lacking, language design issues are in eclipse. and testing an`1 measurement have not been formalized. ~. . . --Of or-- v~^,8~ Funding Is a major consideration. Funding of some considerable magnitude is needed if large systems are to be built-which is necessary to determine feasibility and studied in academic settings, because the artifacts being studied are large. Also, while some universities have state-of-the-art hardware resources (although many do not), universities seldom invest in software tools and tend to lag behind industry in that area. This is a problem because there must be a fit between hardware and software across academic and industrial environments if large artifacts are to be experimented with other than as text (code). Thus it is difficult to study large systems cost effectively. Solving this

OCR for page 19
21 problem requires innovations in funding, the details of which were beyond the scope of the workshop but which would clearly involve actions by government research funders, universities, and companies (including product development as well as research entities). Another direction for improvement and relief may come from enhanced networking, such as through the proposed national research network, which would allow dispersed researchers to share access to artifacts, other researchers, and practitioners (CSTB, 1988~. If software systems are to be studied in corporate settings, a number of other difficulties will need to be overcome on the industry side. Resolving these difficulties Drill take much thought and concerted action; the CSTB workshop identified key directions for change. The insights and enhancements that software engineering managers and practitioners seek will come at a price: Industry must be willing to provide support- finan~ial and human resources, and computer resources for experimentation as well as access to the records of the proprietary system. Mechanisms would be needed to compensate industry for its efforts to produce data in a form useful to researchers or for bearing the risk of experimenting with novel development activities. Perhaps the biggest concern is protecting the proprietary interests of corporations, for whom large systems are often a source of competitive advantage. Although the academic culture is devoted to openness and information exchange, universities are actively grappling with the problems of protecting corporate proprietary information that are presented by increasing corporate interest in research on practical problems. Business schools appear to have solved this problem some time ago. It should be possible to extend such efforts to apply to academic research into corporate software systems. Finally, one way to get around some of the difficulties of studying large systems in corporate settings would be to facilitate the study of large systems in government settings. The federal government has been the impetus for the development of large- scale integrated systems, interaction with academic researchers is a long-time tradition for many government organizations, and government entities are more obligated to respond to government programs or mandates. However, inasmuch as federal systems are developed and/or managed by private organizations, limitations on access to design and development processes and personnel may have to be overcome, as in purely corporate settings. Also, some peculiarities of federal systems development are not generalizable to commercial systems. For example, the federal procurement process is associated with specifications that are much more detailed than those typically generated by commercial buyers. Study of federal systems may therefore be an option that is second best. Glean Insights from Behavioral and Managerial Sciences There is a need to better understand how groups of people collaborate in large projects involving a variety of participants sharing a rich but uneven distribution of knowledge and imagination among them. Software engineering research would be en- hanced by greater interaction with behavioral, managerial, and other scientists that could lead to increasingly effective contributions to software engineering practice, in part by accelerating the transfer of technology into and through the software engineering com- munity. The field has benefited in the past from technology transfer; for example, configuration management practices and change-control techniques developed in the aircraft industry were adopted in the l950s and 1960s. There may be particular value in augmenting the insights of computer science and electrical engineering with the insights of behavioral and managerial sciences. Since large software systems will continue to be produced by teams for the foreseeable future, insights gained in other team contexts may be useful for software engineering. 1b get those insights it may be necessary for software engineers to actually team up with

OCR for page 19
22 specialists from other disciplines; the benefits of such cross-disciplinary teams have been demonstrated, for example, in the area of ergonomics, where cognitive and management science specialists have been brought in to determine how best to complement human skills with automation. Even within computer science, some areas other than software engineering have aging software platforms that need to be reimplemented to make them less brittle and more easily changed or to improve the user interface to take advantage of workstation technology advances. In such areas software engineers could collaborate with other types of computer scientists and engineers in new developments that both produce new tools and serge as the objects of study. The CSTB workshop pointed to a need for software engineers to glean insight from people with complementary expertise but did not develop the concept. ~ Develop Additional Directions and Paradigms for Software Engineering Research Software engineering research today follows a variety of patterns, including the following: building systems with certain properties to show their feasibility; measuring properties of one or several systems; improving the performance of systems along particular dimensions; developing abstract formal models for certain domains; showing how to describe phenomena by designing languages; and malting incremental improvements on prior work All of these activities are relevant to complex software systems. But given the nature of those systems and the problems we face today, some new approaches to research may also be productive. Computer Science and Technology Board workshop participants recommended that the academic research community expand its notion of good research to accept review or synthesis studies, case studies, comparative analyses, and development of unifying models for individual or multiple domains. In particular, review or synthesis studies, which are common in a number of other fields, would support a greater and ongoing codification of software engineering knowledge and help to minimize the reinvention of techniques and processes. Finally, if effective handbooks are to be developed, as recommended above, research that supports such handbooks must be encouraged and rewarded.