You are on page 1of 29

Wollo University, Kombolcha Institute Of

Technology
Departments of Software Engineering
A lecture note for Advanced Software Engineering
By
Tilahun Ayalew (MSC in Software Engineering)

itsmetilahun@gmail.com
1

Kombolcha, Ethiopia
Chapter 2:Software maintenance Introduction
Definition:
THE IEEE Standard for Software Maintenance (IEEE 1219)
“The process of modifying a software system or component after
delivery to correct faults, improves performance or other attributes,
or adapt to a changed environments”

Maintenance principles

2
Chapter 2:Software maintenance Introduction
Why software maintenance? :
Correct faults.
Improve design.
Implement enhancements.
Interface with other systems.
Adapt programs so that different hardware, software, system features,
and 

telecommunications facilities can be used.
Migrate legacy software.
Retire software 


3
Chapter 2:Software maintenance Introduction
Categories of software maintenance?
•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 they become effective faults.

4
Chapter 2:Software maintenance Introduction
Key to software maintenance?
• The key to effective maintenance lies in development.
• Depending upon the development of the product the maintenance of the
product is determined.

Maintenance types

5
Chapter 2:Software maintenance Introduction

Software maintenance process


6
Chapter 2:Software maintenance Introduction
Major factors cause problem in software
maintenance /models/
Unstructured code
Insufficient domain knowledge
Insufficient documentation

7
Chapter 2:Software maintenance Introduction
Major factors cause problem in software maintenance /models/
Iterative models:
• share the ideas that a complete set of requirements for a system cannot be completely
understood, or the developers do not know how to build the full system.
• Therefore, systems are constructed in builds, each of which is a refinement of
requirements of the previous build.
• A build is refined by considering feedback from users.
• One may note that maintenance and evolution activities do not exist as distinct phases.
Rather, they are closely intertwined.

8
Chapter 2:Software maintenance Introduction
Major factors cause problem in software maintenance /models/
Change mini-cycle models:
• First proposed by Yau et al. in the late 1970s these models were recently re-visited
by Bennet et al. and Mens among others.
• These models consist of five major phases: change request, analyse and plan change,
implement change, verify and validate, and documentation change.
• In this process model, several important activities were identified, such as program
comprehension, impact analysis, refactoring, and change propagation.

9
Change Mini cycle model

10
Chapter 2:Software maintenance Introduction
Keys challenges in software maintenance?
•Limited Understanding
• Shift in type of maintenance
• Impact Analysis
• Maintainability
• Alignment with organisational objectives
• Staffing
• Process

11
Chapter 2:Software maintenance Introduction
Keys challenges in software maintenance?
Organisational aspects of maintenance
Outsourcing
Cost estimation
Specific measurements

12
Chapter 2:Software maintenance Introduction
Keys challenges in software maintenance?
IEEE [IEEE610.12-90] defines maintainability as the ease
with which software can be maintained, enhanced, adapted,
or corrected to satisfy specified requirements and the
presence of systematic and mature processes, techniques,
and tools helps to enhance the maintainability of a system.

13
Chapter 2:Software maintenance Introduction
Four distinct, sequential stages of the lifetime of a system
Initial development.
• When the initial version of the system is produced, detailed knowledge about the system is fresh.
• Before delivery of the system, it undergoes many changes.
• Eventually, a system architecture emerges and soon it stabilises.
Evolution.
• After the initial stability, it is easy to perform simple changes to the system.
• Significant changes involve higher cost and higher risk.
• In the period immediately following the initial delivery, knowledge about the system is still almost fresh in the minds of the developers.
• It is possible that the development team as a whole does not exist, because many original developers have taken up new responsibilities in the
organisation and some might have left the organisation.

14
Chapter 2:Software maintenance Introduction
Four distinct, sequential stages of the lifetime of a system
Servicing.
• When the knowledge about the system has significantly decreased, the developers mainly focus on maintenance tasks,
such as fixing bugs, whereas architectural changes are rarely effected.
• The developers do not consider the system to be a key asset. In this stage, the effects of changes are very difficult to
predict.
• Moreover, the costs and risks of making changes are very significant.
Phaseout.
• When even minimal servicing of a system is not an option ,the system enters its very final stage.
• The organisation decides to replace the system for various reasons: (i) it is too expensive to maintain the system; or (ii)
there is a newer solution available.
• Therefore, the organisation develops an exit strategy to move from the current system to a new system.
• Moving from an existing, difficult-to-maintain system to a modern solution system has its own challenges involving
wrapping and data migration.
• After the new system keeps running satisfactorily, sometimes in parallel with the old system, the old system isf finally
completely shut down.

15
Chapter 2:Software maintenance Introduction

Maintenance affecting factors


16
Chapter 2:Software maintenance Introduction

Legacy systems
Is an old program that continues to be used.
Because it still meets the users’ needs, in spite of the availability of
newer technology or more efficient methods of performing the task.
Are vital to orgnisation and the systems significantly resist
modification and evolution to meet new and constantly changing
business requirements

17
Chapter 2:Software maintenance Introduction

Legacy systems
To manage legacy systems, number of options are available
• Freeze,
• Outsource,
• wrap,
• Discard and redevelop,
• Migrate

18
Chapter 2:Software maintenance Introduction

Re Engineering
• Implies a single cycle of taking an existing system and generating from it a new system,
whereas evolution can go forever.
• Hongji Yang and Martin Ward, defined software evolution as “ ... the process of conducting
continuous software reengineering”
• To a large extent, software evolution can be seen as repeated software reengineering
• Done to transform an existing “lesser or simpler” system into a new “better” system
Reengineering = Reverse engineering + Δ + Forward engineering.

19
Chapter 2:Software maintenance Introduction

Re Engineering
Among many repeatable paradigms in re engineering,
Goals=> analyse the motivation and information needed to construct
abstracts to be produced
tools=>excute the model and transform it to the program
models=> analyse the abstraction to construct the representations

20
21
22
Reverse Engineering
•First applied in electrical engineering to produce schematics from an electrical circuit.
•The process of developing a set of specifications for a complex hardware system by an
orderly examination of specimens of that system.

23
Reverse Engineering
A process to :
(i) Identify the components of an operational software;
(ii) Identify the relationships among those components; and
(iii) represent the system at a higher level of abstraction or in another form.

24
Reverse Engineering

Factors necessary for reverse engineering

25
Relationship between re engineering and reverse Engineering

26
Techniques for reverse Engineering
Lexical analysis :
• Decomposition to its constituting lexical Units
Syntactical analysis:
• Done using parser for each modules, expressions, statements etc..
• Having two type representations: parse tree and abstract syntax tree
Control flow analysis: Intraprocedural and Interprocedural analysis
Data flow analysis: concerns on how values of defined variable constructed

27
Techniques for reverse Engineering
Program slicing :
• The slice of a program for a given variable at a given line of code is
the portion of the program that gives a value to the variable at that
point.
Visualisations:-
• Represented by means of a visual object to gain some insight into how
the system has been structured.
Program metrics: complexity metric, C = (fan-in × fan-out)
p

28
Thanks You!

29

You might also like