SOFTWARE QUALITY
Chapter 1
  INTRODUCTION
         
       TO
         
SOFTWARE QUALITY
         
SOFTWARE
Definition:
   The collection of computer programs and related data
    that provide the instructions telling a computer what to
    do by user needed.
QUALITY MATTERS
 Producing quality products has been identified as a key
  factor in the long term success (i.e. profitability) of
  organizations.
 Quality doesn’t happen by chance.
 Quality requires on ongoing commitment by all parties
  (management, designers, developers).
 The commitment to quality includes the use of careful
  development processes. Quality control must be
  embedded into the process.
DEFINITION: QUALITY
 Quality is conformance to requirements, both
 explicit and implicit.
 Implicit   and Explicit Requirement
   Think  of a car :
   Explicit requirements are the size of engine, number
    of doors, color, etc (user-based & manufacturing
    views).
   Implicit requirements include the standards to which
    the has been built (product based view).
DEFINITION: QUALITY
   Quality, simplistically, means that a product
    should meet its specification.
   This is problematical for software systems
       There is a tension between customer quality
        requirements (efficiency, reliability, etc.) and
        developer quality requirements (maintainability,
        reusability, etc.);
       Some quality requirements are difficult to specify
        in an unambiguous way;
       Software specifications are usually incomplete
        and often inconsistent.
DEFINITION: QUALITY
DEFINITION: QUALITY
SOFTWARE QUALITY VERSUS QUALITY
SOFTWARE
At the outset of the subject it is important to distinguish
  between 
  (i) Software quality, and
  (ii) Quality software.
Both will be emphasized in this subject. A mistake that is
 often made is not to distinguish between these two
 concepts. This can lead to a lot of confusion.
SOFTWARE QUALITY
At the highest level software quality is a body of
   knowledge that describes: 
  • what must be done, and
   • how it must be done 
 In other words the field of software quality embodies a
   specification and an implementation of processes for
   realizing quality software.
SOFTWARE QUALITY
SOFTWARE QUALITY
QUALITY SOFTWARE
DEFINITION
 Is software that exhibits all the functional capabilities and
   non-functional attributes that ensure that it can be put to all
   its intended uses with the least effort, inconvenience and
   resource cost to the user.
 
This definition implies two things:
1.    software should function correctly with respect to a
      specification that has been predefined by the client who has
      commissioned the development of the software
2.    software must possess attributes other than correctness with
      respect to a specification before it can be classified as
      quality software
QUALITY SOFTWARE
   The International standard for Software Product
    Evaluation : ISO-9126 released in 1991 lists six key
    factors that are important in the production of quality
    software. They are:
QUALITY SOFTWARE
1.   Functionality
2.   Reliability
3.   Usability
4.   Efficiency
5.   Maintainability
6.   portability
SOME SIMPLISTIC DEFINITIONS
CROSBY
  "Quality is conformance to requirements"
 
OULD
  "Software quality means fitness-for-purpose"
 
ISO-8402
  Quality is all the features that allow a product to satisfy
  stated or implied needs at an affordable cost
SOME SIMPLISTIC DEFINITIONS
GARVIN
Gives five views of quality:
 
1. Transcendent
2. product-based
3. user-based
4. manufacturing-based
5. value-based
KEY IDEAS
There are three key ideas that underpin most of what we
   will discuss in this course. 
1.    Process 
It is generally accepted that the quality of the process plays
   a crucial role in determining the quality of the product
KEY IDEAS
2.     Constructive Principle 
     Quality must be built into software from the outset - it
     cannot be added on later
3.     People
 
Above all else it is people that determine whether or not a
  quality product is produced
ASSIGNMENT/DISCUSSION
   Find and discuss how the management can involve in
    software quality.
   Give an example in real situation where you have come
    across for software quality problems/issues.
SOFTWARE QUALITY
CHARACTERISTICS
 The  goal of software engineering is, of course, to
  design and develop better software.
 what exactly does "better software" mean?
 some common software quality characteristics.
 Six of the most important quality characteristics
  are maintainability, correctness, reusability,
  reliability, portability, and efficiency.
SOFTWARE ERROR, FAULT AND
FAILURES
 We’ve used Simplex Hr Software for about three years and
  never had software failures
 I started to use Simplex HR two month ago; we had so
  many failures and might be to replace with another
  software
 We’ve been use for almost 4 years, and everything was ok
  until the last few month when we suddenly faced several
  failures.
     Is it possible for such a variation in users experience with
      failure to appear with the same software package?
     Can software package that successfully served for long period
      suddenly change the nature “quality” and become bug
SOFTWARE ERROR, FAULT AND
FAILURES
 The answer is yes, and it rooted in the characteristic of
  the software
 Origin of software failures lies in a software error made
  by a programmer.
 Not all software error become software faults. In some
  case, the software error can cause improper function of
  the software.
SOFTWARE ERROR, FAULT AND
FAILURES
   The causes of software error:-
    1.   Faulty definition of requirement
    2.   Client-developer communication failures
    3.   Deliberate deviation from software requirement
    4.   Logical design errors
    5.   Coding error
    6.   Non-compliance with documentation and coding
         instructions
    7.   Shortcoming of the testing process.
    8.   Procedure error
    9.   Documentation error
SOFTWARE ERROR, FAULT AND
FAILURES
   Software error:
     Are   section of the code that are partially or totally incorrect
       as a result of grammatical, logical or other mistake made by a
       system analyst, programmer or others.
   Software fault:
     Are  software errors that cause the incorrect functioning of the
       software during a specific application
   Software failures:
     Software   fault will become software failures only when the
       are activated.