Download as pdf or txt
Download as pdf or txt
You are on page 1of 80

QUALITY

MANAGEMENT
S O F TWAR E P R O J E C T M AN A G E M E N T

09/2020
1
Contents
1. Introduction to Software quality management
2. Software quality
3. Software standards
4. Reviews
5. Program inspections

2
Contents
1. Introduction to Software quality management
2. Software quality
3. Software standards
4. Reviews
5. Program inspections

3
Introduction
• Problems with software quality were initially
discovered in the 1960s with the development of
the first large software systems, and continued to
plague software engineering throughout the 20th
century.
– Delivered software was slow and unreliable, difficult to
maintain and hard to reuse.
 Dissatisfaction with this situation led to the adoption
of formal techniques of software quality management,
which have been developed from methods used in the
manufacturing industry.

4
Introduction
• Software quality management for software
systems has three principal concerns:
1. At the organizational level, quality management is
concerned with establishing a framework of
organizational processes and standards that will lead to
high quality software.
– Quality management team should take responsibility
for defining the software development processes to be
used and standards that should apply to the software.

5
Introduction
• Three principal concerns (cont.)
2. At the project level, quality management involves
the application of specific quality processes, checking
that these planned processes have been followed, and
ensuring that the project outputs are conformant with the
standards that are applicable to that project.
3. At the project level, quality management is also
concerned with establishing a quality plan for a project.
The quality plan should set out the quality goals for the
project and define what processes and standards are to
be used.

6
Quality assurance
• In manufacturing industry, the terms ‘quality
assurance’ and ‘quality control’ are widely used
– Quality assurance (QA) is the definition of processes and
standards that should lead to high-quality products and the
introduction of quality processes into the manufacturing
process.
– Quality control (QC) is the application of these quality
processes to weed out products that are not of the required
level of quality
Quality Assurance activities are oriented towards prevention of
introduction of defects and Quality Control activities are aimed at
detecting defects in products and services
https://www.softwaretestinghelp.com/what-are-the-quality-attributes/ 7
Quality assurance
• In the software industry, different companies and
industry sectors interpret quality assurance and
quality control in different ways.
– Sometimes, quality assurance simply means the definition
of procedures, processes, and standards that are aimed at
ensuring that software quality is achieved.
– In other cases, quality assurance also includes all
configuration management, verification, and validation
activities that are applied after a product has been handed
over by a development team.
– The QA team in most companies is responsible for
managing the release testing process.

8
Quality management activities

• Quality management provides an independent check on


the software development process.
• The quality management process checks the project
deliverables to ensure that they are consistent with
organizational standards and goals. 9
Quality management activities
• The quality team should be independent from
the development team so that they can take an
objective view of the software.
– This allows them to report on software quality without
being influenced by software development issues.

10
Quality planning
• A quality plan sets out
– the desired product qualities and
– how these are assessed and
– defines the most significant quality attributes.
– which organisational standards should be applied

11
Quality plans
• Humphrey (1989), in his classic book on software
management, suggests an outline structure for a
quality plan. This includes:
1. Product introduction;
2. Product plans;
3. Process descriptions;
4. Quality goals;
5. Risks and risk management.

12
Quality plans
• A quality plan:
1. Product introduction A description of the product,
its intended market, and the quality expectations for
the product.
2. Product plans The critical release dates and
responsibilities for the product, along with plans for
distribution and product servicing.
3. Process descriptions The development and service
processes and standards that should be used for
product development and management.

13
Quality plans
• A quality plan (cont.):
4. Quality goals The quality goals and plans for the
product, including an identification and justification of
critical product quality attributes.
5. Risks and risk management The key risks that
might affect product quality and the actions to be taken
to address these risks.
• Quality plans should be short, succinct document
– If they are too long, no-one will read them.

14
Contents
1. Introduction to Software quality management
2. Software quality
3. Software standards
4. Reviews
5. Program inspections

15
Software quality attributes
• Software quality is not just about whether the software
functionality has been correctly implemented, but also
depends on non-functional system attributes.
– Boehm, et al. (1978) suggested that there were 15
important software quality attributes

