Focus Area: Measurement
1.0 Description of the Practice
1.1 Summary Description
1.2 Detailed Description
1.2.1 Setting quality targets (or gates)
This section describes some methods for setting quality targets, especially reliability, and processes for tracking defects.
Methods for Setting Quality Targets Quality targets, or gates, are quantitative values that are measures of product or process quality. According to the Practical Software and Systems Measurement Guide [Mcgarry, 2002], there are several quality measures that can be useful. Some of these measures, with examples of target values, are as follows:
- - Number of defects (a measure of reliability): less than 1 defect per function point
- - Cyclomatic Complexity (McCabe's): less than 10 for all modules
- - Operator errors: Less than 5 per day
- - Time to restore: less than 1 hour
- - Timing: less than 1 second response time
- - Fault tolerance: at least 80% of failures circumvented
The methods, or apprroaches discussed here use reliability as an example; however, some methods can also be used to set quality targets for other quality indicators. Two approaches to setting quality targets are user-oriented methods and parametric estimating methods. Each category of methods will now be discussed.
1. User-Oriented Measures: One set of approaches to setting quality targets is in terms of user-oriented measures such as reliability, availability, and maintainability. Three common methods for allocating reliability are by operational profile, architectural structure, and black box methods.
Allocating Reliability by Operational Profile
The operational profile of a system is the set of operations that the software can execute along with the probability with which they occur. It shows the user demands on a system.
Table 2: Procedure To Characterize Operational Profile of a System
|
List all operations of the system.
|
|
List rates of occurrences of each operation.
|
|
Determine occurrence probabilities as quotient of occurrence rate of each operation and sum of rates over all operations.
|
System reliability, R, is the probability that the system will execute an operation correctly. System reliability is calculated as:

where pi is the probability of the ith operation being selected by the user, and Ri is the probability that the ith operation executes correctly. Each operation should be assigned a reliability such that the above sum equals the system reliability. Typically, operations that are executed more frequently are required to be more reliable.
Allocating Reliability by Architectural Structure
An architecture-based approach to reliability includes the construction of a model of a system. Typical models include:
- Sequential execution of components
- Concurrent execution of components
- Markov chain models
In a sense, Markov chains subsume the other models mentioned above. A Markov chain is a random process where all information about the future is contained in the present state (i.e. one does not need to examine the past to determine the future). To be more exact, the process has the "Markov property", meaning that future states depend only on the present state and are independent of past states. In other words, the description of the present state fully captures all the information that could influence the future evolution of the process. Being a stochastic process means that all state transitions are probabilistic (determined by random chance and thus unpredictable in detail), though likely predictable in its statistical properties. Markov chains are often used in sciences like physics and chemistry to represent unknown or unmodelled details of the system where no history is available or is not relevant. They are also used in testing to generate efficient test strategies based on expected system usage patterns.
Markov chains can also be used in reliability allocation for a system or software program. Table 3 outlines the use of a Markov chain model to predict system reliability. Sensitivity analysis shows impact of model inputs on outputs. Sensitivity analysis can be used in allocating a system reliability requirement to target reliabilities for components.
Table 3: Markov Chain Model
|
Model Inputs
|
Architecture
|
Number of components.
|
|
Component initially executed.
|
|
Component executed at termination, assuming completion without failure.
|
|
For each pair of components, probability that application will execute second component next, given that application is executing first component at current time.
|
|
Component
|
Mean time spent by application in given component per visit.
|
|
Variance of time spent by application in given component per visit.
|
|
Reliability, i.e., probability component will execute without failure for a single visit.
|
|
Model Outputs
|
Performance
|
Expected time to completion of application.
|
|
Total expected time spent in each component. (Component with largest expected time is a performance bottleneck.)
|
|
Reliability
|
Probability that the given component will not fail across all visits to that component during a single execution of the application. (Component with lowest expected reliability is a reliability bottleneck.)
|
|
Probability that application will not fail in a single application.
|
Black Box Methods
This practice calls for relating data collected during software development to quality targets, such as reliability. Table 4 summarizes some approaches that do not use information about the internal architectural structure of a subsystem.
Table 4: Black Box Approaches Relating Data To Reliability
|
Data Type
|
Examples
|
Approach
|
|
Complexity metrics
|
Source Lines Of Code; McCabe’s Metric; number of occurrences of “shall” in Statement Of Work (SOW)
|
Build historical database of metrics, quality data such as failures. Use to build models relating metrics collected early in lifecycle to quality attributes. Based on targets for attributes, mandate metric thresholds for your system. Report anomaly when components exceed thresholds. (Malaiya and Denton [Malaiya, 2000] provide an example.)
|
|
Test Coverage
|
Statement coverage; path coverage.
|
Track problems and coverage while testing. Release software after all problems have been closed and a pre-specified coverage percentage has been achieved.
|
|
Inter-failure Times
|
Time to first failure, between first failure and second failure, etc., collected while testing to specified operational profile.
|
Test to operational profile. Fit reliability models (Musa’s, Jelinski-Moranda, etc.) to data. Measure goodness-of-fit and other performance measures of models. Based on best performing models, assess whether lower confidence bound on reliability exceeds reliability target.
|
Inspired by [Gokhale, 1998]
2. Estimating Methods: Another set of approaches is to use estimating models and methodologies. Two of these are analogy estimating, and parametric modeling.
Analogy Estimating
This approach uses information or data from similar past programs. An organization can investigate what has occurred in the past, and set quality targets or goals based on what can be expected. Capers Jones, in his book "Applied Software Management: Third Edition" [Jones, 2008], presents several tables that show averages for defects. Table 5 here, an abbreviated version of one of his tables, shows U.S. averages for number of defects per function point (FP), which is a software size measure, for programs of various sizes and forms, or applications.
Table 5: U.S. Averages for Number of Defects Per FP [Jones, 2008]
|
Form of Software
|
Size
100
|
In FP
1000
|
10000
|
100000
|
Average
|
|
End-User
|
1.05
|
-
|
-
|
-
|
1.05
|
|
Web
|
0.52
|
0.60
|
1.01
|
|
0.71
|
|
MIS
|
0.32
|
0.75
|
1.14
|
2.54
|
1.19
|
|
U.S. Outsource
|
0.19
|
0.59
|
0.90
|
1.76
|
0.86
|
|
Offshore Outsource
|
0.41
|
0.81
|
1.13
|
2.22
|
1.14
|
|
Commercial
|
0.24
|
0.40
|
0.64
|
0.92
|
0.55
|
|
Systems
|
0.15
|
0.24
|
0.35
|
0.56
|
0.33
|
|
Military
|
0.22
|
0.47
|
0.62
|
0.77
|
0.52
|
|
Average
|
0.39
|
0.55
|
0.83
|
1.46
|
0.81
|
While analogy methods can be used to determine reasonability of quality goals, they should not be the sole method used. First of all, values like those in Table 5 are strictly averages, and individual projects will vary, sometimes considerably, from these averages. Good quality targets for individual programs must consider the unique aspects of the project being developed.
Parametric Models
Parametric models, which use design parameters of a project for estimating, have long been successfully used in estimating software cost and schedule, and sometimes software size. Some of the models also estimate defects based on the design parameters of the software. Some basic parametric models base defects on only one parameter or a few parameters. For example, Capers Jones proposes the following rule of thumb: [Jones, 2007]
Defects = FP 1.25
Of course, such models will only provide a ballpark estimate at best, and would not be used in accurate target setting. Some more complex software cost estimating tools, such as the Galorath SEER-SEM model and QSM Software Life Cycle Model (SLIM) use more than 20 design parameters to estimate defects. These models also estimate defects in categories, as will be explained in Section 1.2.2.2. A non-proprietary parametric estimating model is the Constructive Quality Model (COQUALMO), an extension of the popular Constructive Cost Model II (COCOMO II) software cost estimating model from the University of Southern California Center for Software Engineering (USC-CSE). Details of COQUALMO are published in the COCOMO II book [Abts, 2000] and on the COQUALMO page of the USC-CSE web site, and some of the features are summarized here.
COQUALMO is an estimation model that can be used for predicting number of residual defects/KSLOC (Thousands of Source Lines of Code) or defects/FP (Function Point) in a software product. It can be applied in the early activities such as analysis and design, as well as in the later stages for refining the estimate when more information is available. It enables "'what if" analyses that demonstrate the impact of various defect removal techniques and the effects of personnel, project, product and platform characteristics on software quality. It also provides insights into determining ship time, assessment of payoffs for quality investments and understanding of interactions amongst quality strategies. Table 6 shows the factors that COQUALMO uses to estimate defects; these parameters are also used in the COCOMO II to estimate software cost and schedule.
Suggestions for Choosing an Approach
Any of these approaches, or a combination of approaches, can be used depending on the situation. If relevant historical data is available, analogy or parametric models or methods are especially useful when they can be calibrated to the user's environment.
1.2.2 Processes For Defect Tracking
1.2.2.1 Detecting Defects
According to Capers Jones, there are at least five types of defects that can occur. These are requirements defects, design defects, code defects, documentation defects, and bad fixes, which are defects that are induced accidentally when correcting another defect [Jones, 2008]. The challenge to software engineers and managers is to detect defects in these areas as early as possible. According to El Emam, it is much less expensive to find and correct defects as early as possible when their costs are relatively low [El Emam, 2005].
Figure 3 is an example of a defect containment matrix [Campo, 2007]. Ideally, defects are detected and corrected in the phase in which they occur. If they are detected in a later phase, rework costs are incurred, and these costs will increase as the detected stage is later. For example, detecting and correcting a requirements defect will probably be a matter of changing a paragraph in a document, while detecting a requirements defect during testing will not only result in having to rewrite the requirement, but also having to redo portions of the design, rewrite code, and retest the software affected. Therefore, it is important to find (and correct) defects as early as possible.
So, how do we detect defects as early as possible? Figure 4 from El Emam [El Emam, 2005] illustrates defect detection and correction, including bad fix removal, during the various phases of the software life cycle. Probably the most common, and proven technique, shown in Figure 4, is software inspections. Inspections can be performed during any phase of the software life cycle from requirements through maintenance.
There are several proven methods for detecting defects during all phases of the software life cycle. Some of these will now be discussed:
Inspections
One of the most popular and most effective methods is use of software inspections. The ideas behind design and code inspections were introduced by Fagan in 1976 [Fagan, 1976]. Since that time, many organizations have used inspections to detect defects early in a program. According to El Emam [El Emam, 2005] and others, inspections are much cheaper than some other commonly used methods of finding defects, such as testing and customer findings.
According to Fagan [Fagan, 1986], there are six steps in the inspection process:
- Planning: This involves insuring materials to be inspected meet inspection entry criteria, arranging the availability of the right participants, and arranging a suitable meeting place and time.
- Overview: This involves a group education of participants in what is to be inspected, and assigning inspection roles to participants.
- Preparation: Here, participants learn the material, and prepare to fulfill their assigned roles.
- Inspection: The purpose is (solely) to find defects. (Solution hunting and discussion of design alternatives is discouraged.)
- Rework: Here, the author reworks all defects.
- Follow-up: This involves verification by the inspection moderator or the entire inspection team to assure that all fixes are effective and that no secondary defects have been introduced.
Jones [Jones, 2008] describes three protocols necessary for the inspection process to succeed:
- The participants receive training before they take part in their first inspection.
- There will be sufficient time available for preparation before the inspection takes place.
- The following staff must be present during an inspection: a moderator, a reader, a recorder, an inspector, and the author of the work being inspected.
Reviews and Walkthroughs
As shown in Figure 5, reviews and walkthroughs are other methods for detecting defects. Although these methods are usually not as effective as inspections for detecting defects, they are useful and can be used in addition to formal inspections. As discussed by Jolene Hart [Hart, 1982] a walkthrough is a peer group review of any technical product. This means that the review involves other people working with you, as well as users, programmers, systems designers, operations people, and others who may be involved in various aspects of the project you are working on. But a walkthrough, under normal conditions, does not include your boss, or the head of the department, or the vice-president from the user organization. The primary reason for conducting a walkthrough is to spot errors as quickly and economically as possible. A walkthrough can take place at virtually any point in the development of a technical product. Design reviews are more formal reviews that are usually conducted at program milestones such as requirements reviews and critical design reviews. Reviews tend to be general in nature, so they will not catch as many problems as inspections. At the opposite end of the spectrum, peer reviews tend to be very informal, so they also will not usually be as effective as inspections at finding defects. A peer review technique that may be effective at discovering defects is pair programming, an agile software development practice [Lindvall, 2003] that can result in better software code than for programmers working alone.
Testing
According to Tian, one of the purposes of testing is to detect and fix problems [Tian, 2005]. According to Kan, there are several levels of software testing, including unit testing, component testing, and system-level testing [Kan, 1995]. Testing is part of the software development process, so this method of defect detection should not require additional resources beyond what is expected during development. However, testing should be thorough and done correctly. There are plenty of resources available, such as the books by Tian [Tian, 2005] and well-known software engineering writer Roger Pressman [Pressman, 2005] that explain how to set up a viable testing strategy. Tian discusses different types of testing used at different levels, and Pressman describes a strategic approach which includes verification and validation.
A limitation of testing is that it does not discover defects, or errors, until later in the development process. Defects found in testing are generally require more effort to fix than those discovered during requirements and design. However, finding defects during testing is preferable to finding them after a product is deployed in the field!
Suggestions for choosing defect detection methods
The first consideration should be using inspections for the project being managed. Inspections are probably the most effective method for defect detection, but other methods can supplement inspections to detect defects. Testing, of course, should be a part of any software development endeavor. Whatever method or methods are used, the defects must be documented so further action can be taken.
1.2.2.2 Defect Analysis and Classification
A process for analyzing and classifying defects and problem reports is an important part of defect tracking against quality targets. Some classification schemes are described here: an IEEE standard classification categorization, an Orthogonal Defect Classification (ODC), and other classification schemes.
IEEE Standard Anomaly Classification
The Software Engineering Standards Committee of the IEEE Computer Society has created a standard classification for software anomalies [Konrad, 1997]. In the IEEE framework, an anomaly can be a failure occurring during run-time or a static fault located in the code or documentation. The committee chose the term “anomaly” to convey a more neutral connotation than some synonyms. Figure 6 shows the process for classifying anomalies. The steps for identifying the impact of each classification step results in the specification of the value of various categories. The standard defines two types of categories, mandatory and optional. The mandatory categories are shown in Table 7.

Figure 6: IEEE Standard Anomaly Classification Process
Table 7: IEEE Standard Mandatory Classifications
|
RECOGNITION
|
|
Category
|
Classification
|
|
Project Activity
|
Analysis, Review, Audit, Inspection, Code/Compile/Assemble, Testing, Validation/Qualification Testing, Support/Operational, Walk-through
|
|
Project Phase
|
Requirements, Design, Implementation, Test, Operation and Maintenance, Retirement
|
|
Symptom
|
Operating System Crash, Program Hang-up, Program Crash, Input Problem, Output Problem, Failed Required Performance, Perceived Total Product Failure, System Error Message, Other
|
|
INVESTIGATION
|
|
Category
|
Classification
|
|
Actual cause
|
Product, Test System, Platform, Outside Vendor/Third Party, User, Unknown
|
|
Source
|
Specification, Code, Database, Manual and Guides, Plans and Procedures, Reports, Standards/Policies
|
|
Type
|
Logic Problem, Computation Problem, Interface/Timing Problem, Data Handling Problem, Data Problem, Documentation Problem, Document Quality, Enhancement
|
|
ACTION
|
|
Category
|
Classification
|
|
Resolution
|
Immediate, Eventual, Deferred, No Fix
|
|
IMPACT
|
|
Category
|
Classification
|
|
Severity
|
Urgent, High, Medium, Low, None
|
|
Project Schedule
|
High, Medium, Low, None
|
|
Project cost
|
High, Medium, Low, None
|
|
DISPOSITION
|
|
Category
|
Classification
|
|
Disposition
|
Closed, Deferred (Reference), Merged with Another Problem (Reference), Referred to Another Project (Reference)
|
Orthogonal Defect Classification
Orthogonal Defect Classification (ODC) is a multidimensional in-process measurement system supporting sophisticated analyses. For example, the variation in the distribution of defect types by lifecycle phase can provide signatures of a process. ODC provides a means to compare observed distributions with expected distributions and thereby determine if a project’s logical location among phases by signature matches the scheduled location. Under ODC, defects are categorized:
"into classes that collectively point to the part of the process that needs attention, much like characterizing a point in a Cartesian system of orthogonal axes by its (x, y, z) coordinates... For classifications to be widely applicable, the classification must have consistency between the [lifecycle phase]. Without consistency, it is almost impossible to look at trends across stages. Ideally, the classification should be quite independent of the specifics of a product or organization" [Bhandari, 1992].
Early presentations of ODC [Bhandari, 1992] discussed two attributes of a defect: Type and Trigger. "A defect trigger is a condition that allows a defect to surface" [Bhandari, 1992]. For example, a defect of a certain type might not be visible until the software is run on a certain hardware platform. The hardware platform, then, is the trigger. A later IBM implementation had two additional attributes: Source and Impact [Lyu, 1996]. Tables 8 and 9 present how defects are classified in one implementation of ODC which has been recently described in the literature.
Table 8: Attributes Identified When Defect Uncovered
|
Activity and Triggers
|
Customer Impact
|
|
Inspection
|
Unit Test
|
Function Test
|
System Test
|
|
Design conformance
|
Simple path
|
Coverage
|
Workload/stress
|
Installability
|
|
Logic/data flow
|
Complex path
|
Variation
|
Startup/restart
|
Standards
|
|
Lateral compatibility
|
|
Sequencing
|
Recovery/exception
|
Standards
|
|
Backward compatibility
|
|
Interaction
|
Hardware configuration
|
Integrity/Security
|
|
Language dependency
|
|
|
Software configuration
|
Migration
|
|
Concurrency
|
|
|
Blocked test
|
Reliability
|
|
Internal Document
|
|
|
|
Performance
|
|
Side effects
|
|
|
|
Documentation
|
|
Rare Situations
|
|
|
|
Requirements
|
|
|
|
|
|
Maintenance
|
|
|
|
|
|
Usability
|
|
|
|
|
|
Accessibility
|
|
|
|
|
|
Capability
|
Table 9: Attributes Identified When Design Or Code Defect Fixed
|
Target
|
Defect Type
|
Qualifier
|
Source
|
Age
|
|
Design/Code
|
Assignment/initialization
|
Missing
|
Developed in-house
|
Base
|
|
Checking
|
Incorrect
|
Reused from library
|
New
|
|
Algorithm/method
|
Extraneous
|
Outsourced
|
Rewritten
|
|
Function/class/object
|
|
Ported
|
Refixed
|
|
Timing/serialization
|
|
|
|
|
Interface/OO messages
|
|
|
|
|
Relationship
|
|
|
|
From [Bassin, 2001]
Other Classification Schemes
There are some defect classification schemes that are less elaborate than the two methods explained above, but may be adequate in some situations. Putnam and Myers, who include defect rates as one of the five core metrics for successful software management [Myers, 2003], explain a defect severity ranking that is based on the time limit in which the defect must be fixed. The classification is as follows:
- Critical: The program fails to execute or it leads to a morass no one wants to enter. These defects must be corrected before the program can be executed again.
- Serious: Some results are wrong, or performance is substantially degraded, but the user can temporarily make allowances for the deficiencies. These defects should be fixed "soon".
- Moderate: The program executes, but it contains obvious deficiencies. Users can live with them temporarily. These should be fixed in the current release.
- Cosmetic: Flaws do not affect program performance or results, such as a misspelled table heading. These should be fixed in the next release.
Fenton and Pfleeger [Fenton, 1997] also include a single classification scheme where defects are classified in one of five categories based on relative severity. The five categories are "major", "minor", "negligible", "documentation", or "unknown". Fenton and Pfleeger point out, however, that such a classification scheme is not truly orthogonal in that, for instance, a documentation error could be a major problem. They propose eight mutually-independent (or orthogonal) attributes of defects that, ideally, should be described:
- Location: Where did the problem occur?
- Timing: When did it occur?
- Symptom: What was observed?
- End result: What consequences resulted?
- Mechanism: How did it occur?
- Cause: Why did it occur?
- Severity: How much was the user affected?
- Cost: How much did it cost?
El Emam [El Emam, 2005] proposes three schemes for classifying defects: priority, severity, and problem type. Each of the three schemes will now be explained:
- 1. Defect Priorities: This scheme allows the software developers to focus on the most urgent defects first. Table 10 shows two possible classifications for defect priority.
|
Defect Priority Classification I:
- Immediate fix: blocks further testing, very visible
- Must fix the defect before release
- Should fix as time permits
- Would like to fix, but can release as is
Defect Priority Classification II
- Fix immediately
- Fix before alpha release
- Fix before beta release
- Fix before general availability
- Fix before next release
|
- 2. Defect Severity: This relates to how a defect affects the usability and utility of a product. Unlike priority, which may change during a project, severity levels tend to remain the same throughout the project. Table 11 shows a defect severity scheme.
- Corruption or Loss of Data
- - Inability to meet response or capacity constraints
- - Unintentional halt or failure
- - Failure that does not return to service within a mean time to repair
- System Inadequate
- - Non-compliance of a main function within specifications
- - Any critical fault that occurs within system testing
- Unsatisfactory
- - Non-compliance of an auxiliary function to specifications
- - Non-compliance with standards for deliverable items
- - Layout or format defects on presentation that do not affect system operational integrity
- - Inconsistency or omission within a document
- Suggestion
- - Suggestion for improving the software or documentation
|
- 3. Problem Type: This looks at the type of problem by defect that is fixed. According to El Emam [El Emam, 2005], Table 12 is a problem type scheme that has been shown to be reliable in that different developers are expected to assign the same defects to the same categories. For each type, a brief description is included, and some questions which, if answered "no", would indicate a defect in that category. This classification can be useful in process monitoring and improvement.
- Documentation
- - Description: Comments and messages, Inability to meet response or capacity constraints
- - Questions:
- - Is the function described adequately at the top of the file?
- - Are variables described when declared?
- - Does the function documentation describe its behavior properly?
- Interface
- - Description : Procedure calls and references, I/O, user formats, declarations
- - Questions:
- - Does the library interface correctly divide the functions into their different types?
- - Do the functions allow the proper object access rules?
- - Are the declared and expected interface signatures the same?
- Function
- - Description: Logic, pointers, loops, recursion, computation
- - Questions:
- - Are all branches handled correctly?
- - Are pointers declared and used as pointers?
- - Are arithmetic expressions evaluated as specified?
- Build/Package/Merge
- - Description: Change management, library, version control
- - Questions:
- - Is there a version number defined for this file?
- - Are the correct versions of functions included in the build?
- Assignment
- - Description: Declaration, duplicate names, scope, limits
- - Questions:
- - Are variables initialized properly?
- - Are all library variables that capture a characteristic or state of the object defined?
- - Are all return values that are special cases (e.g., an error return) really invalid values (i.e., would never occur unless there was an error)?
- Memory
- - Definition: Memory allocation, leaks
- - Questions:
- - Are objects instantiated before being used?
- - Do all objects register their memory usage?
|
Suggestions for Defect Classification
There are many different methods for classifying, or categorizing defects, a few of which are described here.
The method or combination of methods chosen should be dependent on the particular needs of a project or program; however, the information presented here should be helpful.
1.2.2.3 Defect Resolution and Removal
1.2.2.4 Defect Removal Tracking
1.2.2.5 Measuring Defects (Against Quality Targets)
In addition to defect removal tracking discussed in the previous section (1.2.2.4), other defect measures can be useful in assessing whether targets are met as well as facilitating software project and process management in general. This section describes some measures and methods for selecting measures that can be useful in defect tracking against quality targets.
The Practical Software and Systems Measurement (PSM) Guide
An excellent source of measures for software projects in general, including quality measures, is the Practical Software and Systems Measurement (PSM) Guide [Mcgarry, 2002]. Section 3 of this Guide explains the Issue-Category-Measure (ICM) approach to selecting measures for software projects. The Guide lists more than 50 measures and provides a detailed description of each measure. Table 16, from the PSM Guide, shows measures that can be used for selected issues and categories within issues. Some of the measures that can be used in defect tracking against quality targets are now summarized.
| Issue - Category - Measure Mapping |
| Common Issue Area |
Measurement Category |
Measures |
| Schedule and Progress |
- Milestone Performance
- Work Unit Progress
- Incremental Capability
|
- Milestone Dates
- Critical Path Performance
- Requirements Status
- Problem Report Status
- Review Status
- Change Request Status
- Component Status
- Test Status
- Action Item Status
- Increment Content - Components
- Increment Content - Functions
|
| Resources and Cost |
- Personnel
- Financial Performance
- Environment and Support Resources
|
- Effort
- Staff Experience
- Staff Turnover
- Earned Value
- Cost
- Resource Availability
- Resource Utilization
|
| Product Size and Stability |
- Physical Size and Stability
- Function Size and Stability
|
- Database Size
- Components
- Interfaces
- Lines of Code
- Physical Dimensions
- Requirements
- Functional Change Workload
- Function Points
|
| Product Quality |
- Functional Correctness
- Support-Maintainability
- Efficiency
- Portability
- Usability
- ependability-Reliabilty
|
- Defects
- Technical Performance
- Time To Restore
- Cyclomatic Complexity
- Maintenance Actions
- Utilization
- Throughput
- Timing
- Standard Compliance
- Operator Errors
- Failures
- Fault Tolerance
|
| Process Performance |
- Process Compliance
- Process Efficiency
- Process Effectiveness
|
- Reference Model Rating
- Process Audit Findings
- Productivity
- Cycle Time
- Defect Containment
- Rework
|
| Technology Effectiveness |
- Technology Suitability
- Impact
- Technology Volatility
|
- Requirements Coverage
- Technology Impact
- Baseline Changes
|
| Customer Satisfaction |
- Customer Feedback
- Customer Support
|
- Survey Results
- Performance Rating
- Requirements For Support
- Support Time
|
- Defects: This refers to the number, status, and priority of defects reported. It can include the average age of defects, which is related to the defect removal rate discussed earlier. The defect status can include the closure rate of defects, also an indicator of defect removal rate.
- Operator errors: This measure is useful in assessing quality in the operational environment, after a system or program has been deployed. It can be used to measure usability and quality of a system or program, and can be compared to any targets set in these areas. The limitation of this measure is that it is only useful after a system has been deployed.
- Failures: This is a measure of the number, criticality, and time interval between failures. It is useful in measuring software reliability in terms of mean-time-to-failure (MTTF) and can be compared to MTTF targets if they are established. Like operator errors, this measure is useful only after system deployment.
- Defect Containment: As discussed in Sections 1.2.2.1 and 1.2.2.3, it is highly desirable to detect defects during the phase when they occur, or are inserted. It is also highly desirable to remove, or correct defects during the phase when they are detected. The defect containment measure, as discussed in Section 3 of the PSM Guide, measures the number of defects found during a process (or phase) and the number of defects found after completion of a process, or phase, such as during a design review or inspection. This measure can be used to determine the effectiveness of inspections and other defect detection methods used, and can be compared to any targets or goals set for these methods. This measure could be expanded to include defect removal tracking, as discussed in Section 1.2.2.4.
- Rework: This measure tracks the amount of effort required to fix, or remove defects. An organization sometimes sets a budget for rework activities, and this measure can be used to compare actual rework effort to budgeted rework effort. As discussed in previous sections, it is desirable to detect and remove defects as early as possible to reduce rework required. This measure can show how well an organization is performing in this area.
- Survey Results: Survey Results track customer satisfaction ratings, from both acquiring agencies and users. Survey Results also measures progress in providing products and services that meet the customer’s needs and expectations. One challenge with this metric is setting an objective scale for measurement. Often, users are asked to rate a product on a scale of "1" to "5", or "Very Satisfied", "Satisfied", etc. Even with a seemingly objective scale, users' ratings will often be based on subjective perceptions. Also, this measure, like operator errors and failures, is not useful until after deployment. Still, organizations sometimes set quality targets in terms of user satisfaction ratings, especially in the commercial environment, and this measure is useful in assessing successes in this area.
Of course, some of the other measures in Table 16 can be used in quality assessment. The six above are just provided as examples. As outlined in the PSM Guide, organizations can use Table 16 and the information in Section 3 to determine the specific issues and categories for their programs and choose the appropriate measures.
Goal-Question-Metric (GQM) Approach
As described by Ellen Walker as a DACS Gold Practice [Walker, 2005], and from the writings of Dr. V.R. Basili [Marciniak, 1994] and Rini van Solingen [Van Solingen, 1999], the GQM approach defines certain goals for a software project, refines these goals into one or more questions, then defines metrics (or measures) that provide information to answer these questions. Figure 10 shows the hierarchy of the GQM approach, as described by Dr. Basili [Marciniak, 1994]. It is possible, as illustrated in Figure 10, for a metric (or measure) to answer more than one question, and for a question to address one or more goals. Basili explains that the metrics represent a quantitative level; they answer questions in a quantitative way; however, they may be either objective or subjective. For example, number of lines of code in a program is an objective metric since it depends only on the object being measured (the code, in this case). Meanwhile, a user satisfaction rating from "1" to "5" is subjective since the user's viewpoint will affect the rating, even though the rating itself is quantitative, or numerical.
Figure 11 is an example of use of the GQM approach for quality measures. The goal is to minimize defects in a software product, and the relevant questions are "How likely are defects after release?", and "When are we creating the problems (like, during which stage of the development process)?". For each question, one metric, or measure, has been selected. (These metrics can be considered to be objective.) It is usually helpful to graph the measures as shown in Figure 10 for one of the measures.
Figure 11: Illustration of the GQM Approach [Ferens, 2010]
Van Solingen [Van Solingen, 1999] provides an example of a quality goal that addresses software reliability. His statement of the reliability goal is "Analyze the delivered product and development process for the purpose of characterizing with respect to reliability and its causes from the viewpoint of the software development team in the context of Project "A". Van Solingen then proposes 18 questions and one or more metrics, or measures, for each question. For example, Question 1 is "What is the composition of the product?", and three metrics are a list of life cycle documents, a list of subsystems, and a list of modules.
Capers Jones' Quality Measures
In his book "Applied Software Measurement" [Jones, 2008], Capers Jones recommends quality
measures in two categories: user satisfaction measures and defect measures. A desirable goal for companies is, of course, to have
high levels of user satisfaction and low levels of defects. Specific values or ratings for these goals can be established using some
methods and ideas discussed in Section 1.2.1.
User satisfaction measures include ease of use, functionality, and support. These are "soft" measures since they are based on user perspectives and obtained by surveys, usually taken once a year. If user satisfaction measures are included in quality targets, these measures can be useful, since some definitions of quality include "high degrees of user satisfaction" and "ease of use". One limitation of user satisfaction measures are they are not available until after a program is completed.
Defect measures include defect volumes (e.g., number of defects per function point), defect severities, defect origins, defect causes, and (as discussed in Section 1.2.2.4) defect removal efficiency. According to Capers Jones, defect removal efficiency is a measure used by leading edge companies. The defect measures are "hard" measures that can be assessed objectively and more often (once a month) during a program.
In addition to recommending quality measures to use, Capers Jones explains there are certain quality measures not to use! Cost per defect is one example; it can actually penalize high quality products that have relatively fewer defects! Table 17 shows a comparison of costs per defect for a low-quality "buggy" application and a high quality application of the same size. The cost per defect is actually a combination of three costs: preparation costs, execution costs, and repair costs. Preparation costs tend to be fixed; for example, the cost to create test cases for testing or reading specifications for a design review is the same no matter how many defects the product contains. Execution costs, the costs of actually conducting a review, audit, or test, are "semi-variable"; there are certain costs associated with going through an exercise no matter how many defects are present, while there are costs such as recording defects found that increase with number of defects. Lastly, repair costs are the costs of fixing or removing defects; these costs vary directly with the number of defects that must be corrected. As shown in Table 17, for two similar sized programs, cost per defect looks better for the low quality program; however, the total costs are much lower for the higher quality program.
| Program factor |
Low Quality Program |
High Quality Program |
| Size, in Lines of Code |
10,000 |
10,000 |
| Defects Found |
500 |
5 |
| Preparation Costs |
$5,000 |
$5,000 |
| Execution Costs |
$25,000 |
$2,500 |
| Defect repair Costs |
$20,000 |
$200 |
| Total Defect Removal Costs |
$50,000 |
$7,700 |
| Cost Per Defect |
$100 |
$1,540 |
Although Capers Jones does describe some measures that can and should be used in a program (and should not be used), determining which of these metrics to use for a specific program will depend on such factors as program characteristics, the user's environment, and the organization developing the software. For example, an inexperienced organization may not be able to report defect removal efficiency. Using approaches like PSM or GQM can help in this selection. It is also noted there are other references such as the CMMI [Konrad, 2003] that provide descriptions of quality measures that can be useful. Again, which ones to use depends on the nature of the program and, according to the CMMI, the maturity level of the organization developing the software.
Quality Measures Used by Corporations
Sometimes companies develop "standard" quality measures that they use for their software development efforts. For example, as reported by Fenton and Pfleeger [Fenton, 1997], AT&T developed the following set of quality measures:
- - Cumulative fault density - faults found internally
- - Cumulative fault density - faults found by customers
- - Total "serious" faults found
- - Mean time to close serious faults
- - Total field fixes
- - High level design review errors per thousand lines of code
- - Low level design errors per thousand lines of code
- - Code inspection errors per inspected thousand lines of code
- - Development test and integration errors found per thousand lines of code
- - System test problems found per developed thousand lines of code
- - First application test errors found per developed thousand lines of code
- - Customer found problems per developed thousand lines of code
Kan [Kan, 1995] provides a list of measures that resulted from studying quality efforts for several companies. Kan's list contains 13 measures in three categories, as shown in Table 18.
| Category |
Metrics (Measures) |
| Product Quality |
Mean Time To Failure |
| |
Defect Density |
| |
Customer-Reported Problems |
| |
Customer Satisfaction |
| In-Process Quality Measures |
Defect Removal Effectiveness |
| |
Phase-based Defect Removal Program |
| |
Defect Density During Formal Machine testing |
| |
Defect Arrival Pattern During Formal Machine Testing |
| Maintenance Quality Measures |
Fix Backlog |
| |
Backlog Management Index |
| |
Fix Response Time |
| |
Percent Delinquent Fixes |
| |
Defective Fixes |
Lists of measures used by specific companies (or groups of companies) can be useful resources in finding suitable quality measures for a program. However, an approach such as PSM or GQM should be used to determine which measures are suitable for a specific project or program.
Suggestions for measuring defects
This section describes many measures that can be used in assessing whether quality targets, or goals, are being met. The specific measures to be used, however, depend on the quality targets actually set (as explained in Section 1.2.1) and the characteristics of the project or program and the organization developing the software. Two methods that can help in selecting suitable measures are PSM and GQM; however, there are other methods that may be used to supplement these methods, such as the "Factor-Criteria-Metric" method described by Fenton and Pfleeger [Fenton, 1997]. Another useful source is information on past programs from different corporations; however, the measures and methods that should be used will vary by program or project.
1.2.2.6 Reporting Progress to Management
As explained by Fenton and Pfleeger [Fenton, 1997], most customers know about the area for which a software product is being developed, but little about compilers, programming languages, and other aspects of software development. Therefore, measurements must be presented in a way that tells both customers and developers how a project is doing. For any program or project, it is important to report progress of the effort, including quality concerns, to project or program managers, other senior-level managers, and other stakeholders in a program or project. As explained by Schwalbe [Schwalbe, 2006], a stakeholder can be anyone who has an interest in a project, including a competitor. (Of course, the information a company reports to competitors should be minimal!) Schwalbe goes on to explain that different types and levels of reporting will be made to different stakeholders. In fact, Schwalbe recommends developing a stakeholder matrix for a project, which lists key stakeholders and their personalities so reports can be tailored to individuals. Although all stakeholders are important, this section concentrates on reports to management.
In a section of their book "Software Metrics" [Fenton, 1997], Fenton and Pfleeger compare the concerns of managers with those of developers (like analysts and engineers), and the information needed by both. The five main concerns of management, according to Fenton and Pfleeger, are:
- What does each process cost?
- How productive is the staff?
- How good is the code being developed?
- Will the user be satisfied with the product?
- How can the process be improved?
We have already discussed some measures that are useful for Questions 3 and 4 above; many defect-related measures are useful in assessing code quality, and user satisfaction measures can be used to assess how content users are with products. Some of the measures can also be used to answer the other questions. (More information about process improvement is included in Section 1.3.3.) This section addresses not only what measures should be reported to management, but how they should be reported.
For the CMMI, one of the Process Areas, "Process and Product Quality Assurance", involves providing feedback to managers on the results of quality assurance activities [Konrad, 2003]. Table 19 lists four specific practices within this Process Area, and some results of these practices that should be reported to management. (More about the CMMI is in Section 4.0).
Table 19: Specific Practices for CMMI Process Area "Process and Product Quality Assurance" [Konrad, 2003]
| CMMI Specific Practice |
Management Reporting |
| SP 1.1 Objectively Evaluate Processes |
Evaluation reports
Non-compliance with standards and procedures
Lessons learned for future projects
|
|
SP 1.2 Objectively Evaluate Work Processes and Services
|
Evaluation reports
Non-compliance with Standards and procedures
Lessons learned for future projects
|
|
SP 2.1 Communicate and Ensure Resolution of Non-Compliance Issues
|
Results of evaluations and quality trends
Tracking of resolution of non-compliance issues
|
| SP 2.2 Establish Records |
Evaluation reports
Quality assurance reports
Status reports of corrective actions
Reports of quality trends
|
Several other CMMI Process Areas include reporting quality information to managment. The Integrated Project Management Porcess Area includes a Specific Practice of reporting defects to relevant stakeholders. The Organizational Process definition Process Area includes a Specific Practice of establishing a measurement repository to include quality measures such as defect density and number of defects found. The Requirements Development Process Area includes requirements defects as an item to be reported for the Specific Practice of Analyzing Requirements. The Quantitative Process Management Process Area includes assessing process performance, which is characterized by both process measures (e.g., effort, cycle time, and defect removal efficiency) and product measures (e.g., reliability, defect density, and response time).
The CMMI also has a Generic Practice, "Review Status With Higher Management" (GP 2.10) that applies to all Process Areas. This is a "Level 2" Process Area, which means that organizations must be proficient at this area to be recognized at Level 2, which is, in effect, "basic project management". This Generic Practice involves periodically reviewing activities, status, and results of the software development process with higher level management, and resolving issues. This will include quality considerations.
For communications issues in general, including reporting progress to management, The Project Management Body of Knowledge (PMBOK) treats Project Communications Management as one of nine "knowledge areas" for project management [Project Management Institute, 2008]. The PMBOK lists five processes to insure timely and appropriate generation, collection, distribution, storage, retrieval, and ultimate disposition of project information. The five steps are:
- Identify stakeholders: identify all people and organizations impacted by the project and document information relevant to their interests. This may involve creating a stakeholder analysis matrix, which can also identify particular characteristics of each stakeholder (e.g., hates detail, prefers e-mail to phone calls, etc.)
- Plan communications: Determine information needs and a communication approach. The PMBOK recommends developing a communications management plan for a project. This plan would include reporting defect information to management.
- Distribute information: Make relevant information available to stakeholders as planned (in the communications management plan). It involves preparing and distributing performance reports and giving presentations.
- Manage stakeholder expectations: Communicate with and work with stakeholders to meet their needs and address issues as they occur. Part of this process is updating an issue log where new issues are identified and current issues are resolved. Defect removal could be part of an issue log.
- Report performance: Collect and distribute performance information, including status reports, progress measurements, and forecasts. These reports must be provided at the appropriate level for each audience. For defect tracking, this could range from a monthly summary report to a detailed analysis of defects discovered and removed depending of the interest level of the stakeholder. This is why it is important to perform a stakeholder analysis early in a program.
In her book, "Information Technology Project management" [Schwalbe, 2006], Kathy Schwalbe provides an example of a stakeholder analysis that can be used to determine the level of reporting and best method for distributing reports, and an example of a stakeholder communications analysis to show the preferred method and frequency of communication. Table 20 is an example of a combination of these analyses that can be used in defect reporting.
Table 20: Communication Analysis
| Stakeholder |
Andrea |
Brandon |
Cameron |
Dylan |
| Role on Project |
Sponsor |
Customer |
Project Manager |
Programmer/Analyst |
| Characteristics |
Likes summary information but weekly, also likes hardcopies, is not a technical person |
Likes electronic communication, does not get too involved |
Likes electronic communication, has degree in engineering, did not like business courses |
Detail person, Likes reading reports, does not like e-mail |
| Document |
Weekly 1-page status report with defect summaries |
Monthly summary status report with only product defects reported |
Weekly status report with some detailed defect information |
Daily or weekly report with details |
| Communication Method |
Hard copy |
E-mail attachment |
E-Mail attachment and hardcopy |
Hardcopy |
| Frequency |
Weekly |
Monthly |
Weekly |
Daily |
Suggestions for Reporting Progress to Management
There are many defect measures that can be reported to management, and different ways of reporting this information. What information should be reported, and to what level of detail, will depend on who is receiving the data. Although Fenton and Pfleeger, and the CMMI provide some general guidelines, reporting to management and other stakeholders is highly dependent on the project and the nature of stakeholders. Having a communications management plan early in a project and a stakeholder analysis can help determine these reporting requirements.
1.3 Characteristics of Implementation
1.3.1 Summary Characteristics
1.3.2 Detailed Characteristics
1.3.3 Anticipated Benefits from Implementation
1.3.3.1 Return on Investment for Current Projects
In his book, "The ROI from Software Quality" [El Emam, 2005], the author, Khaled El Emam, compares the profits and losses from a company's releasing software with numerous defects. The profit can come from some contractors being paid the same regardless of the reliability of the software, and maybe even being paid to later correct the defects. Also, customers are more likely to purchase support contracts if software tends to fail, while they may not buy them if the software works well. (An analogy may be extended warranties on cars and appliances, which customers are more likely to purchase for less reliable products.) However, the consequences from releasing defective software probably outweigh the benefits. The threat of costly litigation due to failed software products is increasing, and there is increasing concern that software defects can lead to security vulnerabilities. Even if litigation is not a concern, the cost of rework, or fixing defects, can be very high. Also, if a company delivers low quality software, the company's reputation will be tarnished, and future sales will be adversely affected. People will not continue to buy products with many defects. Despite these negative consequences, some organizations continue to develop defective software, and must be shown that the costs outweigh the benefits. This section shows that return on investment (ROI) from defect tracking against quality targets will almost always be positive.
Figure 12, taken from an article by Webb and Patton [Webb, 2008], shows the costs associated with good quality and poor quality. The costs associated with good quality, or costs to achieve quality, are prevention and appraisal costs. The costs of poor quality, or costs due to a lack of quality, are internal failure and external failure costs. Prevention costs cover efforts to ensure quality and defect prevention activities. Appraisal costs address efforts to discover the condition of the software quality. Internal failure costs cover efforts to detect and correct problems prior to the user detecting them, while external failure costs cover the effort to correct problems discovered by users. Table 22, from a paper by Demirors and Yildiz [Demirors, 2000], provides examples of costs in each of the categories.
| Prevention |
Appraisal |
Internal Failure |
External Failure |
| Prototyping |
Inspections |
Fixing errors |
Technical support for defect complaints |
| Requirements reviews |
Testing |
Corrective rework |
Maintenance and release due to defects |
| Quality planning |
Verification and Validation (V&V) activities |
Updating documents due to changes |
Penalties |
| Quality Training |
Quality audits |
Integration |
Products returned due to defects |
| Reuse libraries |
Field performance trials |
|
Service agreement claims |
| Configuration Management (CM) Administration |
|
|
|
| QA Administration |
|
|
|
External failure costs can be particularly insidious. The obvious costs are those associated with correcting defects, which, as shown previously, can be relatively high after software is deployed. The costs of correcting defects, however, often pale in comparison to other costs. Figure 13 [Ferens, 2009] illustrates the potential costs to a customer that can result from defective software.
Some writers, such as Rex Black, classify prevention and appraisal costs as "costs of conformance", and internal and external failure costs as "costs of nonconformance" [Black, 2000]. Black provides a return on investment (ROI) analysis for use of formal testing . Table 23 shows that the cost of conformance, which includes appraisal costs associated with manual and automated testing, are much less than the costs of nonconformance. This assumes that bugs found during testing cost $10 to fix while bugs found by the customer (external failure costs) are $1,000. While this example is hypothetical, Black cites an actual case where software systems costs were reduced by 50% by using appraisal techniques like formal testing.
While formal testing provides a positive ROI, inspections have been shown to be even more effective. Gack [Gack, 2009] showed an ROI of 4.6 from using inspections and testing compared to using testing alone as an appraisal method. El Emam [El Emam, 2005] showed that inspections are effective in that the effort needed to correct defects using design or code inspections is only 25% of the effort needed to correct defects during testing. The ROI from using inspections instead of testing alone, in terms of percentage savings, is 11% for pre-release costs, 26% for post-release costs, and 38% for customers. The use of inspections results in a 3% schedule savings, which shows that quality improvements from inspections do not add time to a software project. Freimut [Freimut, 2005] described the results of using inspections at Siemens AG, Germany. The cost of rework was a 67% mean decrease measured after the improvements for inspections performed in the analysis phase; the cost of rework was a 47% mean decrease measured after the improvements for inspections performed in the design phase; and the cost of rework was a 12% mean decrease measured after the improvements for inspections performed in the development, or coding phase.
Table 24, from the DACS ROI Dashboard and included in the 2007 DACS report, "A Business Case for Software Process Improvement" [Ferens, 2007] summarizes the results from multiple resources for using software inspections as a software process improvement activity. The average ROI was 6.84, and the minimum was 2.0, which shows that ROI will almost always be positive from using inspections.
| Metric |
Data Points |
Minimum |
Maximum |
Median |
Mean |
Standard Deviation |
25th Percentile |
75th Percentile |
| ROI |
15 |
2 ratio |
30 ratio |
4.8 ratio |
6.84 ratio |
6.62 ratio |
4.23 ratio |
7 ratio |
| Productivity |
2 |
37% increase |
350% increase |
193.5% increase |
193.5% increase |
221.32% increase |
N/A |
N/A |
| Project Cost |
1 |
8% decrease |
8% decrease |
8% decrease |
8% decrease |
N/A |
N/A |
N/A |
| Improvement Cost |
1 |
3% of total effort |
3% of total effort |
3% of total effort |
3% of total effort |
N/A |
N/A |
N/A |
| Quality (% defect reduction) |
5 |
63% defect reduction |
100% defect reduction |
99% defect reduction |
86.6% defect reduction |
18.12% defect reduction |
67% defect reduction |
100% defect reduction |
| Quality (% of defects found) |
6 |
50% defects found |
100% defects found |
86% defects found |
77.5% defects found |
22.07% defects found |
50% defects found |
93% defects found |
| Rework |
4 |
12% decrease |
67% decrease |
39% decrease |
39.25% decrease |
23.39% decrease |
21.5% decrease |
57% decrease |
El Eman [El Emam, 2005] shows how ROI is usually positive from using other defect prevention and appraisal methods. He shows how to compute ROI for various methods, including inspections.
Suggestions for realizing ROI from current projects
The primary benefit from using defect tracking methods such as testing and inspections is the positive return on investment. However, there are some benefits that are hard to quantify, yet will result in a positive return. One area is schedules; there will be less time required for nonconformance activities; hence, less time required for the overall effort. Customer satisfaction will be greater when prevention and appraisal activities are emphasized since products will be of higher quality. Also, there is a positive impact on team morale with higher quality products, which can reduce turnover rates and increase productivity in general. Try to implement processes such as inspections and formal testing which almost certainly will result in a high positive ROI. As shown earlier, these methods are effective at finding defects during the phase in which they occur, which will reduce rework (and frustration).
1.3.3.2 Defect Prevention for Future Projects
Most defect tracking and removal methods discussed so far address detecting and removing defects as soon as possible after they are injected into the current project during requirements, design, etc. Defect prevention, according to Tian [Tian, 2005], is to reduce the chances of defects being injected in the first place. Soni states that "prevention is better than cure" is a saying that applies to defects in the software development cycle as well as illness in medical science (see Defect Prevention: Reducing Costs and Enhancing Quality). Version 1.2 of the CMMI for Development (CMMI-DEV) Process Area of Causal Analysis and Resolution has the purpose of identifying the causes of defects and other problems and take action to prevent them from happening in the future [Konrad, 2003]. It would appear that defect prevention can have even more positive impact than defect appraisal activities like walkthroughs and inspections. According to Schulmeyer and McManus, the defect prevention process has a 15-to-1 payback and avoids 50% of all defects normally injected during the first year and first project in which it is used, and 70% avoidance within 2 or 3 years [Mcmanus, 1999].
The defect tracking and removal activities discussed throughout this document are prerequisite for defect prevention. For example, the Causal Analysis and Resolution Process Area for the CMMI-DEV has the specific goals (SGs) and specific practices (SPs) that are shown in Table 25. The table shows the SGs and SPs associated with this CMMI Process Areaa, and the subpractices associated with each practice:
| Specific Goal (SG) |
Specific Practice (SP) |
Subpractices |
| SG1 Determine Causes of Defects |
SP 1.1 Select Data for Analysis |
- Gather relevant defect or problem data
- Determine which defects or problems will be analyzed further
|
| |
SP 1.2 Analyze Causes |
- Conduct causal analysis with people responsible for a task
- Analyze selected defects and other problems to determine their root causes
- Group the selected defects and other problems based on their root causes
- Propose and document actions to be taken to prevent future occurrence of these defects and problems
|
| SG2 Address causes of defects |
SP 2.1 Implement the action proposals |
- Analyze action proposals and determine their priorities
- Select the action proposals to be implemented
- Create action items for implementing action proposals
- Identify and remove similar defects that may exist in other processes and work products
- Identify and document improvement proposals for the organization's set of standard processes
|
| |
SP 2.2 Evaluate the effects of changes |
- Measure the changes in performance of the project's defined process as appropriate
- Measure the capability of the project's defined process as appropriate
|
| |
SP2.3 Record Data |
(No subpractices) |
In Table 25, the first subpractice listed, "Gather relevant defect or problem data", implies that an organization is already performing the defect tracking activities discussed previously. Also, SP 2.2, "Evaluate the effects of changes", implies that an organization will track defects in future projects to see if the defect prevention measures proposed are indeed effective.
In the CMMI-DEV, Causal Analysis and Resolution is a "Maturity Level 5" Process Area. Level 5 is the highest maturity level; it implies an organization is not only actively collecting quantitative data (such as defect data), but is using this data to continuously improve their processes. Defect prevention, then, requires not only a high level of capability in other CMMI Process Areas, but also requires a high degree of commitment from an organization to perform defect prevention activities. Table 25 shows that defect prevention can be very involved; it requires a lot of time and effort. However, the rewards can be worth it.
Version 1.2 of the CMMI for Acquisition (CMMI-ACQ) also has Causal Analysis and Resolution as a Maturity Level 5 Process Area for acquisition agencies. According to the CMMI-ACQ, acquirers use Causal Analysis and Resolution practices to guide identification of root causes of selected defects and other problems and taking action to prevent their reoccurrence [CMMI PRODUCT TEAM, 2007]. The same SGs and SPs apply, although the acquirer will focus on defects reported by customers, end users, and suppliers. In either case, causal analysis is best performed by people who have the best understanding of the selected defect or problem being studied [Hofmann, 2007].
If an organization desires to perform defect prevention activities, they must be ready. In his "Quality Questionnaire", El Eman asks the following questions for defect prevention [El Emam, 2005]:
- Are defect activities planned?
- Does the project conduct causal analysis meetings to identify common causes of defects?
- Once identified, are common causes of defects prioritized and systematically eliminated?
Question 3 shows that defect prevention goes far beyond defect removal. Defect removal involves removing current defects, while defect prevention removes the very causes of these defects. In Figure 14, Soni illustrates the activities associated with defect prevention and compares them with activities associated with defect tracking and removal. The area in gray represents those areas associated with "the current philosophy" of handling defects: detection, tracking/documenting and analysis of defects to arrive with quick, short-term solutions" (from Defect Prevention: Reducing Costs and Enhancing Quality).
When an organization determines it is ready for a defect prevention program, the organization needs to plan and document its program. There are several resources that explain how to set up a program and that provide examples. For instance, Figure 14 illustrates some steps in implementing a defect prevention program. Kan also lists three steps for a defect prevention program: Analyzing existing defects or errors to trace root causes; suggesting preventive actions to eliminate the defect root causes; and implementing the preventive actions [Kan, 1995]. This process consists of four elements:
- Conduct causal analysis meetings, which are 2-hour brainstorming sessions at the end of each development phase (in the current project). Suggestions are recorded in an action database for subsequent reporting and tracking.
- Form an action team to screen, prioritize, and implement suggested actions from causal analysis meetings. The action team is the "engine" of the process.
- Stage kickoff meetings at the beginning of each development phase to determine an effective process, and tools and methods, to prevent defects during that phase. The meetings serve both as a primary feedback mechanism for the defect prevention process, and as a preventative measure.
- Track actions and collect data to prevent suggestions from being lost over time, aid action implementation, and enhance communication among groups [Kan, 1995].
The Software Productivity Consortium has issued a Defect Prevention Guidebook which addresses a recommended defect prevention process that can be implemented on a single project or across the organization, the organizational and project roles and responsibilities, and a set of defect reduction strategies. The Guidebook also provides information for process improvement change agents and project managers for classifying defects from inspections to provide causal analysis, performing causal analysis, identifying defect prevention elements with the highest ROI for defect prevention investment, and planning and implementing preventive actions [Brown, 1998].
The Defect Prevention Guidebook explains all process elements in detail, devoting an entire chapter to each key area. An example is a chapter on performing causal analysis, where the steps are: forming a causal analysis team; holding causal analysis meetings (like Kan's first step); and implementing defect prevention strategies. Holding meetings is further divided into six steps: selecting problems; classifying problems; identifying systematic errors; determining principal causes; developing corrective action proposals; and documenting meeting results. An example of a tool that can be used in identifying systematic errors (the same defect being repeated on different occasions) is a Pareto Chart for coding defects, which is shown in Figure 15. The Pareto chart shows the number of defects by cause in descending order, with the leftmost bars showing the most common causes, which subsequently should probably receive the most attention. The Guide contains an appendix that describes several useful tools, including more information about Pareto charts.
While the Guidebook and other resources give useful information about setting up a defect prevention program, the project or organizational manager or team needs to determine the best processes to use in setting up a program for a specific project or organization. Some resources do provide guidance in this area; for example, Capers Jones provides some useful guidance on which software development methods are most useful for which categories of defects, or errors. One or more of these development methods can then be used in a defect prevention program. According to Capers Jones, "defect prevention" means "the overall set of technologies that simplify complexity and minimize a natural human tendency to make errors while performing complex tasks" [Jones, 2008]. Table 26 shows some development tools and methods, such as Joint Application Design (JAD) and Quality Function Deployment (QFD), with their effectiveness for different categories of defects.
Suggestions for Defect Prevention
Defect prevention can greatly enhance quality and ROI for projects beyond what defect appraisal methods, including tracking and removal methods, alone can do. However, defect prevention can only be undertaken for projects and organizations that are already effective at defect appraisal activities, including defect tracking and removal activities discussed thus far. The CMMI-DEV Process Area of Causal Analysis and Resolution summarizes the goals, practices, and methods of associated with defect prevention. There are several resources, including the Defect Prevention Guidebook [Brown, 1998], that can help an organization or project manager establish a defect prevention program, and other resources, such as Capers Jones' book, "Applied Software Measurement" [Jones, 2008] can help determine specific strategies or ideas for a particular project or organization.
2.0 Relationships to Other Practices
2.1 Inputs
2.2 Outputs
3.0 Definitions
4.0 Sources
4.1 Recommending Sources
Appendices
Testing 123
Nobody
Case Studies |
| Many papers report analyses of software defects from one project or another. Many of these papers, however, do not give quantitative data on the benefits derived from adopting defect tracking against quality targets. Some (for example, [Bassin, 2001], [Mohapatra, 2001], and [Paul, 2000]) report case studies that applied this practice, but provide qualitative results or have another direction. The table summarizes two papers which do contain quantitative statements. |
|
Name
|
Description
|
|
Bellcore
|
Description: Four projects, for which between 30 and 150 defects were analyzed.
Benefits: "The recommended prevention measures, if implemented would reduce the field defects by 50% to 60%. The recommended detection measures would allow 40% to 80% of the field defects to be found earlier. If all the processes changes (prevention and detection measures) are implemented, the number of field defects would decrease by 75% to 90%." [Casey, 1991]
|
|
IBM
|
Description: Orthogonal Defect Classification (ODC) "has been deployed at a dozen IBM locations, worldwide, in over 50 projects"
Benefits: "When applied to reduce the cost of classical root-cause analysis, [ODC] achieves cost reductions by a factor of 10." Ram Chillarege's chapter in [Lyu, 1996]
|
|
Tools |
| A plethora of automated tools, both proprietary and open source, are available for tracking problem reports. Many Configuration Management (CM) tools have integrated problem reporting systems. Some CM tools, such as CVS, do not have bug tracking capabilities but can be integrated with some existing problem reporting tools. The European Computer Manufacturers Association (ECMA) reference model [Earl, 1990] provides one way of thinking about tool capabilities.
Desirable Capabilities for Problem Tracking Tools
Tracks problems reported by customers over telephone lines, e-mail, Web forms, etc.
Receives input from geographically dispersed locations
Allows assignment of report to responsible person
Monitors and reports status of problem reports
Provides development process management and change management authorization
Implements defined and configurable workflow
Includes statistics and metrics gathering and reporting
Archives historical records
Integrates with configuration management and test tools
Provides a Graphical User Interface front end, such as forms-based Web pages
|
|
Tool Name
|
Description and URL
|
|
Bugzilla
|
Current project leader: Dave Miller
Inputs: Problem Reports
Outputs: Problem Report Database, Reports on bugs, Integration with CVS
http://www.bugzilla.org/
|
|
COQUALMO
|
COnstructive QUALity MOdel(COQUALMO), formerly called CODEFMO, is an estimation model that can be used for predicting the number of residual defects/KSLOC (Thousands of Source Lines of Code) or defects/FP (Function Point) in a software product.
http://csse.usc.edu/csse/research/COQUALMO/
|
|
GNATS
|
Current GNATS maintainer: Andrew Gray
Inputs: Problem Reports
Outputs: Problem Report Database, Reports on bugs, Integration with CVS
http://www.gnu.org/software/gnats/
|
|
JitterBug
|
Current maintainer: Andrew Tridgell
Inputs: Problem Reports
Outputs: Reports on bugs, Tracking of replies, Audit trail
http://samba.anu.edu.au/cgi-bin/jitterbug/
|
|
Mantis
|
In Beta. Author: Kenzaburo Ito
Inputs: Problem Reports
Outputs: Reports on bugs
http://mantisbt.sourceforge.net/
|
|
Merant Tracker
|
Merant
Inputs: Change Requests, Bug Reports
Outputs: Problem Report Database, Reports on bugs
http://www.merant.com/Products/ECM/tracker/home.asp
|
|
PhpBugTracker
|
Developer: Benjamin Curtis
Inputs: Problem Reports
Outputs: Problem Report Database, Reports on bugs, Integration with CVS
http://phpbt.sourceforge.net/
|
|
The NASA Goddard ARM Tool
|
The Automated Requirement Measurement (ARM) Tool was developed by the Software Assurance Technology Center (SATC) at the NASA Goddard Space Flight Center as an early life cycle tool for assessing requirements that are specified in natural language. The objective of the ARM tool is to provide measures that can be used by project managers to assess the quality of a requirements specification document. The ARM tool scans a requirements specification document for key words and phrases and generates a report file summarizing the specific quality indicators. The tool is not intended to evaluate the correctness of the specified requirements. It is an aid to "writing the requirements right," not "writing the right requirements."
http://sw-assurance.gsfc.nasa.gov/disciplines/quality/index.php
|
|
Websites |
Call Center, Bug Tracking and Project Management Tools for Linux Linas Vepstas' page about call center, bug tracking, and project management tools for Linux.
http://linas.org/linux/pm.html |
Goddard Space Flight Center - Software Quality Website Contains software quality information in the areas of procedures and guidelines, work instructions, checklists, and tools
http://sw-assurance.gsfc.nasa.gov/disciplines/quality/index.php |
Problem Management Tools Summary Part 3 of Dave Eaton's "Frequently Asked Questions (FAQ)" for comp.software.config-mgmt.
http://www.daveeaton.com/scm/PMTools.html |
Software Quality Research Library The Software Quality Research Library is a powerful resource available to IT and business professionals who have a role in software quality. Search and browse through a vast database of vendor and analyst white papers, case studies, webcasts, and product information to help you expand your knowledge on a variety of software quality-related topics
http://searchsoftwarequality.bitpipe.com/?asrc=SS_NAV_WP |
SPMN 16 Critical Software Practices The entire guide, 16 Critical Software Practices for Performance-Based Management, Version 5.2. This paper outlines the 16 Critical Software Practices that serve as the basis for implementing effective performance-based management of software-intensive projects. They are intended to be used by programs desiring to implement effective high-leverage practices to improve their bottom-line measures -- time to fielding, quality, cost, predictability, and customer satisfaction -- and are for CIOs, PMs, sponsoring agencies, software project managers, and others involved in software engineering.
http://www.spmn.com/16cspv5-2.doc |
SPMN Airlie Council Checklists A copy of the SPMN checklists from the Little Yellow Book of Software Management Questions (July, 1995) is available on R.S. Pressman's website. This is the result of work conducted by the Airlie Council and the SPMN.
http://www.rspa.com/checklists/airlie.html |
USC Center for Software Engineering Thirty-six Affiliates help keep USC CSE in touch with technology, applications, and economic trends through participation in their annual workshops and collaborative projects, covering such areas as value-based spiral model extensions, COCOMO cost-schedule-quality estimation model extensions, UML-xADL architecture specification extensions, COTS-based system development, and agile methods.
http://sunset.usc.edu/cse/ |
Expert(s) |
|
Name
|
Description
|
|
Basili, Victor
|
A professor at the University of Maryland, Dr. Basili is a noted advocate and practitioner of quantitative methods in software engineering. He was a co-founder of NASA's Software Engineering Laboratory and has won numerous awards. His Web page provides pointers to the journals and organizations with which he is associated, as well as papers and other descriptions of his research interests.
http://www.cs.umd.edu/users/basili/
|
|
Fenton, Norman
|
Norman Fenton is Professor of Computing at Queen Mary and Westfield College (London University) and is the Head of RADAR (Risk Assessment and Decision Analysis) Group. He is also Managing Director of Agena, a company that specializes in risk management for critical systems. He has been project manager and principal researcher in many major collaborative projects in the areas of: software metrics; formal methods; empirical software engineering; software standards, and safety critical systems. His recent research projects, however, have focused on the use of Bayesian Belief nets (BBNs) and Multi-Criteria Decision Aid for risk assessment.
http://www.dcs.qmul.ac.uk/~norman/
|
|
Jones, Capers
|
Capers Jones is Chief Scientist Emeritus of Software Productivity Research (SPR). Capers Jones founded the company. He has almost 40 years of experience in software cost estimating. Jones designed IBM's first automated estimation tool in 1975, and is also one of the designers of three commercial software estimation tools: SPQR/20, Checkpoint, and KnowledgePlan. These software estimation tools pioneered the use of function point metrics for sizing and estimating. They also pioneered sizing of paper documents, and the estimation of quality and defect levels. To build these tools, SPR has collected quantified data from more than 600 companies.
http://www.spr.com/
|
|
Kan, Stephen H.
|
Stephen H. Kan is Senior Technical Staff Member (STSM) and a technical manager in programming for IBM in Rochester, Minnesota. As process manager of the quality management process in product development for IBM's eServer iSeries software development, his responsibilities include quality goal setting, supplier quality requirements, quality plans, in-process metrics, field quality status, and quality and project assessments. Dr. Kan has been a faculty member of the Master of Science in Software Engineering program at the University of Minnesota since 1998. He is certified by the American Society for Quality as a Quality Engineer, a Reliability Engineer, and a Quality Manager, and by the Project Management Institute as a Project Management Professional.
http://www.msse.umn.edu/directory/Stephen-Kan-PhD
|
|
Pressman, Roger S.
|
Roger S. Pressman is an internationally recognized consultant and author in software engineering. For over 30 years, he has worked as a software engineer, a manager, a professor, an author, and a consultant, focusing on software engineering issues.
Dr. Pressman specializes in helping companies establish effective software engineering practices. He is the developer of Process Advisor, the industry's first self-directed software process improvement product and Essential Software Engineering, the industry's most comprehensive video curriculum in software engineering. His new Internet-based software engineering training curriculum, eSchool, developed in partnership with QAI, provides a unique on-line learning experience.
http://www.rspa.com/
|
|
Wiegers, Karl
|
Karl E. Wiegers is Principal Consultant with Process Impact in Portland, Oregon. He has provided training and consulting services worldwide on many aspects of software development, management and process improvement. Prior to starting Process Impact in 1997, Karl spent 18 years at Eastman Kodak Company. His responsibilities there included experience as a photographic research scientist, software applications developer, software manager, and software process and quality improvement leader. Karl has led process improvement activities in small application development groups, Kodak's Internet development group, and a division of 500 software engineers developing embedded and host-based digital imaging software products.
Karl is the author of the following books:
Practical Project Initiation: A Handbook with Tools (Microsoft Press, 2007)
More About Software Requirements: Thorny Issues and Practical Advice (Microsoft Press, 2006)
Software Requirements, 2nd Edition (Microsoft Press, 2003)
Peer Reviews in Software: A Practical Guide (Addison-Wesley, 2002)
Creating a Software Engineering Culture (Dorset House Publishing, 1996)
Karl has also written more than 170 articles on many aspects of software, chemistry, and military history. He has served on the Editorial Board of IEEE Software and as a Contributing Editor for Software Development magazine.
http://www.processimpact.com/bio.shtml
|
|
Boehm, Barry
|
Currently the TRW Professor of Software Engineering, Computer Science Department Director, USC Center for Software Engineering. His current research interests include software process modeling, software requirements engineering, software architectures, software metrics
and cost models, software engineering environments, and knowledge-based software engineering. His contributions to the field include the Constructive Cost Model (COCOMO), the Spiral Model of the
software process, the Theory W (win-win) approach to software management and requirements determination.
http://sunset.usc.edu/Research_Group/barry.html
|
|
Training Opportunities |
| The fact that a course is listed (or not listed) here does not constitute an evaluation or endorsement of the course by the DACS. These are simply links to courses currently available relative to the subject practice. |
|
Offeror
|
Course Description and URL
|
|
American Society for Quality
|
From the web site:
"ASQ's training courses put you and your organization on the fast track to success. Our instructors are industry experts — they average 23 years of experience."
http://www.asq.org/training/
|
|
EdistaLearning
|
EdistaLearning, QAI's initiative, is the elearning suite of Software Engineering and Quality Management courses. "The QAI & Dr. Pressman Series" in the Edista Learning portfolio has courses that draw upon Dr. Pressman's highly successful and the industry's most comprehensive video curriculum in software engineering—Essential Software Engineering. Course categories include, but are not limited to:
Software Engineering Process Approach
Software Project Management
Software Quality Management
Software Configuration Management
Software Testing
Software Estimation
CMMI
IT Services Management
Edista also offers/supports certification exams in most of these areas.
http://www.edistalearning.com
|
|
Fagan Defect-Free Process Course Course
|
This course is offered by Michael Fagan Associates. From the web site:
"The FAGAN DEFECT-FREE PROCESS will be described. It is composed of three interdependent components:
Formal Process Definition,
Fagan Inspection Process, and
Continuous Process Improvement (Removal of Systemic defects from the work process)."
Case studies are included to help the student understand the process.
http://www.mfagan.com/outline_frame.html
|
|
IEEE Reliability Society Tutorial Videos
|
In the past decade the IEEE Reliability Society has produced numerous tutorials in a number of areas of interest to RS members. These tutorials are available in VHS video (PAL/NTSC) and/or CD ROM and come with a printed workbook or documentation integrated with the CD. The videos are co-produced by the IEEE Educational Activities Board and the IEEE Reliability Society. The videos are professionally done, utilizing experts in their fields. For a fraction of the cost of sending a single person to training, you can own a video or CD ROM which will provide state-of-the-art information to your entire workforce.
http://www.ieee.org/portal/site/relsoc/menuitem.e3d19081e6eb2578fb2275875bac26c8/index.jsp?&pName=relsoc_level1&path=relsoc/Training&file=index.xml&xsl=generic.xsl
|
|
QAI Course: Using Measurement for Improving Software Quality
|
From the Quality Assurance Institute (QAI) Web Site:
"Economic pressures, competition, and a better informed consumer are forcing companies to develop and deploy better quality products more quickly and inexpensively. A measurement program is an effective method to identify areas of improvement, to increase the productivity of your employees, and to improve the overall quality of goods and services.
Measurement is necessary to prove the effectiveness of an organization and to increase quality and productivity. Measurement can be used as a thermometer to monitor activities, as a thermostat to change activities, and as radar to serve as an early warning indicator of problems. Measurement is also a management tool to ensure that positive progress is made toward achieving goals and objectives.
This two-day seminar will equip you with a customizable process for measurement designed to drive management's objectives. In this seminar you will learn how to strategically align a measurement program through the use of strategic and tactical dashboards."
http://www.qaiworldwide.org/qaicampus/schedule.html
|
|
Quality America
|
Founded in 1983, Quality America offers Statistical Process Control (SPC) and Document Control software, as well as ASQ Certification materials, SPC Training, and Six Sigma software, training, and consulting.
http://www.qualityamerica.com/
|
|
ReliaSoft Corporation
|
Reliability Software, Training, Consulting & Related Services from ReliaSoft Corporation - ReliaSoft Corporation provides reliability software, reliability training, consulting and services for reliability engineering and related fields.
http://www.ReliaSoft.com
|
|
RIAC Training Courses
|
From the RIAC Web Site:
"The Reliability Information and Analysis Center (RIAC) provides training in virtually every aspect of reliability, maintainability, quality, supportability and interoperability.
RIAC instructors have years of diverse practical reliability problem solving experience. Scheduling is flexible and, most importantly, you can typically train up to 30 people for the cost of sending four people to one of our standard open courses."
http://www.theriac.org/training/courses.swn
|
|
Glossary |
| Anomaly | Any condition that deviates from expectations based on requirements specifications, design documents, standards, etc. or from someone’s perceptions or experiences. Anomalies may be found during, but not limited to, the review, test, analysis, compilation, or use of software products or applicable documentation. [IEEE STANDARDS BOARD, 2002] |
| CMMI | Capability Maturity Model Integration |
| CVS | Concurrent Versions System |
| Defect | (1) Any unintended imperfection that impairs the utility or worth of an item,
(2) Any kind of shortcoming, imperfection or deficiency, (3) Any flaw or imperfection in a software work product or software process. Examples include such things as mistakes, omissions and imperfections in software artifacts, or faults contained in software
sufficiently mature for test or operation. [Abran, 2004] |
| Error | (1) differences between computed, observed, or measured values and the true, specified, or theoretically correct value or conditions, (2) an incorrect step process or data definition, (3) an incorrect result, (4) a human action that produces an incorrect result.
Distinguished by using "error" for (1), "fault" for (2), "failure" for (3), and "mistake" for (4). [IEEE STANDARDS BOARD, 1990] |
| Failure | The inability of a system or component to perform its required functions within specified performance requirements. Note: The fault tolerance discipline distinguishes between a human action (a mistake), a manifestation (a hardware or software fault), the result of a fault (a failure), and the amount by which the result is incorrect (the error). [IEEE STANDARDS BOARD, 1990] |
| Fault | An incorrect step, process, or data definition in a computer program. In common usage, the terms "error" and "bug" are used to express this meaning. [IEEE STANDARDS BOARD, 1990] |
| FRACAS | Failure Reporting Analysis and Corrective Action System. |
| Mistake | A human action that produces an incorrect result. [IEEE STANDARDS BOARD, 1990] |
| ODC | Orthogonal Defect Classification |
| Operational Profile | The set of operations that the software can execute along with the probability with which they occur. [Lyu, 1996] |
Bibliography
| [Abran, 2004] |
Abran, A., J. Moore, P. Bourque, and R. Dupuis, Guide to the Software Engineering Body of Knowledge (SWEBOK): 2004 Version,
IEEE Computer Society
(2004)
|
| [Abts, 2000] |
Abts, C., B. Boehm, A. Brown, S. Chulani, B. Clark, and E. Horowitz, Software Cost Estimation With COCOMO II,
(2000)
|
| [Bassin, 2001] |
Bassin, K., and P. Santhanam, "Managing the Maintenance of Ported, Outsourced, and Legacy Software via Orthogonal Defect Classification",
IEEE International Conference on Software Maintenance
(November 2001):
726-734
|
| [Bhandari, 1992] |
Bhandari, I., J. Chaar, R. Chillarege, M. Halliday, D. Moebus, B. Ray, and M. Wong, "ORTHOGONAL DEFECT CLASSIFICATION - A CONCEPT FOR IN-PROCESS MEASUREMENTS",
IEEE Transactions on Software Engineering
V. 18 N. 11
(November 1992):
pp. 943-956
|
| [Black, 2000] |
Black, R., "Investing in Software Testing: The Cost of Software Quality",
ezine
(January 2000):
p1
|
| [Brown, 1996] |
Brown, N., "INDUSTRIAL-STRENGTH MANAGEMENT STRATEGIES, PP. 94-103.",
IEEE Software
V. 13 N. 4
(July 1996):
94-103
|
| [Brown, 1998] |
Brown, C., S. Cassell, J. Seppy, and Software Productivity Consortium, Inc., Defect Prevention Guidebook,
(1998)
|
| [CMMI PRODUCT TEAM, 2007] |
CMMI PRODUCT TEAM, CMMI for Acquisition, Version 1.2,
Software Engineering Institute, CMU/SEI-2007-TR-017
(2007)
|
| [Campo, 2007] |
Campo, M., and A. Frost, "Advancing Defect Containment to Quantitative Defect Management",
CrossTalk
V. 20 N. 12
(December 2007):
24-28
|
| [Casey, 1991] |
Casey, B., E. Kaldon, J. Sun, and J. Watters, "Application of defect analysis techniques to achieve continuous quality and productivity improvements",
IEEE International Conference on Communications, 1991
(June 1991):
1450-1454
|
| [Chrissis, 2007] |
Chrissis, M., M. Konrad, and S. Shrum, CMMI Second Edition: Guidelines for Process Integration and Product Improvement (Version 1.2),
Addison-Wesley
(2007)
|
| [Demirors, 2000] |
Demirors, O., and O. Yildiz, "Using Cost of Software Quality as a Process Improvement Initiative",
Proceedings of the 26th EuroMicro Conference
(January 2000):
p1
|
| [Earl, 1990] |
Earl, A., A Reference Model for Computer Assisted Software Engineering Environment Frameworks,
(1990)
|
| [El Emam, 2005] |
El Emam, K., The ROI from Software Quality,
(2005)
|
| [Evans, 2006] |
Evans, M., and D. Galorath, Software Sizing, Estimation, and Risk Management,
(2006)
|
| [Fagan, 1986] |
Fagan, M., "Advances in Software Inspections",
IEEE Transactions on Software Engineering
V. 12 N. 7
(July 1986):
pp. 744-751
|
| [Fagan, 1976] |
Fagan, M., "Design and code inspections to reduce errors in program development",
IBM Systems Journal
V. 15 N. 3
(January 1976):
181-211
|
| [Fenton, 1997] |
Fenton, N., and PFLEEGER. SHARI L., Software Metrics: A Rigorous & Practical Approach,
(1997)
|
| [Ferens, 2009] |
Ferens, D., Quality Assurance and Engineering,
DACS Data & Analysis Center for Software
(2009)
|
| [Ferens, 2010] |
Ferens, D., Measurement and Analysis,
DACS Data & Analysis Center for Software
(2010)
|
| [Ferens, 2007] |
Ferens, D., T. Mcgibbon, and R. Vienneau, A Business Case for Software Process Improvement (2007 Update): Measuring Return on investment from Software Engineering,
DACS Data & Analysis Center for Software
(2007)
|
| [Freimut, 2005] |
Freimut, B., L. Briand, and F. Vollei, "Determining Inspection Cost-Effectiveness by Combining Project Data and Expert Opinion",
IEEE Transactions on Software Engineering
V. 31 N. 12
(December 2005):
pp. 1074-1092
|
| [Gack, 2009] |
Gack, G., Software Defect Containment,
Process-Fusion.net
(2009)
|
| [Gokhale, 2002] |
Gokhale, S., and K. Trivedi, "Reliability prediction and sensitivity analysis based on software architecture",
Proceedings of the 13th International Symposium on Software Reliability Engineering (ISSRE 02)
(November 2002):
p64-75
|
| [Gokhale, 1998] |
Gokhale, S., S. Ramani, and K. Trivedi, "SREPT: Software Reliability Estimation and Prediction Tool",
Computer Performance Evaluation
(December 1997):
p1
|
| [Hart, 1982] |
Hart, J., "THE EFFECTIVENESS OF DESIGN AND CODE WALKTHROUGHS",
COMPSAC 1982, Proceedings
(November 1982):
p1
|
| [Hofmann, 2007] |
Hofmann, H., D. Yedlin, J. Mishler, and S. Kushner, CMMI For Outsourcing: Guidelines for Software, Systems, and IT Acquisition,
Pearson Education Inc.
(2007)
|
| [IEEE STANDARDS BOARD, 1990] |
IEEE STANDARDS BOARD, IEEE Standard Glossary of Software Engineering Terminology, IEEE Std 610.12-1990,
IEEE
(1990)
|
| [IEEE STANDARDS BOARD, 2002] |
IEEE STANDARDS BOARD, IEEE Standard Classification for Software Anomalies, IEEE Std 1044-1993(R2002),
IEEE
(2002)
|
| [IEEE STANDARDS BOARD, 1996] |
IEEE STANDARDS BOARD, IEEE Guide to Classification for Software Anomalies,
IEEE
(1996)
|
| [Jones, 2008] |
Jones, C., Applied Software Measurement - Third Edition,
McGraw-Hill Book Company
(2008)
|
| [Jones, 2007] |
Jones, C., "Geriatric Issues of Aging Software",
CrossTalk
V. 20 N. 12
(December 2007):
4-8
|
| [Kan, 1995] |
Kan, S., Metrics and Models in Software Quality Engineering,
(1995)
|
| [Konrad, 2003] |
Konrad, M., S. Shrum, and M. Chrissis, CMMI Guidelines for Integration and Product Improvement,
Addison-Wesley Publishing Company
(2003)
|
| [Konrad, 1997] |
Konrad, M., S. Shrum, and M. Chrissis, Software Engineering 1997 Edition,
The Institute of Electrical and Electronics Engineers Inc.
(1997)
|
| [Lindvall, 2003] |
Lindvall, M., D. Cohen, and P. Costa, Agile Software Development,
(2003)
|
| [Linger, 1999] |
Linger, R., J. Poore, S. Prowell, and C. Trammell, Cleanroom Software Engineering: Technology and Process,
(1999)
|
| [Lyu, 1996] |
Lyu, M., Handbook of Software Reliability Engineering,
(1996)
|
| [Malaiya, 2000] |
Malaiya, Y., and J. Denton, "Module size distribution and defect density",
(October 2000):
62 - 71
|
| [Mann, 1974] |
Mann, N., R. Schafer, and N. Singpurwalla, Methods for Statistical Analysis of Reliability and Life Data,
John Wiley & Sons Inc.
(1974)
|
| [Marciniak, 1994] |
Marciniak, J., Encyclopedia of Software Engineering,
(1994)
|
| [Mcgarry, 2002] |
Mcgarry, J., B. Layman, E. Clark, J. Dean, F. Hall, D. Card, and C. Jones, Practical Software Measurement: Objective Information for Decision Makers,
Addison Wesley
(2002)
|
| [Mcmanus, 1999] |
Mcmanus, J., and G. Schulmeyer, Handbook of Software Quality Assurance - 3rd Edition,
(1999)
|
| [Mohapatra, 2001] |
Mohapatra, S., and B. Mohanty, "Defect prevention through defect prediction",
IEEE International Conference on Software Maintenance
(November 2001):
260-272
|
| [Musa, 1999] |
Musa, J., Software Reliability Engineering: More Reliable Software; Faster Development and Testing,
(1999)
|
| [Myers, 2003] |
Myers, W., and L. Putnam, Five Core Metrics: The Intelligence Behind Successful Software Management,
(2003)
|
| [Nicholls, 2001] |
Nicholls, D., E. Fedchak, and R. Vienneau, The DACS Software Reliability Sourcebook,
(2001)
|
| [Paul, 2000] |
Paul, R., F. Bastani, I. Yen, and V. Challagulla, "Defect-based reliability analysis for mission-critical software",
Compsac 2000
(October 2000):
p1
|
| [Paulk, 1994] |
Paulk, M., C. Weber, B. Curtis, and M. Chrissis, The Capability Maturity Model: Guidelines for Improving the Software Process,
Addison-Wesley Professional
(1994)
|
| [Polydys, 2009] |
Polydys, M., and S. Wisseman, "Software Assurance in Acquisition: Mitigating Risks to the Enterprise",
(February 2009):
p1
|
| [Pressman, 2005] |
Pressman, R., Software Engineering: A Practitioner's Approach - sixth edition,
(2005)
|
| [Project Management Institute, 2008] |
Project Management Institute, A Guide to the Project Management Body of Knowledge (PMBOK GUIDE): Fourth Edition,
Project Management Institute, Inc.
(2008)
|
| [SPMN, 2000] |
SPMN, Sixteen Critical Software Practices for Performance-Based Measurement, Version 5.2,
(2000)
|
| [Schwalbe, 2006] |
Schwalbe, K., Information Technology Project Management: Fourth Edition,
Thomson Course Technology
(2006)
|
| [Tian, 2005] |
Tian, J., Software Quality Engineering: Testing, Quality Assurance, and Quantifiable Improvement,
(2005)
|
| [Turner, 2002] |
Turner, R., "Implementation of Best Practices in US Department of Defense Software-Intensive Systems Acquisitions",
George Washington University
(January 2002):
p1
|
| [Van Solingen, 1999] |
Van Solingen, R., and E. Berghout, The Goal/Question/Metric Method: A Practical Guide for Quality Improvement of Software Development,
(1999)
|
| [Walker, 2005] |
Walker, E., GOAL-QUESTION-METRIC (GQM) APPROACH,
(2005)
|
| [Webb, 2008] |
Webb, G., and L. Patton, "Quality and Cost - It's Not Either/Or: Making the Case With Cost of Quality",
CrossTalk
V. 21 N. 11
(November 2008):
23-28
|
|