Introduction
Quality software refersto a software which is:
reasonably bug or defect free
delivered in time and within the specified budget
meets the requirements and/or expectations
maintainable
5.
Introduction
In the softwareengineering context, software
quality reflects both:
functional quality
structural quality
6.
Software Functional Quality
Itreflects how well it satisfies a given design
based on the functional requirements or
specifications
7.
Software Structural Quality
Itdeals with:
the handling of non-functional requirements that
support the delivery of the functional requirements
such as:
robustness or maintainability
the degree to which the software was produced
correctly
8.
The Software QualityChallenge
In the software industry:
the developers will never declare that the software is free
of defects, unlike other industrial product manufacturers
usually do
This difference is due to the following reasons:
product complexity
product visibility
product development and production process
9.
Software Quality
The basicgoal of software engineering is to
produce quality software
We examine the qualities that are pertinent to:
software products and software production processes
These qualities will become our goals in the
practice of software engineering
Software quality is a broad and important field of
software engineering addressed by several
standardization bodies, such as ISO, IEEE, ANSI, etc.
10.
Definition of SoftwareQuality
Software quality:
Conformance to:
explicitly stated functional and performance
requirements,
explicitly documented development standards,
and implicit characteristics that are expected of
all professionally developed software
11.
Definition of SoftwareQuality
The definition emphasizes three important points:
1. Software requirements are the foundation from which
quality is measured. Lack of conformance to requirements is
lack of quality
2. Specified standards define a set of development criteria
that guide the manner in which software is engineered. If
the criteria are not followed, lack of quality will almost
surely result
3. There is a set of implicit requirements that often goes
unmentioned. If software conforms to its explicit
requirements but fails to meet implicit requirements,
software quality is a suspect
12.
Classification of SoftwareQualities
There are many desirable software qualities. Some
of these apply both to the product and to the
process used to produce the product
The user wants the software products to be
reliable, efficient, and easy to use
The producer of the software wants it to be
verifiable, maintainable, portable, and extensible
The manager of the software project wants the
process of software development to be productive
and easy to control
13.
Classification of SoftwareQualities
We consider two different classifications of
software-related qualities:
internal versus external
product versus process
14.
External versus InternalQualities
We can divide software qualities into external and internal qualities:
The external qualities are visible to the users of the system
The internal qualities are those that concern the developers of the
system
In general, users of the software only care about the external qualities,
but it is the internal qualities, which deal largely with the structure of
the software, that help developers achieve the external qualities
For example, the internal quality of verifiability is necessary for
achieving the external quality of reliability
In many cases, however, the qualities are related closely and the
distinction between internal and external is not sharp
15.
Product and ProcessQualities
We use a process to produce the software product
We can also attribute some qualities to the process,
although process qualities often are closely related
to product qualities
For example, if the process requires careful planning of
system test data before any design and development of the
system starts, products reliability will increase
Some qualities, such as efficiency, apply both to the
product and to the process
16.
Product and ProcessQualities cont.
It is interesting to examine the word product here
It usually refers to what is delivered to the customer
Even though this is an acceptable definition from the
customer’s perspective, it is not adequate for the
developer who requires a general definition of a software
product that encompasses not only the object code and the
user manual that are delivered to the customer but also the
requirements, design, source code, test data, etc.
In fact, it is possible to deliver different subsets of the
same product to different customers
17.
Software Quality Attributes
Softwarequality is comprised of six main attributes
(characteristics). At the top level, for software
products, these attributes can be defined as
follows:
1. Functionality: The capability to provide functions which
meet stated and implied needs when the software is used.
2. Reliability: The capability to maintain a specified level of
performance.
3. Usability: The capability to be understood, learned, and
used.
18.
Software Quality Attributes
4.Efficiency:The capability to provide appropriate
performance relative to the amount of resources used.
5. Maintainability: The capability to be modified for
purposes of making corrections, improvements, or
adaptation.
6. Portability: The capability to be adapted for different
specified environments without applying actions or means
other than those provided for this purpose in the product.
19.
McCall’s Quality Factors
McCall,Richards, and Walters [MCC77] propose a
useful categorization of factors that affect software
quality.
These software quality factors focus on three
important aspects of a software product:
its operational characteristics
its ability to undergo change and
its adaptability to new environments.
20.
McCall’s Quality Factors
JamesA. McCall identified specific product
qualities that are appropriate to software.
He grouped software qualities into three sets of
quality factors:
product operation qualities
product revision qualities and
product transition qualities.
21.
Product Operation QualityFactors
Correctness: The extent to which a program satisfies its
specifications and fulfills the user’s objectives.
Reliability: The extent to which a program can be expected
to perform its intended function with required precision.
Efficiency: The amount of computer resources required by
the software.
Integrity: The extent to which access to software or data
by unauthorized persons can be controlled.
Usability: The effort required for learning, operating,
preparing input, and interpreting output.
22.
Product Revision QualityFactors
Maintainability: The effort required to locate and
fix an error in an operational program.
Testability: The effort required to test a program to
ensure it performs its intended function.
Flexibility: The efforts required to modify an
operational program.
23.
Product Transition QualityFactors
Portability: The effort required for transferring a
program from one hardware configuration and
software system environment to another.
Reusability: The extent to which a program can be
used in other applications.
Interoperability: The efforts required to couple
one system to another.
Representative Qualities
The mostimportant qualities of software products
and processes:
Correctness: A program is functionally correct if it
behaves according to the specification of the functions it
should provide (called functional requirements
specifications).
Reliability: Informally, software is reliable if the user can
depend on it. The specialized literature on software
reliability defines reliability in terms of statistical behavior—
the probability that the software will operate as expected
over a specified time interval.
26.
Important qualities ofsoftware
products
Robustness: A program is robust if it behaves
“reasonably,” even in circumstances that were not
anticipated in the requirements specification
Performance:
Performance is important because it affects the usability of
the system.
• If a software system is too slow, it reduces the productivity
of the users, possibly to the point of not meeting their needs.
• If a software system uses too much disk space, it may be
too expensive to run.
27.
Important qualities ofsoftware
products
Performance:
If a software system uses too much memory
it may affect the other applications that run on the same
system
it may run slowly while the operating system tries to
balance the memory usage of the different applications
Performance is also important because it affects the
scalability of a software system
28.
Important qualities ofsoftware
products
Verifiability:
A software system is verifiable if its properties can
be verified easily
For instance, it is important to be able to verify the
correctness or the performance of a software system
Verifiability is usually an internal quality, although
it sometimes becomes an external quality also
For example, in many security-critical applications, the
customer requires the verifiability of certain properties
- A trusted computer system requires the verifiability of the operating
system kernel.
29.
Important qualities ofsoftware
products
Repairable:
A software system is repairable if it allows the correction of
its defects with a limited amount of work
In many engineering products, it is a major design goal
For example, automobile engines are built with the parts
that are most likely to fail as the most accessible
Evolvability:
Software products are modified over time to provide new
functions or to change existing functions. Indeed, the fact
that software is so malleable makes modifications
extremely easy to apply to an implementation
30.
Important qualities ofsoftware
products
Understandability:
Some software systems are easier to understand than
others
Of course, some tasks are inherently more complex than
others
Given tasks of inherently similar difficulty,
we can follow certain guidelines to produce more
understandable designs and to write more understandable
programs
For example, abstraction and modularity enhance a
system’s understandability
31.
Important qualities ofsoftware
products
Interoperability:
Refers to the ability of a system to coexist and cooperate
with other systems
With interoperability, a vendor can produce different
products and allow the user to combine them if necessary
This makes it easier for the vendor to produce the
products, and it gives the user more freedom in exactly
what functions to pay for and to combine
Interoperability can be achieved through standardization
of interfaces
32.
Important qualities ofsoftware
products
Productivity:
Productivity is a quality of the software-production process;
it measures the efficiency of the process
It is the performance quality applied to the process
An efficient process results in faster delivery of the product
Productivity offers many trade-offs in the choice of a
process
For example, a process that requires specialization of individual team
members may lead to productivity in producing a certain product, but
not in producing a variety of products
33.
Important qualities ofsoftware
products
Reusability:
Software reuse is a technique
that leads to the overall productivity of an organization
that is involved in developing many products
But developing reusable modules is harder than developing
modules for one’s own use
thus reducing the productivity of the group that is
developing reusable modules as part of their product
development
34.
Important qualities ofsoftware
products
Timeliness:
Timeliness is a process-related quality
that refers to the ability to deliver a product on time
Timeliness requires careful scheduling, accurate estimation
of work, and clearly specified and verifiable milestones
Visibility:
A software-development process is visible if all of its steps
and its current status are documented clearly
Another term used to characterize this property is transparency.
The idea is that the steps and the status of the project are
available and easily accessible for external examination.
35.
Importance of SoftwareQuality
We would expect quality to be a concern of all producers of
goods and services
However, the special characteristics of software, and in
particular, its intangibility and complexity, make special
demands
Increasing Criticality of Software:
The final customer or user is naturally anxious about the
general quality of software, especially its reliability. This is
increasingly the case as organizations become more
dependent on their computer systems and software is used
more and more in areas which are safety critical; for
example, to control aircraft.
36.
Importance of SoftwareQuality
The Intangibility of Software:
This makes it difficult to know whether a particular task in a
project has been completed satisfactorily
The results of these tasks can be made tangible by
demanding that the developers produce ‘deliverables’ that
can be examined for quality
37.
Importance of SoftwareQuality
Accumulating Errors During Software Development:
As computer system development is made up of a number
of steps where the output from one step is the input to the
next, the errors in the earlier deliverables will be added to
those in the later steps leading to an accumulating
detrimental effect
Generally, the later in a project that an error is found the
more expensive it will be to fix
In addition, because the number of errors in the system is
unknown, the debugging phases of a project are particularly
difficult to control
38.
Importance of SoftwareQuality
In conclusion:
Quality management is an essential part of effective overall
project management
#7 Robustness: the ability of computer systems to cope with errors during execution and cope with erroneous input.
#8 Product Complexity
It is the number of operational modes the product permits. Normally, an industrial product
allows only less than a few thousand modes of operation with different combinations of its
machine settings. However, software packages allow millions of operational possibilities.
Hence, assuring of all these operational possibilities correctly is a major challenge to the
software industry.
Product Visibility
Since the industrial products are visible, most of its defects can be detected during the
manufacturing process. Also the absence of a part in an industrial product can be easily
detected in the product. However, the defects in software products which are stored on
diskettes or CDs are invisible.
Product Development and Production Process
In an industrial product, defects can be detected during the following phases:
Product development
Product production planning
Manufacturing
However, in the case of software, the only phase where defects can be detected is the
development phase. In case of software, product production planning and manufacturing
phases are not required as the manufacturing of software copies and the printing of software
manuals are conducted automatically.
#14 Verifiability is also called Testability: How easy is it to check your code for bugs.