Module 5
Module 5
Unit Structure
Objectives
Introduction
An Overview
Quality Plans
Summary
Exercise
OBJECTIVES
INTRODUCTION
1. Safety – Poor quality in software can be hazardous to human life and safety.
Quality problems can impact the functionality of the software products. Jon
Quigley discussed the impact of configuration defects that effected safety in
SPaMCAST 346.
2. Cost – Quality issues cost money to fix. Whether you believe that a defect is
100x more costly to fix late in the development cycle or not, doing work
over because it is defective does not deliver more value than doing it right
once.
3. Customer Satisfaction (internal) – Poor quality leads stakeholders to look for
someone else to do your job or perhaps shipping your job and all your
friend’s jobs somewhere else. Recognize that the stakeholders experience as
the software is being developed, tested and implemented is just as critical as
the raw number of defects.
4. Customer Satisfaction (external) – Software products that don’t work, are
hard to use (when they don’t need to be) or are buggy don’t tend not to last
long in the marketplace. Remember that in today’s social media driven world
every complaint that gets online has a ripple effect. Our goal should be to
avoid problems that can be avoided.
5. Future Value – Avoiding quality problems increases the amount of time
available for the next project or the next set of features. Increasing quality
also improves team morale, improved team morale is directly correlated with
increased productivity (which will increase customer satisfaction and reduce
cost).
Importance of Software Quality
The Seven Aspects(importance) of Software Quality
Software engineering is a complex field. Good software engineers are capable of
balancing opposing forces and working within constraints to create great software.
Poor software developers (they really aren’t engineers) are ones who are incapable
of perceiving the trade-offs they are making and the implications of their design
decisions (or lack thereof).
Every software engineer absolutely must know the seven aspects of software
quality:
Reliability
Understandability
Modifiability
Usability
Testability
Portability
Efficiency
These seven aspects can be measured and judged for any software product. They
apply to embedded systems, websites, mobile apps, video games, open-source
APIs, internal services, and any other sort of software product. These aspects are
entirely business domain independent. A software engineer’s ability can be
292 measured by the quality of the software he creates. Skilled engineers create high-
quality software and source code.
For different projects, the prioritization of the aspects of quality will vary.
Some projects should be focused on reliability, usability, and
understandability, while other projects will place high importance on
testability and efficiency. As a software engineer, you must know which
aspects of quality are most important to your project. You must apply your
best efforts towards the most critical aspects, and not spend excessive time
on less important aspects.
Reliability: Software is reliable if it behaves consistently. The functionality
of a program should be predictable and repeatable. Errors should occur
rarely or not at all. Errors that do occur should be handled gracefully and
proactively. Users should never ask themselves whether the software will
work correctly.
Usability: Software products must be simple and easy to use. The common
use cases should be as obvious and clearly presented as possible. Software
should not require excessive configuration. Users should feel empowered by
your software. They should not need internet searches to discover core
application functionality.
Testability: The functionality of software must be verifiable. The process of
testing the software must be easy. Each business use case should be directly
testable. Clear verification metrics must be available. Highly testable
software will ship with a comprehensive automated test suite.
Good design – It’s always important to have a good and aesthetic design to
please users
Value for money – customer and companies who make this app should
feel that the money spent on this app has not fone to waste.
Quality Models
Software Quality Models are a standardized way of measuring a softwareproduct.
294
Software quality is the totality of features and characteristics of a product or
a service that bears on its ability to satisfy the given needs. Poor quality of
the software product in sensitive systems may lead to loss of human life,
permanent injury, mission failure, or financial loss. So, the quality of the
project should be maintained at appropriate label. To maintain the quality,
there are different quality models. "A high-quality product is one which has
associated with it a number of quality factors.
(2) Reliability : The system’s ability not to fail/ the extent to which the
system fails.
(3) Efficiency : Further categorized into execution efficiency and
storage efficiency and generally means the usage of system resources,
example: processor time, memory.
296
Flexibility (Maintainability characteristics, Modifiability): Code possesses
the characteristic modifiability to the extent that it facilitates the
incorporation of changes once the nature of the desired change has been
determined.
Though Boehm’s and McCall’s models might appear very similar, the difference
is that McCall’s model primarily focuses on the precise measurement of the high-
level characteristics “As-is utility”, whereas Boehm’s quality model is based on a
wider range of characteristics with an extended and detailed focus on primarily
maintainability.
Internal: Measure how well a component has been deployed according to its
intended use.
298
5. FURPS Model -This model categorizes requirements into functional
and non-functional requirements. The term FURPS is an acronym for
Functional requirement(F) which relies on expected input and output,
and in non functional requirements (U) stands for Usability which
includes human factors, aesthetic, documentation of user material of
training, (R) stands for reliability(frequency and severity of failure,
time among failure), (P) stands for Performance that includes
functional requirements, and finally (S) stands for supportability that
includes backup, requirement of design and implementation etc.
At the initial level, the company is quite small, and it solely depends on an
individual how he handles the company. The repeatable level states that at
least the basic requirements or techniques have been established and the
organization has attained a certain level of success. By the next level thatis
, defined, the company has already established a set of standards for smooth
functioning of a software project/process. At the managed level, an
organization monitors its own activities through a data collection and
analysis. At the fifth level that is the optimizing level, constant improvement
of the prevailing process becomes a priority, a lot of innovative approach is
applied towards the qualitative enhancement.
Like every software, ISO 926 software model has distinct qualities. These are
laid on following basis:
1.Functionality
It is a key aspect of any product or service. It is due to this the software can
fulfill a task and keep to its purpose. It is defined as a software product that
helps to meet the needs of the clients. A functionality of software is dependent
on its complexity. For example: an ATM machine. This is further divided in
other categories are as follows:
Suitability.
Accuracy.
Interoperability.
Security.
Functional compliance.
2. Reliability
This characteristic determines the capability of software to sustain its use
when put under different circumstances.
3. Usability
Maturity.
Fault Tolerance.
Recoverability.
Reliability Compliance.
300
4. Efficiency
This feature of the model is more concerned by resources of the
system when used for providing a desired functionality. This type of
feature is defined by amount of disk space, memory, and network. This
is further divided into other sub-categories, and these are as follows:
Understandability.
Learner ability.
Operability.
Attractiveness.
Usability Compliance.
5. Maintainability
This property of maintainability of the software model is used to
recognize and fix a defect accordingly. The model is inspected for the
faults, and these can be identified easily. In accordance with this the
cause and effect of maintainability of software is a concern. This is
further divided into other sub-categories, and these are as follows:
Analyzability.
Resource Utilization.
Stability.
Testability.
Changeability.
6. Portability
According to this feature, capable software should easily adapt to the
environmental changes frequently as possible. The designing of an
object and the practices of its implementation are highly dependent on
this feature. This standard method is further divided in few categories:
Adaptability.
Install ability.
Co-existence.
Replaceability.
Portability compliance.
300
Types of Metrics
Internal metrics: Internal metrics are the metrics used for measuring
properties that are viewed to be of greater importance to a software
developer. For example, Lines of Code (LOC) measure.
External metrics: External metrics are the metrics used for measuring
properties that are viewed to be of greater importance to the user, e.g.,
portability, reliability, functionality, usability, etc.
Hybrid metrics: Hybrid metrics are the metrics that combine product,
process, and resource metrics. For example, cost per FP where FP stands for
Function Point Metric.
Project metrics: Project metrics are the metrics used by the project manager
to check the project's progress. Data from the past projects are used to
collect various metrics, like time and cost; these estimates are used as a base
of new software. Note that as the project proceeds, the project manager will
check its progress from time-to-time and will compare the effort, cost, and
time with the original effort, cost and time. Also understand that these
metrics are used to decrease the development costs, time efforts and risks.
The project quality can also be improved. As quality improves, the number
of errors and time, as well as cost required, is also reduced.
Software
Software
Software Software
Figure 14.2 Process and product quality
300
It is general, that the quality of the development process directly affects
the quality of delivered products. The quality of the product can be
measured, and the process is improved until the proper quality level is
achieved. Figure 14.3. illustrates the process of quality assessment based on
this approach.
Software quality management activities are generally split up into three core
components: quality assurance, quality planning, and quality control.
Some like software engineer and author Ian Sommerville don't use the term
"quality control" (as quality control is often viewed as more a
manufacturing term than a software development term), rather, linking its
associated concepts with the concept of quality assurance. However, the three
core components otherwise remain the same.
Quality assurance
Software quality assurance sets up an organized and logical set of organizational
processes and deciding on that software development standards — based on
industry best practices — that should be paired with those organizational
processes, software developers stand a better chance of producing higher quality
software. However, linking quality attributes such as "maintainability" and
"reliability" to processes is more difficult in software development due to its
creative design elements versus the mechanical processes of manufacturing.
Additionally, "process standardization can sometimes stifle creativity, which
leads to poorer rather than better quality software."
This stage can include:
Quality planning
Quality planning works at a more granular, project-based level, defining the
quality attributes to be associated with the output of the project and how those
attributes should be assessed. Additionally, any existing organizational standards
may also be assigned to the project at this phase. Attributes such as "robustness,"
"accessibility," and "modularity" may be assigned to the software development
project. While this may be a more formalized, integral process, those using a
more agile method of quality management may place less emphasis on strict
planning structures.[3] The quality plan may also address intended market,
critical release dates, quality goals, expected risks, and risk management policy.
Quality control
The quality control team tests and reviews software at its various stages to
ensure quality assurance processes and standards at both the organizational and
project level are being followed. Some like Sommerville link these
responsibilities to quality assurance rather than call it quality control. These
checks are optimally separate from the development team to lend more of an
objective view of the product to be tested. However, project managers on the
development side must also assist, helping to promote as part of this phase a
"culture that provides support without blame when errors are discovered." In
software development firms implementing a more agile quality approach,
these
306
activities may be less formal; however, a switch to agile methods from a
more formal quality management structure may create problems if
management procedures aren't appropriately adapted.
Activities include:
Defect prevention
The project management lifecycle is not complete without quality assurance and
businesses are shifting their focus to build a high-quality product. If you are
somehow related to an application or software, then you are surely looking out for
ways to ensure the quality of your product without breaking the bank. Exceptional
software quality practices promise cost-effectiveness and enhance the performance
of the product being delivered.
Instead of spending unnecessary time and resources on the project to fix the
software issues one should shift maximum focus on the quality of the
308
software from the start. Below mentioned are seven points which one should
consider increasing software quality and follow an assured approach through
the development.
Review: Testers constantly review the code and ensure that set quality standards
are being met.
Revise: To study the software process and understand which aspects worked for
the project and which require more improvement. Analyze if innovation can
transcend and changes can be made.
Remember: While delivering a quality product, note down what worked for you
and what areas didn’t align. List down all positives and negatives of a successful
project.
Final Thoughts
The success of your software product highly depends on the way you deal with it
from the initial phase and how intelligently you manage the issues encountered.
It is imperative that your team knows what they are working on and what is
expected from them to be delivered. The testing team should come up with a
clear plan to start with the entire process.
iTexico and Improving's nearshore delivery model for software quality assurance
and collaborative, results-driven approach is designed around the success of
your project. We’ll make use of the right technologies and tools for your
strategic goals and work closely with your in-house team to ensure a timely
delivery.
The process of software testing aims not only at finding faults in the existing
software but also at finding measures to improve the software in terms of
efficiency, accuracy, and usability. It mainly aims at measuring the specification,
functionality, and performance of a software program or application.
308
Software testing can be divided into two steps:
1. Verification: it refers to the set of tasks that ensure that software
correctly implements a specific function.
2. Validation: it refers to a different set of tasks that ensure that the
software that has been built is traceable to customer requirements.
This can only be done by a trial and Data domains and internal
error method. boundaries can be better tested.
Table 14.1 Comparison between black box and white box testing
312
Unit Testing
Integration Testing
System Testing
Acceptance Testing
Software Reliability
Software Reliability means Operational reliability. It is described as the
ability of a system or component to perform its required functions under static
conditions for a specific period.
For example, large next-generation aircraft will have over 1 million source
lines of software on-board; next-generation air traffic control systems will
contain between one and two million lines; the upcoming International Space
Station will have over two million lines on-board and over 10 million lines of
ground support software; several significant life- critical defense systems will
have over 5 million source lines of software. While the complexity of
software is inversely associated with software reliability, it is directly related
to other vital factors in software quality, especially functionality, capability,
etc.
A good software reliability engineering program, introduced early in the
development cycle, will mitigate these problems by: Preparing program
management in advance for the testing effort and allowing them to plan both
schedule and budget to cover the required testing.
Continuous review of requirements throughout the life cycle, particularly for
handling of exception conditions. If requirements are incomplete there will be no
testing of the exception conditions.
SoHaR software reliability engineers are experienced in all the stages and tasks
required in a comprehensive software reliability program. We can support or
lead tasks such as:
1) Reliability Allocation
The reliability program will inform and often determine the following
test preparation activities:
Assessing the number of new test cases required for the current
release.
New test case allocation for each system among its new operations.
SUMMARY
In this software quality chapter, you learned about The Place of Software
Quality in Project Planning, Importance of Software Quality, Defining
Software Quality, Software Quality Models, ISO 9126, Product and
Process Metrics, Product versus Process Quality Management, Quality
Management Systems, Process Capability Models, Techniques to Help
Enhance Software Quality, Testing and its types, Software Reliability,
Quality Plans etc. Still, you had a doubt go through references and
bibliography
EXERCISE
317