{"id":307,"date":"2018-07-25T06:54:49","date_gmt":"2018-07-25T06:54:49","guid":{"rendered":"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/?post_type=chapter&#038;p=307"},"modified":"2018-08-08T06:10:29","modified_gmt":"2018-08-08T06:10:29","slug":"software-maintenance","status":"publish","type":"chapter","link":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/chapter\/software-maintenance\/","title":{"rendered":"Software Maintenance"},"content":{"raw":"<div>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>SOFTWARE MAINTENANCE<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">Software maintenance is the process of modification or making changes in the system after delivery to overcome errors and faults in the system that were not uncovered during the early stages of the development cycle.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>LEARNING OBJECTIVES\u00a0<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">\u2022 To study on why maintenance is an issue<em>.<\/em><\/p>\r\n<p style=\"text-align: justify\">\u2022 To study on reverse engineering and limitations.<\/p>\r\n<p style=\"text-align: justify\">\u2022 To organize data.<\/p>\r\n<p style=\"text-align: justify\">\u2022 To check what the system does.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>SOFTWARE MAINTENANCE\u00a0<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">The IEEE Standard for Software Maintenance (IEEE 1219) gave the definition for software maintenance as \u201cThe process of modifying a software system or component after delivery to correct faults, improves performance or other attributes, or adapt to a changed environment.\u201d<\/p>\r\n&nbsp;\r\n\r\n<\/div>\r\n<img class=\"aligncenter size-full wp-image-312\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/SOFTWARE-MAINTENANCE.png\" alt=\"\" width=\"417\" height=\"350\" \/>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<img class=\"aligncenter size-full wp-image-311\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/mp.png\" alt=\"\" width=\"544\" height=\"284\" \/>\r\n<p style=\"text-align: justify\">The IEEE\/EIA 12207 Standard defines maintenance as modification to code and associated documentation due to a problem or the need for improvement.<\/p>\r\n&nbsp;\r\n\r\n<strong>Nature of Maintenance\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Modification requests are logged and tracked, the impact of proposed changes are determined, code and other software artifacts are modified, testing is conducted, and a new version of the software product is released. Maintainers can learn from the developer\u00b4s knowledge of the software.<\/p>\r\n&nbsp;\r\n\r\n<strong>Need for Maintenance\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nMaintenance must be performed in order to:\r\n\r\n&nbsp;\r\n\r\n\u2022 Correct faults.\r\n\r\n\u2022 Improve the design.\r\n\r\n\u2022 Implement enhancements.\r\n\r\n\u2022 Interface with other systems.\r\n\r\n\u2022 Adapt programs so that different hardware, software, system features, and telecommunications facilities can be used.\r\n\r\n\u2022 Migrate legacy software.\r\n\r\n\u2022 Retire software\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>Tasks of a Maintainer<\/strong>\r\n\r\n&nbsp;\r\n\r\nThe maintainer does the following functions:\r\n\r\n&nbsp;\r\n\r\n\u2022\u00a0 Maintain control over the software\u00b4s day-to-day functions.\r\n\r\n\u2022\u00a0 Maintain control over software modification.\r\n\r\n\u2022\u00a0 Perfecting existing functions.\r\n\r\n\u2022\u00a0 Preventing software performance from degrading to unacceptable levels.\r\n\r\n&nbsp;\r\n\r\n<strong>Majority of Maintenance Costs\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Maintenance consumes a major share of software life cycle financial resources. But studies and surveys have shown that \u201cover 80% of the maintenance effort is used for non-corrective actions. Quality of software design, construction, documentation, and testing affects software maintenance costs.<\/p>\r\n&nbsp;\r\n\r\n<strong>Evolution of Software\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Lehman has studied software maintenance and evolution for over 20 years, leading to \u2018Lehman\u00b4s Laws\u2019. E.g. increasing complexity \u2014 as a program is evolved, its complexity increases unless work is done to maintain or reduce it.<\/p>\r\n&nbsp;\r\n\r\n<strong>CATEGORIES OF MAINTENANCE\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nMaintenance can be categorized into the follwing:\r\n<ul>\r\n \t<li>Corrective maintenance<\/li>\r\n \t<li>Adaptive maintenance<\/li>\r\n \t<li>Perfective maintenance<\/li>\r\n \t<li>Preventive maintenance<\/li>\r\n<\/ul>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>Corrective maintenance<\/strong>: Reactive modification of a software product performed after delivery to correct discovered problems.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>Adaptive maintenance<\/strong>: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong style=\"font-size: 1em;text-align: initial\">Perfective \u00a0maintenance<\/strong><span style=\"font-size: 1em;text-align: initial\">: \u00a0Modification \u00a0of \u00a0a \u00a0software \u00a0product \u00a0after \u00a0delivery \u00a0to \u00a0improve performance or maintainability.\r\n<\/span><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong style=\"text-align: initial;font-size: 1em\">Preventive maintenance<\/strong><span style=\"text-align: initial;font-size: 1em\">: Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults.<\/span><\/p>\r\n\r\n<\/div>\r\n<div style=\"text-align: justify\">\r\n\r\n&nbsp;\r\n\r\n<strong>KEY TO MAINTENANCE\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The key to effective maintenance lies in development. Depending upon the development of the product the maintenance of the product is determined.<\/p>\r\n\r\n<ul>\r\n \t<li>Higher quality \u00de less (corrective) maintenance<\/li>\r\n \t<li>Anticipating changes \u00a0\u00de less (adaptive and perfective) maintenance<\/li>\r\n \t<li>Better tuning to user needs \u00a0\u00de less (perfective) maintenance<\/li>\r\n \t<li>Less code \u00de less maintenance<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\nThe distribution of maintenance activities are shown in the figure below:\r\n\r\n&nbsp;\r\n\r\n<img class=\"aligncenter size-full wp-image-310\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/KEY-TO-MAINTENANCE.png\" alt=\"\" width=\"627\" height=\"199\" \/>\r\n\r\n<strong style=\"text-align: initial;font-size: 1em\">Major causes of maintenance problems\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">Some of the major factors which causes problem in maintenance is as follows:<\/span>\r\n<ul>\r\n \t<li><span style=\"text-align: initial;font-size: 1em\">Unstructured code<\/span><\/li>\r\n \t<li><span style=\"text-align: initial;font-size: 1em\">Insufficient domain knowledge<\/span><\/li>\r\n \t<li><span style=\"text-align: initial;font-size: 1em\">Insufficient documentation<\/span><\/li>\r\n<\/ul>\r\n<\/div>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">The key issues in software maintenance include:<\/span><\/p>\r\n\r\n<div style=\"text-align: justify\">\r\n<ul>\r\n \t<li>Limited Understanding<\/li>\r\n \t<li>Shift in type of maintenance<\/li>\r\n \t<li>Impact Analysis<\/li>\r\n \t<li>Maintainability<\/li>\r\n \t<li>Alignment with organizational objectives<\/li>\r\n \t<li>Staffing<\/li>\r\n \t<li>Process<\/li>\r\n \t<li>Organizational aspects of maintenance<\/li>\r\n \t<li>Outsourcing<\/li>\r\n \t<li>Cost Estimation<\/li>\r\n \t<li>Specific Measures<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<strong>Limited Understanding\u00a0<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The maintainers make changes or corrections to software that they did not write, so they should quickly understand the software. 40%-60% of the maintenance effort is devoted to understanding the software. Comprehension is difficult in the absence of documentation and when the original developers are unavailable. The maintainers must quickly understand the software and should make modifications to overcome the issues in the system.<\/p>\r\n&nbsp;\r\n\r\n<strong>Shift in type of maintenance\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nShift in type of maintenance over time can be projected as follows:\r\n<ul>\r\n \t<li>Introductory stage: emphasis on user support.<\/li>\r\n \t<li>Growth stage: emphasis on correcting faults.<\/li>\r\n \t<li>Maturity: emphasis on enhancements.<\/li>\r\n \t<li>Decline: emphasis on technology changes.<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<strong>Impact Analysis\u00a0<\/strong>\r\n\r\n&nbsp;\r\n\r\nThe objectives of impact analysis are:\r\n<ul>\r\n \t<li>Determination of the scope of the change in order to plan and implement the work.<\/li>\r\n \t<li>Development of accurate estimates of resources needed to perform the work<\/li>\r\n \t<li>Analysis of the cost\/benefits of the requested change<\/li>\r\n \t<li>Communication to others of the complexity of a given change\u201d.<\/li>\r\n<\/ul>\r\n<\/div>\r\n&nbsp;\r\n<p style=\"text-align: justify\"><strong>Maintainability<\/strong><\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">IEEE [IEEE610.12-90] defines maintainabiliy as the ease with which software can be maintained, enhanced, adapted, or corrected to satisfy specified requirements and the presence of systematic and mature processes, techniques, and tools helps to enhance the maintainability of a system.<\/p>\r\n&nbsp;\r\n\r\n<strong>Web Links<\/strong>\r\n<ul>\r\n \t<li>swebokwiki.org\/Chapter_5:_Software_Maintenance<\/li>\r\n \t<li>agile.csc.ncsu.edu\/SEMaterials\/MaintenanceRefactoring.pdf<\/li>\r\n \t<li>https:\/\/www.tutorialspoint.com\/software...\/software_maintenance_overview.htm<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<strong>Supporting &amp; Reference Materials<\/strong>\r\n<ul>\r\n \t<li>Roger S. Pressman, \u201cSoftware Engineering: A Practitioner\u2019s Approach\u201d, Fifth Edition, McGraw Hill, 2001.<\/li>\r\n \t<li>Pankaj Jalote, \u201cAn Integrated Approach to Software Engineering\u201d, Second Edition, Narosa Publications, 2005.<\/li>\r\n \t<li>Ian Sommerville, \u201cSoftware Engineering\u201d, Tenth Edition, Pearson Education, 2017.<\/li>\r\n<\/ul>","rendered":"<div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>SOFTWARE MAINTENANCE<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Software maintenance is the process of modification or making changes in the system after delivery to overcome errors and faults in the system that were not uncovered during the early stages of the development cycle.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>LEARNING OBJECTIVES\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">\u2022 To study on why maintenance is an issue<em>.<\/em><\/p>\n<p style=\"text-align: justify\">\u2022 To study on reverse engineering and limitations.<\/p>\n<p style=\"text-align: justify\">\u2022 To organize data.<\/p>\n<p style=\"text-align: justify\">\u2022 To check what the system does.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>SOFTWARE MAINTENANCE\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The IEEE Standard for Software Maintenance (IEEE 1219) gave the definition for software maintenance as \u201cThe process of modifying a software system or component after delivery to correct faults, improves performance or other attributes, or adapt to a changed environment.\u201d<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-312\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/SOFTWARE-MAINTENANCE.png\" alt=\"\" width=\"417\" height=\"350\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/SOFTWARE-MAINTENANCE.png 417w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/SOFTWARE-MAINTENANCE-300x252.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/SOFTWARE-MAINTENANCE-65x55.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/SOFTWARE-MAINTENANCE-225x189.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/SOFTWARE-MAINTENANCE-350x294.png 350w\" sizes=\"auto, (max-width: 417px) 100vw, 417px\" \/><\/p>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-311\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/mp.png\" alt=\"\" width=\"544\" height=\"284\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/mp.png 544w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/mp-300x157.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/mp-65x34.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/mp-225x117.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/mp-350x183.png 350w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\" \/><\/p>\n<p style=\"text-align: justify\">The IEEE\/EIA 12207 Standard defines maintenance as modification to code and associated documentation due to a problem or the need for improvement.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Nature of Maintenance\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Modification requests are logged and tracked, the impact of proposed changes are determined, code and other software artifacts are modified, testing is conducted, and a new version of the software product is released. Maintainers can learn from the developer\u00b4s knowledge of the software.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Need for Maintenance\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Maintenance must be performed in order to:<\/p>\n<p>&nbsp;<\/p>\n<p>\u2022 Correct faults.<\/p>\n<p>\u2022 Improve the design.<\/p>\n<p>\u2022 Implement enhancements.<\/p>\n<p>\u2022 Interface with other systems.<\/p>\n<p>\u2022 Adapt programs so that different hardware, software, system features, and telecommunications facilities can be used.<\/p>\n<p>\u2022 Migrate legacy software.<\/p>\n<p>\u2022 Retire software<\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>Tasks of a Maintainer<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>The maintainer does the following functions:<\/p>\n<p>&nbsp;<\/p>\n<p>\u2022\u00a0 Maintain control over the software\u00b4s day-to-day functions.<\/p>\n<p>\u2022\u00a0 Maintain control over software modification.<\/p>\n<p>\u2022\u00a0 Perfecting existing functions.<\/p>\n<p>\u2022\u00a0 Preventing software performance from degrading to unacceptable levels.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Majority of Maintenance Costs\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Maintenance consumes a major share of software life cycle financial resources. But studies and surveys have shown that \u201cover 80% of the maintenance effort is used for non-corrective actions. Quality of software design, construction, documentation, and testing affects software maintenance costs.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Evolution of Software\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Lehman has studied software maintenance and evolution for over 20 years, leading to \u2018Lehman\u00b4s Laws\u2019. E.g. increasing complexity \u2014 as a program is evolved, its complexity increases unless work is done to maintain or reduce it.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>CATEGORIES OF MAINTENANCE\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Maintenance can be categorized into the follwing:<\/p>\n<ul>\n<li>Corrective maintenance<\/li>\n<li>Adaptive maintenance<\/li>\n<li>Perfective maintenance<\/li>\n<li>Preventive maintenance<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>Corrective maintenance<\/strong>: Reactive modification of a software product performed after delivery to correct discovered problems.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>Adaptive maintenance<\/strong>: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong style=\"font-size: 1em;text-align: initial\">Perfective \u00a0maintenance<\/strong><span style=\"font-size: 1em;text-align: initial\">: \u00a0Modification \u00a0of \u00a0a \u00a0software \u00a0product \u00a0after \u00a0delivery \u00a0to \u00a0improve performance or maintainability.<br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong style=\"text-align: initial;font-size: 1em\">Preventive maintenance<\/strong><span style=\"text-align: initial;font-size: 1em\">: Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults.<\/span><\/p>\n<\/div>\n<div style=\"text-align: justify\">\n<p>&nbsp;<\/p>\n<p><strong>KEY TO MAINTENANCE\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The key to effective maintenance lies in development. Depending upon the development of the product the maintenance of the product is determined.<\/p>\n<ul>\n<li>Higher quality \u00de less (corrective) maintenance<\/li>\n<li>Anticipating changes \u00a0\u00de less (adaptive and perfective) maintenance<\/li>\n<li>Better tuning to user needs \u00a0\u00de less (perfective) maintenance<\/li>\n<li>Less code \u00de less maintenance<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>The distribution of maintenance activities are shown in the figure below:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-310\" src=\"http:\/\/csp8.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/53\/2018\/07\/KEY-TO-MAINTENANCE.png\" alt=\"\" width=\"627\" height=\"199\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/KEY-TO-MAINTENANCE.png 627w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/KEY-TO-MAINTENANCE-300x95.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/KEY-TO-MAINTENANCE-65x21.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/KEY-TO-MAINTENANCE-225x71.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-content\/uploads\/sites\/53\/2018\/07\/KEY-TO-MAINTENANCE-350x111.png 350w\" sizes=\"auto, (max-width: 627px) 100vw, 627px\" \/><\/p>\n<p><strong style=\"text-align: initial;font-size: 1em\">Major causes of maintenance problems\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">Some of the major factors which causes problem in maintenance is as follows:<\/span><\/p>\n<ul>\n<li><span style=\"text-align: initial;font-size: 1em\">Unstructured code<\/span><\/li>\n<li><span style=\"text-align: initial;font-size: 1em\">Insufficient domain knowledge<\/span><\/li>\n<li><span style=\"text-align: initial;font-size: 1em\">Insufficient documentation<\/span><\/li>\n<\/ul>\n<\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><span style=\"text-align: initial;font-size: 1em\">The key issues in software maintenance include:<\/span><\/p>\n<div style=\"text-align: justify\">\n<ul>\n<li>Limited Understanding<\/li>\n<li>Shift in type of maintenance<\/li>\n<li>Impact Analysis<\/li>\n<li>Maintainability<\/li>\n<li>Alignment with organizational objectives<\/li>\n<li>Staffing<\/li>\n<li>Process<\/li>\n<li>Organizational aspects of maintenance<\/li>\n<li>Outsourcing<\/li>\n<li>Cost Estimation<\/li>\n<li>Specific Measures<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Limited Understanding\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The maintainers make changes or corrections to software that they did not write, so they should quickly understand the software. 40%-60% of the maintenance effort is devoted to understanding the software. Comprehension is difficult in the absence of documentation and when the original developers are unavailable. The maintainers must quickly understand the software and should make modifications to overcome the issues in the system.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Shift in type of maintenance\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Shift in type of maintenance over time can be projected as follows:<\/p>\n<ul>\n<li>Introductory stage: emphasis on user support.<\/li>\n<li>Growth stage: emphasis on correcting faults.<\/li>\n<li>Maturity: emphasis on enhancements.<\/li>\n<li>Decline: emphasis on technology changes.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Impact Analysis\u00a0<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>The objectives of impact analysis are:<\/p>\n<ul>\n<li>Determination of the scope of the change in order to plan and implement the work.<\/li>\n<li>Development of accurate estimates of resources needed to perform the work<\/li>\n<li>Analysis of the cost\/benefits of the requested change<\/li>\n<li>Communication to others of the complexity of a given change\u201d.<\/li>\n<\/ul>\n<\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\"><strong>Maintainability<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">IEEE [IEEE610.12-90] defines maintainabiliy as the ease with which software can be maintained, enhanced, adapted, or corrected to satisfy specified requirements and the presence of systematic and mature processes, techniques, and tools helps to enhance the maintainability of a system.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Web Links<\/strong><\/p>\n<ul>\n<li>swebokwiki.org\/Chapter_5:_Software_Maintenance<\/li>\n<li>agile.csc.ncsu.edu\/SEMaterials\/MaintenanceRefactoring.pdf<\/li>\n<li>https:\/\/www.tutorialspoint.com\/software&#8230;\/software_maintenance_overview.htm<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Supporting &amp; Reference Materials<\/strong><\/p>\n<ul>\n<li>Roger S. Pressman, \u201cSoftware Engineering: A Practitioner\u2019s Approach\u201d, Fifth Edition, McGraw Hill, 2001.<\/li>\n<li>Pankaj Jalote, \u201cAn Integrated Approach to Software Engineering\u201d, Second Edition, Narosa Publications, 2005.<\/li>\n<li>Ian Sommerville, \u201cSoftware Engineering\u201d, Tenth Edition, Pearson Education, 2017.<\/li>\n<\/ul>\n","protected":false},"author":4,"menu_order":31,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":["dr-r-baskaran"],"pb_section_license":""},"chapter-type":[],"contributor":[58],"license":[],"class_list":["post-307","chapter","type-chapter","status-publish","hentry","contributor-dr-r-baskaran"],"part":3,"_links":{"self":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/users\/4"}],"version-history":[{"count":6,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/307\/revisions"}],"predecessor-version":[{"id":418,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/307\/revisions\/418"}],"part":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/parts\/3"}],"metadata":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapters\/307\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/media?parent=307"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/pressbooks\/v2\/chapter-type?post=307"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/contributor?post=307"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp8\/wp-json\/wp\/v2\/license?post=307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}