Software Technology in the 1990's: Using a New Paradigm

One possible direction for Department of Defense software initiatives is toward incremental improvement in each portion of the existing software cycle. This is a conservative, evolutionary approach with a high probability of short-term payoff. It definitely deserves a major role in the DoD's initiatives. But because it is based on the existing software paradigm , the evolutionary approach is ultimately limited by any weakness of that paradigm. Since this paradigm arose in an era of little or no computer support of the software life cycle, it is important to examine how appropriate this paradigm will be in the future. In the past, computers were more expensive than people ; now, people are more expensive. The gap will continue to widen as hardware costs plummet. Not only are people the expensive commodity, there is a shortage of those who are adequately trained. Furthermore, society's major sectors-commercial, governmental, and military are becoming increasingly reliant on software. The speed with which this software can be produced, the functional complexity it can embody, and the reliability it can attain could become major factors in these sectors. Two flaws and the maintenance problem Thus, there is a clear need to investigate a software paradigm based on automation, which augments the effectiveness of the costly and limited supply of people producing and maintaining software. Unfortunately, the existing software paradigm is not a good candidate, because of fundamental flaws that exacerbate the maintenance problem. First, there is no technology for managing the knowledge intensive activities that constitute software development processes. These processes, which convert requirements into a specification and then into an implementation , are informal, labor intensive, and largely undocumented. Information about these processes and the rationale behind each of their steps is crucial for maintenance , but unavailable. This flaw causes problems for other life-cycle phases, but is particularly acute for maintenance. The time lag and personnel changeover normally involved in maintenance preclude reliance on informal mechanisms, such as "walking down the hall," that are typically used in the other phases. Second, maintenance is performed on source code, that is, the implementation. All of the programmer's skill and knowledge have already been applied in optimizing this form (the source code). These optimizations spread information. That is, they take advantage of what is known elsewhere and substitute complex, but efficient, realizations for (simple) abstractions. Both of these effects exacerbate the maintenance problem by making the software …