software maintenance software development core activities processes requirements design engineering construction testing debugging deployment maintenance paradigms and models agile cleanroom incremental prototyping spiral v model waterfall methodologies and frameworks asd devops dad dsdm fdd iid kanban lean sd less mdd msf psp rad rup safe scrum semat tsp up xp supporting disciplines configuration management documentation software quality assurance sqa project management user experience practices atdd bdd cco ci cd ddd pp standup tdd tools compiler debugger profiler gui designer modeling ide build automation release automation infrastructure as code testing standards and bodies of knowledge babok cmmi ieee standards iso 9001 isoiec standards pmbok swebok itil glossaries artificial intelligence computer science electrical and electronics engineering vte software maintenance in software engineering is the modification of a software product after delivery to correct faults to improve performance or other attributes a common perception of maintenance is that it merely involves fixing defects however one study indicated that over 80 of maintenance effort is used for noncorrective actions history software maintenance and evolution of systems was first addressed by meir m lehman in 1969 over a period of twenty years his research led to the formulation of lehmans laws lehman 1997 key findings of his research include that maintenance is really evolutionary development and that maintenance decisions are aided by understanding what happens to systems and software over time lehman demonstrated that systems continue to evolve over time as they evolve they grow more complex unless some action such as code refactoring is taken to reduce the complexity in the late 1970s a famous and widely cited survey study by lientz and swanson exposed the very high fraction of lifecycle costs that were being expended on maintenance they categorized maintenance activities into four classes adaptive modifying the system to cope with changes in the software environment dbms os perfective implementing new or changed user requirements which concern functional enhancements to the software corrective diagnosing and fixing errors possibly ones found by users preventive increasing software maintainability or reliability to prevent problems in the future the survey showed that around 75 of the maintenance effort was on the first two types and error correction consumed about 21 many subsequent studies suggest a similar magnitude of the problem studies show that contribution of end user is crucial during the new requirement data gathering and analysis and this is the main cause of any problem during software evolution and maintenance so software maintenance is important because it consumes a large part of the overall lifecycle costs and also the inability to change software quickly and reliably means that business opportunities are lost importance of software maintenance the key software maintenance issues are both managerial and technical key management issues are alignment with customer priorities staffing which organization does maintenance estimating costs key technical issues are limited understanding impact analysis testing maintainability measurement software maintenance is a very broad activity that includes error correction enhancements of capabilities deletion of obsolete capabilities and optimization because change is inevitable mechanisms must be developed for evaluation controlling and making modifications so any work done to change the software after it is in operation is considered to be maintenance work the purpose is to preserve the value of software over the time the value can be enhanced by expanding the customer base meeting additional requirements becoming easier to use more efficient and employing newer technology maintenance may span for 20 years software maintenance planning an integral part of software is the maintenance one which requires an accurate maintenance plan to be prepared during the software development it should specify how users will request modifications or report problems the budget should include resource and cost estimates a new decision should be addressed for the developing of every new system feature and its quality objectives the software maintenance which can last for 56 years or even decades after the development process calls for an effective plan which can address the scope of software maintenance the tailoring of the post deliverydeployment process the designation of who will provide maintenance and an estimate of the lifecycle costs the selection of proper enforcement of standards is the challenging task right from early stage of software engineering which has not got definite importance by the concerned stakeholders software maintenance processes this section describes the six software maintenance processes as the implementation process contains software preparation and transition activities such as the conception and creation of the maintenance plan the preparation for handling problems identified during development and the followup on product configuration management the problem and modification analysis process which is executed once the application has become the responsibility of the maintenance group the maintenance programmer must analyze each request confirm it by reproducing the situation and check its validity investigate it and propose a solution document the request and the solution proposal and finally obtain all the required authorizations to apply the modifications the process considering the implementation of the modification itself the process acceptance of the modification by confirming the modified work with the individual who submitted the request in order to make sure the modification provided a solution the migration process platform migration for example is exceptional and is not part of daily maintenance tasks if the software must be ported to another platform without any change in functionality this process will be used and a maintenance project team is likely to be assigned to this task finally the last maintenance process also an event which does not occur on a daily basis is the retirement of a piece of software there are a number of processes activities and practices that are unique to maintainers for example transition a controlled and coordinated sequence of activities during which a system is transferred progressively from the developer to the maintainer service level agreements slas and specialized domainspecific maintenance contracts negotiated by maintainers modification request and problem report help desk a problemhandling process used by maintainers to prioritize documents and route the requests they receive categories of maintenance in isoiec 14764 eb swanson initially identified three categories of maintenance corrective adaptive and perfective these have since been updated and isoiec 14764 presents corrective maintenance reactive modification of a software product performed after delivery to correct discovered problems adaptive maintenance modification of a software product performed after delivery to keep a software product usable in a changed or changing environment perfective maintenance modification of a software product after delivery to improve performance or maintainability preventive maintenance modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults there is also a notion of predeliveryprerelease maintenance which is all the good things you do to lower the total cost of ownership of the software things like compliance with coding standards that includes software maintainability goals the management of coupling and cohesion of the software the attainment of software supportability goals sae ja1004 ja1005 and ja1006 for example note also that some academic institutions are carrying out research to quantify the cost to ongoing software maintenance due to the lack of resources such as design documents and systemsoftware comprehension training and resources multiply costs by approx 1520 where there is no design data available maintenance factors impact of key adjustment factors on maintenance sorted in order of maximum positive impact maintenance factors plus range maintenance specialists 35 high staff experience 34 tabledriven variables and data 33 low complexity of base code 32 y2k and special search engines 30 code restructuring tools 29 reengineering tools 27 high level programming languages 25 reverse engineering tools 23 complexity analysis tools 20 defect tracking tools 20 y2k mass update specialists 20 automated change control tools 18 unpaid overtime 18 quality measurements 16 formal base code inspections 15 regression test libraries 15 excellent response time 12 annual training of 10 days 12 high management experience 12 help desk automation 12 no error prone modules 10 online defect reporting 10 productivity measurements 8 excellent ease of use 7 user satisfaction measurements 5 high team morale 5 sum 503 not only are errorprone modules troublesome but many other factors can degrade performance too for example very complex spaghetti code is quite difficult to maintain safely a very common situation which often degrades performance is lack of suitable maintenance tools such as defect tracking software change management software and test library software below describe some of the factors and the range of impact on software maintenance impact of key adjustment factors on maintenance sorted in order of maximum negative impact maintenance factors minus range error prone modules 50 embedded variables and data 45 staff inexperience 40 high code complexity 30 no y2k of special search engines 28 manual change control methods 27 low level programming languages 25 no defect tracking tools 24 no y2k mass update specialists 22 poor ease of use 18 no quality measurements 18 no maintenance specialists 18 poor response time 16 no code inspections 15 no regression test libraries 15 no help desk automation 15 no online defect reporting 12 management inexperience 15 no code restructuring tools 10 no annual training 10 no reengineering tools 10 no reverseengineering tools 10 no complexity analysis tools 10 no productivity measurements 7 poor team morale 6 no user satisfaction measurements 4 no unpaid overtime 0 sum 500 application retirement journal of software maintenance and evolution research and practice longterm support searchbased software engineering software archaeology software maintainer software development isoiec 14764 ieee std 147642006 software engineering software life cycle processes maintenance 2006 doi101109ieeestd2006235774 isbn0738149608 pigoski thomas m 1996 practical software maintenance new york john wiley sons isbn9780471170013 pigoski thomas m description for software evolution and maintenance version 05 swebok knowledge area april alain abran alain 2008 software maintenance management new york wileyieee isbn9780470147078 gopalaswamy ramesh ramesh bhattiprolu 2006 software maintenance effective practices for geographically distributed environments new delhi tata mcgrawhill isbn9780070483453 grubb penny takang armstrong 2003 software maintenance new jersey world scientific publishing isbn9789812384256 lehman mm belady la 1985 program evolution processes of software change london academic press inc isbn0124424414 pagejones meilir 1980 the practical guide to structured systems design new york yourdon press isbn0917072170 journal of software maintenance vtemajor fields of computer sciencenote this template roughly follows the 2012 acm computing classification systemhardware printed circuit board peripheral integrated circuit very large scale integration systems on chip socs energy consumption green computing electronic design automation hardware acceleration computer systemsorganization computer architecture embedded system realtime computing dependability networks network architecture network protocol network components network scheduler network performance evaluation network service software organization interpreter middleware virtual machine operating system software quality software notationsand tools programming paradigm programming language compiler domainspecific language modeling language software framework integrated development environment software configuration management software library software repository software development software development process requirements analysis software design software construction software deployment software maintenance programming team opensource model theory of computation model of computation formal language automata theory computational complexity theory logic semantics algorithms algorithm design analysis of algorithms algorithmic efficiency randomized algorithm computational geometry mathematicsof computing discrete mathematics probability statistics mathematical software information theory mathematical analysis numerical analysis informationsystems database management system information storage systems enterprise information system social information systems geographic information system decision support system process control system multimedia information system data mining digital library computing platform digital marketing world wide web information retrieval security cryptography formal methods security services intrusion detection system hardware security network security information security application security humancomputerinteraction interaction design social computing ubiquitous computing visualization accessibility concurrency concurrent computing parallel computing distributed computing multithreading multiprocessing artificialintelligence natural language processing knowledge representation and reasoning computer vision automated planning and scheduling search methodology control method philosophy of artificial intelligence distributed artificial intelligence machine learning supervised learning unsupervised learning reinforcement learning multitask learning crossvalidation graphics animation rendering image manipulation graphics processing unit mixed reality virtual reality image compression solid modeling appliedcomputing ecommerce enterprise software computational mathematics computational physics computational chemistry computational biology computational social science computational engineering computational healthcare digital art electronic publishing cyberwarfare electronic voting video games word processing operations research educational technology document management book category portal wikiproject commons vtesoftware engineeringfields computer programming requirements engineering software deployment software design software maintenance software testing systems analysis formal methods concepts data modeling enterprise architecture functional specification modeling language orthogonality programming paradigm software software archaeology software architecture software configuration management software development methodology software development process software quality software quality assurance software verification and validation structured analysis orientations agile aspectoriented object orientation ontology service orientation sdlc modelsdevelopmental agile eup executable uml incremental model iterative model prototype model rad up scrum spiral model vmodel waterfall model xp other spice cmmi data model er model function model information model metamodeling object model systems model view model languages idef uml usl sysml softwareengineers victor basili kent beck grady booch fred brooks barry boehm peter chen danese cooper ward cunningham tom demarco edsger w dijkstra delores m etter martin fowler adele goldstine margaret hamilton c a r hoare lois haibt mary jean harrold grace hopper watts humphrey michael a jackson ivar jacobson alan kay nancy leveson stephen j mellor bertrand meyer david parnas trygve reenskaug winston w royce james rumbaugh mary shaw peri tarr elaine weyuker niklaus wirth edward yourdon related fields computer science computer engineering project management risk management systems engineering category commons vteieee standardscurrent 488 730 754 revision 854 828 829 896 1003 1014 1016 1076 11491 1154 1164 1275 1278 1284 1355 1394 1451 1497 1516 1541 1547 1584 1588 1596 1603 1613 1666 1667 1675 1685 1722 1733 1800 1801 1815 1850 1900 1901 1902 1904 1905 2030 11073 12207 14764 16085 16326 29148 42010 802 series8021 d p q qat qay w x ab ad ae ag ah ak aq as ax az ba 80211 a b c d e f g h i j k n p r s u v w y ac ad af ah ai ax ay 2 3 4 5 6 7 8 9 10 12 14 15 1 4 4a 16 d e 17 18 20 21 22proposed p1363 p1619 p1699 p1823 p19061 superseded 7541985 830 1219 1233 1362 1364 1471 see also ieee standards association categoryieee standards vteiso standards by standard numberlist of iso standards iso romanizations iec standards19999 1 2 3 4 5 6 7 9 16 17 31 0 1 2 3 4 5 6 7 8 9 10 11 12 13 128 216 217 226 228 233 259 269 302 306 361 428 500 518 519 639 1 2 3 5 6 646 657 668 690 704 732 764 838 843 860 898 965 999 1000 1004 1007 10731 1155 1413 1538 1629 1745 1989 2014 2015 2022 2033 2047 2108 2145 2146 2240 2281 2533 2709 2711 2720 2788 2848 2852 3029 3103 3166 1 2 3 3297 3307 3601 3602 3864 3901 3950 3977 4031 4157 4165 4217 4909 5218 5426 5427 5428 5725 5775 5776 5800 5964 6166 6344 6346 6385 6425 6429 6438 6523 6709 6943 7001 7002 7010 7027 7064 7098 7185 7200 7498 1 7637 7736 7810 7811 7812 7813 7816 7942 8000 8093 8178 8217 8373 85011 8571 8583 8601 8613 8632 8651 8652 8691 88058806 8807 88205 8859 1 2 3 4 5 6 7 8 8i 9 10 11 12 13 14 15 16 8879 90009001 9036 9075 9126 9141 9227 9241 9293 9314 9362 9407 9506 9529 9564 95929593 9594 9660 97971 9897 9899 9945 9984 9985 9995 1000019999 10005 10006 10007 10116 101183 10160 10161 10165 10179 10206 10218 10303 11 21 22 28 238 10383 10487 10585 10589 10646 10664 10746 10861 10957 10962 10967 11073 11170 11179 11404 11544 11783 11784 11785 11801 11898 11940 2 11941 11941 tr 11992 12006 12182 12207 122342 13211 1 2 13216 13250 13399 134062 13450 13485 13490 13567 13568 13584 13616 14000 14031 14224 14289 14396 14443 14496 2 3 6 10 11 12 14 17 20 14644 14649 14651 14698 14750 14764 14882 14971 15022 15189 15288 15291 15292 15398 15408 15444 3 15445 15438 15504 15511 15686 15693 15706 2 15707 15897 15919 15924 15926 15926 wip 15930 16023 16262 166122 16750 16949 ts 17024 17025 17100 17203 17369 17442 17799 18000 18004 18014 18245 18629 18916 19005 19011 19092 1 2 19114 19115 19125 19136 19407 19439 19500 19501 19502 19503 19505 19506 19507 19508 19509 19510 19600 19752 19757 19770 197751 197945 19831 20000 20000 20022 20121 20400 21000 21047 21500 218272002 22000 23270 23271 23360 24517 24613 24617 24707 25178 25964 26000 26300 26324 27000 series 27000 27001 27002 27006 27729 28000 29110 29148 291992 29500 30170 31000 32000 38500 40500 42010 55000 80000 1 2 3 category authority control bnf cb12122565g data gnd 41974608 lccn sh85124299 