0% found this document useful (0 votes)
9 views42 pages

Lecture 4 - Software Quality Assurance

The document discusses Software Quality Assurance (SQA), covering topics such as software quality, standards, testing, and quality management in agile development. It emphasizes the importance of quality plans, the role of reviews and inspections, and the need for a quality culture within development teams. Additionally, it highlights the significance of software metrics and analytics in assessing product and process quality.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views42 pages

Lecture 4 - Software Quality Assurance

The document discusses Software Quality Assurance (SQA), covering topics such as software quality, standards, testing, and quality management in agile development. It emphasizes the importance of quality plans, the role of reviews and inspections, and the need for a quality culture within development teams. Additionally, it highlights the significance of software metrics and analytics in assessing product and process quality.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 42

Software Quality Assurance

Muhammad Azeem Akbar


LUT University, Finland
Software Quality Assurance
2

Topics covered
Software quality
Software standards
Reviews and inspections Ch. 24
Sommerville
Quality management and agile development SW Engineering
Software measurement
Software Quality Assurance
3

Software Quality
Software Quality Assurance
4

Software Testing
Software Quality Assurance
5

Quality and Testing


Software Quality Assurance
6

Errors, Faults and Failures


Software Quality Assurance
7

Goal of Quality Assurance


Software Quality Assurance
8

QA Technique Classification
Software Quality Assurance
9

Defect Prevention
Software Quality Assurance
10

Defect Reduction
Software Quality Assurance
11

Issues with Testing


Software Quality Assurance
12

Quality planning
• A quality plan sets out the desired product qualities and how these are
assessed and defines the most significant quality attributes.
• The quality plan should define the quality assessment process.
• It should set out which organisational standards should be applied and,
where necessary, define new standards to be used.
Software Quality Assurance
13

Quality plans
• Quality plan structure
• Product introduction;
• Product plans;
• Process descriptions;
• Quality goals;
• Risks and risk management.
• Quality plans should be short, succinct documents
• If they are too long, no-one will read them.
Software Quality Assurance
14

Scope of quality management


• Record progresses and support continuity of development as the
development team changes.
• For smaller systems, quality management needs less documentation and
should focus on establishing a quality culture.
• Techniques have to evolve when agile development is used.
Software Quality Assurance
15

Software 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.
• The focus may be ‘fitness for purpose’ rather than specification
conformance.
Software Quality Assurance
16

Software fitness for purpose


• Has the software been properly tested?
• Is the software sufficiently dependable to be put into use?
• Is the performance of the software acceptable for normal use?
• Is the software usable?
• Is the software well-structured and understandable?
• Have programming and documentation standards been followed in the
development process?
Software Quality Assurance
17

Non-functional characteristics
• The subjective quality of a software system is largely based on its non-
functional characteristics.
• This reflects practical user experience – if the software’s functionality is not
what is expected, then users will often just work around this and find other
ways to do what they want to do.
• However, if the software is unreliable or too slow, then it is practically
impossible for them to achieve their goals.
Software Quality Assurance
18

Software quality attributes

Safety Understandability Portability


Security Testability Usability
Reliability Adaptability Reusability
Resilience Modularity Efficiency
Robustness Complexity Learnability
Software Quality Assurance
19

Quality conflicts
• It is not possible for any system to be optimized for all of these attributes –
for example, improving robustness may lead to loss of performance.
• The quality plan should therefore define the most important quality
attributes for the software that is being developed.
• The plan should also include a definition of the quality assessment
process, an agreed way of assessing whether some quality, such as
maintainability or robustness, is present in the product.
Software Quality Assurance
20

Process and product quality


• The quality of a developed product is influenced by the quality of the
production process.
• This is important in software development as some product quality
attributes are hard to assess.
• However, there is a very complex and poorly understood relationship
between software processes and product quality.
• The application of individual skills and experience is particularly important in
software development;
• External factors such as the novelty of an application or the need for an
accelerated development schedule may impair product quality.
Software Quality Assurance
21

Process-based quality

Develop Assess product


Define process
product quality

No Yes
Improve Quality Standardize
process OK process
Software Quality Assurance
22

Quality culture
• Quality managers should aim to develop a ‘quality culture’ where everyone
responsible for software development is committed to achieving a high
level of product quality.
• They should encourage teams to take responsibility for the quality of their
work and to develop new approaches to quality improvement.
• They should support people who are interested in the intangible aspects of
quality and encourage professional behavior in all team members.
Software Quality Assurance
23

Software standards
• Standards define the required attributes of a product or process. They play
an important role in quality management.
• Standards may be international, national, organizational or project
standards.
Software Quality Assurance
24

Importance of standards
• Encapsulation of best practice- avoids repetition of past mistakes.
• They are a framework for defining what quality means in a particular
setting i.e. that organization’s view of quality.
• They provide continuity - new staff can understand the organisation by
understanding the standards that are used.
Software Quality Assurance
25

Product and process standards


• Product standards
• Apply to the software product being developed. They include document
standards, such as the structure of requirements documents, documentation
standards, such as a standard comment header for an object class definition,
and coding standards, which define how a programming language should be
used.
• Process standards
• These define the processes that should be followed during software
development. Process standards may include definitions of specification,
design and validation processes, process support tools and a description of the
documents that should be written during these processes.
Software Quality Assurance
26

Product and process standards

Product standards Process standards


Design review form Design review conduct
Requirements document Submission of new code for
structure system building
Method header format Version release process
Java programming style Project plan approval process
Project plan format Change control process
Change request form Test recording process
Software Quality Assurance
27

Problems with standards