16
Software quality attributes
• Reliability
– Measure if the product is reliable enough to sustain in any
condition. Should give consistently correct results.
Product reliability is measured in terms of working of the project
under different working environment and different conditions.
• Maintainability
– Different versions of the product should be easy to maintain. For
development it should be easy to add code to the existing system,
should be easy to upgrade for new features and new technologies
from time to time.
– Maintenance should be cost-effective and easy. The system is
easy to maintain and correcting defects or making a change in the
software.
Read more: https://www.softwaretestinghelp.com/what-are-the-quality-attributes
17
Software quality attributes
• Usability
– This can be measured in terms of ease of use. The
application should be user-friendly. Should be easy to
learn. Navigation should be simple.
– The system must be:
• Easy to use for input preparation, operation, and
interpretation of the output.
• Provide consistent user interface standards or conventions
with our other frequently used systems.
• Easy for new or infrequent users to learn to use the system.

Read more: https://www.softwaretestinghelp.com/what-are-the-quality-attributes


18
Software quality attributes
• Portability
– This can be measured in terms of Costing issues related to
porting, Technical issues related to porting, Behavioral
issues related to porting.
• Efficiency
– Major system quality attribute. Measured in terms of time
required to complete any task given to the system. For
example, the system should utilize processor capacity, disk
space and memory efficiently.
– If system is using all the available resources then the user
will get degraded performance failing the system for
efficiency. If system is not efficient then it can not be used in
real-time applications.
Read more: https://www.softwaretestinghelp.com/what-are-the-quality-attributes
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.

20
Process and product quality
• The quality of a developed product is influenced
by the quality of the production process.
– E.g. In manufacturing systems, a manufacturing
process involves configuring, setting up, and operating
the machines involved in the process. Once the
machines are operating correctly, product quality
naturally follows.
 This is important in software development as
some product quality attributes are hard to assess.

21
Process and product quality

Process-based quality
You measure the quality of the product and change the
process until you achieve the quality level that you need.

22
Process and product quality
• However, in software industry, there is a very
complex relationship between software processes
and product quality. Because:
– Software is not manufactured - it is designed.
Software development is a creative rather than a
mechanical process, so the influence of individual
skills and experience is significant.
– External factors, such as the novelty of an application
or commercial pressure for an early product release,
also affect product quality irrespective of the process
used.

23
Contents
1. Introduction to Software quality management
2. Software quality
3. Software standards
4. Reviews
5. Program inspections

24
Software standards
• Software standards play a very important role in
software quality management.
• An important part of quality assurance is the
definition or selection of standards that should
apply to
– the software development process or
– software product.

25
Importance of standards
• Software standards are important for three
reasons:
1. Standards capture wisdom that is of value to the
organization. They are based on knowledge about
the best / most appropriate practice for the company.
- This knowledge is often only acquired after a great
deal of trial and error.
- Building it into a standard helps the company
reuse this experience and avoid previous
mistakes.

26
Importance of standards
• Software standards are important for three
reasons:
2. Standards provide a framework for defining what
‘quality’ means in a particular setting.
- Software quality is subjective, and by using
standards you establish a basis for deciding if a
required level of quality has been achieved.

27
Importance of standards
• Software standards are important for three
reasons:
3. Standards assist continuity when work carried out
by one person is taken up and continued by another.
- Standards ensure that all engineers within an
organization adopt the same practices.
- Consequently, the learning effort required when
starting new work is reduced.

28
Types of standard
• Two types of software engineering standard that
may be defined and used in software quality
management:
1. Product standards These 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.
29
Types of standard
• Two types of standards (cont.)
2. Process standards These define the processes that
should be followed during software development.
They include:
- definitions of specification, design and validation
processes,
- process support tools, and
- a description of the documents that should be
written during these processes.

30
Types of standard

Product and Process


standards
31
Naming Conventions - C#

use PascalCase for class use camelCase for method


names and method arguments and local
names. variables.

Why: consistent with the Microsoft's .NET Framework and easy to


read.
32
Naming Conventions - C#
• use noun or noun phrases to name a class.

AVOID

public class
AddEmployee
{

}
Why: consistent with the Microsoft's .NET Framework and easy to remember.

