Effectiveness of Scrum and Kanban on Agile-Based Software Maintenance Projects

Effectiveness of Scrum and Kanban on Agile-Based Software Maintenance Projects

Shanmuganathan Vasanthapriyan (Sabaragamuwa University of Sri Lanka, Sri Lanka) and Kalpani Madushika Udawela Arachchi (Sabaragamuwa University of Sri Lanka, Sri Lanka)
Copyright: © 2020 |Pages: 19
DOI: 10.4018/978-1-7998-2531-9.ch013

Abstract

Software maintenance is an important phase in the lifespan of a software system. This chapter examines the effectiveness of Scrum and Kanban methods in terms of their impacts on project management factors for a software maintenance project. The six-point star model defines project management factors like schedule, scope, budget, risk, resources, quality, and study, and uses two other non-quantitative techniques such as team commitment and work organization. A quantitative survey was carried out together with the questionnaire distributed to IT industry professionals in Sri Lanka. Each question in the questionnaire was related to one of the above factors. The Pearson correlation coefficient was used to find the correlation between the coefficients. A strong correlation was identified. Based on the results of multiple linear regression modeling, a model has been proposed. Scrum-based software maintenance projects can improve project quality by managing work organization and resources whereas Kanban-based can improve project quality by controlling the risk and scope of the project.
Chapter Preview
Top

Introduction

Software Maintenance

Software maintenance is a very important phase in the lifespan of a software system. As a result of maintenance, the software system fully or partially deviates from its original state and evolved into a new system (Lei, Ganjeizadeh, Jayachandran, & Ozcan, 2017). According to IEEE, software maintenance can be defined as the modification of a software system or its components, after its delivery to correct its faults, adapting to a changing environment or improving its performance (Larman & Basili, 2003). The software maintenance process plays a vital role in an organization because it consumes a considerable amount of overall lifecycle costs. Failure to change the software quickly and reliably according to the organization’s requirements leads to loss of business opportunities (Ågerfalk, Fitzgerald, & In, 2006).

Mostly software maintenance is carried out by a heavyweight method or even without any particular method. Several maintenance models, such as Boehm, quick-fix, Osborne, full reuse, iterative-enhancement and the ISO/IEC 14764 and IEEE-1219 IEEE standards for maintenance have been proposed. Those existing models generate challenges because they are largely based on the Waterfall model. It is difficult to handle problems properly due to their limitations such as team morale, lack of communication among stakeholders, unstructured code, and frequent prioritization of customer requests and poor visibility of the project flow. Agile methodologies were able to handle limitations by providing continuous testing, customer collaboration, incremental development and refactoring (Dyba, 2000).

Agile Methods

Anterior software development methods have been used to capture approaches to define and gather project requirements, investigate problems, and systematically implement problem solutions (Lei et al., 2017). Although most companies consider iterative and incremental methods as modern developmental practices, their application dates back to the mid-1950s (Larman & Basili, 2003), when other methods were sequential and linear and called “waterfall models” (Lei et al, 2017). In 2001, problems in the waterfall model were identified and the agile methodology introduced (Lei et al., 2017). Agile development methods are a set of software development practices defined by experienced practitioners (Ågerfalk et al., 2006). These agile development practices responded to traditional or plan-driven approaches that focus on “an engineering-based, rationalized approach” (Dyba, 2000; Nerur, Mahapatra & Mangalaraj, 2005).

Agile methods have some common features: iterative development process, adaptation to change, less documentation, customer interaction, focus on delivery, frequent testing, communication and collaboration among team members, motivation enhancement, high quality codes, knowledge transfer through openness and high quality products with customer (Ahmad, Kuvaja, Oivo, & Markkula, 2016; Devulapally, 2015; Rehman, Maqbool, Riaz, Qamar, & Abbas, 2018). Agile software engineering practices include simple design, small releases, pair programming, test-driven development, daily stand-up meetings, task boards, product backlog, user stories, and on-site customers. Agile practitioners have recognized benefits that include cost reduction, quality improvement, flexibility of development teams, increased productivity, and customer satisfaction and reduced time to market. These benefits are achieved in the software development phase and it needs to be examined whether these benefits are taken into account in the software maintenance phase (Devulapally, 2015; Heeager & Rose, 2015).

Key Terms in this Chapter

Software Engineering: The application of engineering to the development of software in a systematic method.

Scrum: An agile process framework for managing knowledge work, with an emphasis on software development.

Agile Software Methodology: An evolutionary and iterative approach to software development with focuses on adaptation to changes.

Kanban: An agile process framework with a flow control mechanism used for just-in-time pull driven production where the upstream processing activities are started by the downstream process request signals.

Product Backlog: An ordered list of everything that is known to be needed in the product.

Software Maintenance: Software activities for the modification of a software system or its components, after its delivery to correct its faults, adapting to a changing environment or improving its performance.

Complete Chapter List

Search this Book:
Reset