Where Maintenance Dollars Goes? And How to Save on

Report 5 Downloads 19 Views
Co$t Factor$ in $oftware Maintenance software maintenance costs $oftware maintenance co$t$ $oftware maintenance co$t$ Co$t Factor$ in $oftware Maintenance software maintenance costs software maintenance costs $oftware maintenance co$t$ Co$t Factor$ in $oftware Maintenance software maintenance costs $oftware maintenance co$t$ $oftware maintenance co$t$ Co$t Factor$ in $oftware Maintenance software maintenance costs software Where Maintenance Dollars Goes? And How to Save maintenance costs $oftware maintenance co$t$ Co$t on Maintenance Costs? Factor$ in $oftware Maintenance software maintenance costs $oftware maintenance co$t$ $oftware maintenance co$t$ Co$t Factor$ in $oftware Maintenance software maintenance costs software maintenance costs $oftware maintenance co$t$ Co$t Factor$ in $oftware Maintenance software maintenance costs $oftware maintenance co$t$ $oftware maintenance co$t$ Co$t Factor$ in $oftware Mohamed EL-Muwaqqat, M.S. Maintenance software costs software Sr.maintenance IT-Architect Dr. Kevin M. Adams maintenance costs $oftware maintenance co$t$ Co$t Research Paper SWEN Factor$ in $oftware Maintenance software maintenance costs $oftware maintenance co$t$

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

Abstract Organizations, (small or large), across all industries have enormous investment in their software system. Software system is used to help run manufacturing industry, higher education, finance, health care and government. The fundamental advantage of these software systems is that integrating numerous processes by which businesses operate saves time and cost. During the course of operation, many organizations may find defects in their system as well as things they would like to see added to the system functionalities. In many cases, end-users provide feedback to the operation mangers that tasks the IT department or maintainer to correct or enhance the system. The maintainer makes the approved corrections or enhancement and deploys and documents the changes. Once again, the users begin to learn and use the system. Sometimes, the maintenance phase ends up being the longest process to the entire software development life cycle (SDLC). In many times, the maintenance phase far outweighs the development phase in terms of time and cost. So, “What are factors influencing maintenance costs?” and “How to control maintenance cost in software engineering?” There is no simple answer to this question as the precise distribution of maintenance costs across the software process depends on the maintenance process used, staff experience, and the level of software complexity. In this paper, I will expand the discussion of the issues involved in maintaining software systems that impact maintenance cost. While software requirements change could be the main driver cost, there are several technical and non-technical factors that contribute to the cost of software maintenance.

1|Page

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

Contents Abstract ........................................................................................................................................... 1 Introduction ..................................................................................................................................... 3 Software Maintenance and Cost by Category ................................................................................. 4 Factors Influencing Software Maintenance Costs .......................................................................... 5 Technical Factors: ........................................................................................................................... 5 

Software Complexity....................................................................................................... 5



Staffing ............................................................................................................................ 6



Documentation: ............................................................................................................... 6



Configuration Management: ........................................................................................... 7

Non-Technical Factors: ................................................................................................................... 7 

Staff Stability................................................................................................................... 7



User Needs: ..................................................................................................................... 7



Support Environment: ..................................................................................................... 7



Re-engineering: ............................................................................................................... 8

Maintenance Key Issues: ................................................................................................................ 9 Potential Solutions in Reducing Maintenance Cost ...................................................................... 10 

Improving the process ................................................................................................... 10



Determining Personal Resources .................................................................................. 11

Conclusion .................................................................................................................................... 12 References ..................................................................................................................................... 13

2|Page

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

Introduction Software engineering is an engineering discipline which is concerned with all aspects of the software development life cycle (SDLC). The software development life cycle has many phases. These include (Pigoski, 1997), requirement gathering, system design, implementation, testing/QA, migration and maintenance. The importance of software maintenance during the lifecycle of software system cannot be overestimated. The maintenance tasks are focused on delivering system improvements, fixing software defects, and preventing software problems from happening. The maintenance phase in the SDLC has been widely recognized as the highest cost phase of SDLC with estimated costs of 60% to 80% of the total organizational budget, and the percentage is still rising with the increase in software complexity and service life extension (Pigoski, 1997). Clearly, the task of maintaining software applications is very challenging and potentially costly. Thus for, many organization are looking at their software maintenance as an area for competitive advantage. The primary goals of this paper are: First, to describe the three categories of software maintenance and where the maintenance dollars are being spent. Second, I will explain why software maintenance is expansive. Then, I will point out some the technical and non-technical issues that influence maintenance costs. Finally, I will present potential solutions to help in reducing maintenance cost.

