Our society has become increasingly reliant on software in the past decade; businesses have learned that measuring the effectiveness of software projects can impact the bottom line; and quality is no longer an advantage in the software marketplace (it is a necessity). For these reasons, the demand for quality in software engineering has taken center stage in the twenty-first century. In this new edition, Stephen Kan presents a thoroughly updated overview and implementation guide for software engineers faced with the challenge of ensuring quality. The book balances theory, techniques, and real-life examples to provide practical guidelines in the practice of quality. Although there are equations and formulas presented, the book's focus remains on helping the reader understand and apply the metrics and models. With this book as a map, readers can navigate through the complex field of quality, and benefit their organization by improving their processes and products.
Click below for Sample Chapter(s) related to this title:
Sample Chapter 4
Foreword to the Second Edition.
Foreword to the First Edition
1. What Is Software Quality?
Quality: Popular Views.
Quality: Professional Views.
The Role of the Customer.
Total Quality Management.
The Waterfall Development Model.
The Prototyping Approach.
The Spiral Model.
The Iterative Development Process Model.
The Object-Oriented Development Process.
The Cleanroom Methodology.
The Defect Prevention Process.
Process Maturity Framework and Quality Standards.
The SEI Process Capability Maturity Model.
The SPR Assessment.
The Malcolm Baldrige Assessment.
Definition, Operational Definition, and Measurement.
Level of Measurement.
Some Basic Measures.
Reliability and Validity.
Correction for Attenuation.
Be Careful with Correlation.
Criteria for Causality.
Product Quality Metrics.
The Defect Density Metric.
Customer Problems Metric.
Customer Satisfaction Metrics.
In-Process Quality Metrics.
Defect Density During Machine Testing.
Defect Arrival Pattern During Machine Testing.
Phase-Based Defect Removal Pattern.
Defect Removal Effectiveness.
Metrics for Software Maintenance.
Fix Backlog and Backlog Management Index.
Fix Response Time and Fix Responsiveness.
Percent Delinquent Fixes.
Examples of Metrics Programs.
Collecting Software Engineering Data.
Ishikawa's Seven Basic Tools.
A Closer Look at Defect Removal Effectiveness.
Defect Removal Effectiveness and Quality Planning.
Phase-Based Defect Removal Model.
Some Characteristics of a Special Case Two-Phase Model.
Cost Effectiveness of Phase Defect Removal.
Defect Removal Effectiveness and Process Maturity Level.
The Rayleigh Model.
Reliability and Predictive Validity.
The Exponential Model.
Reliability Growth Models.
Goel-Okumoto Imperfect Debugging Model.
Goel-Okumoto Nonhomogeneous Poisson Process Model.
Musa-Okumoto Logarithmic Poisson Execution Time Model.
The Delayed S and Inflection S Models.
Criteria for Model Evaluation.
Test Compression Factor.
Estimating the Distribution of Total Defects Over Time.
The Rayleigh Model Framework.
The Code Integration Pattern.
The PTR Submodel.
The PTR Arrival/Backlog Projection Model.
Reliability Growth Models.
Criteria for Model Evaluation.
In-Process Metrics and Reports.
Orthogonal Defect Classification.
In-Process Metrics for Software Testing.
Test Progress S Curve.
Testing Defect Arrivals Over Time.
Testing Defect Backlog Over Time.
Product Size Over Time.
CPU Utilization During Test.
System Crashes and Hangs.
Mean Time to Unplanned IPL.
Critical Problems: Show Stoppers.
In-Process Metrics and Quality Management.
Possible Metrics for Acceptance Testing to Evaluate Vendor-Developed Software.
How Do You Know Your Product Is Good Enough to Ship.
Lines of Code.
Halstead's Software Science.
An Example of Module Design Metrics in Practice.
Object-Oriented Concepts and Constructs.
Design and Complexity Metrics.
Lorenz Metrics and Rules of Thumb.
Some Metrics Examples.
The CK OO Metrics Suite.
Validation Studies and Further Examples.
Quality and Quality Management Metrics.
Lessons Learned for OO Projects.
Definition and Measurements of System Availability.
Reliability, Availability, and Defect Rate.
Collecting Customer Outage Data for Quality Improvement.
In-Process Metrics for Outage and Availability.
Customer Satisfaction Surveys.
Methods of Survey Data Collection.
Analyzing Satisfaction Data.
Specific Attributes and Overall Satisfaction.
Satisfaction with Company.
How Good Is Good Enough?
The Preparation Phase.
What Data Should I Look At?
Don't Overlook Qualitative Data
The Evaluation Phase.
The Summarization Phase.
The Overall Assessment
Recommendations and Risk Mitigation.
Audit and Assessment.
Software Process Maturity Assessment and Software Project Assessment.
Software Process Assessment Cycle.
A Proposed Software Project Assessment Method.
Facts Gathering Phase 1.
Questionnaire Customization and Finalization.
Facts Gathering Phase.
Possible Improvement Opportunities and Recommendations.
Team Discussions of Assessment Results and Recommendations.
Measuring Process Maturity.
Measuring Process Capability.
Staged versus Continuous--Debating Religion.
Measuring Levels Is Not Enough.
Establishing the Alignment Principle.
Take Time Getting Faster.
Keep It Simple—or Face Decomplexification.
Measuring the Value of Process Improvement.
Measuring Process Adoption.
Measuring Process Compliance.
Celebrate the Journey, Not Just the Destination.
Software Process Improvement Sequences.
Stage 0: Software Process Assessment and Baseline.
Stage 1: Focus on Management Technologies.
Stage 2: Focus on Software Processes and Methodologies.
Stage 3: Focus on New Tools and Approaches.
Stage 4: Focus on Infrastructure and Specialization.
Stage 5: Focus on Reusability.
Stage 6: Focus on Industry Leadership.
Process Improvement Economics.
Measuring Process Improvements at Activity Levels.
Data Quality Control.
Getting Started with a Software Metrics Program.
Software Quality Engineering Modeling.
Statistical Process Control in Software Development.
Measurement and the Future.
Looking at software engineering from a historical perspective, the 1960s and earlier could be viewed as the functional era, the 1970s the schedule era, the 1980s the cost era, and the 1990s and beyond the quality and efficiency era. In the 1960s, we learned how to exploit information technology to meet institutional needs and began to link software with the daily operations of institutions. In the 1970s, as the industry was characterized by massive schedule delays and cost overruns, the focus was on planning and control of software projects. Phase-based life-cycle models were introduced and analysis, like the mythical man-month, emerged. In the 1980s, hardware costs continued to decline, and information technology permeated every facet of our institutions and became available to individuals. As competition in the industry became keen and low-cost applications became widely implemented, the importance of productivity in software development increased significantly. Various cost models in software engineering were developed and used. In the late 1980s, the importance of quality was also recognized.
The 1990s and beyond is certainly the quality era. With state-of-the-art technology now able to provide abundant functionality, customers demand high quality. Demand for quality is further intensified by the ever-increasing dependence of society on software. Billing errors, large-scale disrupted telephone services, and even missile failures during recent wars can all be traced to the issue of software quality. In this era, quality has been brought to the center of the software development process. From the standpoint of software vendors, quality is no longer an advantage factor in the marketplace; it has become a necessary condition if a company is to compete successfully.
Starting mid 1990s, two major factors emerged that proved to have unprecedented impact on not only software engineering but also on global business environments: business reengineering for efficiency and the Internet. Software development has to be more efficient and the quality level of the delivered products has to be high to meet requirements and to be successful. This is especially the case for mission-critical applications. The adverse impact of poor quality is much more significant and at a much wider scale; the quality “dikes” that software provides were never more important. These factors will continue to affect software engineering for many years to come during this new millennium.
Measurement plays a critical role in effective and efficient software development, as well as provides the scientific basis for software engineering that makes it a true engineering discipline. This book describes the software quality engineering metrics and models: quality planning, process improvement and quality control, in-process quality management, product engineering (design and code complexity), reliability estimation and projection, and analysis of customer satisfaction data. Many measurement books take an encyclopedic approach, in which every possible software measurement is included, but this book confines its scope to the metrics and models of software quality. Areas such as cost estimation, productivity, staffing, and performance measurement, for which numerous publications exist, are not covered.
In this edition, seven new chapters have been added, covering in-process metrics for software testing, object-oriented metrics, availability metrics, in-process quality assessment, software project assessment, process improvement dos and don’ts, and measuring software process improvement. The chapter that described the AS/400 software quality management system has been eliminated. For the original chapters, updates and revisions have been made throughout, and new sections, figures, and tables were added.
Two of the new chapters are special contributions from two experts. This is a key feature of the new edition. The chapter on the dos and don’ts of software process improvement was contributed by Patrick O’Toole. Patrick brings to this book a perspective on process improvement that I share as a practitioner. That perspective is based on practical experience, is project-centric, and is aligned with the strategic business imperative of the organization. Patrick also brings humor to this otherwise serious subject, making the reading of the chapter so much enjoyable. The chapter on measuring software process improvement is a special contribution by Capers Jones. A pioneer in software metrics, productivity research, software quality control and software assessments, Capers’ work is well known nationally and internationally. His data-based and fact-based approach in software assessments and benchmarking studies is unparalleled. Based on experience and data from more than 10,000 projects, he brings to the readers a practical approach to software process improvement and the major quantitative findings related to software process improvement at the project and activity level. The chapter is a must read for software process professionals who are interested in quantitative measurements.
Another new feature added to this edition is a set of recommendations for small teams that are starting to implement a metrics program, with minimum resources available. These recommendations are shown in the form of sidebar inserts in nine of the chapters. A number of examples in the book are based on small team projects and many methods and techniques are appropriate to large projects as well as small ones. This set of recommendations is from the perspective of small organizations using a small number of metrics, with the intent to effect improvement in their software development effort.
This book is intended for use by software quality professionals; software project managers; software product managers; software development managers; software engineers; software product assurance personnel; and students in software engineering, management information systems, systems engineering, and quality engineering and management. For students, it is intended to provide a basis for a course at the upper-division undergraduate or graduate level. A number of software engineering, computer science, and quality engineering programs in the United States and overseas used the first edition of this book as a text.
Second, I attempt to provide complete coverage of the type of metrics and models in software quality engineering. In addition to general discussions about metrics and techniques, this book categorizes and covers four types of models: (1) quality management models; (2) software reliability and projection models; (3) complexity metrics and models; and (4) customer-view metrics, measurements, and models. These metrics and models cover the entire software development process from high-level design to testing and maintenance, as well as all phases of reliability. Furthermore, although this book is not on total quality management (TQM), it is a major consideration in the coverage of metrics. The philosophy of TQM is the linking of product quality with customer satisfaction in order to achieve long-term success. TQM is the reason for including two chapters on the customer-view metrics and measurements—availability metrics and customer satisfaction—in addition to the many chapters on product and process metrics. In other discussions in the book, the customer’s perspective is also included where appropriate.
Third, linking metrics and models to quality improvement strategies and improvement actions, we attempt to focus on using, not just describing, metrics. A framework for interpreting in-process metrics and assessing in-process quality status, the Effort/Outcome model, is presented. The direct link between a recommended quality strategy during development and the defect-removal model is shown. Examples of actions tying to specific metrics and analysis are given. Furthermore, to illustrate the metrics, many figures are used. This is a direct reflection of the fact that in a real-life project and quality management, a clear visual presentation often improves understanding and increases the effectiveness of the metrics.
Fourth, following up on quality and process improvement at a more general level rather than on specific metric discussions, the continues with chapters that discuss the in-process quality assessment process, a method for conducting software project assessments, practical advice on process improvement dos and don’ts, and quantitative analysis of software process improvement. The common thread underlying these chapters, and with other chapters on metrics and models, is practical experience with industry projects.
The following list details what each chapter in this book addresses.
The chapters of this book are organized for reading from beginning to end. Concepts and discussions in earlier chapters are referenced in later chapters. At the same time, each chapter addresses a separate topic and chapters within some groups are more closely coupled to each other than to others. Some readers may choose to read specific topics or decide on different starting points. For example, those who are not interested in quality definitions, process models, and measurement fundamentals discussions, can start with Chapter 4, Software Quality Metrics Overview. Those who intend to immediately get to the central topics of defect removals and metrics and models for quality planning, management and projection, can start with Chapter 6, Defect Removal Effectiveness. In general, I recommend that you read the chapters together in groups, as follows.
Click below to download the Index file related to this title: