Module-5
Module-5
INTRODUCTION
➢While quality is generally agreed to be 'a good thing', in practice what
is meant by the 'quality' of a system can be vague.
➢Quality will be of concern at all stages of project planning and execution, but will be of particular
interest at the following points in the Step Wise framework (Figure 13.1).
➢Identify project scope and objectives Some objectives could relate to the qualities of the
application to be delivered.
➢ Identify project infrastructure Within this step, identifies installation standards and procedures.
Some of these will almost certainly be about quality.
Analyse project characteristics The application to be implemented is examined to see if it has
➢
reviewed.
THE IMPORTANCE OF SOFTWARE QUALITY
➢We would expect quality to be a concern of all producers of goods and
services. However, the special characteristics of software create special
demands.
➢ Increasing criticality of software
➢The intangibility of software
➢Accumulating errors during software development
➢ Increasing criticality of software- The final customer or user is naturally anxious about the
➢The intangibility of software can make it difficult to know that a project task was completed
satisfactorily. Task outcomes can be made tangible by demanding that the developer produce
'deliverables' that can be examined for quality.
➢Accumulating errors during software development As computer system development
comprises steps where the output from one step is the input to the next, the errors in the later
deliverables will be added to those in the earlier steps, leading to an accumulating detrimental
effect. In general, the later in a project that an error is found the more expensive it will be to
fix. In addition, because the number of errors in the system is unknown, the debugging phases
of a project are particularly difficult to control.
DEFINING SOFTWARE QUALITY
➢Functional requirements define what the system is to do, the resource requirements
specify allowable costs and the quality requirements state how well this system is to
operate.
➢Some qualities of a software product reflect the external view of software held by
users, as in the case of usability. These external qualities have to be mapped to internal
factors of which the developers would be aware.
➢Defining quality is not enough. If we are to judge whether a system meets our
requirements we need to be able to measure its qualities.
➢A good measure must relate the number of units to the maximum possible.
➢ When there is concern about the need for a specific quality characteristic in a software
product then a quality specification with the following minimum details should be drafted:
➢ test: the practical test of the extent to which the attribute quality exists;
➢ minimally acceptable: the worst value which might be acceptable if other characteristics
compensated for it, and below which the product would have to be rejected out of hand;
➢ target range: the range of values within which it is planned the quality measurement value
should lie;
failures;
failure on demand: the probability that a system will not be available at the time
➢
➢independent evaluators who are assessing the quality of a software product, not for themselves but
for a community of users
➢ The difference between internal and external quality attributes has already been noted.
➢ ISO 9126 also introduces another type of quality - quality in use - for which the following elements have
been identified:
➢effectiveness: the ability to achieve user goals with accuracy and completeness;
➢productivity: avoiding the excessive use of resources, such as staff effort, in achieving user goals;
➢safety: within reasonable levels of risk of harm to people and other entities such as business, software,
property and the environment;
➢ reliability, which relates to the capability of the software to maintain its level of performance;
➢ efficiency, which relates to the physical resources used when the software is executed;
➢ maintainability, which relates to the effort needed to the make changes to the software;
➢ portability, which relates to the ability of the software to be transferred to a different environment
ISO 9126 suggests sub-characteristics for each of the primary characteristics. They are useful
as they clarify what is meant by each of the main characteristics.
➢'Functionality compliance' refers to the degree to which the software adheres
to application-related standards or legal requirements.
➢ Typically these could be auditing requirements.
➢Since the original 1999 draft, a sub-characteristic called 'compliance' has
been added to all six ISO external characteristics.
➢ In each case, this refers to any specific standards that might apply to the
particular quality attribute.
➢'Interoperability' is a good illustration of the efforts of ISO 9126 to clarify
terminology.
➢'Interoperability' refers to the ability of the software to interact with other
systems.
➢ The framers of ISO 9126 have chosen this word rather than 'compatibility'
because the latter causes confusion with the characteristic referred to by ISO
9126 as 'replaceability’ (see below).
➢'Maturity' refers to the frequency of failure due to faults in a software
product, the implication being that the more the software has been used, the
more faults will have been uncovered and removed.
➢ It is also interesting to note that 'recoverability' has been clearly
distinguished from 'security' which describes the control of access to a
system.
➢ How 'learnability' is distinguished from 'operability'. A software tool could
be easy to learn but time-consuming to use because, say, it uses a large
number of nested menus.
➢ This might be fine for a package used intermittently, but not where the
system is used for many hours each day. in this case learnability' has been
incorporated at the expense of 'operability’.
➢ 'Attractiveness' is a recent addition to the sub-characteristics of usability
and is especially important where users are not compelled to use a
particular software product, as in the case of games and other entertainment
products
➢ 'Analysability' is the ease with which the cause of a failure can be determined.
➢ 'Changeability' is the quality that others call 'flexibility': the latter name is a better one as
'changeability' has a different connotation in plain English - it might imply that the suppliers
of the software are always changing it!
➢ 'Stability', on the other hand, does not refer to software never changing: it means that there is
a low risk of a modification to the software having unexpected effects.
➢ 'Portability compliance' relates to those standards that have a bearing on portability. The use of
a standard programming language common to many software/hardware environments would be
an example of this. 'Replaceability' refers to the factors that give 'upwards compatibility'
between old software components and the new ones. 'Downwards' compatibility is not implied
by the definition.
➢ 'Coexistence' refers to the ability of the software to share resources with other software
components; unlike 'interoperability', no direct data passing is necessarily involved.
➢ ISO 9126 provides guidelines for the use of the quality characteristics.
➢ Once the requirements for the software product have been established,
the following steps are suggested:
1. Judge the importance of each quality characteristic for the application Thus
reliability will be of particular concern with safety-critical systems while
efficiency will be important for some real-time systems.
2. Select the external quality measurements within the ISO 9126 framework
relevant to the qualities prioritized above Thus for reliability mean time between
failures would be an important measurement, while for efficiency, and more
specifically 'time behaviour', response time would be an obvious measurement.
3. Map measurements onto ratings that reflect user satisfaction For response time,
for example, the mappings might be as in Table 13.1.
4 Identify the relevant internal measurements and the intermediate
products in which they appear This would only be important where software
was being developed, rather than existing software being evaluated. For new
software, the likely quality of the final product would need to be assessed
during development.
➢understanding the requirements of customers so that they can be met, or even exceeded;
➢leadership to provide the unity of purpose and direction needed to achieve quality objectives;
➢a focus on the individual processes which create intermediate or deliverable products and services;
➢a focus on the systems of interrelated processes that create delivered products and services;
2. establishing a quality policy, that is, a framework which allows the organization's objectives in relation
to quality to be defined;
3. design of the processes which will create the products (or deliver the services) which will have the
qualities implied in the organization's quality objectives;
4. allocation of the responsibilities for meeting these requirements for each element of each process;
6. design of methods for measuring the effectiveness and efficiency of each process in contributing to the
organization's quality objectives;
7. gathering of measurements;
8. identification of any discrepancies between the actual measurements and the target values;
■ Documentation of objectives, procedures (in the form of a quality manual), plans, and records
relating to the actual operation of processes. The documentation must be subject to a change
control system that ensures that it is current. Essentially one needs to be able to demonstrate to an
outsider that the QMS exists and is actually adhered to.
■ Management responsibility-the organization needs to show that the QMS and the processes that
produce goods and services conforming to the quality objectives are actively and properly managed.
■ Resources - an organization must ensure that adequate resources, including appropriately trained
staff and appropriate infrastructure, are applied to the processes.
Production should be characterized by:
• requirements and other information used in design being adequately and clearly recorded;
• design outcomes being verified, validated and documented in a way that provides sufficient information for those who
have to use the designs;
• conditions to ensure adequate provision of information, work instruction, equipment, measurement devices, and post-
delivery activities;
• measurement - to demonstrate that products conform to standards, and the QMS is effective, and to improve the
effectiveness of processes that create products or services
PROCESS CAPABILITY MODELS
➢Rather than just checking that a system exists to detect faults, we might wish to check that a supplier uses
software development methods and tools likely to produce good quality software. A customer might feel more
confident
➢In the United States, a number of influential capability maturity models (CMM) have been developed at the
Software Engineering
➢Institute (SEI), a part of Carnegie-Mellon University, of which one, SW-CMM, relates specifically to
software development.
➢Recently a new version of CMM, CMM Integration or CMMI, was introduced to bring together models
produced for different environments into a single integrated framework.
➢These models place organizations at one of five levels of process maturity which indicate the sophistication
and quality of their production practices. These levels are defined as follows.
■ Level 1: Initial The procedures followed tend to be haphazard. Some projects may be
successful, but this tends to be because of the skills of particular individuals, including project
managers. There is no level 0 and so any organization would be at this level by default.
■ Level 2: Managed Organizations at this level will have basic project management procedures
in place. However, the way individual tasks are carried out will depend largely on the person
doing it.
■ Level 3: Defined The organization has defined the way that each task in the software
development life cycle should be done.
■ Level 5: Optimizing Improvement in procedures can be designed and implemented using the
data gathered from the measurement process.
For each of the levels, apart from the default level 1, key process areas (KPAs) have been identified
as distinguishing the current level from the lower ones. These are listed in Table 13.4.
The assessment is done by a team of assessors coming into the organization and interviewing key
staff about their practices, using a standard questionnaire to capture the information. A key objective is
not just to assess, but to recommend specific actions to bring the organization up to a higher level.
ISO 15504 PROCESS ASSESSMENT
➢ISO/IEC 15504 is a standard for process assessment that shares many
concepts with CMMI.
➢The two standards should be compatible. Like CMMI the standard is
designed to provide guidance on the assessment of software development
processes.
➢To do this there must be some benchmark or process reference model which
represents the ideal development life cycle against which the actual processes
can be compared.
➢When assessors are judging the degree to which a process attribute is being
fulfilled they allocate one of the following scores
ISO 15504 PROCESS ASSESSMENT
➢ISO/IEC 15504 is a standard for process assessment that shares many
concepts with CMMI.
➢ a set of technical standards documents for the computer software
development process and related business management functions.
➢In order to assess the process attribute of a process as being at a certain level of achievement
indicators have to be found that provide evidence for the assessment. For example, say the
requirement analysis processes of an organization were being assessed.
➢Assessors might wish to test whether the organization is at Level 3, which relates to there
being an established process. The assessor might find a section in a procedures manual
relating to the conduct of requirements.
➢This could be evidence of the process being defined (3.1 in Table 13.5).
➢They might also come across control documents which have been signed off as each step of
the requirements analysis process has been completed.
➢This would indicate that the defined process is actually deployed (3.2).
IMPLEMENTING PROCESS IMPROVEMENT
➢ Increasing visibility A landmark in the movement towards a focus on software quality was Gerald
Weinberg's advocacy of 'egoless programming'. Weinberg encouraged the simple practice of programmers
looking at each other's code.
➢ Procedural structure At first, programmers were left to get on with writing programs as best they could.
Over the years there has been the growth of methodologies where every process in the software development
cycle has carefully laid down steps.
➢ Checking intermediate stages It is tempting to push forward quickly with the development of any
engineered object until a 'working' model, however imperfect, has been produced which can then be
'debugged'. The move towards quality practices has emphasized checking the correctness of work at its
earlier, conceptual, stages.
number of smaller, relatively independent components developed quickly and tested at an early stage.
This can reduce some of the problems, noted earlier, of attempting to predict the external quality of the
software from early design documents. It does not preclude careful checking of the design of
components.
We are now going to look at some specific techniques. The push towards more visibility has been
dominated by the increasing use of walk-throughs, inspections and reviews. The movement towards a
more procedural structure inevitably leads to discussion of structured programming techniques and to
its later manifestation in the ideas of 'clean-room' software development.
The interest in the dramatic improvements made by the Japanese in product quality has led to much
discussion of the quality techniques they have adopted, such as the use of quality circles, and these will
be looked at briefly. Some of these ideas are variations on the theme of inspection and clean-room
development
INSPECTIONS
■ it helps spread good programming practices as the participants discuss specific pieces of code;
■ All types of defect are noted - not just logic or function errors.
■ Inspections can be carried out by colleagues at all levels except the very top.
■ The inspection is led by a moderator who has had specific training in the technique.
■ The other participants have defined roles. For example, one person will act as a recorder and note all defects found,
and another will act as reader and take the other participants through the document under inspection.
■ Statistics are maintained so that the effectiveness of the inspection process can be monitored
STRUCTURED PROGRAMMING AND CLEAN-ROOM SOFTWARE DEVELOPMENT
➢The way to deal with complex systems, it was contended, was to break them down
into components of a size the human mind could comprehend.
➢For this decomposition to work properly, each component would have to be self-
contained, with only one entry and exit point.
➢The ideas of structured programming have been further developed into the ideas of
clean-room software development by people such as the late Harlan Mills of IBM
With this type of development there are three separate teams:
■ specification team, which obtains the user requirements and also a usage
profile estimating the volume of use for each feature in the system;
■ development team, which develops the code but which does no machine
testing of the program code produced;
■ certification team, which carries out testing.
➢ Any system is produced in increments - each of which should be capable of actual operation by the
end-user.
➢ The development team does no debugging; instead, all software has to be verified by them using
mathematical techniques.
➢ The argument is that software which is constructed by throwing up a crude program, which then has
test data thrown at it and a series of hit-and-miss amendments made to it until it works, is bound to
be unreliable.
➢ The certification team carry out the testing, which is continued until a statistical model shows that
the failure intensity has been reduced to an acceptable level.
FORMAL METHODS
➢Despite the claims of the effectiveness of the use of a formal notation to define software specifications
for many years now, it is rarely used in mainstream software development.
➢This is despite it being quite widely being taught in universities. A newer development that may meet
with more success is the development of Object Constraint Language (OCL).
➢ It adds precise, unambiguous, detail to the UML models, for example about the ranges of values that
would be valid for a named attribute.
➢It uses an unambiguous, but non-mathematical, notation which developers who familiar with Java-like
programming languages should grasp relatively easily.
SOFTWARE QUALITY CIRCLES
➢ A quality circle is a group of four to ten volunteers working in the same area who meet for, say, an hour a
week to identify, analyse and solve their work-related problems.
➢ One of their number is the group leader and there could be an outsider, a facilitator, who can advise on
procedural matters. In order to make the quality circle work effectively, training needs to be given.
➢ Together the quality group select a pressing problem that affects their work.
➢ They identify what they think are the causes of the problem and decide on a course of action to remove
these causes.
➢ Often, because of resource or possible organizational constraints, they will have to present their ideas to
management to obtain approval before implementing the process improvement.
LESSONS LEARNT REPORTS
➢ Another way by which an organization can improve its performance is by reflecting on the performance of a project at its
immediate end when the experience is still fresh. This reflection may identify lessons to be applied to future projects.
➢ Project managers are required to write a Lessons Learnt report at the end of the project. This should be distinguished from
a Post Implementation Review (PIR).
➢ A PIR takes place after a significant period of operation of the new system, and focuses on the effectiveness of the new
system, rather than the original project process.
➢ The PIR is often produced by someone who was not involved in the original project, in order to ensure neutrality. An
outcome of the PIR will often be changes to enhance the effectiveness of the installed system.
➢The Lessons Learnt report, on the other hand, is written by the project manager as
soon as possible after the completion of the project.
➢ This urgency is because the project team is often dispersed to new work soon after
the finish of the project.
➢One problem that is frequently voiced is that there is often very little follow-up on
the recommendations of such reports, as there is often no body within the
organization with the responsibility and authority to do so.
TESTING
■ The issue is dismissed on the grounds that there has been a misunderstanding of a requirement by the
tester.
■ The issue is identified as a fault which the developers need to correct - where development is being done
by contractors then they would be expected to cover the cost of the correction.
■ It is recognized that the software is behaving as specified, but the requirement originally agreed is in fact
incorrect - remedying this means adding a new requirement and a contractor could expect to receive
payment for the additional work.
The issue is identified as a fault but is treated as an off-specification - it is decided that the application can be
made operational with the error still in place
▪When corrections are made, tests will need to be repeated. This is where the
additional effort in creating automated test scripts can pay off.
▪ A danger is that a change introduced to correct an error could actually
introduce errors in processes that were previously running correctly.
▪When code changes are made, all tests previously carried out should be rerun.
This is known as regression testing.
QUALITY PLANS
➢Some organizations produce quality plans for each project. These show how
the standard quality procedures and standards laid down in an organization's
quality manual will actually be applied to the project
A quality plan might have entries for:
■ documentation to be produced;
■ standards, practices and conventions;
■ testing;
■ training;