3|Page

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

Software Maintenance and Cost by Category Software maintenance is the process of changing/modifying the software system after it has been delivered. The changes may be simple modifications to correct a software defect, more extensive modifications to correct design errors, or signification enhancements to correct software specification or accommodate new software functionalities. Lientz and Swanson (1981) divide maintenance into three categories: 1. Corrective maintenance is used to repair software faults. Debugging code errors are relatively cheap to correct. On the other hand, software design errors are more expensive as they may involve the re-writing of several software modules. Finally, software requirements errors are the most expensive to repair because of the extensive architectural software re-design which may be necessary. 2. Adaptive maintenance is used as an effort to adapt enhancement to the system by adding new capabilities, features and functions in response to new technology, upgrades and/or new technical challenges. 3. Perfective maintenance refers to all changes that originate from users request.

Figure 1: Distribution of maintenance by categories (Pigoski, 1997, p 32)

4|Page

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

From the above figure we can we can see that software maintenance is expensive because requirements change. The majority of maintenance costs are driven by users due to perfective maintenance. From Lentz and Swanson (1981) survey, we discovered that about 55% of maintenance was concerned with implementing new requirements (perfective), 25% with changing the system to adapt to a new operating environment (adaptive) , and 20% to correct system defects (corrective). It becomes clear where the maintenance dollars are being spent. Repairing system faults is not the most expensive maintenance activity. Rather, maintenance to add to or modify the software’s functionality when the software requirement changes in response to business change consume most maintenance efforts.

Factors Influencing Software Maintenance Costs Now we know where the maintenance costs go based on above categories; yet, there are other factors influencing cost maintenance in software. Technical and non-technical factors play a key role in Influencing Software Maintenance Costs. Technical Factors Software complexity Software complexity affects the overall maintenance effort (Keshavarz, Modiri, & Pedram, 2011). Maintenance expensive is because the cost of resourcing for software maintenance is high (Pigoski, 1997). The more complex a system is, the longer it will take maintainers to analyze and understand the system and the more expensive the maintenance effort will be (Banker, Davis, & Slaughter, 1998). Thus, maintenance cost will increase significantly with the increasing of software complexity. According to Gill and Kemerer (1991), "the program length effect would

5|Page

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

be relatively minor if the changes were localized to a fairly small number of modules. The engineer would therefore only need detailed knowledge of a small fraction of the code. The size of this fraction depends more on how well the code is modularized than the total size of the program. Thus the length of the entire code is less relevant." (Gill & Kermer, 1991, p.1286). Staffing With the right people on the project, software maintenance workload will be reduced. Experience, quality and quantity of the software staff is one of the key factors that influences software cost. For example, developers have a good programming style, as often software easy to read and understand result in reduction in maintenance efforts (Pigoski, 1997). Documentation Document quality for software maintenance support may play a big role in software cost. Software maintainers need well written documentations/descriptions of the software system to help the staff familiar with the system’s functionalities, identify and fix system defects, and enhance the system to meet users’ requirement changes or adapt to changes in the system environment. In the effort of researching the documentation issues Munson (1981) stated that "One of the current problems with post-delivery maintenance of software is the quality of its documentation. Most documentation ranges from nonexistent to out-of-date" (Munson, 1981, p.107). Lack, incomplete or outdated documentations make extending software systems difficult and costly. For organizations to decrease cost on maintenance, they must have clear, complete, and concise documentation to support the software system. Without adequate documentation, maintainers tend to spend longer time on maintenance.

6|Page

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

Configuration Management Configuration management is an essential part of the software development process across all phases of the system development life cycle (SDLS). Configuration management functions as a controlling disciplines and techniques of initiating, evaluating, and tracking changes to software during and after the development process. Effective control of software configuration management technology to maintain software integrity and management of the maintenance tasks can help control maintenance costs (Pigoski, 1997). Non-Technical Factors: Staff stability Maintenance costs are reduced if the same staffs are involved on the same project for some time. For example, if a developer is responsible for maintaining part of a software for a long time, the developer get to know the strong and weak points of the system (Pigoski, 1997). User needs As stated above, the majority of maintenance costs are driven by user needs. Software maintenance is expensive because requirements change by users (Pigoski, 1997). Support Environment According to the Mookerjee (2005), Variety of factors influence high maintenance costs when maintaining integrated software environment. All application in integrated systems are interacting and sharing information between each other. Maintenance of one software application may result in changes to the shared data set. The second factor that plays a significant role when maintaining integrated systems is the level of interaction and number of systems involved. In 7|Page

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

