Chapter 2
WHAT IS SOFTWARE QUALITY
• Outline
• What is software?
• Software mistake, faults and failures.
• differences
• Classification of the causes of software errors
• Software quality – definition
• Software quality benefits.
• Software quality assurance – definition and
objectives
• Software quality assurance and software
engineering
According to the IEEE:
Software is: Computer programs, procedures, and possibly
associated documentation and data pertaining to the operation
of a computer system.
A ‘similar definition comes from ISO:
ISO definition (from ISO 9000-3) lists four
components necessary to assure the quality of the
software development process and years of
maintenance:
computer programs (code)
procedures
documentation
data necessary for operating the software system.
BASIC DEFINITIONS
Software Error – made by
programmer
Syntax (grammatical) error
Logic error (multiply vice add two operands)
Software Fault –
All software errors may not cause software faults
That part of the software may not be executed
(An error is present but not encountered
THE NINE CAUSES OF SOFTWARE ERRORS
THE NINE CAUSES OF SOFTWARE ERRORS
The nine causes of software errors are:
1. Faulty requirements definition
2. Client-developer communication failures
3. Deliberate deviations from software requirements
4. Coding errors
5. Non-compliance with documentation and coding
instructions
6. Shortcomings of the testing process
7. User interface errors
8. Documentation errors
1.3 THE NINE CAUSES OF SOFTWARE MISTAKE
1. Faulty requirements definition
• Incorrect requirement definitions
• Simply stated, ‘wrong’ definitions (formulas, etc.)
• Incomplete definitions
• Unclear or implied requirements
• Inclusion of unneeded requirements
• (many projects have gone amuck for including far
too many requirements that will never be used.
• Impacts budgets, complexity, development time.
THE NINE CAUSES OF SOFTWARE ERRORS
2. Client-developer communication failures
• Misunderstanding of instructions in requirements
documentation
• Misunderstanding of written changes during
development.
• Misunderstanding of oral changes during development.
THE NINE CAUSES OF SOFTWARE ERRORS
3. Deliberate deviations from software requirements
• The developer reuses previous/similar work to save time.
• Often reused code needs modification which it may not get or
contains unneeded / unusable extraneous code.
• Developers inserting unapproved ‘enhancements’
(perfective coding; a slick new sort/search….); may also
ignore some seemingly minor features, which sometimes
are quite major.
THE NINE CAUSES OF SOFTWARE ERRORS
5. Coding errors
• Too many to try to list.
• Syntax errors (grammatical errors)
• Logic errors (program runs; results wrong)
• Run-time errors (crash during execution)
THE NINE CAUSES OF SOFTWARE ERRORS
6. Non-compliance w/documentation & coding instructions
• Non-compliance with published templates (structure)
• Non-compliance with coding standards (attribute names…)
• Size of program;
• (Standards and Integration Branch)
THE NINE CAUSES OF SOFTWARE ERRORS
7. Shortcomings of the Testing Process
• Likely the part of the development process cut short most
frequently!
• Incomplete test plans
• Parts of application not tested or tested thoroughly!
• Failure to document, report detected errors and faults
• So many levels of testing….we will cover.
THE NINE CAUSES OF SOFTWARE ERRORS
8. User interface errors
9. Documentation errors
• Errors in the design documents
• Errors in the documentation within the software for the
User Manuals
• Many error messages are totally meaningless
So let’s move on to ‘exactly’
what we mean by ‘Software
Quality.’
As you will see, there is no
commonly-agreed to definition.
Software quality is:
(1) The degree to which a system, component, or
process meets specified requirements.
by Philip Crosby
Another :
(1) The degree to which a system, component, or
process meets customer or user needs or
expectations.
1.5 Software Quality Assurance – IEEE definition
Software Quality Assurance is:
A planned and systematic pattern of all actions
necessary to provide adequate confidence that an
item or product conforms to established technical
requirements.
Software quality assurance is:
A set of actions necessary to provide adequate
confidence that the software development
process or the maintenance process of a
software system product conforms to
established functional technical requirements
as well as with the managerial requirements of
keeping the schedule and operating within the
budgetary confines.
This SQA definition supports the concept of the ISE 9000 standards
regarding SQA, and corresponds to main outlines of the Capability
Maturity Model (CMM) for software.
Our book adapts the Expanded Definition of SQA.
See Table 2.2. We will be looking at these a lot later…
1.5.2 SOFTWARE QUALITY ASSURANCE VS.
SOFTWARE QUALITY CONTROL
DIFFERENT OBJECTIVES.
Quality Control A part of quality management
focused on fulfilling quality requirement.
Quality Assurance’s A part of quality management
focused on providing confidence that quality
requirement we fulfilled.
BENEFITS OF SOFTWARE
QUALITY
Decreased number of defects and
errors in software.
Reduced development and
maintenance cost.
Increased software reliability.
Increased customer satisfaction.
Happier software practitioners.
(1) Assuring an acceptable level of confidence that the
software will conform to functional technical
requirements.
(2) Assuring an acceptable level of confidence that the
software will conform to managerial scheduling and
budgetary requirements.
(1) Assuring an acceptable level of confidence that the
software maintenance activities will conform to the
functional technical requirements.
(2) Assuring an acceptable level of confidence that the
software maintenance activities will conform to
managerial scheduling and budgetary requirements.
SOFTWARE ENGINEERS AND
QUALITY
Software engineers strive to control the
process applied: What is the best process
(i.e SDLC) to be used for the development of
software
resources expended: Make sure software
development is finished in expected time
and also using the estimated budget
end product quality attributes: Make
sure that the software it self is of a high
quality and contains all features and
requirements (functional and non
functional)