Professional Documents
Culture Documents
Software Projects
1
School of Technology and Management, Polytechnic Institute of Leiria, Portugal
2
University of Trás-os-Montes e Alto Douro, Portugal
3
Centro ALGORITMI, Portugal
1 Introduction
A recent study made in China in 2004 concluded that organisations obtain high
benefits when quality management and related standards are properly enforced [1].
Specifically, a project has a higher probability of success when a careful quality
management is carried out.
To fully understand quality management, it is essential to clarify its concepts,
starting from the quality one. There are many quality definitions, which vary in
context and the time by which it is (was) specified. This variety unveils the difficulty
involved in defining and measuring quality. Lately, the way quality is approached has
been changing radically. Nowadays, it is quality management that gains relevance,
announcing quality as a strategy to gain competitive advantage [2]. However, it is not
enough to say that quality management is important. In the context of software
production, we must aim for an explicit definition for software quality. Additionally,
we must create a set of activities that will help assuring that the work involved in the
software process is monitored through quality assurance activities on every software
project. Also, we must develop strategies for improving the software process, and as a
consequence, improving the quality of the software product.
In this paper we present the main concepts in the area of quality management for
software projects. We define quality and the corresponding activities in this context,
and also the key elements for a Total Quality Management (TQM) approach. We also
briefly describe two standards for implementing Quality Management Systems
(QMS), and how they fit into software organisations. We aim at identifying possible
misfits between the quality-related practices that can be used in QMSs for software
organisations, and the reality of software development and software projects.
The paper is organised as follows: the next section introduces quality concepts and
their relationships with software and software projects. In section 3 we present the
main concepts in the area of quality management, and in section 4 we describe the
Total Quality Management (TQM) paradigm applied to software organisations.
Section 5 addresses Software Quality Assurance (SQA) and related concepts. Section
6 we briefly describe two (ISO 9000 and CMMI) QMS referral standards, and section
7 concludes the paper.
Quality cannot be obtained from an isolated effort in a single area, and should not
be constrained to the activities of a single organisational level. It must, therefore, be
carefully planned and executed. For this reason, the quality management area has this
great potential of creating synergies with the one of project management [10].
For the last years there has been an added concern for the improvement of projects’
quality, not only at the derived products’ level, but also at the leadership and project
management levels. This is partially due to the fact of customers demanding each
time more performance, a more rigorous requirement’s fulfilment, less development
time, more high-technology levels, less defects and less costs [2].
Deming concluded that only 15% of the quality problems in a project originate
from the organisation’s operational level, i.e., in the activities of
development/production/manufacture of products. Therefore, 85% of the quality
problems are asserted to the design of a product, and to the strategic and management
organisational levels. These can be addressed through a more efficient quality
management [2].
For software projects, quality management is pointed out as a need, not only by
managers and customers, but essentially by developers [11]. This is due mainly to
[12]: the great variety of activities; the great number of problems that occur in this
kind of projects and; the critical role played currently by software products and
information systems in the organisations.
Quality management aims at assuring that all activities in a project are executed
efficiently, from the (project) planning activities, to the development and testing of a
software product or service, regarding the involving system and its performance [13].
This means that the focus is not only on the quality of the product, but also on the
quality of the process and the resources used to obtain it.
Jiang et al. performed a case study which included surveys to software engineers
[14]. Many of them were in favour of using strategies and tools to measure the
performance and quality of software projects. Additionally, the authors concluded that
it is urgent that organisations have extra care in planning, controlling and executing a
software process’s activities, giving more relevance to quality management activities
to maximize the software product’s quality.
According to Deming [2, 15], all members of an organisation are accountable
regarding a project’s quality, starting from top management. However, the project
manager plays a key role and is the most influent person in achieving an efficient
quality management. S/he should transmit trust and enhance cooperation between
team members, provide integration strategies, focus on the customer and have a
structured way for problem solving. S/he must be concentrated on the whole quality
management process, in order for the resulting project products to have the desired
quality. Nevertheless, all team members should be able to identify problems, suggest
solutions and implement those solutions [2].
To Sommerville, quality management involves defining the procedures and
patterns that should be used during software development, and assuring that they are
being followed by the software development team [16]. Besides those responsibilities,
the quality manager should also aim for a quality culture, i.e., to encourage team
members to assume the responsibility of their work, and to develop new approaches
for the improving its quality. Summing up, Sommerville identifies three main quality-
related activities [16]:
• Quality Assurance: identifies the procedures and organisational patterns that
support the development of higher quality software products;
• Quality Planning: adjusts the procedures and patterns identified above to a certain
software project’s specific needs;
• Quality Control: defines and approves processes that guarantee that quality
patterns specified for the project are followed by the software development team.
Enforcing these activities that enhance the quality of the software products and the
efficiency of the software processes remains a great challenge for software
organisations [17].
Act Plan
How to improve the What to do?
next time? How to do it?
Check Do
Happened according
Do what was planned
as planned?
The TQM term, widely used in organisations, also describes an approach to quality
improvement with the following key elements:
• Customer Focus – to reach full satisfaction of the customer. It includes a study on
the needs and wills of the customer, a requirements analysis, and measuring and
managing the customer’s satisfaction and expectations;
• Process Improvement – to reduce the variations on the process and achieve a
continuous quality improvement. In the context of software products, it includes
both business and software development processes. Improving them leads to
higher software product’s quality;
• Human Side of Quality – to create a cross-organisational culture of quality. The
focused areas include leadership, top management support and full participation
of all the organisation’s collaborators;
• Metrics, Models, Measurement and Analysis – to guide continuous improvement of
all quality parameters through a goal-oriented metric system.
The quality concept described in the ISO standard fully applies to software and
information systems development. End users have expectations of a high quality
pattern software, which provides them with the most adequate way of executing their
tasks in the system. These quality expectations regarding software and information
systems are correlated with two aspects [19]: the system should do what it is told to
do, and; it should do it in a correct and satisfactory manner. However, quality has
some other basic principles, such as:
• Prevent defects instead of correcting them;
• Make sure that defects are identified and corrected as soon as possible;
• Establish and eliminate the causes and the symptoms of defects;
• Audit the work according with the quality procedures and patterns previously
established.
According to Lewis, Software Quality Assurance (SQA) is a set of systematic
activities which unveil the required use for the software product [20]. SQA involves
all phases in a software development process, by monitoring and improving its
activities, assuring that the quality procedures and patterns are fulfilled, and
identifying and correcting problems. The IEEE 610.12-1990 standard defines
software quality as:
1. A planned and systematic pattern of all actions needed to provide the adequate
trust that a software product is conformant with the pre-established requirements;
2. A set of activities designed to evaluate the software development process;
SQA foresees also the people that influence in a positive way all the software
process lifecycle, and that quantify the quality of the process and of the resulting
software product. Therefore, quality can be quantified though metrics for the software
process, and through verification and validation techniques for the software product.
The activities involved in the quantification of quality for the software process
include evaluations (such as the ones referred in ISO 9000), quality checks, top
management reporting, continuous process evaluation and process statistical analysis.
For the software product, quantification is realised through formal inspections, unit
and system testing and customer acceptance testing. Lewis argues that organizations
that do not use SQA processes tend to show indicators of poor quality [20]. On the
other hand, organisations which are implementing a SQA process and applying it in
an appropriate manner show indicators of quality improvement. Table 2 summarises
the differences between software organisations that do not use SQA processes, and
those that do.
Organizations that do not use SQA Organizations where SQA processes are
processes implemented
The software that was delivered often Removing errors happens when it is
presents failures; cheaper to fix;
Consequences of unacceptable failures of There is product quality improvement;
systems, from financial to real-world The process of gathering metrics in
scenarios of application; accordance with the objectives, is
The systems are not available for its established a database of metrics:
intended use; planning, failure rates and other indicators
The systems are often very expensive; of quality;
The costs of detecting and removing The SQA is a resource for process
failures are sometimes excessive. improvement.
Lewis also describes the most common activities of SQA, namely [20]:
• Quality Control – defined as a process with methods that are used to monitor the
work and observe software requirements’ degree of fulfilment. It is focused on
revisions and on identifying software defects and bugs before delivery. It is
realised by the software organisation which conducts the software production;
• Software Testing – used to verify if the functional and non-functional requirements
were properly implemented. The pitfall on this approach is that it often occurs at a
later phase in the software development process, making it harder to assure the
quality of the software product. This is due to the fact that most software
organisations still use the generic waterfall software process model, which foresees
software testing precisely at the end of the software process lifecycle. For instance,
if a requirement specification error is detected here, the whole software process
lifecycle must be restarted;
• Software Configuration Management (SCM) – responsible for identifying and
controlling changes in software documentation, artifacts (such as units of code and
components) and deliverables (such as integrated solutions and additional
features). It controls the evolution of a software product, its constituents and their
relationships through versioning. It assures that no change is performed without a
previous analysis of its impact, along with the production of proper change
documentation.
In order to work correctly, these activities must be properly documented and
accepted among all software development team members. Therefore, a proper SQA
plan is needed, and it should include a description of the activities which will assure
adequate levels of quality in software development [20].
One common error usually made by people and organisations is to confuse Quality
Control and Quality Assurance. Although often incorrectly used many times, they
follow distinct purposes, as shown by their main activities presented in Table 3.
The ISO 9000 series of standards is a formalised QMS designed to ensure that quality
is built into every stage of the activity in hand. Wider application of the same
principles across every aspect of the organisation’s activities leads to TQM.
Sommerville considers ISO 9000 as an institutional standard which can be used to
develop a QMS for organisations ranging all industries. It is the most general standard
which mostly apply to organisations that are concerned with the quality processes
involved in the design, development and maintenance of their products [16].
Abreu [21] refers that standardisation assumes an enhancing role in the software
industry, providing wide scope consensual definitions, helping in the development of
software processes, and foreseeing reference points for software process
improvement.
6.2 CMMI
7 Conclusions
In this paper we presented a set of concepts related with quality and its
relationships with software projects and the production of software. We began by
describing fundamental concepts, namely those of quality and its surrounding
activities. We also referred the key elements for TQM, and concluded with a brief
description on QMS and the two ISO 9000 and CMMI standards which can be used as
referrals for implementing a QMS.
CMMI is specific for software organisations, and has the goal of guiding them in
improving the processes used to develop software products. It requires, however,
great discipline and hard work in order to be certified in higher (3 to 5) levels of
CMMI, since processes are evaluated through both their individual and collaborative
performance.
ISO 9000 is a generic referral for developing a QMS, and allows demonstrating if
it is effective and credible. It provides evidence that a certain organisation is qualified
to produce products and services of quality, although it does not evaluate directly the
quality of those products.
We see, therefore, the need of identifying a set of specific quality initiatives and
activities which can be applied to the specific context of software projects and the
underlying development processes.
References