Design for Trustworthy SoftwareDesign for Trustworthy SoftwareTools, Techniques, and Methodology of Developing Robust SoftwarePreface
The fastest-growing phenomenon in the world today is computer end-user expectation. The computer revolution that began with the announcement of the ENIAC on Valentine's Day 1946 in the New York Times has completely changed the world. Computer hardware has become so reliable that we cast it in silicon microchips and even embed it in other machines. We assume that if hardware survives its "infant mortality" period, it will never need to be repaired, as do other machines. (Frequently upgraded to meet demand, perhaps!) Software has likewise come a long way, but it remains the Achilles' heel of truly trustworthy computing. No hard-goods manufacturer today would deliberately ship goods with known defects into a high-tech market, yet software vendors do so routinely. They simply have no other choice given the relentless demand of computer end-user expectation, software's inherent complexity, and the general lack of the kind of strong "quality cultures" that pervade high-tech hard-goods manufacturing.
The authors bring more than 30 years of quality experience and 50 years of software development experience to bear on the problem of designing software to be inherently trustworthy. We were inspired by Craig Mundie's Trustworthy Computing Initiative at Microsoft Corporation. After reading the literature on software quality and attending numerous conferences, we were convinced that Taguchi Methods had much to offer. We were further emboldened to find that Taguchi Methods had been recommendedfor such applications by none other than Dr. Taguchi himself. They had been applied in only a half-dozen cases, and all successfully. The major premise of this book is that although software is designed like hardware, nothing in its development process is akin to the manufacturing of hardware. Therefore, any quality method employed to improve software reliability and hence trustworthiness would have to be applied as far upstream as possible. The genius of Taguchi Methods is that they can treat both controllable (inherent design) factors and uncontrollable noise (exogenous) factors at design time. By using a statistical experiment technique employing orthogonal matrices or Latin Squares, Taguchi Methods can consider all factors simultaneously. This means the end of downstream testing, bottleneck analysis, and finding and fixing one bug at a time in software products. The goal of software quality now becomes preventing bugs in implementation rather than finding and eliminating them during and after implementation. Like other quality methods, Taguchi Methods are not a "black box" that you simply insert into the software development process. Nor are they used alone. They are used in the context of other upstream customer-oriented methods, such as Analytic Hierarchy Process (AHP), Quality Function Deployment (QFD), TRIZ, Pugh Concept Selection, and Failure Modes and Effects Analysis (FMEA), all of which may be applied before a single line of code is written!
The essence of Taguchi Methods is listening to the "voice of the customer." By listening carefully, the software architect or designer can get in front of computer end-user expectation and guide it to realizable and reliable products. This is better than being dragged behind end-users in an endless cycle of product "fix and repair" without any hope of ever catching up. This book offers a framework of tools, techniques, and methodologies for developing robust software. This framework is an integrative technology based on the principles of transformational leadership, best practices of learning organizations, management infrastructure, and quality strategy and systems, all blended into the unique context of software development milieu. We call it Design for Trustworthy Software (DFTS).
This book is intended to meet the needs of software development organizations, big and small, that want to build the kind of trustworthy or highly reliable software demanded by today's increasingly sophisticated computer user. It is designed to be a resource for organization-wide learning that helps you understand, implement, improve, and maintain a trustworthy software development system. It is meant for organizations that are led by visionary leaders who understand and value such user needs and who are ready to lead their organizations to develop such robust capability. Although we have emphasized enterprise software, this book can be used by any organization in which software development is an important activity for developing proprietary software, providing internal software support, or imparting outsourcing vendor service. Organizations can use it for formal DFTS black belt, master black belt, and other certifications. Such formal certification can greatly enhance organization-wide DFTS learning and deployment. This book can also be used as a practical reference by software developers as well as quality professionals and senior management, who play a crucial role in such organizations.
This book is equally useful for students of software development technology, MIS, product design and development, operations, quality management, and technology management, at both undergraduate and graduate levels. It particularly complements Master of Science programs in engineering, MIS, IT, and computer science, as well as MBA programs that focus on operations, product development, and technology. It also is a useful resource for the American Society for Quality's (ASQ's) Certified Software Quality Engineer (CSQE) examination.
This book contains examples, sidebars, and case studies. It is supported by key points, review questions, discussion questions, projects, exercises, and problems. It is further supported by additional learning material on the Internet to provide intensive and continually updated material for learning in corporate settings or classrooms or for self-study.
The book is not a "handbook" in the classic sense. Instead, it is an exposition of the principles and practices involved in several proven quality methodologies that interact well and that are suitable for software development. They are particularly applicable at design time, before implementation begins. Smaller software and other engineering design case studies and examples are presented throughout the book to illustrate the application of the principles. Software architects will find examples that support their design concepts. Software engineers will find examples that support building in quality at the detailed design stage. Although all the DFTS techniques are applicable throughout the development process, the emphasis changes as a product goes from end-user need to concept, architecture, engineering design, implementation, testing, and finally support in the field. All five parts deal with relevant leadership and management infrastructure for successful learning and deployment of DFTS technology.How This Book Is Organized
The book is organized into five parts. Part I, containing Chapters 1 through 5, presents contemporary software development practices, with their shortcomings and the challenges of and framework for developing trustworthy software. This is supported by chapter length treatment of two critical software quality issues, namely, software quality metrics and financial perspectives on trustworthy software. Part II, containing Chapters 6 through 14, presents the tools and techniques advocated by the authors for developing trustworthy software and is the primary focus of the book. Part III, containing Chapters 15 through 19, shows you how to apply these tools and techniques upstream in the design process before program implementation even begins. Part IV, containing Chapters 20 and 21, lays the groundwork for deploying a DFTS initiative in your organization. Like all quality initiatives, DFTS must be supported from the top to succeed and must become a part of the organization's "culture." Part V, containing Chapters 22 through 27, presents six major case studies of the software quality techniques presented in Parts I and II. We have sought out world-class practitioners of these techniques, and they have generously contributed their leading examples for your consideration and study.Useful Software
You can benefit from using several software packages that facilitate learning and the deployment of quality methodologies such as AHP, Taguchi Methods, and QFD. A number of Web sites provide free limited-use/limited-time downloads. In particular, the following software is available:
This Book's Web Site
AHP: You can find a free 15-day trial version of Expert Choice at http://www.expertchoice.com/software/grouptrialreg.htm
Special prices are available for students, instructors, and corporate bulk purchases. Call 1-888-259-6400 for pricing details.
QFD: Modern Blitz QFD® templates for Microsoft Excel are included in QFD Institute training programs. Details are available at http://www.qfdi.org
Taguchi Methods: Qualitek-4 DEMO software lets you review over 50 examples and use an L8 array to design your own experiments. It can be downloaded from http://www.nutek-us.com/wp-q4w.html
You may also want to visit the following Web sites that we found useful: http://www.nutek-us.com/wp-q4w-screen.html http://www.nutek-us.com/wp-q4w-eval.html
You may try the DEMO version for experiments involving L8 arrays. The full version may be negotiated with the vendors.
This book's Web site keeps the book current between editions, providing new material, examples, and case studies for students and instructors. The Web site also provides materials for other users of this bookquality professionals and corporate leaders who play a crucial role in the DFTS process. The book's two websites are:
Instructors may contact the publisher for answers to the exercises and problems. We look forward to comments and feedback on how the material can be further enhanced and continually improved. Tell us about your experience, what you like about the book, how it has been useful, and, above all, how we can improve it. We trust that you will.
© Copyright Pearson Education. All rights reserved.