We describe a collection of research efforts aimed at increasing software productivity and quality. Some projects seek to understand and improve the process of efficiently creating, controlling, and assembling the products of software development (i.e., software and documentation). In these areas, the problems relate to the complexity of managing communications among a software product's elements (including people) and of managing many versions of the product, each at a different stage of its life cycle. To address these goals, several research projects provide more supportive languages and programming environments for building pieces of a product, or make available more powerful software development environments for integrating these units into a system or product. Other approaches, aimed at tools and concepts that change prevailing software life cycles, include automating the creation of software. Results of research in this direction suggest potential for dramatic improvements in productivity and quality.
We have developed an interactive C programming environment (cens) with integrated facilities to create, edit, browse, execute, and debug C programs. At the heart of cens is a C source-code interpreter, cin, that implements correct and complete C semantics; enables rapid prototyping; performs extensive error checks; facilitates incremental update; manages multiple software views; and provides a programmable command language. In this article, we discuss how a medium-sized software project, the switched access remote test system (SARTS), has benefited from using cin for debugging, software manufacturing, and rapid prototyping. Using SARTS as a case study, we also describe how the interactive environment catches errors and allows corrections “on the fly ”, there by shortening the debug cycle by a factor of 500 percent.
Berzelius failed to make use of Faraday's electrochemical laws in his laborious determination of equivalent weights.