Horst P. Richter Ph.D.
To deliver a quality software system, this resource book guides practitioners and professionals in a practical and realistic approach to build quality into software from the very beginning of a project. It treats the essential quality concepts and techniques, the core capabilities, that companies and organizations need to build, maintain and use quality software systems. The content addresses management, software engineering and quality assurance for the development and use of software in industry, business, government and science. All professionals who deal with software will benefit from this book: Practitioners, software engineers, systems analysts, managers, administrators, quality assurance specialists, auditors and students at all levels. Several technical reviewers found that the content of this book conveys outstanding expert knowledge useful for training or educational courses.
To build quality software, this book treats the following processes and shows how they work together:
Generating quality concepts and techniques, and applying them effectively - A new quality metric is defined and used to build and control quality from the beginning of a software project to final accreditation or certification. It enables practitioners to implement and trace safety and security requirements in a system environment in which the software must function reliably.
Managing the software development and use phases - A series of tables and figures guides managers and practitioners to accomplish the quality assurance tasks and control the project. Sets of questions assess costs and risks, and evaluate and audit software status.
Organizing resources and contributing departments
An intense, interactive human effort is usually required to apply and integrate the three processes and build quality software. To enable this essential effort and to guide the driving and restraining field forces constructively, we explain:
How individuals and teams solve problems
We apply problem solving to accomplish that the processes work effectively and work together successfully. Examples from various software projects illustrate how effective processes build quality into software systems.
H. P. Richter has more than 30 years of experience in developing, supporting, auditing and accrediting (certifying) software systems for safety-related applications as software quality assurance manager. He published many articles and papers in project management, problem solving, software engineering, quality assurance and applied mathematics. He conducted panel discussions on software quality assurance at international conferences. He participated in developing IEEE quality standards. The Engineering Advancement Association of Japan translated his approach to problem solving.
The development of SW is an intensely interactive human effort. Therefore, the human factors play a much larger role than is usually recognized. Just writing logical instructions in a computer language does not suffice. Building quality into SW requires to apply these human capabilities effectively:
Perceive details and how they form a whole to implement the systems approach. - Each SW program usually contains elements that form a system. They must work together to give accurate and reproducible results.
Compare the results from each element and the entire system to the acceptance criteria of the requirements.
Integrate individual and team contributions constructively.
Dynamic Problem Solving, as we define and apply it in this book, clarifies the human capabilities and interactions and shows how to use them effectively. To clarify how the treated essentials build quality into SW and to elucidate their presentation, we focus on several issues:
We consider the needs of users to obtain accurate and reproducible results from SW systems.
We present practical, realistic techniques supported by tables and figures to implement SW quality.
An overview outlines ten fundamental tasks to develop or acquire quality SW systems for a new company program. Such a program can consist of a major business system, a new airplane or power plant.
We identify the common SW development phases and relate them to those of creative problem solving.
Dynamic Problem Solving describes the operational modes of the mind for perceiving and judging, and how they influence the systems approach and affect SW quality. We examine how individuals and teams contribute to quality. We use the Deming approach to perform effective reviews. We also clarify how human and organizational field forces drive and restrain building quality into SW.
We define a clear and concise quality metric and show how it permeates and integrates all SW engineering activities. Matrices are used to trace the requirements through the life-cycle phases to control the development project and assure a quality product. They are also used to implement system security and safety requirements, when SW functions in a larger system, such as a business or manufacturing system. Examples consider the cost for implementing quality.
SW verification is explained in detail. It is applied to clarify the testing of SW.
Chapters describe the importance of SW configuration control, authorization of access, error reporting and corrective action to maintain SW quality, security and integrity.
We outline the clear and concise content of SW documents.
Sets of questions deal with SW status evaluation, audits and risk assessment.
Finally, we discuss effective SW quality assurance procedures and the accreditation (certification) of SW systems.
The summary in Chapter 1 highlights the content of each chapter. It orients and guides the reader to find specific information.
We sincerely hope that the essentials on SW quality, the core capabilities, as described herein, will help all professionals to develop, acquire, maintain and use quality SW systems effectively. If developers implement and document the essentials, they will facilitate understanding SW for those individuals or groups who did not create it or are no longer familiar with it.
The presented essentials on SW quality have evolved over many years in the SW engineering community. Although they were practiced and accepted, no one, including the author, can guarantee that they will always give the desired and expected results in a specific SW development or use. A specific case may require many detailed and complex technical and managerial efforts.