Improve Software Quality by Reusing Knowledge and Experience
The quality movement that has had such a dramatic impact on all industrial sectors has finally reached the systems and software industry. Although some of the concepts of quality management originally developed for other products can be applied to software, as a product that is developed and not produced, it requires a special approach. In this paper, we introduce a quality paradigm specifically tailored to the systems and software industry. We discuss the reuse of knowledge, products, and experience as a feasible solution to the problem of developing higher-quality systems at a lower cost. In other words, how can an organization build models or package them so that it can reuse them in other projects?
Companies often achieve quality improvement by defining and developing an appropriate set of strategic capabilities and supporting core competencies. We propose a quality improvement paradigm (QIP) for developing core competencies. This process must be supported by a goal-oriented approach to measurement and control, and an organizational infrastructure that we call an experience factory.
In this paper, we introduce the major concepts of our proposed approach, discuss their relationship with other approaches in the industry, and present an example of an organization that successfully applied those concepts.
Why Is Software Development Different?
Software is present in almost every activity and institution of our society. Our dependence on software becomes evident when software problems — system shutdowns, new product delays, and assorted glitches — become newspaper headlines. The business community is aware of these problems but does not truly understand their causes. Such misunderstanding extends to the software business community itself, especially when it deals with the philosophies of quality improvement.
Problems often arise when companies try to transfer the quality lessons learned in the manufacturing process to the software development process. Quite often, manufacturers develop quality models by collecting great amounts of data from work locations where the same function is repeated over and over. In such a context, statistical quality control can be accomplished based on numerous repetitions of the manufacturing process. Because software is developed once, this type of control is impossible. Software development models, therefore, cannot be built the same way as manufacturing models, with their dependence on lessons learned from massive repetitions of the same process. Software models provide something less definitive — the ability to learn from other software development projects. To accomplish this learning, we have to distinguish what is different about these projects.
1. W. Edwards Deming, Out of the Crisis (Cambridge, Massachusetts: MIT Press, Center for Advanced Engineering Study, 1986).
2. A.V. Feigenbaum, Total Quality Control (New York: McGraw Hill, 1991).
3. J.P. Womack, D.T. Jones, and D. Roos, The Machine That Changed the World (New York: Rawson Associates, 1989).
4. G. Stalk, P. Evans, and L.E. Shulman, “Competing on Capabilities: The New Rules of Corporate Strategy,” Harvard Business Review, March–April 1992, pp. 57–69.
5. V.R. Basili, “Quantitative Evaluation of a Software Engineering Methodology” (Melbourne, Australia: Proceedings of the First Pan-Pacific Computer Conference, September 1985); and
V.R. Basili, “Software Development: A Paradigm for the Future” (Orlando, Florida: Proceedings of COMPSAC ’89, September 1989), pp. 471–485.
6. V.R. Basili and D.M. Weiss, “A Methodology for Collecting Valid Software Engineering Data,” IEEE Transactions on Software Engineering, November 1984, pp. 728–738; and
V.R. Basili and H.D. Rombach, “The TAME Project: Towards Improvement-Oriented Software Environments,” IEEE Transactions on Software Engineering, June 1988, pp. 758–773.
7. Basili (1989).
8. V.R. Basili, G. Caldiera, F. McGarry, R. Pajerski, J. Page, and S. Waligora, “The Software Engineering Laboratory — An Operational Software Experience Factory” (Melbourne, Australia: Proceedings of the Fourteenth International Conference on Software Engineering, May 1992).
9. ANSI/MIL-STD-1815A 1983: Reference Manual for the Ada Programming Language.
10. I. Sommerville, Software Engineering (Wokingham, England: Addison-Wesley, 1992).