Almost every reader will be tempted to add to this definition. It says little about the technical aspects of software quality; it dose not directly address the need for customer satisfaction or timely product delivery; it omits mention of the importance of measurement and metrics; it dose not state the importance of an effective process. And yet, Bauer’s definition provides us with a baseline. What are the “sound engineering principles” that can be applied to computer software development? How do we “economically” build software so that it is “reliable”? What is required to create computer programs that work “efficiently” on not one but many different “real machines”? These are questions that continue to challenge software engineers. And yet, what is “systematic, disciplined” and “quantifiable” to one software team may be burdensome to another, we need discipline, but we also need adaptability and agility.
Software engineering is a layered technology. Any engineering approach (including software engineering) must rest on an organizational commitment to quality. Total Quality Management, six sigma, and similar philosophies foster a continuous process improvement culture, and it is this culture that supports software engineering is a quality focus.
|