33
Check Null or Empty
• To check null or empty condition.

34
try-catch statement
• Use a try-catch statement for most exception
handling.

35
Use using statement
• Simplify your code by using the C# using
statement.
– If you have a try-finally statement in which the only
code in the finally block is a call to the Dispose
method, use a using statement instead.

36
Use using statement

37
Use using statement
string connectionString = "...";

using (SqlConnection con = new SqlConnection(connectionString)) {

con.Open();
using (SqlCommand command =
new SqlCommand("SELECT * FROM Customers", con))
using (SqlDataReader reader = command.ExecuteReader()) {

while (reader.Read()) {
Console.WriteLine("{0} {1} {2}",
reader.GetInt32(0),
reader.GetString(1));
}
}
}
38
Process standard

Change management process


39
Product standard

An example of Change Request 40


Standards development
• National and international bodies such as the
U.S. DoD, ANSI, BSI, NATO, and the IEEE
support the production of standards.
• These are general standards that can be applied
across a range of projects.
– Bodies such as NATO and other defense
organizations may require that their own standards be
used in the development contracts that they place with
software companies.

41
Standards development
• National and international standards have been
developed covering
– software engineering terminology, programming languages
such as Java and C++,
– notations such as charting symbols,
– procedures for deriving and writing software requirements,
– quality assurance procedures,
– and software verification and validation processes
• Quality management teams should normally base on
national and international standards to develop
standards for their company, draw up a standards
‘handbook’.
42
Example: IEEE 830-1998 standard
• IEEE 830-1998: IEEE Recommended Practice
for Software Requirements Specifications
– Describes the content and qualities of a good software
requirements specification
– Help software customers to accurately describe what
they wish to obtain.
– Help software suppliers to understand exactly what the
customer wants.
– Establish the basis for agreement between the
customers and the suppliers on what the software
product is to do
Gregor v. Bochmann, University of Ottawa, Based on Powerpoint slides by Gunter
Mussbacher (2009) with material from: IEEE 830-1998 Standard. 43
IEEE 830-1998 standard

Gregor v. Bochmann, University of Ottawa, Based on Powerpoint slides by Gunter


Mussbacher (2009) with material from: IEEE 830-1998 Standard. 44
IEEE 830-1998 standard

Gregor v. Bochmann, University of Ottawa, Based on Powerpoint slides by Gunter


Mussbacher (2009) with material from: IEEE 830-1998 Standard. 45
IEEE 830-1998 standard

Gregor v. Bochmann, University of Ottawa, Based on Powerpoint slides by Gunter


Mussbacher (2009) with material from: IEEE 830-1998 Standard. 46
IEEE 830-1998 standard

Gregor v. Bochmann, University of Ottawa, Based on Powerpoint slides by Gunter


Mussbacher (2009) with material from: IEEE 830-1998 Standard. 47
Problems with standards
• Software engineers sometimes consider standards to
be over prescriptive and not really relevant to the
technical activity of software development.
– This is particularly likely when project standards require
tedious documentation and work recording.
• Although they usually agree about the general need
for standards, engineers often find good reasons why
standards are not necessarily appropriate to their
particular project.
• To minimize dissatisfaction and to encourage buy-in
to standards, quality managers who set the standards
should therefore take the following steps:

48
Problems with standards
1. Involve software engineers in the selection of
product standards
– If developers understand why standards have been
selected, they are more likely to be committed to these
standards.
– Ideally, the standards document should not just set out
the standard to be followed, but should also include
commentary explaining why standardization decisions
have been made.

49
Problems with standards
2. Review and modify standards regularly to
reflect changing technologies
– Standards are expensive to develop and they tend to
be enshrined in a company standards handbook.
– Because of the costs and discussion required, there is
often a reluctance to change them.
– A standards handbook is essential but it should evolve
to reflect changing circumstances and technology

50
Problems with standards
3. Provide software tools to support standards
– Developers often find standards to be a bugbear when
conformance to them involves tedious manual work
that could be done by a software tool.
– If tool support is available, very little effort is required
to follow the software development standards.
• For example, document standards can be implemented using
word processor styles.

