In the past few years, agile software development methodologies have emerged as an attractive trend and the majority of software development firms have adopted this trend for the reason that the basic goal of agile software development methodology is to let a firm become agile. In this scenario, the term “agile” is used to demonstrate various meanings such as “deliver the product rapidly, change quickly, and change often. In view of the fact that there are so many software development methodologies (such as XP, Scrum and many more) which come under the umbrella of agile methodology and they differ in emphasis and practices, however they all follow the same principles come under agile agenda. In this scenario, many researchers present the common description of the agile manifesto. According to researchers such as (Lucia and Qusef; Paetsch, Eberlein and Maurer; Kavitha and Thomas) agile methodology its family members are based on the following principles (Lucia & Qusef, 2010; Paetsch et al., 2003; Kavitha & Thomas, 2011):
- Working software is delivered quickly and regularly (in days instead of weeks and in weeks instead of months)
- Working software demonstrates the progress of the project
- Ensuring customer satisfaction by quick and constant release of practical software
- Even late changes in requirements are accommodated without having serious impacts
- These methodologies support collaboration and close daily cooperation between business people and developers
- Face-to-face and daily meetings are the best way of communication
- Software projects are developed around motivated team members, who should be trusted
- Constant focus on technical quality and good design.
- Ease and simplicity
- Self-organizing teams
- Regular adaptation to varying situations
Without a doubt, agile software development methodologies have been developed to deal with the issues of delivering high quality software promptly under quickly and continuously changing business environment and requirements. In fact, agile software development methodologies have an excellent reputation in the IT and software sector. The research has shown than more than 69% of IT firms are adapting one or more agile methodologies for use in common project management as well as organizational development (Lucia and Qusef).
Previous researches that have been conducted to determine positive and negative impacts of agile software development methodologies are mainly based on unreliable and subjective verification instead of logical and experimental assessment. However, at the present, there exists a large amount of facts and proofs on agile software development methodologies in various forms such as case studies, experiments and experience reports carried out on a wide variety of aspects of agile approaches taking into consideration different software development scenarios. In addition, a number of survey studies have been carried out by different researchers which present a broader and general idea on the position of agile approaches in various software development firms. In this scenario, the results of the Forrester survey revealed that whereas to the extent that more than 14% of European enterprises and North American are presently making use of agile approaches, on the other hand more than 19% are either planning or interested to adopt them in the coming years. In the same way, the research shows that small state-of-the-art product organizations are the early adopters and promoters of agile software development methodologies (Salo and Abrahamsson).
In this scenario, the majority of these companies running their business for ‘in-house team creating software products for quick-to-market applications’. For instance, in the beginning Extreme Programming (XP) was in actual fact intended to target in particular at small co-located teams creating noncritical products. On the other hand, at present, there are facts accessible which show that the acceptance of agile approaches increases with organization size. In the past few years, a large number of researches have been conducted to determine the latest trends with respect to the adoption of agile approaches in dispersed and huge environments. In the meantime, the trend of agile approaches has further moved from small state-of-the-art product organizations to further than the high-tech industry, for instance, to the telecom and insurance firms. In the same way, a number of researches discuss the agile software development methodologies in the scenario of embedded software development. It is to a certain extent exceptional, though, that an existing agile approach has been implemented by itself (Salo and Abrahamsson).
In some cases, the results of various researches point out the acceptance of specific agile approaches or specific elements of agile software development to balance the running practices of a firm. On the other hand, in some scenarios, a commonly used agile approach is used in embedded software development projects, as well as up till now frequently completely customized to comply with the complicated environment of embedded software development in which the synchronized development of hardware comes into view to control the software development lifecycle. In this scenario, it is believed that embedded software development shares a wide variety of features of the agile software development approach for instance the concept of iterativeness by prerequisite and a test-driven approach. In the past few years, there have emerged a wide variety of agile techniques which encompass several specific approaches such as test-driven development (TDD) and procedures such as pair-programming of software development. However, two most well-known and widely adopted agile techniques are Scrum and XP. In this scenario, Scrum is an agile methodology that is used by a large number of software development firms for the management of software development projects at the same time as increasing the chances of success of software development and developed products; on the other hand XP (Extreme Programming) pays more and more attention to the project level processes of software development. However, both these agile methodologies, exemplify the key concepts of agile software development (Salo and Abrahamsson).
In spite of the increasing acceptance and adoption of agile software development methodologies all over the world and the increasing number of software development firms reporting moving towards agile, Forrester report raised an important concern that is about ‘as understanding and knowledge of agile approaches increases, so what does it really mean to be agile’. In the same way, another survey conducted by Reifer defined agile software development approach as a ‘well-developed outline of options and invariants on user perceptions’. However, these surveys take into consideration particularly the adoption and implementation of two well-known and well-documented agile approaches as well as their unique characteristics, namely, Scrum and XP (Salo and Abrahamsson).
Benefits and Limitations
Various authors such as (Helmy, Kamel and Hegazy; Sharma, Sarkar and Gupta; Sunaina) discuss the benefits and limitations of agile (Scrum). This development approach allows the customer to become part of software development. In this scenario, they can see what is going to be built. Most of the benefits offered by the agile (Scrum) have been discussed above. However, there are a number of limitations of these methods such as, these approaches do not follow a formal requirements engineering process. There is no documentation involved in these development approaches. In addition, these techniques force a customer to stay with the development team all the way through the software development process. In addition, these approaches do not take into consideration non-functional requirements of the system (Helmy, Kamel and Hegazy; Sharma, Sarkar and Gupta; Sunaina).
Combining with other Approaches
Up until now, a large number of large software development firms dealing with complex and long-standing information technology (IT) projects have made considerable improvements to their software development processes by moving towards the well-organized development approaches, which made possible for them to have adequate control over their software development process and eventually allowed them to launch maturity control mechanisms for instance capability maturity model integration (CMMI). The research has shown that the agile development approaches based on the Agile Manifesto, for instance Scrum, have caught more and more attention of a large number of software development firms by being productively adopted to enhance the processes of software development firms, despite the fact that principally the smaller ones. In this scenario, the well-managed and organized practices of mature software development firms offer well-predictable results in business conditions and established setting, on the other hand the adoption of agile software development methodologies offers main business value cheaper and faster with the purpose of dealing with quickly changing requirements. However, up till now it has been a challenge for software development firms to productively mix an agile approach to process and the mature approach to the firm and in an attempt to attain the advantages from both of them and reduce the problem and expenditures of the organizational culture change. On the other hand, if both these practices are combined successfully, the agile methodologies in mature environments will surely minimize time and expenditures required to market developed products (Lukasiewicz and Miler).
In the same way, incorporating the feature of maturity into the agile approach will help software development firm improve quality of their products, increase the appropriateness and process manageability of agile approach for more complex and larger software development projects. In this scenario, the most effective solution to this problem is the implementation of a model that can help an organization efficiently merge agile and disciplined procedures into a logical framework basically appropriate in different software development firms. In addition, in order to get the effective implementation, the reasonable way out should be designed by keeping in mind frequently used and existing disciplined and agile practices, be appropriate by both agile and mature software development firms, have need of minimum external consultancy and be self-explanatory. Additionally, the planned solution should be familiar with and protect effectively working tasks and pay attention to potential improvements (Lukasiewicz and Miler).
The research has shown that many software development firms have started using the mixture of agile practices and other software development approaches and this combination has proved to be beneficial. For instance, in their paper (Lukasiewicz and Miler) discuss a mixture of two practices which was used by two software development firms. In this scenario, they combined Scrum practices with CMMI. The analysis proved this experiment beneficial in view of the fact that, more than 72% of the recommended procedures were believed to be previously or potentially advantageous. In this scenario, only less than 3.5% of the recommended procedures were discarded by the software development firms. On the other hand, approximately 24.5% of recommended practices were acknowledged as not appropriate or feasible for software development firms due to some financial reasons. In fact, the authors believe that their solution can be helpful to software development firms in supporting them with different levels of agility and maturity (Lukasiewicz and Miler).
Comparison with Other Approaches
In their paper (Dyba and Dingsoyr) present a detailed comparison of the agile software development approach and traditional software development. Their research shows that both agile and traditional development methodologies use different project management approaches.
A large number of researches have shown that agile software development methodologies allow software development firms to effectively deal with changes. In fact they make obvious business value more competently than traditional software development methodologies. (Dyba and Dingsoyr) also suggest that agile software development practices can be combined with traditional software development approaches to gain benefits of both approaches, for instance the stage-gate project management model that is based on similar idea. However, the implementation of this idea is very challenging because of the fact that team members are less identical in agile teams, which can have serious impact on software development and project management.
Though, existing researches do not present a comparison of Scrum with traditional software development approaches. However, some of the comparative studies have shown that using XP improves efficiency with respect to lines of code per hour. In addition, these researches had not adopted a suitable recruitment approach to make certain an impartial comparison. In fact, the majority of non-comparative researches show that the subjects themselves accept as true agile software development methodologies increase efficiency (Dyba and Dingsoyr).
According to (Rising and Janoff), Scrum is not based on new and latest elements. In fact, it is a time-boxed and incremental approach to software development with an additional feature such as the regular meetings where the three questions are asked. In this scenario, spiral model presented by Barry Boehm undoubtedly deals with the part of risk in software development. (Rising and Janoff) further compares the Scrum approach with spiral software process model by saying that the fundamental concepts used by the spiral software development process model are exactly the same as those in Scrum. However, its iteration normally completes in one to four weeks as well as a complete project simply some months. In addition, during that short period, the initial client can go away and a new one can arrive at his place with new requirements and constraints. In fact, the technology required for the completion of a specific software product can also change out from under the team. That is why, Scrum is mainly useful for completion of those projects where a customer is not capable of defining their requirements effectively and completely and confused circumstances are expected all the way through the software development process (Rising and Janoff).
In their paper, (Moe, Dingsoyr and Dyba) present some recommendations which they collected from findings and discussions with software development firms. These recommendations can be adopted to improve the software development capabilities:
Manage cross training. The research has shown that with minimum or no redundancy the firm turns out to be very weak to change. In this scenario, job rotation and pair programming are ways that allows software development firms to deal with this vulnerability by increasing the team’s flexibility. In addition, a software development firm must arrange training for their staff members though it is expensive but any other solution can be even more costly (Moe, Dingsoyr and Dyba).
Co-locate the project team at the same place. Without a doubt, if project team members are located at the same place it will allow them to talk about the activities and actions they are carrying out as well as ask questions about issues more regularly than if the team members are located at different places. In some cases project team members do not like discussions while they are working will start talking after a short time if they are located at the same place. On the other hand, a project manager must sustain equilibrium between team level and individual level independence by facilitating team members to work uninterrupted when needed (Moe, Dingsoyr and Dyba).
Appreciate generalists: When recruiting, an organization must pick those people who have the potential of building and improving redundant skills. In this scenario, a software development firm must establish an effective and friendly environment as well as offer incentives to value both staff members and experts to promote redundancy into the software development firm (Moe, Dingsoyr and Dyba).
Build trust and commitment: Trust is a most important aspect which plays significant role all the way through the software development lifecycle. However, in an attempt to develop trust in the entire software development firm, top management should stay away from any direction that would damage spontaneity and creativity. In this scenario, the need for data gathering and processing should be supported by the project teams’ need in support of incessant learning, instead of the need to increase control of the firm or management. In addition, project team members should be well aware of any symbol of “impression management”. In view of the fact that when team members collaborate and cooperate with each others to attain a common goal, commitment and trust follow. Hence, software development firm should ensure that the common goal is recognized and appreciated in both inside the firm and within the project team (Moe, Dingsoyr and Dyba).
Assign people to one project at a time. A software development firm should assign people to one project at a time because it will let them pay attention to only one project at a time. In fact, the majority of large size software development firms follows this practice. In addition, the resources required by the software development teams should be synchronized, and top management, instead of team-members, must make a decision when other support requests or projects should acquire resources. Moreover, when the team-members wind up deciding which project they should choose to work on, they will accept the one irritating the most. However, it will have a negative impact on the capabilities of the self-managed team (Moe, Dingsoyr and Dyba).
In conclusion, agile software development has become an attractive trend. Agile is a family of a wide variety of software development approaches, and all these approaches are aimed at meeting common objectives defined by agile manifesto. Though, the names of these approaches differ but the purpose they serve is common among all. The basic purpose is to accommodate changes all the way through the software development and allow the customer to take active part throughout software development. This paper has presented an analysis of agile software development approaches with a particular focus on Scrum. This paper has discussed various aspects associated with the approach. In the future the adoption of this technique will further grow.
- Dyba, Tore and Torgeir Dingsoyr. “What Do We Know about Agile Software Development?” IEEE Software (2009): pp. 6-9.
- Helmy, Waleed, Amr Kamel and Osman Hegazy. “Requirements Engineering Methodology in Agile Environment.” IJCSI International Journal of Computer Science Issues 9.5 (2012): 293-300.
- Kavitha, C. R. and Sunitha Mary Thomas. “Requirement Gathering for small Projects using Agile Methods.” IJCA Special Issue on “Computational Science – New Dimensions & Perspectives” (NCCSE). 2011. 122-128.
- Lucia, Andrea De and Abdallah Qusef. “Requirements Engineering in Agile Software Development.” Journal of Emerging Technologies in Web Intelligence, Volume 2 Issue 3 (2010): 212-220.
- Lukasiewicz, K. and J. Miler. “Improving agility and discipline of software development with the Scrum and CMMI.” The Institution of Engineering and Technology Software, Volume 6 Issue 5 (2012): 416-422.
- Moe, Nils Brede, Torgeir Dingsoyr and Tore Dyba. “Overcoming Barriers to Self-Management in Software Teams.” IEEE Software, Volume 26 Issue 6 (2009): 20-26.
- Paetsch, Frauke, Armin Eberlein and Frank Maurer. “Requirements Engineering and Agile Software Development.” Proceedings of the Twelfth IEEE International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises (WETICE’03). IEEE, 2003. 1-6.
- Rising, Linda and Norman S. Janoff. “The Scrum Software Development Process for Small Teams.” IEEE Sotware (2000): 26-32.
- Salo, O. and P. Abrahamsson. “Agile methods in European embedded software development organisations: a survey on the actual use and usefulness of Extreme Programming and Scrum.” The Institution of Engineering and Technology Software, Volume 2 Issue 1 (2008): 58-64.
- Sharma, Sheetal, Darothi Sarkar and Divya Gupta. “Agile Processes and Methodologies: A Conceptual Study.” International Journal on Computer Science and Engineering (IJCSE), Volume 4 Issue 5 (2012): 892-898.
- Sunaina. “Analysis of User Requirements Gathering Practices in Agile and Non-Agile Software Development Teams.” International Journal of Advanced Research inInternational Journal of Advanced Research in Computer Science and Software Engineering, Volume 2 Issue 9 (2012): 461-465.