Techniques for Software Maintenance 57 02 58
Total Page:16
File Type:pdf, Size:1020Kb
01 Techniques for Software Maintenance 57 02 58 03 59 04 60 Kostas Kontogiannis 05 61 Department of Electrical and Computer Engineering, National Technical University of Athens, 06 62 Athens, Greece 07 63 08 64 09 65 10 66 Abstract 11 Software maintenance constitutes a major phase of the software life cycle. Studies indicate that software 67 12 maintenance is responsible for a significant percentage of a system’s overall cost and effort. The software 68 13 engineering community has identified four major types of software maintenance, namely, corrective, 69 14 perfective, adaptive, and preventive maintenance. Software maintenance can be seen from two major points 70 15 of view. First, the classic view where software maintenance provides the necessary theories, techniques, 71 16 methodologies, and tools for keeping software systems operational once they have been deployed to their 72 17 operational environment. Most legacy systems subscribe to this view of software maintenance. The second 73 18 view is a more modern emerging view, where maintenance is an integral part of the software development 74 19 process and it should be applied from the early stages in the software life cycle. Regardless of the view by 75 which we consider software maintenance, the fact is that it is the driving force behind software evolution, a 20 76 very important aspect of a software system. This entry provides an in-depth discussion of software 21 77 Q1 maintenance techniques, methodologies, tools, and emerging trends. 22 78 23 79 24 80 25 INTRODUCTION type of software maintenance is referred to as Adaptive 81 26 82 Software Maintenance and refers to activities that aim to 27 83 Software maintenance is an integral part of the software modify models and artifacts of existing systems so that 28 84 life cycle and has been identified as an activity that affects these systems can be integrated with new systems or 29 85 in a major way the overall system cost and effort. It is also a migrated to new operating environments. A fourth type 30 86 major factor for affecting software quality. Software main- of software maintenance is Preventive Software 31 87 tenance is defined by a collection of activities that aim to Maintenance. Preventive Software Maintenance deals 32 88 evolve and enhance software systems with the purpose of with all other design time and development time activities 33 89 keeping these systems operational. The field of software that have the potential to deliver higher-quality software 34 90 maintenance was first discussed in a paper by Canning,[1] [5] 35 and reduce future maintenance costs and effort. 91 where different software maintenance types where imp- 36 Examples of Preventive Software Maintenance include 92 37 licitly presented. However, it was due to a paper adhering to well-defined processes, adhering to coding 93 [2] 38 by Swanson where the terms and types of software standards, maintaining high-level documentation, or 94 39 maintenance were first explicitly defined in a typology of applying software design principles properly. In general, 95 [2] 40 maintenance activities. preventive maintenance encompasses any type of 96 41 In the following years, the software community realized intention-based activity that allows to forecast upcoming 97 42 the importance of the field, and the Institute of Electrical problems and prevent maintenance problems before they 98 [4,6] 43 and Electronics Engineers (IEEE) published two standards occur. Preventive maintenance touches upon all the 99 Q2 44 in this area. The IEEE standard 610.12-1990) and the other three types of maintenance and in some respect is 100 [6] 45 updated standard 1219–l998 identify four major types of more difficult to define boundaries for. Due to broad 101 [3,4] 46 software maintenance. The first type is referred to as boundaries of preventive maintenance, in this entry we 102 47 Corrective Software Maintenance, where the focus is on will mostly focus on core technical and process issues of 103 48 techniques, methodologies, and tools that support the iden- the first three types of software maintenance, namely, 104 49 tification and correction of faults that appear in software corrective, adaptive, and perfective maintenance. The 105 50 artifacts such as requirements models, design models, and interested reader can refer to Refs. [2], [6], and [7] for a 106 51 source code. The second type is Perfective Software more detailed discussion on preventive maintenance. 107 52 Maintenance, where the focus is on techniques, methodol- A number of studies have indicated that software main- 108 53 ogies, and tools that support the enhancement of the soft- tenance consumes a substantial portion of resources within 109 [8] 54 ware system in terms of new functionality. Such the software industry. A study by Sutherland estimated 110 55 enhancement techniques and methodologies can be applied that the annual cost of software maintenance in the United 111 56 at the requirements, design, or source code levels. The third States is more than $70 billion dollars for a total of 112 Encyclopedia of Software Engineering DOI: 10.1081/E-ESE-120044348 Copyright # 2011 by Taylor & Francis. All rights reserved. 1 2 Techniques for Software Maintenance 01 activity that is also applied during Greenfield software 57 [15] 02 development. This view also originates from the con- 58 03 cepts of iterative, incremental, and unified process models 59 [16] 04 as well as Model Driven Engineering (MDE) that pos- 60 05 tulate software system development as an incremental 61 06 process whereby requirements, design, source code, and 62 07 test models are continuously updated and evolved. 63 08 As with every engineering activity, software mainte- 64 [17] 09 nance must follow a specific prescribed process. 65 10 A complete maintenance path encompasses the identifica- 66 11 tion, selection, and streamlining of software analysis and 67 12 68 Q18 software reverse engineering, software artifacts transfor- Fig. 1 Proportional cost per maintenance type. [18] 13 mation, and software integration. Here, we will attempt 69 14 to present a unified process description for software main- 70 15 approximately 10 billion lines of code. Considering that it tenance that includes fours major phases, namely, portfolio 71 16 is estimated that there are more than 100 billion lines of analysis/strategy; modeling/analysis; transformation; and 72 Q3 17 code around the world,[9] the annual worldwide cost of evaluation. 73 18 software maintenance is estimated at the staggering In the portfolio analysis/strategy phase, the issues and 74 19 amount of $700 billion dollars. Furthermore, there have problems of the system in its current form are identified. 75 20 been studies estimating the ratio of software maintenance In the modeling/analysis phase, software artifacts are 76 21 cost vs. total development cost. These studies indicate that denoted and analyzed so that maintenance requirements 77 22 software maintenance costs attribute at least 50% of the can be set based on the systems’ state and strategy. The 78 23 total development cost of a software system.[9] Other stu- modeling/analysis phase allows for complete maintenance 79 24 dies,[10, 11] have estimated that maintenance costs can even paths to be defined and planned. More specifically, in this 80 25 range between 50% and 75% of the total development cost. phase, software artifacts are represented and denoted uti- 81 26 lizing a modeling language and formalism, and conse- 82 Fig. 1 illustrates the proportional cost for each type of 27 quently, various models of the existing system [usually 83 software maintenance with respect to the total maintenance 28 models of the source code such as the Abstract Syntax 84 cost. 29 Tree (AST)] are analyzed. The result of this phase is the 85 Software maintenance is the primary process for achiev- 30 identification of specific system characteristics that can be 86 ing software evolution. With accumulated experience over 31 used to define maintenance requirements, maintenance 87 the years, a collection of rules and observations were for- 32 objectives, and quantifiable measures for determining 88 mulated by M. Lehman[12–14] into what is known as the 33 whether the results of a maintenance activity when com- 89 laws of software evolution. These laws relate to observa- 34 pleted will meet the initial maintenance requirements and 90 tions regarding continuous change, increased complexity, 35 objectives or not. 91 self-regulation, conservation of organizational stability 36 In the transformation phase, the selected maintenance 92 and familiarity, continued growth, and quality degradation. 37 path is applied utilizing software manipulation and trans- 93 The laws of evolution focus on the observation that in order 38 formation tools. 94 for large systems to remain operational they must con- 39 Finally, in the evaluation phase, measurements for eval- 95 stantly be maintained, and that an unfortunate consequence 40 uating whether the selected maintenance activities have 96 of continuous maintenance is system quality degradation 41 met technical and financial requirements set in the analysis 97 42 where systems become complex, brittle, and less maintain- phase are applied. 98 43 able. This phenomenon is referred to as software erosion Having briefly introduced software maintenance as a 99 44 and software entropy. There is a point when a system phase in the software life cycle, we can now proceed to 100 45 reaches a state where regular maintenance activities discussing