51
ISO 9001 standards framework
• There is an international set of standards that can be
used in the development of quality management
systems in all industries, called ISO 9000.
• ISO 9000 standards can be applied to a range of
organizations from manufacturing through to service
industries.
• ISO 9001, the most general of these standards,
applies to organizations that design, develop, and
maintain products, including software. The ISO 9001
standard was originally developed in 1987.

52
ISO 9001 standards framework
• The ISO 9001 standard is not itself a standard for
software development but is a framework for
developing software standards.
• It sets out general quality principles, describes quality
processes in general, and lays out the organizational
standards and procedures that should be defined.
– These should be documented in an organizational quality
manual.
• The major revision of the ISO 9001 standard in 2000
reoriented the standard around nine core processes.

53
ISO 9001 standards framework

ISO 9001
core
processes

54
ISO 9001 standards framework
• If an organization is to be ISO 9001 conformant, it
must document how its processes relate to these
core processes.
• It must also define and maintain records that
demonstrate that the defined organizational
processes have been followed.
– For example, a company could define test coverage
standards specifying that all methods in objects must be
called at least once.
• The company quality manual should describe the
relevant processes and the process data that has to
be collected and maintained.

55
ISO 9001 standards framework
• Some people think that ISO 9001 certification means
that the quality of the software produced by certified
companies will be better than that from uncertified
companies.
• This is not necessarily true:
– The ISO 9001 standard focuses on ensuring that the
organization has quality management procedures in place
and it follows these procedures.
– There is no guarantee that ISO 9001 certified companies
use the best software development practices or that their
processes lead to high-quality software.

56
Contents
1. Introduction to Software quality management
2. Software quality
3. Software standards
4. Reviews
5. Program inspections

57
Reviews and inspections
• Reviews and inspections are QA activities that
check the quality of project deliverables.
– This involves examining the software, its
documentation and records of the process to discover
errors and omissions and to see if quality standards
have been followed.
• Reviews and inspections are used alongside
program testing as part of the general process of
software verification and validation.

58
Reviews and inspections
• During a review, a group of people examine the
software, its associated documentation, looking for:
– potential problems and
– non-conformance with standards.
• The review team makes informed judgments about
the level of quality of a system or project deliverable.
• Project managers may then use these assessments
to make planning decisions and allocate resources to
the development process.

59
Reviews and inspections
• Quality reviews are based on documents that
have been produced during the software
development process. Includes:
– software specifications, designs, or code, process
models, test plans, configuration management
procedures, process standards, and user manuals…
• The review should
– check the consistency and completeness of the
documents or code under review and
– make sure that quality standards have been followed.

60
Reviews and inspections
• However, reviews are not just about checking
conformance to standards.
• They are also used to help discover problems and
omissions in the software or project documentation.
• The conclusions of the review should be formally
recorded as part of the quality management process.
– If problems have been discovered, the reviewers’
comments should be passed to the author of the software
or whoever is responsible for correcting errors or
omissions.

61
Reviews and inspections
• The purpose of reviews and inspections is to improve
software quality, not to assess the performance of
people in the development team.
• Reviewing is a public process of error detection.
Inevitably, mistakes that are made by individuals are
revealed to the whole programming team.
– To ensure that all developers engage constructively with the
review process, project managers have to be sensitive to
individual concerns.
– They must develop a working culture that provides support
without blame when errors are discovered.

62
The review process
• The review process is normally structured into
three phases:
– Pre-review activities
– The review meeting
– Post-review activities

63
The review process
• Pre-review activities: These are preparatory
activities that are essential for the review to be
effective, includes:
– Review planning: involves setting up a review team,
arranging a time and place for the review, and distributing
the documents to be reviewed.
– Group preparation: the team may meet to get an overview
of the software to be reviewed.
– Individual preparation: Team members read and
understand the software or documents and relevant
standards. They work independently to find errors,
omissions, and departures from standards.
Note: Reviewers may supply written comments on the software if
they cannot attend the review meeting. 64
The review process
• 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.
– The review should be relatively short—two hours at most.
– One team member should chair the review and another
should formally record all review decisions and actions to
be taken.
– During the review, the chair is responsible for ensuring that
all written comments are considered.
– The review chair should sign a record of comments and
actions agreed during the review.

