Software Maintenance Lifecycle Modeling
Total Page:16
File Type:pdf, Size:1020Kb
Home Software Maintenance Lifecycle Modeling D Vijay Rao, VVS Sarma and NK Srinivasan Department of Computer Science & Automation Indian Institute of Science Bangalore 560 012, India. Abstract Maintenance of legacy systems, representing a massive, long-term business investment, is an important but relatively new research area. A generic, unified lifecycle model (ULM) integrating the product, process and project views of software development and maintenance based on re- entrant lines is proposed. The proposed re-entrant line model represents the software maintenance process in a software organisation. The existing model for software development predicts project metrics such as the development time, cost and product quality for any new project to be taken up by the organization. The routing matrix of the artifacts in the ULM can be modified to derive different types of lifecycle models such as Waterfall, Prototyping, Spiral and Hybrid models. The ULM is modified to depict the complex set of activities associated with software maintenance. Quantitative metrics such as release time of versions, cost, time and effort for maintenance are estimated using this model. 1. Introduction The area of software maintenance has not received adequate attention in the literature because it was considered as a fairly routine activity with no challenge for creative people. Today, when salaries of programmers have become a major part of the data processing budget, the difficulties in software maintenance are slowly becoming apparent. A large proportion of the software products in operation are the so-called ‘legacy systems’ [TrTi95, LLFG97, BMW96, BM97]. Such systems, that typically are the backbone of an organization’s information flow and business, represent a massive, long-term business investment. Unfortunately, such systems are often brittle, slow and inextensible. Capturing legacy system artifacts in a way that it can support organizations into the future is an important but relatively new research area. Maintenance of such systems involves modifying and using software products after delivery by the vendor or third parties in order to correct faults discovered during operation, to enhance performance or other attributes. This process also involves incorporating the changes requested by the user, and adapting the product to a changed environment [Schne96, Schne98, Schne87, SchEb98]. Maintenance is a hard problem because of the following reasons: a) The processes that created the product cannot be traced. b) Changes are not adequately documented. c) Changes produce ripple effects. d) There is a generally short sighted view that maintenance is strictly a post-delivery activity and programs have not been designed and developed with maintenance in mind. In cases where an existing software system has undergone extensive upgrades (lots of changes), maintenance becomes difficult and costly. Over time, legacy software can become technically obsolete and must be replaced. Software maintenance is the process of modifying existing operational software while leaving its primary functions intact. The definition includes the following types of activity within the category of software maintenance [Boe88]. 1. Redesign and re-development of smaller portions (less than 50% new code) of an existing software product. 2. Design and development of smaller interfacing software packages that require some redesign (of less than 20%) of the existing software product. 3. Modification of the software product’s code, documentation, or database structure. 4. Software maintenance [Pari88, PicC93, PaZve83, Mayr94] is classified into two main categories: a) Software Update, which results in a changed functional specification for the software product, b) Software Repair, which leaves the functional specification intact. In turn, software repair can be classified into three main sub-categories [LS80]: 1) Corrective maintenance (of processing, performance, or implementation failures), 2) Adaptive maintenance (to changes in the processing or data environment), 3) Perfective maintenance (for enhancing performance or maintainability). 2. Metrics and Models in Software Maintenance A number of models to depict the maintenance process, evolution of software products, metrics to depict the maintenance cost, effort and release of products in maintenance phase have been proposed [Pigo97, Aji95, BK97]. Boehm proposes the COCOMO model and extends it for software maintenance effort estimation. Visaggio [Visa94] proposes a metric for expressing the entropy of a software system and for expressing the entropy of a software system and for assessing the quality of its organization from the perspective of impact analysis. This metric called “structures information” is based on a model dependency descriptor and takes into account both the structure of the components at all levels of abstraction and the structure derived from the links between the different levels of abstraction [CDM, Proc89, EGK01, Soft]. Conventionally, maintainability has been regarded as a property or attribute of the software product rather than the process. [Snee95, YChan88, RUV92] The underlying assumption is that the difficulty in maintaining a system correlates with its complexity. [PooL92, Schne87, Nies97, Schne96] This has stimulated various metrics to assess complexity. Some address code-level complexity (example McCabe; Halstead) while others suggest design level metrics, such as module fan-in and fan-out. Wake and Henry [WH88] advocate that towering the complexity of systems and sub-systems would ultimately help in reducing the maintenance costs of the sub-systems. They developed a model that uses several software quality metrics as parameters to predict the maintenance activity. Yau et al [YNTL88] propose a systems approach to model the maintenance process and software. They also suggest empirical approaches to quantify maintainability. Schneidewind [Schne96] proposes a unified approach to consider the efficiency of the test effort that is a part of the maintenance process and a determinate of reliability and risk of deployment in analyzing the stability of the maintenance process. He defines long-term relationships and metrics that are computed over a sequence of releases: • Mean time to failure (MTTF), • Total failures normalized by KLOC change to the code, • Total Maintenance Test Time normalized by KLOC change to the code, • Remaining failures normalized by KLOC change to the code, • Time to next Failure, • Remaining Failures Risk metric, • Time to Next Failure Risk metric, • and short-term relationships and metrics are computed within a given release: • Total Maintenance Test Time vs. Number of Remaining Failures, • Failure Rate vs. Total Test time. Lehman and Belady [LehB87] considered program evolution dynamics. They classified programs into three classes, S, P, and E, and associate different lifecycle models for each class of programs. Niessink and Vliet [Nies97] predict maintenance effort with function points and conclude that size of the component to be changed has a larger impact than the size of the change itself. Gamalel-Din and Osterweil [Gama88] suggest a new lifecycle model that accounts for process maintenance, dynamic maintenance, process execution history and product-related maintenance. They also suggest empirical approaches to quantify maintainability. A model for measuring software modifiability was proposed by Yau and Chang [YChan88] where the modifiability of a module (or program) is interpreted as the ease of effort to make changes to the module (or program). Chapin [Chap88] was among the first to suggest a lifecycle for software maintenance that consists of the following steps: Understand existing system, define the objectives, analyze, specify, design, program, code and compile, debug and test, revalidate, train, and, convert and release. He concludes on the strong note that software development lifecycle (SDLC) should not be used for maintenance activities. A different lifecycle called software maintenance lifecycle (SMLC) that reflects the complex set of activities of the maintenance phase should be modeled and estimates of the effort, cost and time be made based on it. In this paper, a software maintenance lifecycle (SMLC) is proposed based on re-entrant lines that depict the complex set of activities associated with maintenance. Quantitative metrics such as release time of versions, cost, time and effort for maintenance are estimated. These values form the basis of a DSS that helps decide the next course of action for a legacy system management. 3. Legacy systems and SMLC models Legacy information systems (LIS) that comprise a majority of the software products in operation today evolve over a long period of time from research prototypes and earlier versions [BLW99]. Each successive release involves substantial additions or changes in functionality from previous releases. Some of the characteristics of legacy systems are as follows: a) Growth and non-homogeneity: These are products with functional growth over a long period of time consisting of components that are quite different functionally, with each component displaying different characteristics. b) Size: The product has a large number of modules, with each module containing functions, procedures, and a large amount of code that have been modified by different people in different releases. c) Compiler change: The compiler used for earlier versions is changed and code that was optimal for an earlier compiler could be sub-optimal