In software technology , the term software maintenance describes "the modification of a software product after its delivery in order to correct errors, improve performance or other attributes or to make adjustments to the changed environment." (Definition according to IEEE 610.12-1990)
In a broader sense, services and measures that accompany or support the changes described by the standard can also be counted as software maintenance. Software maintenance is usually used to maintain the usability and operational reliability of software.
Types of software maintenance
A distinction is made between corrective, perfecting and adaptive maintenance:
- corrective maintenance: the elimination of errors
- Perfect maintenance: Improvement of attributes such as performance or maintainability. This particularly includes the elimination of technical debts through reengineering , refactoring , etc.
- adaptive maintenance: adaptation of the software to changed technical conditions in the environment
see. IEEE 610.12-1990, ISO / IEC 12207 and ISO / IEC 14764
When eliminating errors, some sources differentiate between corrective and preventive maintenance, whereby preventive maintenance is understood to mean the elimination of errors that are known but not yet apparent to the user (cf. IEEE 610.12-1990, ISO / IEC 14764).
Traditionally, most of the effort in the software life cycle goes into maintenance . The einzurechnende for maintenance increases beyond steady - you can still counted in the 1970s so that the maintenance costs to 60% of the total expenditure accounts for 35% of Softwarelebenszyklusses, rose this by the end of the 1990s to 80% to 90%. This corresponds to the predictions of Lehman in his laws of the software evolution 1980.
Whether and with how much effort software has to be maintained depends to a large extent on the use of the software in question (error disclosure through different application scenarios ; the desire to improve certain attributes) and the duration of use (changing environment). In the case of business-critical software, software maintenance generally makes a significant contribution to investment security, but on the other hand it also represents a significant cost factor. Therefore, maintenance agreements are often found for business-critical software. Depending on the agreed service level (see Service Level Agreement ), the annual costs are usually in the order of 10% to 30% of the software investment.
The maintenance effort is also heavily influenced by the software itself ( error density , maintainability ) and the people involved in maintenance (experience, cooperation of specialists) and processes. The effort can be increased fivefold or reduced to a fifth.
If the necessary attention is paid to adequate maintainability during the system design, unnecessarily high costs for software maintenance can be prevented. In the case of high maintenance costs, software maintenance is usually carried out by a firmly organized group of employees (maintenance organization) in an orderly maintenance process (cf. Bommer / Spindler / Barr).
- Ch. Bommer, M. Spindler, V. Barr: Software maintenance - basics, management and maintenance techniques , dpunkt.verlag, Heidelberg 2008, ISBN 3-89864-482-0
- Harry Sneed , M. Hasitschka, MT Teichmann: Software product management: Maintenance and further development of existing application systems , dpunkt.verlag, Heidelberg 2005, ISBN 3-89864-274-7
- A. April, S3m-Model to Evaluate and Improve the Quality of Software Maintenance Process , Shaker Verlag , 2005, ISBN 3-8322-4592-8
- MA Curth, ML Giebel: Management of software maintenance , Vieweg + Teubner, Wiesbaden 1989, ISBN 3-519-02492-6
- Macario Polo, Mario Piattini, Francisco Ruiz: A Methodology for Software Maintenance . In: Universidad de Castilla (ed.): Advances in Software Maintenance Management . Technologies and Solutions. Idea Group Publishing, LaMancha 2003, ISBN 1-59140-047-3 , chap. 9 , p. 228–229 (English, limited preview in Google Book Search).
- MM Lehman: Programs, Life Cycles, and Laws of Software Evolution . In: Proceedings of the IEEE 68 . 1980, p. 1060-1076 (English).
- Capers Jones: "The economics of software maintenance in the twenty-first century" , February 14, 2006