Best Practices in Software Maintenance Projects

Best Practices in Software Maintenance Projects

Sanjay Mohapatra
Copyright: © 2013 |Pages: 16
DOI: 10.4018/jitbag.2013010102
(Individual Articles)
No Current Special Offers


Maintenance of software projects is an important phase in software engineering. However, there are many challenges associated during this maintenance phase, including technical and managerial. In order to reduce the cost of maintaining software project, many such projects are being outsourced to low cost development countries like India, Philippines, Russia or China. This paper talks about decision parameters for outsourcing maintenance projects. However, outsourced maintenance projects have their own issues and challenges such as poor domain knowledge, lack of understanding of application & technological knowledge and managerial issues such as lack of motivation, attrition. To find solution to these issues, the research conducted study in CMM level 5 organizations and based on case studies, developed an approach for addressing these issues and challenges successfully. The best practices so identified (such as training the trainer, process oriented systematic approach, developing a test strategy and involving end users during execution) can be adopted in other organizations as well. It was observed that the best practices improved productivity while reducing defects in the deliverables.
Article Preview


An organisation’s functional strategy and outsourcing strategy need to be fully aligned to the overall business strategy. Both the functional strategy and corporate sourcing strategy will be used to drive an aligned and effective functional outsourcing outcome. The functional sourcing strategy will be implemented through lifecycle planning and detailed phase-by-phase activity planning - this will be carried out on a cross functional basis if appropriate. Traditionally, the motivation for outsourcing was to cut costs. However, today the decision is influenced by more strategic factors. To be competitive, organisations need to drive innovation, enable growth and increase flexibility. Outsourcing activities can help organisations become more flexible and adaptive and react faster to changing markets. Before considering outsourcing options, an organization needs to ensure such a strategy aligns with the overarching business strategy. For example, organisations with an aggressive growth strategy may need a flexible sourcing option that can scale as the business grows. Those companies that do not carefully test alignment may find themselves incurring new costs, frustrating customers and losing market share. Sourcing decisions are often made tactically and in isolation from long-term business strategy. Organisations should establish a sourcing strategy as an element of wider business strategy. This provides a frame against which tactical sourcing decisions can be made.

Outsourced software maintenance is the last phase in the software life cycle process. Software maintenance in software engineering is defined as the modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment (ISO14764). The IEEE/EIA 12207 standard for software life cycle processes describes the software maintenance as the process of a software product undergoing modification to code and associated documentation due to a problem or the need for improvement. The objective is to modify the existing software product while preserving its integrity.

Software maintenance or sustenance, maintains or sustains the software product throughout its operational cycle. Modification requests are logged and tracked throughout. The impact of proposed modification requests is determined, accordingly code and other artefacts are modified, testing is performed, and finally a new point version (sometimes also called as patch) of the software product is released.

A common perception of maintenance release is that it is merely about fixing bugs. However, studies and surveys have shown that the majority of the maintenance effort is used for non-corrective actions (Pigosky, 1997) which are merely about explaining how a particular functionality or a feature works in the software. Further, to add to this perception, most of the times users submit a bug or a problem which are in reality, functionality enhancements to the system. Boehm (1976) states that software maintenance ensures that the present version of the software works as intended while the defects and bgs found in the applications are attended to. Mohapatra (2009), in his book titled “Software Project Management”, defines maintenance as a phase in software life cycle that corrects any fault that has been found while executing the present software. Lientz et al (1980) states that maintenance is the activity that keeps operational computer systems aligned with end user requirements. As per him during maintenance activities data processing activities are not affected at all. Also needs of all other stakeholders are taken care of while maintenance of software is being carried out. Swanson (1976) moves toward a wider view of maintenance in his definition: “Systems maintenance is the activity associated with keeping operational computer systems continuously in tune with the requirements of users, data processing operations, associated clerical functions, and external demands from government and other agencies”.

Complete Article List

Search this Journal:
Open Access Articles: Forthcoming
Volume 10: 2 Issues (2019)
Volume 9: 2 Issues (2018)
Volume 8: 2 Issues (2017)
Volume 7: 2 Issues (2016)
Volume 6: 2 Issues (2015)
Volume 5: 2 Issues (2014)
Volume 4: 2 Issues (2013)
Volume 3: 2 Issues (2012)
Volume 2: 2 Issues (2011)
Volume 1: 4 Issues (2010)
View Complete Journal Contents Listing