What Is Quality:: Unit 1
What Is Quality:: Unit 1
What is Quality:
Quality . . . you know what it is, yet you don’t know what it is. But that’s self contradictory.
But some things are better than others; that is, they have more quality. But when you try to
say what the quality is, apart from the things that have it, it all goes poof! There’s nothing to
talk about. But if you can’t say what Quality is, how do you know what it is, or how do you
know that it even exists? If no one knows what it is, then for all practical purposes it doesn’t
exist at all. But for all practical purposes it really does exist. What else are the grades based
on? Why else would people pay fortunes for some things and throw others in the trash pile?
Obviously some things are better than others . . . but what’s the betterness? . . . So round and
round you go, spinning mental wheels and nowhere finding anyplace to get traction. What the
hell is Quality? What is it?
Software Quality:
Even the most jaded software developers will agree that high-quality software is an important
goal. But how do we define software quality? In the most general sense, software quality can
be defined as: An effective software process applied in a manner that creates a useful product
that provides measurable value for those who produce it and those who use it.
There is little question that the preceding definition could be modified or extended and
debated endlessly. The definition serves to emphasize three important points:
1. An effective software process establishes the infrastructure that supports any effort at
building a high-quality software product. The management aspects of process create the
checks and balances that help avoid project chaos—a key contributor to poor quality.
Software engineering practices allow the developer to analyze the problem and design a solid
solution—both critical to building high-quality software. Finally, umbrella activities such as
change management and technical reviews have as much to do with quality as any other part
of software engineering practice.
2. A useful product delivers the content, functions, and features that the end user desires, but
as important, it delivers these assets in a reliable, error-free way. A useful product always
satisfies those requirements that have been explicitly stated by stakeholders. In addition, it
satisfies a set of implicit requirements (e.g., ease of use) that are expected of all high quality
software.
3. By adding value for both the producer and user of a software product, high-quality
software provides benefits for the software organization and the end-user community. The
software organization gains added value because high-quality software requires less
maintenance effort, fewer bug fixes, and reduced customer support. This enables software
engineers to spend more time creating new applications and less on rework. The user
community gains added value because the application provides a useful capability in a way
that expedites some business process. The end result is (1) greater software product revenue,
(2) better profitability when an application supports a business process, and/or (3) improved
availability of information that is crucial for the business.
The ISO 9126 standard was developed in an attempt to identify the key quality attributes for
computer software. The standard identifies six key quality attributes:
Functionality. The degree to which the software satisfies stated needs as indicated by the
following sub attributes: suitability, accuracy, interoperability, compliance, and security.
Reliability. The amount of time that the software is available for use as indicated by the
following sub attributes: maturity, fault tolerance, recoverability.
Usability . The degree to which the software is easy to use as indicated by the following sub
attributes: understandability, learnability, operability.
Efficiency. The degree to which the software makes optimal use of system resources as
indicated by the following sub attributes: time behavior, resource behavior.
Maintainability. The ease with which repair may be made to the software as indicated by the
following subattributes: analyzability, changeability, stability, testability.
Portability. The ease with which the software can be transposed from one environment to
another as indicated by the following subattributes: adaptability, installability, conformance,
replaceability.
Like other software quality factors discussed in the preceding subsections, the ISO 9126
factors do not necessarily lend themselves to direct measurement.
However, they do provide a worthwhile basis for indirect measures and an excellent checklist
for assessing the quality of a system.
The quality dimensions and factors presented in Sections 19.2.1 and 19.2.2 focus on the
software as a whole and can be used as a generic indication of the quality of an application. A
software team can develop a set of quality characteristics and associated questions that would
probe the degree to which each factor has been satisfied. 3 For example, McCall identifies
usability as an important quality
factor. If you were asked to review a user interface and assess its usability, how would you
proceed? You might start with the subattributes suggested by McCall— understandability,
learnability, and operability—but what do these mean in a pragmatic sense?
To conduct your assessment, you’ll need to address specific, measurable (or at least,
recognizable) attributes of the interface. For example:
Intuitiveness. The degree to which the interface follows expected usage patterns so that even
a novice can use it without significant training.
• Is the interface layout conducive to easy understanding?
• Are interface operations easy to locate and initiate?
• Does the interface use a recognizable metaphor?
• Is input specified to economize key strokes or mouse clicks?
• Do aesthetics aid in understanding and usage?
Efficiency. The degree to which operations and information can be located or initiated.
• Does the interface layout and style allow a user to locate operations and information
efficiently?
• Can a sequence of operations (or data input) be performed with an economy of motion?
• Are output data or content presented so that it is understood immediately?
• Have hierarchical operations been organized in a way that minimizes the depth to which a
user must navigate to get something done?
Robustness. The degree to which the software handles bad input data or inappropriate user
interaction.
• Will the software recognize the error if data values are at or just outside prescribed input
boundaries? More importantly, will the software continue to operate without failure or
degradation?
• Will the interface recognize common cognitive or manipulative mistakes and explicitly
guide the user back on the right track?
• Does the interface provide useful diagnosis and guidance when an error condition
(associated with software functionality) is uncovered?
Richness. The degree to which the interface provides a rich feature set.
• Can the interface be customized to the specific needs of a user?
• Does the interface provide a macro capability that enables a user to identify a sequence of
common operations with a single action or command?
As the interface design is developed, the software team would review the design prototype
and ask the questions noted. If the answer to most of these questions is yes, it is likely that the
user interface exhibits high quality. A collection of questions similar to these would be
developed for each quality factor to be assessed.
Software quality doesn’t just appear. It is the result of good project management and solid
software engineering practice. Management and practice are applied within the context of
four broad activities that help a software team achieve high software quality: software
engineering methods, project management techniques, quality control actions, and software
quality assurance.
Software Engineering Methods
If you expect to build high-quality software, you must understand the problem to be solved.
You must also be capable of creating a design that conforms to the problem while at the same
time exhibiting characteristics that lead to software that exhibits the quality dimensions and
factors.
A wide array of concepts and methods that can lead to a reasonably complete understanding
of the problem and a comprehensive design that establishes a solid foundation for the
construction activity. If you apply those concepts and adopt appropriate analysis and design
methods, the likelihood of creating high-quality software will increase substantially
Project Management Techniques
The impact of poor management decisions on software quality. The implications are clear: if
(1) a project manager uses estimation to verify that delivery dates are achievable, (2)
schedule dependencies are understood and the team resists the temptation to use shortcuts, (3)
risk planning is conducted so problems do not breed chaos, software quality will be affected
in a positive way.
Quality Control
Quality control encompasses a set of software engineering actions that help to ensure that
each work product meets its quality goals. Models are reviewed to ensure that they are
complete and consistent. Code may be inspected in order to uncover and correct errors before
testing commences. A series of testing steps is applied to uncover errors in processing logic,
data manipulation, and interface communication. A combination of measurement and
feedback allows a software team to tune the process when any of these work products fail to
meet quality goals.
Quality Assurance
Quality assurance establishes the infrastructure that supports solid software engineering
methods, rational project management, and quality control actions—all pivotal if you intend
to build high-quality software. In addition, quality assurance consists of a set of auditing and
reporting functions that assess the effectiveness and completeness of quality control actions.
The goal of quality assurance is to provide management and technical staff with the data
necessary to be informed about product quality, thereby gaining insight and confidence that
actions to achieve product quality are working. Of course, if the data provided through
quality assurance identifies problems, it is management’s responsibility to address the
problems and apply the necessary resources to resolve quality issues.
You can count the number of defects, you find every week. That is the defect rate. You
might like to count quality, but you can’t. There are too many aspects of quality that are not
countable. But reliability is one of those aspects, and you can count defects to measure it.”
Quality in software is the outcome of meeting the goals, requirements, and actual needs of the
users. It is a positive concept, referring to such qualities as integrity, interoperability,
flexibility, maintainability, portability, expandability, reusability, resilience, and usability
A way to look at the failure behavior in time is to examine the failure rate. Failure rate is
the time rate of change of the probability of failure. Since the latter is generally a function
of time, failure rate is also, generally speaking, a function of time. In terms of failure rate,
however, one can often obtain some indication as to which of the influencing factors is
controlling and at what time it is controlling.
The term “reliability” in engineering refers to the probability that a product, or system, will
perform it’s designed functions under a given set of operating conditions for a specific period
of time. It is also known as the “probability of survival”.
Software Review:
Software reviews are a “filter” for the software process. That is, reviews are applied at
various points during software engineering and serve to uncover errors and defects that can
then be removed. Software reviews “purify” software engineering work products, including
requirements and design models, code, and testing data.
You’ll make mistakes as you develop software engineering work products. There’s no shame
in that—as long as you try hard, very hard, to find and correct the mistakes before they are
delivered to end users. Technical reviews are the most effective mechanism for finding
mistakes early in the software process.
If you find an error early in the process, it is less expensive to correct. In addition, errors have
a way of amplifying as the process proceeds. So a relatively minor error left untreated early
in the process can be amplified into a major set of errors later in the project.
Finally, reviews save time by reducing the amount of rework that will be required late in the
project.
• Makes the process of testing time & cost effective, as more time is spent on testing
the software during the initial development of the product.
• Fewer defects are found in the final software, which helps reduce the cost of the
whole process.
• The reviews provided at this stage are found to be cost effective, as they are identified
at the earlier stage, as the cost of rectifying a defect in the later stages would be much
more than doing it in the initial stages.
• In this process of reviewing software, often we train technical authors for defect
detection process as well as for defect prevention process.
• Elimination of defects or errors can benefit the software to a great extent. Frequent
check of samples of work and identification of small time errors can lead to low error
rate.
Peer review is the process of evaluating the technical content and quality of the
product and it is usually conducted by the author of the work product, along with
some other developers. According to Capacity Maturity Model, the main purpose of
peer review is to provide “a disciplined engineering practise for detecting or
correcting defects in the software artifacts, preventing their leakage into the field
operations”. In short, peer review is performed in order to determine or resolve the
defects in the software, whose quality is also checked by other members of the team.
These reviews take place in the later stages by the management representatives. The
objective of this type of review is to evaluate the work status. Also, on the basis of
such reviews decisions regarding downstream activities are taken.These reviews take
place in the later stages by the management representatives. The objective of this type
of review is to evaluate the work status. Also, on the basis of such reviews decisions
regarding downstream activities are taken.
Software audit review or software review is a type of external review, wherein one or
more auditors, who are not a part of the development team conduct an independent
examination of the software product and its processes to assess their compliance with
stated specifications, standards, and other important criterias. This is done by
managerial level people.
Formal Review:
A type of peer review, formal review follows a formal process and has a specific formal
agenda. It has a well structured and regulated process, which is usually implemented at the
end of each life cycle. During this process, a formal review panel or board considers the
necessary steps for the next life cycle.
Features of Formal Review:
• The review team petitions the management of technical leadership to act on the
suggested recommendations.
• Here, the leader verifies that the action documents are verified and incorporated into
external processes.
o Planning.
o Kick-off.
o Preparation.
o Review meeting.
o Rework.
o Follow up.
Informal Review:
Unlike Formal Reviews, Informal reviews are applied multiple times during the early stages
of software development process. The major difference between the formal and informal
reviews is that the former follows a formal agenda, whereas the latter is conducted as per the
need of the team and follows an informal agenda. Though time saving, this process is not
documented and does not require any entry criteria or large group of members.
Features of Informal Review:
• Conducted by a group of 2-7 members, which includes the designer an any other
interested party.
• Here the team identifies errors & issues as well as examine alternatives.
• The role of informal review is to keep the author informed and to improve the quality
of the product.