Software maintenance gobbles up 90% of the cost of
software over its lifetime - and the reason typically goes back to
its original development, according to three senior BCS members who
have written a paper on the subject.
Good understanding of software is "vitally important", but
achieving this is not easy, the authors said. This is because the
maintainers are not usually the developers, and programs will often
have been affected by previous maintenance.
Even a change involving the apparently simple removal of a variable
from one program can demand examination of an entire system to
ensure the variable is not used elsewhere.
"Studies have shown that most maintenance costs arise from gaining
an understanding of the software," said Keith Bennett, professor of
computer engineering at Durham University, Nicolas Gold, a lecturer
at Manchester University, and Andrew Mohan, an IT specialist and
student at Manchester University.
"These costs arise because most software is not maintained by those
who developed it - and this should be taken into account when
companies investigate outsourcing.
"Software understanding is affected by the environment in which the
software resides, the maintainer's ability, the effect of previous
maintenance on its structure and the time available."
There are no easy ways to reduce these costs, the authors said.
"Part of the answer can be found in ISO quality standards. A good
starting point might be to analyse existing development and
maintenance processes and categorise their maturity level using the
Capability Maturity Model [details at www.sei.cmu.edu].
"The important aspect is defining your processes to analyse their
strengths and weaknesses and improve them.
"As well as defining the maintenance processes you need to give
attention to the state of the software itself. The maintainer's
ability to assess the impact of a change on software is influenced
by the complexity of its structure and of the underlying
code.
"The complexity of code is related to its style: for example the
levels of nesting; how easy it is to read; how coherently
algorithms are implemented; and the overall problem
complexity.
"If maintenance is done over many versions, factors such as
algorithm coherence and coding style can be in a considerably worse
state than when the original software was written. Code readability
can be improved, or at least maintained, if maintainers adhere to
the original writing style," said the authors.
The BCS is supporting the Institute of Electrical and
Electronics Engineers' annual European conference on software
maintenance and re-engineering in Manchester from 21-23
March.
Further information
www.rcost.unisannio.it/csmr2005
Four paths to better software
Perfective: improving the function of software
by responding to user-defined changes
Adaptive: changing the software to adapt to
environmental changes, such as the introduction of new hardware or
data
Corrective: correcting failures in processing,
performance or implementation, for example by fixing bugs
Preventive: updating software to forestall future
problems.Source: IEEE Standard 619.12-1990