0% found this document useful (0 votes)
5 views

Lecture 9

Chapter 9 discusses quality management and software maintenance, outlining key activities, techniques, and the importance of quality assurance in software engineering. It defines software maintenance, categorizes maintenance types, and emphasizes the role of configuration management in managing software evolution. The chapter also highlights the significance of quality management processes in meeting customer requirements and ensuring software reliability and performance.

Uploaded by

itskaranja001
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Lecture 9

Chapter 9 discusses quality management and software maintenance, outlining key activities, techniques, and the importance of quality assurance in software engineering. It defines software maintenance, categorizes maintenance types, and emphasizes the role of configuration management in managing software evolution. The chapter also highlights the significance of quality management processes in meeting customer requirements and ensuring software reliability and performance.

Uploaded by

itskaranja001
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 25

Chapter 9

Quality management and


software maintenance
Dr. Jael Wekesa
[email protected]
Overview
 Introduction to software maintenance
 Software maintenance activities
 Techniques for maintenance
 Quality management and importance in software engineering
 Classification of Quality requirements
 Software Quality Architecture
 Configuration management and its importance in software
engineering
Lesson objective:
- Define the term quality management, software
maintenance, configuration management and software re-
engineering.
- To explain the importance of quality management, software
maintenance, configuration management of software.
- Explain processes of ensuring delivering of high quality
software through the various software maintenance and
configuration management
9.1. Introduction to software maintenance
 Software maintenance - the totality of activities required to
provide cost-effective support to a software system. Activities
are performed during the pre-delivery stage as well as the post-
delivery stage.
 Pre-delivery activities include planning for post-delivery
operations, supportability, and logistics determination.
 Post-delivery activities include software modification, training,
and operating a help desk.
Cont…
 A maintainer is defined by ISO/IEC 12207 (International
Organization for Standardization/International Electrotechnical
Commission) as an organization that performs maintenance
activities [ISO12207].
 ISO/IEC 12207 identifies the primary activities of software
maintenance as:
- Process implementation; - Maintenance review/acceptance;
- Problem and modification analysis;- Migration and
- Modification implementation; - Retirement.
Software maintenance activities
Cont…
 Process Implementation tasks are:
o Develop maintenance plans and procedures.
o Establish procedures for Modification Requests.
o Implement the CM (Configuration management) process.
 Problem and Modification tasks are:
o Perform initial analysis.
o Verify the problem.
o Develop options for implementing the modification.
o Document the results.
o Obtain approval for modification option
 Modification Implementation tasks are: Perform detailed analysis. Develop, code, and
test the modification.
Cont…
 Maintenance Review/Acceptance tasks are: Conduct reviews. Obtain
approval for modification.
 Migration tasks are: Ensure that migration is in accordance with
ISO/IEC 12207. Develop a migration plan. Notify users of migration
plans.
- Conduct parallel operations. Notify user that migration has started.
Conduct a post-operation review. Ensure that old data is accessible.
 Software Retirement tasks are: Develop a retirement plan. Notify users
of retirement plans. Conduct parallel operations. Notify user that
retirement has started. Ensure that old data is accessible
Categories of maintenance defined by ISO/IEC
 Corrective maintenance: Reactive modification of a software
product performed after delivery to correct discovered problems.
 Adaptive maintenance: Modification of a software product
performed after delivery to keep a software product usable in a
changed or changing environment.
 Perfective maintenance: Modification of a software product after
delivery to improve performance or maintainability.
 Preventive maintenance: Modification of a software product after
delivery to detect and correct latent faults in the software product
before turning into effective faults
Techniques for maintenance
 Effective software maintenance is performed using techniques specific to maintenance. The
following are some of the best practice techniques used by maintainers:
 Program Comprehension: Programmers spend considerable time in reading and comprehending
programs in order to implement changes. Code browsers are a key tool in program comprehension.
Clear and concise documentation can aid in program comprehension. Based on the importance of
this subtopic, an annual IEEE Computer Society workshop is now held to address program
comprehension.
 Re-engineering: the examination and alteration of the subject system to reconstitute it in a new
form, and the subsequent implementation of the new form. Re-engineering is often not undertaken
to improve maintainability but is used to replace aging legacy systems.
 Refactoring: a program transformation that reorganizes a program without changing its behavior,
is now being used in reverse engineering to improve the structure of object oriented programs.
Cont…
 Reverse engineering: is the process of analyzing a subject system to identify the system’s
components and their interrelationships and to create representations of the system in another form or
at higher levels of abstraction. Reverse engineering is passive; it does not change the system, or result
in a new one. A simple reverse engineering effort may merely produce call graphs and control flow
graphs from source code. Types of reverse engineering are re-documentation, design recovery. Data
Reverse Engineering. Reverse engineering topics are discussed at the annual Working Conference on
Reverse Engineering (WCRE).
 Impact Analysis: identifies all systems and system products affected by a change request and
develop an estimate of the resources needed to accomplish the change. It is performed after a change
request enters the configuration management process. The objectives of impact analysis are:
Determine the scope of a change in order to plan and implement work. Develop accurate estimates
of resources needed to perform the work. Analyze the cost/benefits of the requested change.
Communicate to others the complexity of a given change.
9.2 Quality management and importance
in software engineering
 Software quality can be defined as the degree to which a system or a
component meets specified requirements.

Quality assurance
- Establish organizational procedures and standards for quality.

Quality planning
- Select applicable procedures and standards for a particular project
and modify these as required.

