Software Evaluation and Maintaince
Software Evaluation and Maintaince
COURSE THEMES
Software Maintenance
Software Evolution
Software Reuse
LEARNING OUTCOMES
Gain familiarity with the concepts of software evolution, reuse and
maintenance.
SOFTWARE MAINTENANCE AND EVOLUTION – INTRODUCTION
COURSE CONTENTS
ORDER OF TOPICS MAY VARY…
Preliminaries: concepts and definitions
7
SOFTWARE MAINTENANCE AND EVOLUTION – INTRODUCTION
COURSE ORGANISATION
COURSE EVALUATION
[10%] Obligatory participation during practical sessions Participation
Mission 1
Including reviewing work of other groups Mission 2
Written exam
3rd mission (15%) with presentation at end of semester or during exam [40%] exam
WHY SOFTWARE
FAILS
Billions of $ per year wasted
on preventable mistakes
http://spectrum.ieee.org/computing/software/why-software-fails
PRELIMINARIES – SOFTWARE MAINTENANCE 13
PRELIMINARIES – SOFTWARE MAINTENANCE 14
THE IMPORTANCE OF Rates of software TA
Requirements Very High engineering failure
Specification Low 40 - of Percentage of Total
Costs Represented by
75% Costs
BLE I.
Design Low Estimations
Maintenance Study
Estimation
Implementation Low MaintenanceC
ost [17 and 18]
(percentage) [6, 7, 8, 10, 11, 16, 19, 26]
Installation High
40
40-60 [28]
Operation Enormous 67 [6l
70
Maintenance 75 [1, 12]
Very High
MAINTENANCE
Source* Tpahret:i Guimaraes, T. 1983. Managing application program maintenance aglrleya tto vathreia ntycpee i no f tshoef tewsatirme abteeisn go fs
tmuadiinedte n(baunscien ecost ss. mpielritcaernyt)a, gsea mis pldiuneg expenditures. error, and Commun. ACMmeasurement pro 26, 10 (Oct. 1983), 739-
746blems.
PRELIMINARIES – SOFTWARE MAINTENANCE 16
But it’s even harder to design a maintainable system, because it’s hard
to foresee all future changes.
PRELIMINARIES – SOFTWARE MAINTENANCE
DEFINITION OF SOFTWARE
MAINTENANCE
Adaptive maintenance
Corrective maintenance
Perfective maintenance
Preventive maintenance
PRELIMINARIES – SOFTWARE MAINTENANCE 20
ADAPTIVE MAINTENANCE
Adapting to changes in the environment (either hardware and software) According to
[IEEE Std 610.12-1990], adaptive maintenance is
Occurs when, as a result of external influences or strategic changes, a software system needs to
be adapted to remain up to date.
Examples:
CORRECTIVE MAINTENANCE
Correcting errors that cause the software to behave in undesired or unexpected ways. According
to
Often occurs after deployment when customers detect problems that were not discovered
during initial testing of the system. These errors should be fixed.
PERFECTIVE MAINTENANCE
Improving the quality of a software system.
Occurs after the system has been in place and running fine for a while, and end users start asking
for minor tweaks or improvements that could improve the way the system works.
Examples :
Better input forms, shortcut commands, better help system or error reporting, making the
system more responsive, …
PREVENTIVE MAINTENANCE
Proactively change the software to avoid future problems
“Software maintenance performed for the purpose of preventing problems before they occur.”
PRELIMINARIES – SOFTWARE MAINTENANCE 23
WHEN?
The larger the company, the more time was spent on maintenance.
Source: Lientz & Swanson, 1980
PRELIMINARIES – SOFTWARE MAINTENANCE 25
MAINTENANCE EFFORT
Corrective Maintenance : According to the
21,7% study,
maintenance effort,
was broken out as
Emergency fixes: 12,4% follows:
Routine debugging: 9,3% Corrective
Improvements to documentation:
5.5% Other (Preventive Maintenance) :
3,4%
MAINTENANCE REASONS
Changed user requirements user-requested
extensions and modifications
Bug fixes scheduled routine fixes emergency fixes (more costly due to heavy
pressure) Changed data formats
PRELIMINARIES – SOFTWARE MAINTENANCE 27
Hardware changes
Efficiency improvements
MAIN CAUSES OF
MAINTENANCE
PROBLEMS
Poor quality of the software documentation
Anticipating changes
⇒ less (adaptive and perfective) maintenance
Less code
⇒ less maintenance
PRELIMINARIES – SOFTWARE EVOLUTION
31
PRELIMINARIES – SOFTWARE EVOLUTION
SOFTWARE AGEING
“Programs, like people, get old. We can’t prevent ageing, but we can
understand its causes, take steps to limit its effects, temporarily reverse some of
the damage it has caused, and prepare for the day when the software is no
longer viable.”
“A sign that the software engineering profession has matured will be that we
lose our preoccupation with the first release and focus on the long-term health of
our products. Researchers and practitioners must change their perception of the
problems of software development. Only then will software engineering deserve
to be called ‘engineering’.”
PLUS ÇA CHANGE,
PRELIMINARIES – SOFTWARE EVOLUTION
33
PLUS C'EST LA
MÊME CHOSE.
Jean-Baptiste Alphonse Karr
CHANGE IS INEVITABLE
New requirements emerge when software is being used Even as it is
being developed !
34
Feedback loop : the changed software may even be the reason why the
environment changes ! Errors must be repaired
This technical debt is “the extra development work that arises when
code that is easy to implement in the short run is used instead of
applying the best overall solution”.
PRELIMINARIES – SOFTWARE EVOLUTION 36
The longer you wait to make the changes, the harder it becomes.
“ONE BAD PROGRAMMER CAN EASILY CREATE TWO
NEW JOBS A YEAR.” — DAVID PARNAS.
PRELIMINARIES – SOFTWARE EVOLUTION 37
https://martinfowler.com/bliki/TechnicalDebt.html
https://martinfowler.com/bliki/ TechnicalDebtQuadrant.html
https://ieeexplore.ieee.org/abstract/document/6608681 (On the
limits of the technical debt metaphor some guidance on going
beyond) https://dl.acm.org/doi/abs/10.1145/2465478.2465492 (A
formal approach to technical debt decision making)
PRELIMINARIES – SOFTWARE EVOLUTION 38
SOFTWARE EVOLUTION
Evolution may arise during software development where the design evolves and matures as
the understanding of the problem to be solved and how to solve it gradually increases
when the system’s continuous evolution made it too complex to maintain the system may
requiring a more extensive restructuring, redesign or even a full reimplementation or
replacement
Generic : write sufficiently generic and abstract components that are broadly adaptable
Generation : generate lower-level representation from a higher-level specification of the software
Configuration : different variants of a software component are available up front but the actual selection
of which one to use is based on a desired configuration
Dynamic evolution changes are applied automatically at runtime to better suit the
current needs of the software system by automatically generating, adapting,
transforming or selecting parts of the software
PROGRAMMING PARADIGMS …
Many programming paradigms offer dedicated mechanisms to support software evolution and
reuse at the language level
… PROGRAMMING PARADIGMS
Aspect-oriented programming allows to implement "cross-cutting" concerns, not central to the
business logic, separately from the base functionality, and then "weave" these back into the
code
Metaprogramming is the writing of computer programs that treat other programs as their
data, thus allowing them to read, generate, analyse or transform other programs, or even
modify themselves while running. More specifically, reflection is the ability of a computer
program to examine, introspect, and modify its own structure and behaviour at runtime.
The laws describe a balance between forces that drive new development and
forces that slow down progress. influenced by thermodynamics
Over the past decades the laws have been revised and extended several times:
Reasons:
As a program is evolved its complexity increases with time unless specific work is done to
maintain or reduce it.
Reasons:
Small changes are applied in a step-wise process; each ‘patch’ makes sense locally, not
globally
Related to the first law, but with focus on functional requirements often one
cannot afford to omit existing functionality
No proof yet whether they are applicable to other types of software as well
Systems that incorporate a significant number of “off the shelf”
components Small organisations
Medium sized
systems Open source
software
1. Why do IT projects fail so often?
2. Define and explain, in your own words, the difference between software maintenance and software
evolution.
3. List and explain the different types of software maintenance. Given an illustrative example of at least
three different types of particular maintenance activities.
4. Discuss the need for and possible reasons for software maintenance, change and evolution.
6. Define and explain, in your own words, what technical debt is.
8. Pick one of the laws (1, 2, 6 or 7) of software evolution and explain it.
View publication stats