• They may not be seen as relevant and up-to-date by software engineers.
• They often involve too much bureaucratic form filling.
• If they are unsupported by software tools, tedious form filling work is often
involved to maintain the documentation associated with the standards.
Software Quality Assurance
28

Verification vs Validation
Chapter 8 Software Testing
29

V & V confidence
• Aim of V & V is to establish confidence that the system is ‘fit for purpose’.
• Depends on system’s purpose, user expectations and marketing
environment
• Software purpose
• The level of confidence depends on how critical the software is to an organisation.
• User expectations
• Users may have low expectations of certain kinds of software.
• Marketing environment
• Getting a product to market early may be more important than finding defects in the
program.
Chapter 8 Software Testing
30

Inspections and testing

• Software inspections
• Concerned with analysis of
the static system representation to discover problems (static verification)
• May be supplement by tool-based document and code analysis.
• Discussed in Chapter 15.
• Software testing
• Concerned with exercising and observing product behaviour (dynamic
verification)
• The system is executed with test data and its operational behaviour is observed.
Software Quality Assurance
31

Reviews and inspections


• A group examines part or all of a process or system and its documentation
to find potential problems.
• Software or documents may be 'signed off' at a
review which signifies that progress to the next development stage has
been approved by management.
• There are different types of review with different objectives
• Inspections for defect removal (product);
• Reviews for progress assessment (product and process);
• Quality reviews (product and standards).
Software Quality Assurance
32

Quality reviews
• A group of people carefully examine part or all of a software system and
its associated documentation.
• Code, designs, specifications, test plans, standards, etc. can all be
reviewed.
• Software or documents may be 'signed off' at a review which signifies that
progress to the next development stage has been approved by
management.
Software Quality Assurance
33

Phases in the review process


• Pre-review activities
• Pre-review activities are concerned with review planning and review
preparation
• The review meeting
• During the review meeting, an author of the document or program being
reviewed should ‘walk through’ the document with the review team.
• Post-review activities
• These address the problems and issues that have been raised during the
review meeting.
Software Quality Assurance
34

The software review process

Error
Planning
correction
Individual Review Follow-up
preparation meeting checks
Group Improvement
preparation

Pre-review activities Post-review activities


Software Quality Assurance
35

Distributed reviews
• The processes suggested for reviews assume that the review team has a
face-to-face meeting to discuss the software or documents that they are
reviewing.
• However, project teams are now often distributed, sometimes across
countries or continents, so it is impractical for team members to meet face
to face.
• Remote reviewing can be supported using shared documents where each
review team member can annotate the document with their comments.
Software Quality Assurance
36

Program inspections
• These are peer reviews where engineers examine the source of a system
with the aim of discovering anomalies and defects.
• Inspections do not require execution of a system so may be used before
implementation.
• They may be applied to any representation of the system (requirements,
design,configuration data, test data, etc.).
• They have been shown to be an effective technique for discovering
program errors.
Software Quality Assurance
37

Inspection checklists
• Checklist of common errors should be used to
drive the inspection.
• Error checklists are programming language dependent and reflect the
characteristic errors that are likely to arise in the language.
• In general, the 'weaker' the type checking, the larger the checklist.
• Examples: Initialisation, Constant naming, loop termination, array bounds,
etc.
Software Quality Assurance
38
An inspection checklist (a)
Fault class Inspection check
Data faults • Are all program variables initialized before their values are
used?
• Have all constants been named?
• Should the upper bound of arrays be equal to the size of the
array or Size -1?
• If character strings are used, is a delimiter explicitly assigned?
• Is there any possibility of buffer overflow?
Control faults • For each conditional statement, is the condition correct?
• Is each loop certain to terminate?
• Are compound statements correctly bracketed?
• In case statements, are all possible cases accounted for?
• If a break is required after each case in case statements, has it
been included?
Input/output faults • Are all input variables used?
• Are all output variables assigned a value before they are
output?
• Can unexpected inputs cause corruption?
Software Quality Assurance
39

An inspection checklist (b)


Fault class Inspection check
Interface faults • Do all function and method calls have the correct
number of parameters?
• Do formal and actual parameter types match?
• Are the parameters in the right order?
• If components access shared memory, do they have the
same model of the shared memory structure?
Storage management • If a linked structure is modified, have all links been
faults correctly reassigned?
• If dynamic storage is used, has space been allocated
correctly?
• Is space explicitly deallocated after it is no longer
required?
Exception management • Have all possible error conditions been taken into
faults account?
Software Quality Assurance
40

Key points
• Software quality management is concerned with ensuring that software has
a low number of defects and that it reaches the required standards of
maintainability, reliability, portability etc. Software standards are important
for quality assurance as they represent an identification of ‘best practice’.
When developing software, standards provide a solid foundation for
building good quality software.

• Reviews of the software process deliverables involve a team of people who


check that quality standards are being followed. Reviews are the most
widely used technique for assessing quality.
Software Quality Assurance
41

Key points
• In a program inspection or peer review, a small team systematically checks
the code. They read the code in detail and look for possible errors and
omissions. The problems detected are discussed at a code review
meeting.
• Agile quality management relies on establishing a quality culture where the
development team works together to improve software quality.
• Software measurement can be used to gather quantitative data about
software and the software process.
Software Quality Assurance
42

Key points
• You may be able to use the values of the software metrics that are
collected to make inferences about product and process quality.
• Product quality metrics are particularly useful for highlighting anomalous
components that may have quality problems. These components should
then be analyzed in more detail.
• Software analytics is the automated analysis of large volumes of software
product and process data to discover relationships that may provide
insights for project managers and developers.

You might also like