Академический Документы
Профессиональный Документы
Культура Документы
By:
Aakash Juneja
Jaskaran S. Gandhi
Phong Nguyen
Saba Yaghoobi Saray
Table of Contents
Abstract ................................................................................................................................................. 4
1.
Background ................................................................................................................................... 11
a.
Motorola....................................................................................................................................... 34
b.
References ................................................................................................................................. 49
Abstract
Software development is the active conduct of program design systems as they are
retained and improved over their periods. Software systems need to repeatedly change during
their life cycle for numerous causes; adding new features to satisfy user requirements, changing
business needs, introducing novel technologies, correcting faults, improving quality, etc. The
increase of changes, along the development of a software system, can lead to a bad quality. It is,
thus vital to observe how software quality changes so that quality assurance activities can be
correctly scheduled. Software quality is basically a field of study and practice that describes the
necessary qualities of software products.
Software metrics can be used to examine the improvement of the software systems
quality. Empirical sign occurs presenting that there exists a connection among metrics and
software quality. Software metric is a tool for accepting changing phases of the code base, and
the development of the plan. The goal is gaining impartial, reproducible, and computable
measurements, which may have plentiful valued applications in plan and budget planning, cost
estimation, quality assurance testing, software debugging, software performance optimization,
and optimal personnel task assignments.
What seems to be challenging on the way of quality engineering and management is that
the word quality per se is kind of unclear and this problem can consequences to mistake in
delicate processes. There are numerous details behind this mistake. First of all, each person can
have different knowledge about the idea of quality based on their perspectives. Secondly, there
are different levels of concept for each term; while you are debating about quality, we may refer
to the inclusive meaning of quality, or you may refer to obvious sense of it. Moreover, since we
use the term quality in our day to day language it causes difficulties on the technique of using
this term in specialized positions, as these two are so different.
We are planning to discourse the goal of software quality metrics on this paper, while we
explain about metrics classification in software quality namely product metrics, project metrics,
and in-process quality metrics. Meanwhile, we are going to discuss the importance of collecting
software engineering data. In other words, the accumulated data will be the results of welldefined metrics and may help to improve our system quality.
Our world uses software everywhere. Every profession depends on it, every cell-phone
needs software, and even each car depend on it. Without software, our world would fall apart.
With this in mind, the quality of that software is important. Because it is widely used, low
quality software is not satisfactory. But what is software quality? High quality software meets
the needs of customers while being reliable, well supported, maintainable, portable, and easily
integrated with other tools. The most basic search in a software quality would be lack of bugs. It
is important that our requirements have as minimum bugs as possible because it will cost a lot of
fix them later on in the software cycle; if the software contains too many defects, the requirement
will be unfulfilled. We express these two ways: defect rate which is no. of defects/million lines
of code and reliability which is no. of failures per n hours of action and mean time failure.
Customer approval is usually measured by taking the percent between (neutral and nonhappy) by the customer satisfaction surveys. To decrease unfairness, methods such as blind
surveys are frequently used. In addition to complete client contentment with the software
product, satisfaction toward specific qualities is also estimated. For example, IBM estimates
satisfaction with their software products in terms of capability, functionality, usability,
performance, reliability, install ability, maintainability, documentation, service, and overall.
Hewlett-Packard focuses on functionality, usability, reliability, performance, and service ability.
Other corporations use related measurements of software customer satisfaction.
We must take these quality attributes into account in the planning and design phases of the
software to increase overall customer satisfaction. However, these quality attributes are not
always mix well with each other. For example, it is hard to attain maintainability when the
complexity of the product is high. Depending on the type of product and customers, different
factors are mandatory for different feature attributes example real-time processing, performance
and reliability might be the most significant attributes. For customers with individual systems
and simple operations, documentation may be more important.
Software metrics is used to define the wide-ranging of activities used with measurement. The
practice of metrics involves measures and metrics which leads to long term process
improvement. It assesses the state of the project, tracks potential risks, uncover problem areas,
adjust workflow or tasks, and evaluate teams ability to control quality. Software product metrics
focuses on measuring attributes of the software product, which is any object or document
subsequent from the software development method. Software product objects descent into one of
the four categories: specifications, designs, source code, and test records.
Software metric is simply measurement of software and primary purpose is to help plan and
foresee software growth. Any software metric is an effort to measure or foresee some attribute of
software, process, or resource. Attributes can be internal or external. Internal attributes are those
of the system representations, such as design diagrams, coding or documentation which can be
controlled and measured directly, but their measurement slight off unless there is indication that
the specific metric is related to an external attribute. Examples of internal attributes of source
code are:
Size
Complexity
Coupling
Modularity and
Reuse.
External attributes are usually those influenced by the system in implementation and cannot be
measured directly. They are for example:
Functionality
Reliability
Usability
Efficiency
Maintainability and
Portability
External attributes are important because knowing or foreseeing them plays a vital role in quality
assurance. Some internal attributes are connected with external attributes therefore their metrics
can be used as secondary measures for external attributes.
Software testing is the process of recognizing the errors or defects in the system and make sure it
is resistant with the customer requirements before releasing it to the market. But testing can
never guarantee 100% bug free software. This might show the unpredictability and
ineffectiveness of testing process or testing procedures followed, it could also account the human
mistakes in case of manual testing or script errors in case of automated testing. This indirectly
influences the quality of the software. Hence, in order to increase the software quality, certain
procedures and guidelines need to be placed down and match the efficiency of the software.
Every software experiences the risk phase. Hence risk management is a very significant factor
which needs to be taken care in order to recover the software quality, consistency and strength of
the software. There should be high amount of clearness as to where the software views in terms
of quality, quantity, development, customer efficiency, obedience to requirements etc. This raises
a distress to have an efficient metric and report based procedure, thus giving growth to test
metrics and reports.
Following are the arguments that support why software testing metrics are necessary.
Metrics helps in tracking of the project status and supports in presenting the statistics to
the senior management in a structured way.
Metrics and reports help in accumulating data using which further processes in testing
can be completed more effectively.
Software Metrics and reports help in both project management and process management
Metrics can directly impact both the effectiveness and productivity of a software
Helps in early defect detection and defect removal, thus reducing the cost of defects
Metrics also act as a benchmark for estimations and provide bottleneck to the testers
Software metrics are used to obtain objective measurements that can be useful for quality
assurance, performance, correcting, managing, controlling and estimating costs. Finding defects
in code (post release and prior to release), foreseeing faulty code, calculating project success, and
predicting project risk. The utility of metrics is limited to quantifying one of the following goals:
Schedule of a software project, Size/complexity of development involved, cost of project, and
quality of software
To summarize, the goal of software metric is to understand the state of the software product.
Hence, it is very much vital to select the correct set of metrics for our product during the testing
process.
1.4 Types of MetricsRequirements metrics
Size of requirements
Traceability
Completeness
Volatility
Product Metrics
Code metrics
Design metrics work out from requirements or design documents before the system has
been implemented
Object oriented metrics- helps in finding faults, and allow team to see directly how to
make their classes and objects simpler.
Test metrics
Process metrics
Frequently used by management to check the budget and processes for efficiency.
Evaluate and track aspects of the software design process like: human resources, time,
and schedule
2. Background
First thing we need to consider when we are talking about the background of software
measurement is the potential impact of the different software development models on quality.
What seems impossible is discussing software metrics and models without considering the effect
of software development process type on them. Depending on our projects goals and objectives
we designate the preferred software development model among the variety of different processes
and methodologies. Based on which objectives we are pointing at, there are several development
life cycle models to adopt. Each of the known models defines different stages of the process and
also dissimilar set of orders in which the stages should be performed.
Here, we are going to discuss two of the best or the most popular life cycles. Meanwhile, we are
going to explain why it is needed to merge the metrics.
For outsized companies, having huge and complicated development projects, structural tactic
plays a significant role. Using this approach, during the process, bunch of documents must be
created for future use in testing and maintenance arenas. The most important aspect of this
method is making large projects easier to manage and possible for on time delivery without cost
escalations.
Software Quality Metrics are a subclass of software metrics that emphasis on the quality
features of the product, process, and project. In most cases, software quality metrics are more
thoroughly related with process and product metrics rather than with project metrics. Software
metrics can be categorized into 3 classifications:
Product Metrics
Process Metrics
Project Metrics
Product metrics help software engineers to better appreciate the qualities of models and
measure the quality of software by describing the characteristics of the product such as size,
difficulty, design features, presentation, etc. A vision into the design and structure of the
software is provided, and also they help in measuring quality based on a set of distinct rules, that
helps the software engineers. Process metrics are composed over a long period of time through
all projects, and they can be used to help improve software development & maintenance, and aid
in making strategic decisions. The goal is long-term process improvement that could be attained
by providing a set of process indicators. Project metrics are used by project managers and a team
of software designers to adjust project workflow and practical activities that allows them to
define project features and implementation designs. At times, metrics belong to multiple
categories: in-process quality metrics of a project both involve process metrics as well as project
metrics.
Having said above that, software quality metrics are closely associated to process and
product metrics rather than with project metrics; the parameters related to project development
such as the number of developers, their individual skill levels, the size of the project, etc.
certainly affects the quality of the product. The intention of Software Quality Engineering is to
look in to the relationships that exist amongst in-process metrics, project characteristics, and endproduct quality. The findings of this research helps in engineering improvements in both process
and product quality.
In the discussions below, we shall discuss several kinds of metrics in each of the three
classifications of software quality metrics as described briefly above.
Software
Metrics
Product
Metrics
Process
Metrics
Dynamic
Metrics
Static Metrics
LOC
Size Metrics
Design
Metrics
Control Flow
Metrics
Information
Metrics
Token Count
Function
Count
Function
Count
Henry &
Kafura
Weighed
Metrics
Data
Structure
Metrics
Software
Science
Metrics
Testability
Efficiency Product Metrics The degree of measure to which a product can attain that
anticipated level of quality carefully.
Effectiveness Product Metrics The degree of measure to which the product is attaining
anticipated levels of quality.
Elegance Product Metrics The extent of measure to which a product effectively and
efficiently achieves the results in an elegant, and well-executed way.
A Quality Metric is a predictor for Product Quality, and both are used to degree the
properties of software and at the same time help in refining a system module by matching them
with current better-quality systems.
The effectiveness, efficiency, and elegance with which the product is achieving those
objectives should be taken into consideration.
Devise measurable metrics, either direct or surrogate, for each effectiveness, efficiency,
and elegance question.
Determine realistic goals for each metric, such that we can have a high level of
confidence in the quality and test coverage for the product prior to release.
Monitor progress towards those goals, determining product status, and making test &
project control decisions as needed to optimize product quality and test-coverage
outcomes.
3.1.1 Scenario
We have the following information on a project:
It has been assumed that we are on schedule as per the text execution. However, this
information is not accurate enough to confirm that this product will be of standard quality by the
last phase. Since, this information is not accurate, we would need product metrics to assist us in
determining the quality throughout test execution, and at the same time making sure that quality
is on track for successful delivery of the product. Testing Product Metrics are focused on the
quality of the system under test, and it is important to have this information on testing
dashboards so that the stakeholders, participants, and other involved members are on the same
track.
In addition to making sure the quality of the product is at par, Product Metrics also reflect
the entire teams efforts towards quality. Stakeholders, and the management are key as theyre
the ones who determine the software process and its quality capabilities, and the only role of the
testing team is to measure quality, and they cannot control the behaviors of stakeholders or
management with respect to quality.
The objectives for test coverage and quality for every product vary, but often includes
ensuring complete coverage of requirements. A requirements coverage table would help in
monitoring progress towards the goals of complete testing and fulfillment of the requirements, as
shown below [3]:
3.1.2 Goal
An analytical requirements based test strategy is used, and one or more tests should be
created for every requirement during the test design & implementation phase. If bi-directional
traceability is maintained, complete coverage can then be assured. During test execution, we run
these tests, and we can report the results in terms of requirements fulfilled, and unfilled using the
traceability.
The progress can be monitored towards these goals of complete testing and fulfillment of
requirements by using the metrics analysis as shown in the table above. At the same time, the
table helps in understanding the quality of the product and it eases the decisions to make test and
project control decisions that help us to achieve the best possible test coverage.
The table above depicts quality stands on the major requirements groups for an ecommerce site, and the status of each requirement in each group. Based on the analysis, the
status of each requirement may be determined as follows:
If all the tests related to requirement have been run, then it is said that the requirement
is tested.
If all the tests related to requirement have been run and have passed, then it is said
that the requirement is also classified as passed.
If all the tests relayed to requirement have been run, but one or more have failed, then
it is said that the requirement is classified as failed.
If any of the tests related to requirements are blocked, then it is said that the
requirement is classified as blocked.
If the metrics in a table highlight problems, then it is very helpful for the engineers. This helps to
increase the level of confidence in terms of positive measurements of requirements. Practically,
it is difficult to develop metrics that will predict the quality for software, but with multidimensional coverage metrics, we can have a higher level of confidence when it comes to
satisfaction.
product quality risk to an acceptable level, and these two questions can be taken into
consideration:
For each quality risk category, how effectively are we reducing quality risk?
Answering the first question, when using a risk based strategy, each quality risk item
deemed sufficiently important for testing should have one or more tests create for it during test
design and implementation. With the help of bi-directional traceability, the coverage can be
assured and measured between the tests and the risk items.
The tests are run and defects are reported during test execution. Bi-directional traceability
is needed between the defects and risk items as well in addition to the test results and risk items.
This enables us to report which risks are fully mitigated, which risks are partially mitigated, and
which risks are unmitigated.
Other Risks
The above figure graphically represents all information across all risk items. The region
in green represents risks for which all tests were run and passed. The region in orange represents
risks for which at least one tests has failed or at least one must-fix bug is known. The region in
blue represents other risks, which have no known must-fix bugs but still have tests pending to
run.
Other Risks
Other Risks
As mentioned above, the green region completely takes over all the regions during the
end of the testing phase, and the blue region would slowly be faded out that is a good sign since
it represents unmitigated risks.
When a risk-based test strategy is followed, the project management team decides
adequate test coverage. The risks are said to be balance, and quality risk mitigation has been
optimized only if the project management team believes that the quality risks posed by known
defects, test failures or yet un-run tests are acceptable, compared to the schedule and budget risks
associated to continue the testing.
The basis for in-process quality management is formed by the following metrics:
1. Defect density during Machine Testing: The defect rate is correlated to the defect rate
during formal machine testing. A higher defect rate is an indicator that during the development
phase, the software was injected with a lot of errors. In some cases, the extra-ordinary testing
effort could also be the reason for a high defect rate. A uniform distribution is never followed by
software defect density. If a piece of code has higher testing defects, it is a result of more
effective testing or it could be because of higher latent defects in the code. The team of engineers
can use the following scenarios to judge the release quality [1]:
If the defect rate during testing is the same or lower than that of the previous
release, then ask: Does the testing for the current release deteriorate?
If the answer is no, the quality perspective is positive.
If the answer is yes, extra testing needs to be done.
If the defect rate during testing is substantially higher than that of the previous
release, then ask: Did we plan for and actually improve testing effectiveness?
If the answer is no, the quality perspective is negative. The only
remedial approach in this case is to do more testing, which yields
higher defect rates.
If the answer is yes, then the quality perspective is the same or
positive.
2. Defect arrival pattern during Machine Testing: The defect density during testing is a
summary indicator. More information is given by the pattern of defect arrivals. Even with the
same overall defect rate during testing, different patterns of defect arrivals indicate different
quality levels in the field. Both the defect arrival rate and the cumulative defect rate are shown
by the figure below. The objective of this pattern is always to look for defect arrivals that
stabilize at a very low level, or times between failures that are far apart, before ending the testing
effort and releasing the software to the field. These declining patterns of defect arrival during
testing are indeed the basic assumption of many software reliability models, and the time unit for
observing these patterns is usually weeks and months. [1]
There are three slightly different metrics when we talk about defect arrival patterns
during testing:
The defects reported during the testing phase by time interval. These are just the
raw number of arrivals, not all of which are valid defects.
The true defect pattern is the pattern of valid defect arrivals when problem
determination is done on the reported problems.
3. Phase-based defect removal pattern: The test defect density metric extends to the
phase-based defect removal pattern. It requires the tracking of defects at all phases of the
development cycle (including design reviews, code inspections, and formal verifications) in
addition to testing. Conducting formal reviews or functional verifications to enhance the defect
removal capability of the process reduces error injection, and the overall defect removal ability
of the development process is reflected by the pattern of phase-based defect removal.
Many development organizations use metrics like inspection coverage and inspection
effort for in-process quality management. The figure below shows the patterns of defect removal
of two development projects: Project A was front-end and Project B was heavily testingdependent for removing defects. The different phases of defect removal are high-level design
review (I0), low-level design review (I1), code inspection (I2), unit test (UT), component test
(CT), and system test (ST).
DRE= (Defects removed during development phase/Defects latent in the product) x 100%
The total number of latent defects in the product at any given phase is not known, the
denominator of the metric can only be approximated. It is usually estimated by:
For each phase, and for the front end, the metric can be calculated. It is known as early
defect removal and phase effectiveness when used for the front end, and other specific phases.
The higher the value of the metric, the more effective the development process and hence, the
fewer the defects are likely to escape to the next phase. The figure below shows DRE by phase
for a software project, the weakest phases were unit test (UT), code inspections (I2), and
component testing (CT). The action plans to improve the effectiveness of these phases were then
established and deployed.
3.3 Resources
There are certain metrics related to resource distribution measurement such as: utilization
percentage, effort distribution, capacity/load, and response time.
Response Time:
Using response time metric, we will be able to recognize what is the state of our
desired resource. By picking a baseline, we will have a scale to use later on. The next
step is comparing the response times to the baseline whenever we are trying to access
a resource. It is so simple:
Comparison
Resource status
Resource is available
Resource is overloaded
Utilization Percentage
(Total Effort spent by resource) / (Total Budgeted Effort for the resource)
Utilization Percentage simply provides the utilization related to a specific resource in
order to avoid having under-utilized or over-utilized resources. Here, the point to
keep in mind is that the utilization stages should be kept optimal.
Capacity/Load:
It is the best utensil to calculate the maximum load that your project can tolerate and
by using this you can easily figure out if your project is kind of overloaded.
Ratio amount
Project status
Ratio =1
Ideal
Ratio <1
Ratio >1
Project is overloaded
Table 3: Capacity/Load
Effort Distribution:
It is supposed to show the share of particular resources among a number of
tasks/components. We use pie charts to show the percentage of resources assigned to
each task or component more clearly. For sure, one of the ways to ensure about the
appropriate distribution of resources is using effort distribution measure.
Resource Destribution
Requirement Analysis
0.05
0.05
0.2
Design
Implementation
0.2
Testing
Documentation
0.3
Rework
0.27
enthusiastic [100]. One of the few companies that was able to positively turn metrics into
improvement was Motorola.
The managers and engineers at Motorola were yearning for more understanding and insight into
the software development process of their company. They wanted to see if improvement could
be done to quality, productivity, and cycle time.
The first step Motorola did was to define a Metrics Working Group (MWG) in their
organization. This group would be in charge of establishing and defining a company-wide
adopted set of software metrics to be used for improving the quality of the software. This group
was and is very successful in their work, they have been responsible for numerous processes and
metrics in the company. One of these being the Goal/Question/Metric approach.
Measurement is not the goal. The goal is improvement through measurement, analysis, and
feedback. That was the philosophy of the Motorola software metrics initiative. This philosophy
was put in practice when senior management made it a requirement to software development
process (in their Quality Policy for Software Development (QPSD)). The target areas in this
requirement were:
Adherence to schedule;
Estimation accuracy;
Cost of nonconformance;
Software reliability.
There actually were some conflicts by all the different business units on deciding the proper
definition on terms like software problem, fault, and many more. These were to be
eventually settled though for the progress of the companys software metrics goals. After the
definitions and other small problems were settled, a Goal/Question/Metric structure was decided,
and this structure had 7 goals:
1. Improve project planning,
2. increase defect containment,
3. increase software reliability,
4. decrease software defect density,
5. improve customer service,
6. reduce the cost of nonconformance
7. increase software productivity
Using these goals, they went on to crease metrics based on the scope.
Below, Ive listed some of the metrics that were borne to address these goals. These metrics are
by no means set in stone and can always change over time due to feedback and effectiveness:
Metric 1.1: Schedule Estimation Accuracy (SEA) = Actual Project Duration / Estimated
Projection Duration (goal 1)
Metric 1.2: Effort Estimation Accuracy (EEA) = Actual Project effort / Estimated Project Effort
(goal 1)
Metric 2.1: Total Defect Containment Effectiveness (TDCE) = Number of pre-release defects /
(number of pre-release defects + number of post-release defects) (goal 2)
Metric 2.2: Phase Containment Effectiveness for phase I (PCEi) = number of phase I errors /
(number of phase I errors + number of phase I defects) (goal 2)
Metric 3.1: Failure Rate (FR) = number of failures / execution time (goal 3)
Metric 4.1a: In-Process Faults (IPF) = in-process faults caused by incremental software
development / assembly-equivalent delta source size (goal 4)
Metric 4.1b: In-Process Defects (IPD) = in-process defects caused by incremental software
development / assembly-equivalent delta source size (goal 4)
Metric 4.2a: Total Released Defects total (TRD total) = number of released defects / assemblyequivalent total source size (goal 4)
Metric 4.2b: Total Released Defects delta (TRD delta) = number of released defects caused by
incremental software development / assembly-equivalent total source size (goal 4)
Metric 4.3a: Customer-Found Defects total (CFD total) = number of customer-found defects /
assembly-equivalent total source size (goal 4)
Metric 4.3b: Customer-Found Defects delta (CFD delta) = number of customer-found defects
found by incremental software development / assembly-equivalent total source size (goal 4)
Metric 5.1: New Open Problems (NOP) = total new post-release problems opened during the
month (goal 5)
Metric 5.2: Total Open Problems (TOP) = total number of post-release problems that remain
open at the end of the month (goal 5)
Metric 5.3: (mean) Age of Open Problems (AOP) = (total time post-release problems remaining
open at the end of the month have been open) / (number of open post-release problems remaining
open at the end of the month) (goal 5)
Metric 5.4: (mean) Age of Closed Problems (ACP) = total time post-release problem closed
within the month were open / number of post-release problems closed within the month (goal 5)
Metric 6.1: Cost of Fixing Problems (CFP) = dollar cost associated with fixing post-release
problems within the month (goal 6)
Metric 7.1a: Software Productivity total (SP total) = assembly-equivalent total source size /
software development effort (goal 7)
Metric 7.1b: Software Productivity delta (SP delta) = assembly-equivalent total source size /
software development effort (goal 7)
Alongside the goals and metrics, Motorola encouraged each software project/business unit to
create their own goals using the agreed-upon metrics based on how they were faring (baseline).
Not to say that one area would be more important than the other, but there were some that stood
out. One of the most important areas was the defect data area. Because if properly analyzed and
addressed, the information gathered would lead to significant improvement. Other metric areas
such as estimation accuracy and software problem-related really helped the units/projects get a
better grip on things.
To complete their engraining of software metrics into their company and its culture, Motorola
wanted to build a software metrics infrastructure, not only would this include the MWG, it would
go to include the Metrics User Group (MUG). This group was established as a forum to share
experiences of software metrics implementation. This group would meet every quarter to share
their experiences with things like tools to automate metrics. Also, there were many additions
and outputs created by this infrastructure. Bullet-pointed below are some of these changes
established by the MWG:
Two-day training workshops set up for training and consulting support of metric
implementation
A standardized requirements for the automation of data collection and analysis to give to
the tools group making them.
A criteria for the evaluation of metric tracking systems to choose one to buy if necessary.
Also, theres a current list of all the metric tools available if anyone wants to use it.
Support for analysis of the metric data collected and some generic defect classification
scheme and their respective examples for using them to recommend improvements.
One of MWGs great contribution is their metric and process definition for software review and
test processes. A survey of the software engineers and managers showed that 67% of them use a
software review package made by MWG. The MWG was also faced with requests to centralize
all of the metric data but they decided that it was best to keep the data localized to which ever
entity needed it.
So how did software metrics turn out for Motorola? Wed have to say pretty well! Motorolas
focus on improving their software quality through metrics turned in an astounding 50 time
reduction in software defect density within 3.5 years. Thats amazing. This reduction led
straight to cost reduction and cycle time reduction too! Not to boot that in 1988, the Motorola
Company was awarded the First Malcolm Baldrige national Quality award.
Example 2b. Hewlett - Packard
Another well-known successful metric-user is Hewlett-Packard (HP). One of HPs great story is
how the use of software inspection metrics helped them achieve different levels of success in
finding defects early in the software development life cycle. Its not surprising to say that by
finding those early defects, HP went on to save countless effort and money. This successful
project which they embarked on was called the sales and inventory tracking (SIT) project.
Though there were many various goals for this project, it all involved the same type of data:
computer dealer sales and inventory levels of HP products. Because that was the case, HP
decided to centralize all of the data for the SIT project to make it easy access.
HP followed their normal software life cycle of investigation, design, construction and testing,
implementation and release, and post-implementation review. But in this case, the metrics were
only being used for inspection and testing in the design, and construction and testing phase. In
the inspection process, HP broke it down into an 8 step process:
Step 0: Planning
Step 1: Kickoff
Step 2: Preparation
Step 3: Issue and Question Logging
Step 4: Cause Brainstorming
Step 5: Question and Answer
Step 6: Rework
Step 7: Follow-up
On a funny side note, HP found it much more effective to change the term defect to issue and
question logging because they realized calling something a defect makes the author/engineer
less receptive to the process of improvement.
So which metrics did HP decide to collect for this SIT project? There were three forms used to
collect the inspection metrics. First one was the inspection issue log. The second was the
inspection summary form. And the last was the inspection data summary and analysis form.
From these, HPs team selected for key metrics and those were:
1. Number of critical defects found and fixed
2. Number of noncritical defects found and fixed
3. Total time used by inspections
4. Total time saved by inspections
Their testing process was broken down into test planning, unit testing, module testing, and
system testing. Of course not all of these are created equal and theres only a finite amount of
resources so HP created their Master Test Plan after their assessment to know where to spend the
time and effort at. The system that was to be inspected would be broken down into logical
modules. Each module performed a different specific function. The Master Test Plan told of
how the primary and secondary features were to be tested against their respective product
specifications and how accurate the output of the data was, not to mention the given goals of
optimum speed and efficiency, ease of user use, and system supportability.
It was the risk assessments turn in their test planning phase. They took the modules and their
sub modules and assigned a risk number to it. That number involved their operational
importance to overall system functionality, complexity, and technical difficulty.
The unit testing was done on all the jobs and program streams. Each program and job stream
were counted as an individual entity. HP had the author of those entities to do their own testing
respectively to save money and time. Those authors then filled out the forms for further analysis.
The module testing was more of a double-checking type test. Since after the unit tests were
done, the module testing was there just to ensure that all of them worked together in a nice
cohesive manner. After that came the system testing. HP decided to conduct the system test
along with a pilot test at one of their HP dealers. The values gathered there was then inputted
into their central SIT database. The testing done had their own metrics, and there were two kids
of those used to measure their testing effort:
1) Total number of critical defects and
2) Total testing time for each phase
So how did HP decide if all of this was worth it or not? HP used an ROI model to measure the
value of inspections and testing in terms of how much time it saved and how quick it got it to the
market. Their reasoning, which is a sound one, is that there should be a value put on how much
time is saved if a defect was found in the inspection/testing phase than if it was found after at the
system test phase.
The model had these metrics to be gathered and analyzed:
Total Time Saved = Total Time Saved by inspection + Total Time Saved by Unit and Module
Testing
Total Time Used = Total Time used by inspection + OTtal Time used by Unit and Module
Testing
Prerelease ROI = Total Time Saved / Total Time Used
Inspection ROI = Total Time Saved by Inspection / Total Time used by inspection
Testing ROI = Total Time Saved by Unit and Module Testing / Total Time used by unit and
module testing
Total Time Saved by Inspection = time saved on critical defects + time saved on noncritical
defects
Total Time used by inspection = Inspection Time + Time to Fix and follow up for defect
resolution
Time Saved on Critical Defects = Black Box Testing Time x Number of Critical Defects Total
Time Used
Mean Total Time to Rework (MTTR) = Time to Find defect + time to Fix defect + Time to
release to Production
Time Saved on Noncritical Defects = MTTR x Number of Noncritical defects
Total Time Saved = Time Saved on Critical defects
Total Time Used = Time to design and build a test + time to execute + time to find and fix a
defect
Thus another case of software metrics gone right. It is good to have the numbers back up the
practice.
Conclusion
We have just shown two examples of real world applications of software metrics in action. In
both cases we saw how successful they were and if done right, using software metrics can benefit
the project/company in quite a big way. We also see, though, that it takes a lot of effort and
commitment to make software measurement work. These two companies are actually in the
minority of real-life examples gone right. Today, there is still resistance to the implementation
and follow through of solid software metrics. It takes time, effort, cooperation, and a lot of
communication to get it done, but it is well worth it.
The basic advantage of software metrics become apparent during the process of
providing feedback to managers about the evolution and quality of the software
during several phases of software development life cycle.
One of the possible usages of software metrics is in the defining of software quality
specifications.
Software metrics can simply be used to enhance the comparison process between the
varieties of design approaches for software systems.
Software metrics are beneficial when you need a prediction about the amount of
effort needed to be put in the design and development of the software systems. It may
be possible by analyzing the old data related to some similar standard software
processes.
Software metrics can be used to measure the complexity of the software under
development.
In some circumstances you need to divide the complicated modules in your system to
smaller pieces in order to reduce the percentage of softwares complexity. Using
software metrics can help you to decide when the correct time is to stop the division
process.
For appropriate utilization decisions resource managers need to use software metrics
to provide them a correct view.
In situations that you need to make important design decisions for software
developments issues related to maintenance costs you can basically take advantage of
software metrics to make design tradeoffs.
When you are trying to find the best solution for allocating your available resources
in order to test the developed softwares ode, software metrics seem such a useful
tool.
Software metrics are difficult to apply in some cases, and that increases the cost of
application.
Since software metrics are based on data that has been recorded in the past, its
authenticity is difficult to verify.
Software products can be managed, and their quality could be verified but Software
Metrics are not useful to evaluate the performance of the engineers.
Most of the applications of Software Metrics are based on assumptions, whose definitions
and derivations are not verified.
As you can see above, all the methods and tools of discussed are very old, and empirical.
Estimation is key in Software Metrics, and verifying the authenticity of these estimations
is very hard.
6. References
Subramaniam, Anand. "Project Metrics & Measures." Project Metrics & Measures.
Slideshare.net, 28 July 2009. Web. 03 Dec. 2014.