65
The review process
• Post-review activities
– The issues and problems raised during the review must be
addressed.
• This may involve fixing software bugs, refactoring software so
that it conforms to quality standards, or rewriting documents.
• Sometimes, a management review is also necessary to decide if
more resources should be made available to correct problems.
– After changes have been made, the review chair may
check that the review comments have all been taken into
account.
• Sometimes, a further review will be required to check that the
changes made cover all of the previous review comments.

66
The review team
• Review teams should normally have a core of
three to four people who are selected as principal
reviewers.
– One member should be a senior designer who will
take the responsibility for making significant technical
decisions.
– The project manager need not be involved in the
review, unless problems are anticipated that require
changes to the project plan.

67
Reviews and agile methods
• The review process in agile software
development is usually informal.
– In Scrum, there is a review meeting after each iteration
of the software has been completed (a sprint review),
where quality issues and problems may be discussed.
– In extreme programming, pair programming ensures
that code is constantly being examined and reviewed
by another team member.
 Agile approaches are not usually standards-driven, so
issues of standards compliance are not usually considered.

68
Contents
1. Introduction to Software quality management
2. Software quality
3. Software standards
4. Reviews
5. Program inspections

69
Program inspections
• Program inspections are peer reviews where engineers
examine the source of a system with the aim of
discovering anomalies and defects.
• Inspections may be part of the software verification and
validation processes.
– They complement testing as they do not require the program to
be executed.
– This means that incomplete versions of the system can be
verified and that representations such as UML models can be
checked.
• They may be applied to any representation of the system
(requirements, design, configuration data, test data, etc.).

70
Program inspections
• Program inspections involve team members
who make a careful, line-by-line review of the
program source code, design models:
– They look for defects and problems, highlights them
and describe these at an inspection meeting.
– Defects may be logical errors, anomalies in the code
or features that have been omitted from the code.

71
Inspection checklist
• During an inspection, a checklist of common
programming errors is often used to focus the
search for bugs.
– You use different checklists for different programming
languages because each language has its own
characteristic errors.
– Gilb and Graham (1993) emphasize that each
organization should develop its own inspection
checklist based on local standards and practices.
– These checklists should be regularly updated, as new
types of defects are found.

72
73
The important of inspection
• Most companies found that inspections are very
effective in finding bugs.
– Fagan (1986) reported that more than 60 percent of the
errors in a program can be detected using informal program
inspections.
– Mills et al. (1987) suggest that a more formal approach to
inspection, based on correctness arguments, can detect
more than 90% of the errors in a program.
– McConnell (2004) compares unit testing, where the defect
detection rate is about 25%, with inspections, where the
defect detection rate was 60%.

74
Problems with inspection
• In spite of their well-publicized cost effectiveness,
many software development companies are
reluctant to use inspections or peer reviews.
– Software engineers with experience of program
testing are sometimes unwilling to accept that
inspections can be more effective for defect detection
than testing.
– Managers may be suspicious because inspections
require additional costs. They may not wish to take the
risk that there will be no corresponding savings in
program testing costs.

75
Problems with inspection
• Extreme programming practitioners argue that
pair programming is an effective substitute for
inspection as this is, in effect, a continual
inspection process.
– Two people look at every line of code and check it
before it is accepted.

76
Problems with inspection
• However:
– Pair programming can also lead to mutual
misunderstandings of requirements, where both
members of the pair make the same mistake.
– Furthermore, pairs may be reluctant to look for errors
because the pair does not want to slow down the
progress of the project.
– The people involved cannot be as objective as an
external inspection team and their ability to discover
defects is likely to be compromised by their close
working relationship.

77
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…
• SQM includes defining standards for processes and
products and establishing processes to check that these
standards have been followed.
• Software standards are important for quality assurance as
they represent an identification of ‘best practice’.

78
Key points
• Quality management procedures may be documented
in an organizational quality manual, based on the generic
model for a quality manual suggested in the ISO 9001
standard.
• Reviews of the software process deliverables involve a
team of people who check that quality standards are
being followed.
• 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.

79
References
As described in the Introduction slide.

80

You might also like