Quality control
- Ensure that the software development team follows procedures and
standards.

Quality management should be separate from project management to
ensure independence.
Causes of software errors
 Software errors can be classified into the following categories:
(1) Faulty definition of requirements: faulty definition of requirements, usually prepared by the client, is
one of the main causes of software errors, erroneous definition of requirements, absence of vital
requirements, incomplete definition of requirements, inclusion of unnecessary requirements, functions
that are not expected to be needed in the near future
(2) Client–developer communication failures: Misunderstandings resulting from defective client–
developer communication are additional causes for the errors that prevail in the early stages of the
development process
(3) Deliberate deviations from software requirements: The developer reuses software modules taken
from an earlier project without sufficient analysis of the changes and adaptations needed to correctly
fulfill all the new requirements; due to time or budget pressures, the developer decides to omit part of
the required functions in an attempt to cope with these pressures
(4) Logical design errors
Cont…
(5) Coding errors
(6) Non-compliance with documentation and coding instructions
(7) Shortcomings of the testing process
(8) Procedure errors
(9) Documentation errors
Importance of Quality Management
- Software quality management processes must address how well software
products will satisfy customer and stakeholder requirements
 It can help identify quality issues
 Eliminate unnecessary activities
 Close gaps in performance
Classification of Quality requirements
 Classifications of software requirements into software
quality factors are as follows:
a) Product operation factors: Correctness, Reliability,
Efficiency, Integrity, Usability.
b) Product revision factors: Maintainability, Flexibility,
Testability
c) Product transition factors: Portability, Reusability,
Interoperability
Product operation software quality
factors
 Correctness requirements are defined in a list of the software
system’s required outputs

 Reliability requirements deal with failures to provide service. They


determine the maximum allowed software system failure rate, and can
refer to the entire system or to one or more of its separate functions.
Cont…
 Efficiency requirements deal with the hardware resources needed
to perform all the functions of the software system in conformance to
all other requirements.
 Integrity requirements deal with the software system security, that
is, requirements to prevent access to unauthorized persons, to
distinguish between the majority of personnel allowed to seethe
information and a limited group who will be allowed to add and
change data.
 Usability requirements deal with the scope of staff resources
needed to train a new employee and to operate the software system.
Product revision software quality factors
 Maintainability requirements determine the efforts that will be
needed by users and maintenance personnel to identify the reasons
for software failures, to correct the failures, and to verify the success
of the corrections.
 The capabilities and efforts required to support adaptive
maintenance activities are covered by the flexibility requirements.
These include the resources (i.e. in man-days) required to adapt a
software package to a variety of customers of the same trade, of
various extents of activities, of different ranges of products and so on.
 Testability requirements deal with the testing of an information
system as well as with its operation.
Product transition software quality
factors
 Portability requirements tend to the adaptation of a software system to
other environments consisting of different hardware, different operating
systems, and so forth.
 Reusability requirements deal with the use of software modules originally
designed for one project in a new software project currently being developed.
 Interoperability requirements focus on creating interfaces with other
software systems or with other equipment firmware (for example, the
firmware of the production machinery and testing equipment interfaces with
the production control software).
Interoperability requirements can specify the name(s) of the software or firmware
for which interface is required. They can also specify the output structure accepted
as standard in a specific industry or applications area.
Software Quality Architecture
 SQA system always combines a wide range of SQA components, all of
which are employed to challenge the multitude of sources of software
errors and to achieve an acceptable level of software quality. SQA
system components can be classified into six classes:
1) Pre-project components: To assure that
a) The project commitments have been adequately defined considering the
resources required, the schedule and budget; and
b) The development and quality plans have been correctly determined.
2) Components of project life cycle activities assessment: The project life
cycle is composed of two stages: the development life cycle stage and the
operation–maintenance stage
Software Quality Architecture (Cont…)
-The development life cycle stage components detect design and programming
errors. Its components are divided into the following sub-classes: Reviews,
Expert opinions, Software testing.
3) Components of infrastructure error prevention and improvement: Eliminate or
at least reduce the rate of errors, based on the organization’s accumulated SQA
experience.
4) Components of software quality management: Control of development and
maintenance activities and the introduction of early managerial support actions
that mainly prevent or minimize schedule and budget failures and their outcomes
5) Components of standardization, certification, and SQA system assessment
6) Organizing for SQA – the human components
9.3 Configuration management and its
importance in software engineering
 Configuration management (CM) is the discipline of controlling the evolution of
complex systems; software configuration management (SCM) is its specialization
for computer programs and associated documents.
 SCM differs from general CM in the following two ways.
i) Software is easier to change than hardware and it therefore changes faster. Even
relatively small software systems, developed by a single team, can experience a
significant rate of change, and in large systems, such as telecommunications
systems, the update activities can totally overwhelm manual configuration
management procedures.
ii) SCM is potentially more automatable this is because all components of a software
system are easily stored on-line. CM for physical systems is hampered by having to
handle objects that are not within reach of programmable controls
Importance of software configuration
management
 Manages simultaneous update of the same component by
different persons in the configuration management process.
 Keeping track of what has been done. Called change tracking
by the different persons involved in the process.
 Facilitates team coordination.
 Reduced redundant work.
 Defect tracking.
 Helps in building management; managing tools used in builds.
Chapter Question
1) Explain the controls used in the quality management process of a software.
2) Explain the techniques used to maintain software’s.
3) What is the importance of configuration management, quality management
in the software engineering process?

You might also like