KEMBAR78
Reliability and Quality Issues Overview (5).ppt
Reliability and Quality Issues: Overview
SOFTWARE RELIABILITY AND
QUALITY ASSURANCE
Software Quality
1. What is quality
2. Software quality factors
3. Quality control
4. Cost of quality
5. Quality assurance
SOFTWARE QUALITY
QUALITY IS NEVER AN ACCIDENT; IT IS ALWAYS THE RESULT OF
INTELLIGENT EFFORT.
— JOHN RUSKIN
Introduction
Quality software refers to a software which is:
 reasonably bug or defect free
 delivered in time and within the specified budget
meets the requirements and/or expectations
maintainable
Introduction
In the software engineering context, software
quality reflects both:
functional quality
structural quality
Software Functional Quality
It reflects how well it satisfies a given design
based on the functional requirements or
specifications
Software Structural Quality
It deals 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
The Software Quality Challenge
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
Software Quality
The basic goal 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.
Definition of Software Quality
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
Definition of Software Quality
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
Classification of Software Qualities
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
Classification of Software Qualities
We consider two different classifications of
software-related qualities:
 internal versus external
 product versus process
External versus Internal Qualities
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
Product and Process Qualities
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
Product and Process Qualities 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
Software Quality Attributes
Software quality 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.
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.
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.
McCall’s Quality Factors
James A. 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.
Product Operation Quality Factors
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.
Product Revision Quality Factors
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.
Product Transition Quality Factors
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.
Software Quality Criteria
Representative Qualities
The most important 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.
Important qualities of software
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.
Important qualities of software
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
Important qualities of software
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.
Important qualities of software
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
Important qualities of software
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
Important qualities of software
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
Important qualities of software
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
Important qualities of software
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
Important qualities of software
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.
Importance of Software Quality
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.
Importance of Software Quality
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
Importance of Software Quality
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
Importance of Software Quality
In conclusion:
Quality management is an essential part of effective overall
project management
Questions
?
Reliability and Quality Issues Overview (5).ppt
Reliability and Quality Issues Overview (5).ppt

Reliability and Quality Issues Overview (5).ppt

  • 1.
    Reliability and QualityIssues: Overview SOFTWARE RELIABILITY AND QUALITY ASSURANCE
  • 2.
    Software Quality 1. Whatis quality 2. Software quality factors 3. Quality control 4. Cost of quality 5. Quality assurance
  • 3.
    SOFTWARE QUALITY QUALITY ISNEVER AN ACCIDENT; IT IS ALWAYS THE RESULT OF INTELLIGENT EFFORT. — JOHN RUSKIN
  • 4.
    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.
  • 24.
  • 25.
    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
  • 39.

Editor's Notes

  • #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.