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

SOFTWARE EVOLUTION

ITC-706
PREREQUISITES

• This is an advanced Master level course. Students are


expected to have the following required prior knowledge:
• Basic Software Engineering Concepts
COURSE OBJECTIVES

• Important challenges associated with software evolution;


• Discuss methods and tools addressing these challenges, their
advantages and disadvantages;
• Apply the methods and tools to existing software systems;
• Interpret the results obtained in a scientifically responsible way.
COURSE ORGANISATION

• Lectures
• Assignments
• Surprise Quiz
• Discussion
COURSE CONTENTS
• Introduction
• Identifying and removing software clones
• Predicting bugs from histories
• Object oriented reengineering
• Migration of legacy information system
• From legacy to three-tire and services
• Software testing and evolution
• Evolution issues in aspect oriented programming
• Software architecture evolution
• Empirical studies of open source evolution
REFERENCE MATERIAL

Books
Software Evolution
Tom Mens and Serge Demeyer

Off course the internet


MAINTENANCE VS EVOLUTION VS PRESERVATION
WHY SOFTWARE EVOLUTION OR MAINTENANCE

• Software Maintenance is important


• Software Maintenance is poorly understood
• Software Maintenance is poorly performed
Evolution is change from maintenance because Maintenance seems
to indicate that the software itself is deteriorating, which is not the
case
DEFINITION
Evolution in general parlance implies that something has changed for the
better.
A process of continuous change from a lower, simpler,
or worse to a higher, more complex, or better state
Software maintenance is the modification of a software product after
delivery to correct faults, to improve performance or other attributes.
ISO/IEC 14764:2006 Software Engineering —
Software Life Cycle Processes — Maintenance
DEFINITION

Legacy software: A system which continues to be used


because of the cost of replacing or redesigning it, and
often despite its poor competitiveness and compatibility
with modern equivalents. The implication is that the
system is large, monolithic and difficult to modify.
mondofacto.com/facts/dictionary
LEGACY SOFTWARE

• 1 sheet ≃ 60 lines of code (LOC)


• both sides = 120 LOC

• 10 sheets = 1200 LOC


• (1.2 KLOC)
LEGACY SOFTWARE
LEGACY SOFTWARE

• 10 sheets = 1200 LOC


• (1.2 KLOC)

Linux kernel 3.6 16 MLOC


MacOS X 10.4 86 MLOC
Debian 5.0 324 MLOC
TRUE/FALSE ?

Maintenance can be eliminated with perfect


development
MAINTENANCE TYPES

• Perfective maintenance is any modification of a software product after


delivery to improve performance or maintainability.
• Corrective maintenance is the reactive modification of a software product
performed after delivery to correct discovered faults.
• Adaptive maintenance is the modification of a software product
performed after delivery to keep a computer program usable in a changed
or changing environment.
• Preventive maintenance refers to software modifications performed for
the purpose of preventing problems before they occur.
MAINTENANCE CATEGORIES
SOFTWARE EVOLUTION

• For hardware, maintenance is replacement of used


parts
• For software:
– Source code doesn't wear (erode)
– Maintenance is mainly evolution
SOFTWARE EVOLUTION

• Software systems must be continually adapted or they


become progressively less satisfactory
First law of software evolution
[Lehman, 1974]
SOFTWARE EVOLUTION

A system works within the real world


• The world change:
• New business opportunities
• Growing user expectations
• New laws
• –…
SOFTWARE EVOLUTION
• Software systems must evolve or die (not useful)
• Maintenance is mainly due to external causes
• Maintenance (evolution) is unavoidable
• Better (or perfect) software development cannot change that

Maintenance is a sign of success ! The system is used and


useful, the users want more

You might also like