interlinked applications, changes to one application can break the communication among the involved systems, which can result in a considerable amount of maintenance effort. Finally, maintenance cost for an integrated system increases with the number of applications that are integrated. Software maintainers spend lots of their time reading the system code and trying to comprehend its logic. The more systems are involved the more labor-intensive maintenance activity and potentially costly. Re-engineering Re-engineering is the process or restructuring or rewriting part or all of the software system without changing the fundamental functionalities. Software system re-engineering is considered one of the most expensive and radical forms of alteration as it involves putting lots of efforts in to make it easier to maintain. When hardware/software support becomes obsolete, reengineering is often not undertaken to improve maintainability; yet, it is used to replace aging legacy systems. Below, I listed some interesting figures on absolute maintenance cost, based on the studies performed by Seacord, R., Plakosh, D. & Lewis, G. (2003). The study shows the cost for maintain legacy software and managing its evolution now represents more than 90% of its total cost, which is referred to as “Legacy Crises”. Year 2000 1993 1990 1990 1988 1984 1981 1979

Legacy software maintenance costs >90% 75% >90% 60-70% 60-70% 65-75% >50% 67%

Reference Erlikh (2000) Eastwood (1993) Moad (1990) Huff (1990) Port (1988) McKee (1984) Lientz & Swanson (1981) Zelkowitz et al. (1979)

8|Page

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

Table 1: The Legacy Crisis (Seacord et al, 2003)

Maintenance Key Issues

Many journal articles have been written with the goal of clarifying the software maintenance process. Lientz and Swanson (1981) in their article Problems in Application Software explored five sets of issues associated with maintenance. Nosek and Plavia (1990) provide definitions for these issues: 

Conceptual issues – Address the problem of classification of maintenance requests. Is maintenance corrective, adaptive, or perfective?



Scale of Effort issues –Address the issue that deals with the problem of balancing and allocating resources.



Organizational issues – Address defining how maintenance tasks are assigned within the organization.



Productivity aid issues – Address the issue that identifies the need to provide aid for increase user knowledge



Problem area issues – Address the areas that identify impacts on the maintenance (i.e. user knowledge, documentation, product quality).

A decade later, Nosek and Plavia (1990) compared the state of maintenance. The result of the study revealed that maintenance problems had not improved, and there was a slight increase in the problem space. Since these studies, researchers continue to present recommendations to better define system evolution and change, and maintenance activities. The inability to effectively categorize modification requests still appears to pose a distinct problem when it

9|Page

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

comes to analyzing the productivity and effectiveness of the software maintenance process. This deficiency leads to poor management of resources and challenges in managing maintenance budgets.

Potential Solutions in Reducing Maintenance Cost

Over the years, several studies have attempted to tackle the maintenance cost problem with a variety of tools and techniques. In my research on this topic, I have run across many journal articles aiming to reduce software maintenance cost by adapting one of the two approaches, most often, a combination of these is applied: Improving the process To tackle the maintenance cost problem, organizations must make improvements to the development process to design better programs in an effort to reduce maintenance cost; and implement improvements to the maintenance process itself. The International Organization for Standardization (ISO) provides guidance for the maintenance process. The basis for maintenance processes and its activities comes from the definition of ISO/IEC 12207 (2008). It defines the activities and tasks of software maintenance and provides maintenance planning requirements. This process also includes the migration and retirement of the software. While ISO/IEC 12207 describes the process of what activities and tasks to perform while providing guidance to maintenance process, ISO/IEC 14764 (2006) provides guidance on the management of how to perform the Maintenance Process. Furthermore, several best practices for the process optimization of software maintenance activities can be applied, such as Capability Maturity Model Integration (CMMI). CMMI has been widely used to help organizations optimize their development and maintenance process. This process introduced best practices that address 10 | P a g e

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

development and maintenance lifecycle activities from conception through delivery (Chrissis, M., Konrad M., & Shrum, S. 2007). CMMI and many other best practices suggested six common ways to save on maintenance: 

(RE)Documentation



Eliminating orphan code



Eliminating cloned code



Avoiding and eliminating bugs



Focused test activates



And, if possible, reduce complexity as it leads to improved maintainability

