This figure represents the cost to business worldwide of maintaining their IT systems, this year. Now are you interested?
Software maintenance is a process that is triggered once a requirement has arisen to fix, change or adapt a software system.
Whatever the maintenance required, it must be fully understood by the maintainer, including the impact of the maintenance in terms of cost and effort to implement.
This implies that a level of understanding of the existing software system must be attained to enable an effective analysis. The cost of this understanding has been shown to be responsible for the majority of the cost of software maintenance.
The understanding of existing code is made more costly by the sheer complexity of today's IT systems, and hence The Economist's call to keep things simple.
In particular, as these systems now comprise the integration of mainframe legacy (back office) systems to newer, more fashionable, front office systems.
Consequently, the nature of the maintenance activity is itself growing from the modification of the source code of the existing back office systems, to the wrapping of these systems and their integration with the newer front office ones.
The integration of these systems only appears to increase their complexity and maintenance costs.
Given its high cost in the software maintenance process, aiding software understanding is the key to reducing the cost of maintenance. There are, however, a number of complicating issues.
Software understanding is affected by the environment in which the software resides, the ability and experience of the maintainer, the effect of previous maintenance upon its structure, and the timescale available to make the change.
A timescale, which due to business pressures to reduce such costs and time to market, is continually being reduced.
The solution to these increasing costs and a reduction in the available time to undertake maintenance activities, or at least their drivers, is to ensure higher quality and more flexible systems.
However, as these flexible software systems will be constructed from multiple sources throughout the business, there is a far greater need for maintainers to gain interdisciplinary skills, an understanding of what drives business and the market they work in.
The way to find the solution to ensuring your systems have higher quality and are more flexible is to firstly drive complexity out of the system. However, as that is not always possible, embracing and implementing current best practise is also a way forward.
A way that BCS can help is through the many specialist groups in the area, such as the Quality, Configuration Management, Project Management and Software Practice Advancement groups.
Another way is to identify and even engage in researching the problem area to enable the development of practical solutions. BCS has helped to facilitate this by supporting the 9th European Conference on Software Maintenance and Reengineering.
One of the basic intentions of this conference was to offer a forum for discussion and exchange of experiences among researchers and practitioners about evolution, maintenance and reengineering.
Hence, this is another way in which BCS has encouraged companies and practitioners involved in developing maintenance tools, offering reengineering services or that have legacy systems migration experience to contribute.
Software maintenance is an expensive business, but it need not always be so. By investing your time and efforts into learning and applying best practise, researching into the problems faced and, above all, sharing your experience within the community, the cost of maintenance can be controlled, even reduced.
Andrew Mohan is undertaking a PhD at the School of Informatics, University of Manchester, on the subject area of software maintenance and evolution, program comprehension and software quality.