Literature Review: Agile Software Development
The agile methodologies are based on iterative and incremental development strategies, and goes back five decades ago when the project management researchers based the development strategies on separated design, implementation, execution and eventual testing. De Lemos et al. (2013) has carried an extensive research into agile development approaches which have bene characterized by generations upon generations of systems changes to data gathering, designing and code adaptations. There are immediate check points throughout the process of developing these systems, ensuring that the entire system is broken down into smaller units which focus on specific goals, totaling to project goals and development of prototypes (De Lemos et al., 2013; Hoda, Noble & Marshall, 2012). The evolution of the agile methodologies and concepts has created a movement in project management, architecture, soft systems design, support congruence, socio technical systems and transitional organization disciplines. The evolution has resulted in extensive application of agile concepts and methodologies creating larger rooms for autonomy, independence, adaptive understanding and decision-making discretion over the last five decades.
Sharme, Sarkar & Gupta (2012) hypothesizes that in system development process, the two main considerations ought to be emphasis on the quality and the process of development itself. Being an iterative and incremental in nature, the agile software development process helps the process to be adaptive to the needs of the customer while taking dynamic planning, time boxing scheduling and iterative development. As Rajagopalan & Mathew (2016) conceptually explains, the development process adopts the systematic development processes such as requirement gathering, adaptive design, execution and coding while at the same time delivering the partially implemented system to the customer for incremental feedback. The customer satisfaction ranks top on the list of the priorities, with emphasis on adaptive and faster systemic development.
The agile methods are used differently based on the customer needs, demands and the dynamic project goals. Hoda, Noble & Marshall (2012) postulates that some of the approaches are best suited for practices while other are purely applied in management aspects. However, in all the cases, the agile processes promises less planning and more focus on the tasks at hand by ensuring that the software development team is able to focus on the demands and needs of the customers. Being iterative in nature, the main objective of agile approaches to software development is to ensure satisfaction of the customer, as each customer requirement has numerous iterations (Rajagopalan & Mathew, 2016). Wright (2013) predicates that the agile software development processes are based on the modularity – a project is decomposed into modules, with each focusing on an independent objective, with each module being time-boxed. Modularity boosts parsimony as each of the units have its own risk mitigation strategies, and these strategies are adaptive in nature allowing for the system development process to adapt to the new risks and make adjustments to the process in real time (Sharma, Sarkar & Gupta, 2012; Rajagopalan & Mathew, 2016). Being incremental in nature, the agile methodology allows for a software project to be incremental, with each increment being independent such that all the increments are ultimately integrated into system. Wright (2013) further explains that an agile software development process also needs to collaborative in nature to foster timely communication between the different software teams and other stakeholders. By being people-oriented, the agile processes are able to prioritize the customer satisfaction, performance and productivity over processes and technology.
Agile software development comprises of many methodologies such as Crystal, Scrum, Extreme Programming (or XP), Feature-Driven Development (FDD), Dynamic Systems Development Method (DSDM), and Lean Development. From the research study by Abrahamsson et al. (2017), each methodology has unique feature and way of operation, but all of them work in tune with the core values and vision of the Agile Manifesto. All Agile development methodologies use continuous feedback and iteration to deliver and refine software systems. In addition to that, they involve continuous integration, planning, testing, and other forms of continuous development and upgrade of both the software and projects in which it is used. They are also lighter than the traditional processes that use waterfall development, and inherently adaptable to the project at hand. It is also worth noting that all agile methods lay emphasis on empowering people (technologists and users) to collaborate, join forces and arrive at decisions effectively and quickly ( Kruchten, 2013; Stoica, Mircea & Ghilic-Micu (2013).
. According to Al-Zewairi et al. (2017), Extreme Programming (XP) is considered the most well-documented and popular agile method. They argue that the XP method was first proposed as the last attempt at rescuing a project that had already failed. Al-Zewwairi et al. (2017) further explains that the XP method uses simplicity to drive the software development processes including the communications held with customers. It gives the first priority to the business results, and adopts the incremental “get-it-started” strategy in creating a product using regular tests and revisions. The following are some of the advantages of XP methodology according to the literature by Al-Zewwairi et al. (2017):
* One of the benefits of using the XP method is that it helps software developers cut out unproductive activities which allow them to save on costs and time. It also guides developers through the coding process.
* Using the XP method is also advantageous because it cuts out the risks associated with project failures and programming. It primarily ensures that customers get exactly what they order.
* Simplicity is another benefit of using the XP method. Software designers who use this method make simple codes that are fixable any time.
* Projects designed using the XP method are visible and easily accountable, allowing software developers to get committed to their projects and demonstrate the entire process.
* Given its simplicity, the XP method also helps developers create working software faster. The speed resonates with the fact that regular testing at the start of the development stage helps the detection of all hitches in the software.
Al-Zewwairi et al. (2017) adds that XP comes with some advantages:
* Some studies have revealed that the XP method lays much emphasis on the coding of the development process and not the design itself. Such a situation spells a problem because a good design is a crucial feature of software applications. Not only does it foster software marketing, but also improves documentation of defects.
* Although XP focuses on coding, it fails to measure the quality assurance of the generated codes.
* The XP is geographic-specific, so it does not suit the programmers who are in different locations
Stoica, Mircea & Ghilic-Micu (2013) describes the Scrum as a control and management process designed to develop and sustain high-standard products for creating software and applications suitable for specific needs of the business, empirically and incrementally. They argue that Scrum is the widely used agile development method. Although it is considered a lightweight and easy-to-understand software development method, Scrum is not easy to master. Antra (2016) added that Scrum Agile methodology is used to develop software in small-scale, consistent installments using regular collaboration between cross-functional, self-organizing departments. The following are some of the benefits and drawbacks of using the Scrum Agile methodology for software development.
The Feature-Driven Development (FDD) is an incremental and iterative agile methodology that develops software by dividing it into small features (mini-models) that can also create other models separately (Abrahamsson et al., 2017; Pathk & Saha, 2013). . The process of developing each feature (mini-model) comprises of five procedures – developing a general model, building the list of features, planning for each feature, designing for the features, and building by the features. According to Kruchten (2013), following are some of the benefits and drawbacks of using the FDD.
* It helps in moving larger-scale projects and obtaining success on each attempt
* The five steps of FDD lessen the workload and time required to develop a software
* This FDD model is designed using a set of standards that help software developers to use the best practices.
Kruchten (2013) also lists some of the disadvantages of FDD Methodology:
* The FDD methodology does not suit smaller projects, meaning that it is not the best fit for individual software developers.
* Since using the FDD methodology requires high dependence on the lead developer, it forces the users to act as mentors, coordinators, or lead designers.
* The client who use this methodology do not get written documentation, so they cannot get any proof of ownership
The Lean Development Methodology focusses on the development of easy-to-change software (Sharma, Sarkar & Gupta, 2012). The methodology is considered most strategically focused agile, and primarily focuses on using little time (one-third of the time required to create a software), limited budget, and the least amount of workflow, in developing software. According to studies by Stoica, Mircea & Ghilic-Micu (2013), the advantages of Lean Development concept are:
* It eliminates the project’s overall efficiency to speed up the entire process of software development; move...