ASSESSING the MAINTAINABILITY of C++ SOURCE CODE by MARIUS SUNDBAKKEN a Thesis Submitted in Partial Fulfillment of the Requireme

Total Page:16

File Type:pdf, Size:1020Kb

ASSESSING the MAINTAINABILITY of C++ SOURCE CODE by MARIUS SUNDBAKKEN a Thesis Submitted in Partial Fulfillment of the Requireme ASSESSING THE MAINTAINABILITY OF C++ SOURCE CODE By MARIUS SUNDBAKKEN A thesis submitted in partial fulfillment of the requirements for the degree of Master of Science in Computer Science WASHINGTON STATE UNIVERSITY School of Electrical Engineering and Computer Science DECEMBER 2001 To the Faculty of Washington State University: The members of the Committee appointed to examine the thesis of MARIUS SUNDBAKKEN find it satisfactory and recommend that it be accepted. Chair ii ASSESSING THE MAINTAINABILITY OF C++ SOURCE CODE Abstract by Marius Sundbakken, M.S. Washington State University December 2001 Chair: David Bakken Maintenance refers to the modifications made to software systems after their first release. It is not possible to develop a significant software system that does not need maintenance because change, and hence maintenance, is an inherent characteristic of software systems. It has been estimated that it costs 80% more to maintain software than to develop it. Clearly, maintenance is the major expense in the lifetime of a software product. Predicting the maintenance effort is therefore vital for cost-effective design and development. Automated techniques that can quantify the maintainability of object- oriented designs would be very useful. Models based on metrics for object-oriented source code are necessary to assess software quality and predict engineering effort. This thesis will look at C++, one of the most widely used object-oriented programming languages in academia and industry today. Metrics based models that assess the maintainability of the source code using object-oriented software metrics are developed. iii Table of Contents 1. Introduction .................................................................................................................1 1.1. Maintenance and Maintainability........................................................................ 1 1.2. Analyzing C Source Code................................................................................... 2 1.3. Problems Addressed............................................................................................ 2 1.4. Outline................................................................................................................. 5 2. Related Work............................................................................................................... 6 2.1. Object-Oriented Concepts................................................................................... 6 2.2. Principles of Object-Oriented Design ................................................................. 8 2.2.1. The Open Closed Principle (OCP).............................................................. 9 2.2.2. The Liskov Substitution Principle (LSP) ..................................................10 2.2.3. The Dependency Inversion Principle (DIP).............................................. 11 2.2.4. The Interface Segregation Principle (ISP) ................................................ 14 2.3. Object-Oriented Metrics.................................................................................... 15 2.4. Difficulty Gathering Metrics............................................................................. 17 2.4.1. Tools.......................................................................................................... 17 2.5. Object-Oriented Programming Languages........................................................ 19 2.6. Assessing Maintainability of Object-Oriented Code ........................................ 20 2.6.1. Inheritance................................................................................................. 22 2.6.2. Encapsulation ............................................................................................ 27 2.6.3. Polymorphism ...........................................................................................29 3. Gathering Object-Oriented Metrics........................................................................... 32 3.1. Conceptual Source Code Module...................................................................... 32 iv 3.1.1. Concept and Design .................................................................................. 33 3.1.2. The Code Module...................................................................................... 34 3.2. Functionality in m2 ...........................................................................................36 3.3. Metrics gathered................................................................................................ 36 3.4. Introducing m3.................................................................................................. 44 3.4.1. Changes ..................................................................................................... 45 3.4.2. Sets ............................................................................................................ 53 3.5. Object-Oriented Metrics Gathered.................................................................... 54 3.6. mvt..................................................................................................................... 71 3.7. mmf ...................................................................................................................72 4. Developing Maintainability Index Candidate Models .............................................. 73 4.1. Source Code Sample Set ................................................................................... 74 4.2. Evaluations of the Sample Sets ......................................................................... 75 4.3. Establishing Maintainability of the Sample Set ................................................ 81 4.4. Metrics Analysis................................................................................................ 81 4.5. Maintainability Index Candidate Models.......................................................... 84 4.5.1. Single-Metric Models................................................................................ 84 4.5.2. Two-Metric Models................................................................................. 113 4.5.3. Three-Metric Models............................................................................... 119 Five-Metric Model .................................................................................................. 123 5. Summary ................................................................................................................. 124 5.1. Conclusions ..................................................................................................... 124 5.2. Further Work................................................................................................... 126 v Bibliography.................................................................................................................... 129 References ....................................................................................................................... 135 Appendix ......................................................................................................................... 136 A. Abbrevations ....................................................................................................... 136 B. Compatibility.......................................................................................................138 C. Survey.................................................................................................................. 139 D. Output Format ..................................................................................................... 144 E. Principal Component Analysis Results............................................................... 146 vi List of Tables Table 1 Recommended metrics......................................................................................... 16 Table 2 Source code static analyzers................................................................................. 18 Table 3 Metrics in m2 ....................................................................................................... 36 Table 4 Source code for object.h, string.h and unicode.h. ................................................ 48 Table 5 Metrics added....................................................................................................... 54 Table 6 Analysis #1 for total lines of code for objects...................................................... 85 Table 7 Analysis #2 for total lines of code for objects...................................................... 85 Table 8 Analysis #1 for average lines of code for objects. ............................................... 87 Table 9 Analysis #2 for average lines of code for objects. ............................................... 87 Table 10 Analysis #1 for comment lines for objects......................................................... 89 Table 11 Analysis #2 for comment lines for objects......................................................... 89 Table 12 Analysis #1 for average comment lines for objects. .......................................... 91 Table 13 Analysis #2 for average comment lines for objects. .......................................... 91 Table 14 Analysis #1 for number of methods added. ....................................................... 93 Table 15 Analysis #2 for number of methods added. ....................................................... 93 Table 16 Analysis #1 for member
Recommended publications
  • Software Maintenance Maintenance Is Inevitable Types of Maintenance
    SoftWindows 8/18/2003 Software Maintenance • Managing the processes of system change Reverse Engineering (Software Maintenance & Reengineering) © SERG Maintenance is Inevitable • The system requirements are likely to change while the system is being developed because the environment is changing. • When a system is installed in an environment it changes that environment and therefore changes the system requirements. Reverse Engineering (Software Maintenance & Reengineering) © SERG Types of Maintenance • Perfective maintenance – Changing a system to make it meet its requirements more effectively. • Adaptive maintenance – Changing a system to meet new requirements. • Corrective maintenance – Changing a system to correct deficiencies in the way meets its requirements. Reverse Engineering (Software Maintenance & Reengineering) © SERG Distributed Objects 1 SoftWindows 8/18/2003 Distribution of Maintenance Effort Corrective maintenance (17%) Adaptive maintenance Perfective (18%) maintenance (65%) Reverse Engineering (Software Maintenance & Reengineering) © SERG Evolving Systems • It is usually more expensive to add functionality after a system has been developed rather than design this into the system: – Maintenance staff are often inexperienced and unfamiliar with the application domain. – Programs may be poorly structured and hard to understand. – Changes may introduce new faults as the complexity of the system makes impact assessment difficult. – The structure may be degraded due to continual change. – There may be no documentation available to describe the program. Reverse Engineering (Software Maintenance & Reengineering) © SERG The Maintenance Process • Maintenance is triggered by change requests from customers or marketing requirements. • Changes are normally batched and implemented in a new release of the system. • Programs sometimes need to be repaired without a complete process iteration but this is dangerous as it leads to documentation and programs getting out of step.
    [Show full text]
  • System Software Maintenance and Support 24X7
    SYSTEM SOFTWARE MAINTENANCE AND SUPPORT SERVICES - PREMIUM These Premium System Software Maintenance and Support Service terms and conditions (“Terms and Conditions”) apply to any quote, order, order acknowledgment, and invoice, and any sale or provision of Premium System Software Maintenance and Support Services as defined herein provided to Customer by Viavi Solutions Inc. (“Viavi”), in addition to Viavi’s General Terms (“General Terms”) and/or Software License Terms, which are incorporated by reference herein and are either attached hereto, available at www.viavisolutions.com/terms or available upon request. k) Severity Level means classification of a problem determined by Viavi personnel 1. PURPOSE AND SCOPE based upon the Customer’s assessment of business impact. The three (3) Severity Levels that apply to the Services are as follows: These Terms and Conditions describe the Services that Viavi will provide to, and perform for, Customer. These Terms and Conditions apply to Services for standard Software, as 1) Problem Report – Critical means conditions that severely affect the defined herein, and are limited to the System configuration specified in a Statement of primary functionality of the System and because of the business impact to the Work (“SOW”) or other ordering document (i.e., a quote, order, order acknowledgment customer requires non-stop immediate corrective action, regardless of time of day or invoice) which contains a description of the System. All Services and Documentation or day of the week as viewed by a customer
    [Show full text]
  • A Quantitative Reliability, Maintainability and Supportability Approach for NASA's Second Generation Reusable Launch Vehicle
    A Quantitative Reliability, Maintainability and Supportability Approach for NASA's Second Generation Reusable Launch Vehicle Fayssai M. Safie, Ph. D. Marshall Space Flight Center Huntsville, Alabama Tel: 256-544-5278 E-mail: Fayssal.Safie @ msfc.nasa.gov Charles Daniel, Ph.D. Marshall Space Flight Center Huntsville, Alabama Tel: 256-544-5278 E-mail: Charles.Daniel @msfc.nasa.gov Prince Kalia Raytheon ITSS Marshall Space Flight Center Huntsville, Alabama Tel: 256-544-6871 E-mail: Prince.Kalia @ msfc.nasa.gov ABSTRACT The United States National Aeronautics and Space Administration (NASA) is in the midst of a 10-year Second Generation Reusable Launch Vehicle (RLV) program to improve its space transportation capabilities for both cargo and crewed missions. The objectives of the program are to: significantly increase safety and reliability, reduce the cost of accessing low-earth orbit, attempt to leverage commercial launch capabilities, and provide a growth path for manned space exploration. The safety, reliability and life cycle cost of the next generation vehicles are major concerns, and NASA aims to achieve orders of magnitude improvement in these areas. To get these significant improvements, requires a rigorous process that addresses Reliability, Maintainability and Supportability (RMS) and safety through all the phases of the life cycle of the program. This paper discusses the RMS process being implemented for the Second Generation RLV program. 1.0 INTRODUCTION The 2nd Generation RLV program has in place quantitative Level-I RMS, and cost requirements [Ref 1] as shown in Table 1, a paradigm shift from the Space Shuttle program. This paradigm shift is generating a change in how space flight system design is approached.
    [Show full text]
  • Software Quality Management
    Software Quality Management 2004-2005 Marco Scotto ([email protected]) Software Quality Management Contents ¾Definitions ¾Quality of the software product ¾Special features of software ¾ Early software quality models •Boehm model • McCall model ¾ Standard ISO 9126 Software Quality Management 2 Definitions ¾ Software: intellectual product consisting of information stored on a storage device (ISO/DIS 9000: 2000) • Software may occur as concepts, transactions, procedures. One example of software is a computer program • Software is "intellectual creation comprising the programs, procedures, rules and any associated documentation pertaining to the operation of a data processing system" •A software product is the "complete set of computer programs, procedures and associated documentation and data designated for delivery to a user" [ISO 9000-3] • Software is independent of the medium on which it is recorded Software Quality Management 3 Quality of the software product ¾The product should, on the highest level… • Ensure the satisfaction of the user needs • Ensure its proper use ¾ Earlier: 1 developer, 1 user • The program should run and produce results similar to those expected ¾ Later: more developers, more users • Need to economical use of the storage devices • Understandability, portability • User-friendliness, learnability ¾ Nowadays: • Efficiency, reliability, no errors, able to restart without using data Software Quality Management 4 Special features of software (1/6) ¾ Why is software ”different”? • Does not really have “physical” existence
    [Show full text]
  • Software Maintainability and Usability in Agile Environment
    Software Maintainability and Usability in Agile Environment {tag} {/tag} International Journal of Computer Applications © 2013 by IJCA Journal Volume 68 - Number 4 Year of Publication: 2013 Authors: Monika Agarwal Rana Majumdar 10.5120/11569-6873 {bibtex}pxc3886873.bib{/bibtex} Abstract This research is based on software maintainability and usability in the agile environment. Maintainability of the system is the ability to undergo changes relatively easily. These changes can affect components, services, interfaces and functionality when adding or changing functions, errors, and respond to business needs. Usability is defined as the application that meets the requirements of users and consumers by providing an intuitive, easy to locate and globalize and provides good access for disabled users and leads to a good overall user experience. In the conventional method of the software development, there are many metrics to calculate the maintenance and use of software. This research is to determine whether the same measures apply to Agile, or there is a need to change some metrics used for the agile environment. The goal of software engineering is to develop good quality maintainable software in schedule and budget. Inflated software costing, delayed time frame, or not meeting quality standards express a failure. A survey suggests about 45% of software fails due to the lack of quality. It is therefore one of the most important aspects for the success of software. Refer ences 1 / 3 Software Maintainability and Usability in Agile Environment - P. Antonellis, D. Antoniou, Y. Kanellopoulos, C. Makris, E. Theodoridis, C. Tjortjis, and N. Tsirakis, "A data mining methodology for evaluating maintainability according to ISO/IEC-9126 software engineering – product quality standard," in Special Session on System Quality and Maintainability - SQM2007, 2007.
    [Show full text]
  • Software Engineering Software Maintenance
    SOFTWARE ENGINEERING SOFTWARE MAINTENANCE 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. LEARNING OBJECTIVES • To study on why maintenance is an issue. • To study on reverse engineering and limitations. • To organize data. • To check what the system does. SOFTWARE MAINTENANCE The IEEE Standard for Software Maintenance (IEEE 1219) gave the definition for software maintenance as “The process of modifying a software system or component after delivery to correct faults, improves performance or other attributes, or adapt to a changed environment.” Maintenance Principles 100 Hardware Development 60 Software 20 Maintenance Percent of total cost total of Percent 1995 2000 2010 The IEEE/EIA 12207 Standard defines maintenance as modification to code and associated documentation due to a problem or the need for improvement. Nature of Maintenance 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´s knowledge of the software. Need for Maintenance Maintenance must be performed in order to: • Correct faults. • Improve the design. • Implement enhancements. • Interface with other systems. • Adapt programs so that different hardware, software, system features, and telecommunications facilities can be used. • Migrate legacy software. • Retire software Tasks of a maintainer The maintainer does the following functions: • Maintain control over the software´s day-to-day functions. • Maintain control over software modification.
    [Show full text]
  • Real-Time Multiplayer Software Archi- Tecture
    Olli Vilmi Real-time Multiplayer Software Archi- tecture Metropolia University of Applied Sciences Bachelor of Engineering Information and Communications Technology Bachelor’s Thesis 13 March 2020 Abstract Author Olli Vilmi Title Real-time Multiplayer Software Architecture Number of Pages 49 pages + 2 appendices Date 17 February 2020 Degree Bachelor of Engineering Degree Programme Information and Communications Technology Professional Major Software Engineering Instructors Janne Salonen, Head of Department The goal of the project was to study real-time multiplayer programming to identify require- ments, problems and common solutions. Using this information, software architecture was designed and implemented for a 2D platformer game. The programming language Lua was the programming language used for the game client, which runs on the LÖVE2D game framework. Consequently, the server was also written in Lua, but any applicable language could have been chosen. The freedom to be able to use any tools was an important objective of the project. The server model, updating the game state, bandwidth and latency are critical topics which were addressed during the design process. The desired features for networking were imple- mented with simple solutions based on different requirements. Experiences and problems faced during the development are reviewed to show examples of problems and to draw conclusions. In order to prevent packet loss without inducing more latency, features from TCP were implemented on top of a UDP based messaging protocol. Bandwidth
    [Show full text]
  • Adaptability Evaluation at Software Architecture Level Pentti Tarvainen*
    The Open Software Engineering Journal, 2008, 2, 1-30 1 Open Access Adaptability Evaluation at Software Architecture Level Pentti Tarvainen* VTT Technical Research Centre of Finland, Kaitoväylä 1, P.O. Box 1100, FIN-90571 Oulu, Finland Abstract: Quality of software is one of the major issues in software intensive systems and it is important to analyze it as early as possible. An increasingly important quality attribute of complex software systems is adaptability. Software archi- tecture for adaptive software systems should be flexible enough to allow components to change their behaviors depending upon the environmental and stakeholders' changes and goals of the system. Evaluating adaptability at software architec- ture level to identify the weaknesses of the architecture and further to improve adaptability of the architecture are very important tasks for software architects today. Our contribution is an Adaptability Evaluation Method (AEM) that defines, before system implementation, how adaptability requirements can be negotiated and mapped to the architecture, how they can be represented in architectural models, and how the architecture can be evaluated and analyzed in order to validate whether or not the requirements are met. AEM fills the gap from requirements engineering to evaluation and provides an approach for adaptability evaluation at the software architecture level. In this paper AEM is described and validated with a real-world wireless environment control system. Furthermore, adaptability aspects, role of quality attributes, and diversity of adaptability definitions at software architecture level are discussed. Keywords: Adaptability, adaptation, adaptive software architecture, software quality, software quality attribute. INTRODUCTION understand the system [6]. Examples of design decisions are the decisions such as “we shall separate user interface from Today, quality of a software system plays an increasingly the rest of the application to make both user interface and important role in the domain of software engineering.
    [Show full text]
  • Read Ms. Shaw's First Amended Complaint
    Janet L. Goldstein Peter W. Chatfield THE MARTYN FIRM, PLLC PHILLIPS & COHEN LLP 1054 31st Street, NW 2000 Massachusetts Ave., NW Washington, D.C. 20007 Washington, D.C. 20036 Tel: (202) 965-3060 Tel: (202) 833-4567 Fax: (202) 965-3063 Fax: (202) 833-1815 Jonathan A. Willens (JW-9180) JONATHAN A. WILLENS LLC 217 Broadway, Suite 707 New York, New York 10007 Tel: (212) 619-3749 Fax: (800) 879-7938 Attorneys for qui tam plaintiff Ann-Marie Shaw UNITED STATES DISTRICT COURT FOR THE EASTERN DISTRICT OF NEW YORK UNITED STATES OF AMERICA ) 06 CV 3552 (DLI) (SMG) ex rel. ANN-MARIE SHAW ) and ) AMENDED COMPLAINT ) FOR VIOLATIONS OF STATE OF CALIFORNIA ex rel.ANN-MARIE SHAW ) FEDERAL AND STATE DISTRICT OF COLUMBIA ex rel.ANN-MARIE SHAW ) FALSE CLAIMS ACTS STATE OF FLORIDA ex rel.ANN-MARIE SHAW ) STATE OF HAWAII ex rel.ANN-MARIE SHAW ) STATE OF ILLINOIS ex rel.ANN-MARIE SHAW ) COMMONWEALTH OF MASSACHUSETTS ) ex rel.ANN-MARIE SHAW ) STATE OF NEVADA ex rel.ANN-MARIE SHAW ) COMMONWEALTH OF VIRGINA ) ex rel.ANN-MARIE SHAW ) STATE & CITY OF NEW YORK ) ex rel.ANN-MARIE SHAW, ) ) JURY TRIAL DEMANDED Plaintiffs, ) ) FILED UNDER SEAL v. ) ) CA, INC., ) ) Defendant. ) _______________________________________________ ) Through her attorneys, plaintiff and qui tam relator Ann-Marie Shaw, for her Amended Complaint against Defendant CA, Inc. (“CA”), formerly known as Computer Associates International, Inc. or “Computer Associates,” alleges as follows: FACTS COMMON TO ALL COUNTS A. Introduction 1. This is a civil action to recover damages and civil penalties arising from false and/or fraudulent statements, records, and claims made and caused to be made by the Defendant CA and/or its agents and employees in violation of the Federal Civil False Claims Act, 31 U.S.C.
    [Show full text]
  • Software Maintainability and Reusability Using Cohesion Metrics
    International Journal of Computer Trends and Technology (IJCTT) – Volume 54 Issue 2-December2017 Software Maintainability and Reusability using Cohesion Metrics Adekola, O.D#1, Idowu, S.A*2, Okolie, S.O#3, Joshua, J.V#4, Akinsanya, A.O*5, Eze, M.O#6, EbiesuwaSeun#7 #1Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria *2Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria #3Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria #4Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria *5Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria #6Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria #7Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria Abstract - Among others, remarkable external software’s lifetime. Ahn et al., (2003) estimated that quality attributes of interest to software practitioners/ maintenance takes up to 80% of the total costof engineers include testability, maintainability and producing software applications. Expectation of reusability.Software engineers still combat achieving more reliable, quicker time-to-market and softwarecrisis and even chronic software affliction maintainable systems. A lot of research has gone into not because there is no standardized software the areas of software reuse and maintenance due to development process but because enough attention is the fact that these among other issues concern not given to seemingly insignificant but crucial intimately system developers/architects/engineers details of internal design attributes such as cohesion rather than end-users. Therehas been enormous and coupling especially in object-oriented systems. growth in software reuse research from the days of Consequently, the aftermath is increased structured programming concepts to object-oriented maintenance cost, effort and time which negatively methods and beyond (e.g.
    [Show full text]
  • Measuring Software Maintainability
    Aalto University School of Science Degree Programme in Computer Science and Engineering Juha Viljanen Measuring software maintainability Master's Thesis Espoo, August 10, 2015 Supervisor: Professor Marjo Kauppinen, Aalto University Advisor: Robert Brotherus Lic.Phil. (Chem.) Timo Lehtinen D.Sc. (Tech) Aalto University School of Science ABSTRACT OF Degree Programme in Computer Science and Engineering MASTER'S THESIS Author: Juha Viljanen Title: Measuring software maintainability Date: August 10, 2015 Pages: 94 Major: Software Engineering Code: T241-3 Supervisor: Professor Marjo Kauppinen Advisor: Robert Brotherus Lic.Phil. (Chem.) Timo Lehtinen D.Sc. (Tech) Maintenance forms the major part of the software's development costs. Keep- ing the software's code base in a good shape, i.e. maintainable, speeds up and reduces the cost of making changes and makes them less risky. Refactoring and reengineering are practices to improve a software's maintainability. An essential part of keeping a software's maintainability at a desired level or systematically improving its maintainability is to measure the progress and to find the parts of code whose improvement would have the biggest affect on the overall maintainability. This can be done by using metrics. It is crucial to make sure the metrics are actively used by the company personnel. This can be done by providing useful deployment practices for the metrics. A literature review and a case study was conducted using a simplified version of the Design Science. The aim was to find a relevant set of metrics and useful ways of deploying them at the case company. In the case study, workshops were organized at the case company to fulfill the aim.
    [Show full text]
  • Techniques for Software Maintenance 57 02 58
    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.
    [Show full text]