Determining Personal Resources There are two popular approaches to estimating resources (Pigoski, 1997, p.103): Use of Parametric Models Methodology for estimating software maintenance personnel resources in my research on this topic, I have run across many journals aiming to reduce software maintenance cost. Some of popular estimating techniques includes FPA (Function Point Analysis, Albrecht & Gaffney, 1983), Softcalc (Sneed, 1995), and EMEE (Early Maintenance Effort Estimation, De Lucia et al., 2002). The most significant work, however, in the area of software estimating is Software Engineering Economics by Dr. Barr W. Boehm (1981). His COCOMO model (derived from Constructive Cost Model) has proposed basis for estimating the effort, schedule and cost of software project. The COCOMO model is an empirical model which was derived by collecting data from large number of software projects, then analyzing that data to discover formulae that were the best solution to the problems observed.

11 | P a g e

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

Use of experience If the parametric model is not used to determine personnel resources, expert judgment and analogical reasoning can be used to complement the output from parametric models in reaching an estimate.

Conclusion

The importance of software maintenance during the life-cycle of software systems cannot be overestimated. The maintenance tasks are focused on delivering system improvements, fixing software defects and preventing software problems from happening. Figure 1 and Table 1 showed the wide range of how much software maintenance can cost. By far, the largest part of any organization’s software budget is maintenance. Until recently it was widely accepted that most of software maintenance expense goes to “fixing bugs.” However, many academic research studies show this to be invalid. Fifty five percent of maintenance was found to be perfective by Lentz and Swanson (1980). Given the enormous cost and efforts involved in maintenance, many organizations are looking at their software maintenance as an area for competitive advantage. Yet, there is no simple way to reduce maintenance cost as the precise distribution of maintenance costs across the software process depends on the maintenance process used, staff experience, and the level of software complexity. In order to achieve the competitive advantage through software maintenance, organizations must assess their processes used, staff experience, and the level of software complexity. Once this is assessed and implemented, a company can achieve the competitive advantage through assessing their software maintenance.

12 | P a g e

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

References Albrecht, A., & Gaffney, J. (1983). Software function, source lines of code, and development effort prediction: a software science validation. IEEE Transactions on Software Engineering, 9(6), p.639-648. Banker, R. D., Davis, G. B., & Slaughter, S. A. (1998). Software development practices, software complexity, and software maintenance performance: a field study. Management Science, p.433. Boehm, B. (1981). COCOMO: Answering the most frequent questions. In Proceedings, First COCOMO Users’ Group Meeting. Tyngsboro, MA: Wang Institute. Chrissis, M., Konrad M., & Shrum, S. (2007): CMMI: Guidelines for Process Integration and Product Improvement (p.235): AddisonWesley. De Lucia, A., Pannella, A., Pompella, E., & Stefanucci, S. (2001). Assessing massive maintenance processes: an empirical study. Proceedings of the IEEE International Conference on Software Maintenance, p.451-458. Fjeldstad, R., & Hamlen, W. (1983). Application program maintenance-report to our respondents. Tutorial on Software Maintenance, p.13-27. Gill, G. K., & Kemerer, C. F. (1991). Cyclomatic complexity density and software maintenance productivity. IEEE Transactions on Software Engineering, vol.12, p.1284-1289. ISO/IEC 12207 (2008) and IEEE 12207 (2008). International standard: Software engineering – Software life cycle processes. New York: International Organization for Standardization and Institute of Electrical and Electronics Engineers. ISO/IEC 14764 (2006) and IEEE 14764 (2006). International standard: Software engineering – Software life cycle processes – Software maintenance. New York: International Organization for Standardization and Institute of Electrical and Electronics Engineers. Keshavarz, G., Modiri, N., & Pedram, M. (2011). Metric for Early Measurement of Software Complexity. International Journal On Computer Science & Engineering, 3(6), p.24822490. Lientz, B.P., & Swanson, E.B. (1981). Problems in application software maintenance. Communications of the ACM, 24 (11), p.763-769. Mookerjee, R. (2005). Maintaining enterprise software application. Communications of the ACM, 48(11), p.75-79. Munson, J. B. (1981). Special feature: software maintainability: a practical concern for life-cycle costs. Computer, 14(11),p.103-109. 13 | P a g e

Where Maintenance Dollars Goes? And How to Save on Maintenance Costs?

Nosek, J.T., & Plavia, P. (1990). Software maintenance management: changes in the last decade. Software Maintenance: Research and Practice, 2(3), p.157-174. Pigoski, Thomas. (1997). Practical Software Maintenance. New York, NY: John Wiley & Sons, Inc. Seacord, R., Plakosh, D. & Lewis, G. (2003). Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices: Addison-Wesley. Sneed, H. (1995). Estimating the costs of software maintenance tasks. Proceedings of the International Conference on Software Maintenance -1995, p.168-181.

14 | P a g e