Abstract
The business environment in which organizations operate today is always changing, and it is becoming more and more complex. Organizations, both private and public, feel increasing pressures that force them to respond quickly to changing conditions and to be innovative in the way that they operate. Ever since the advent of programming and software development, there has been a great deal of attention directed towards reducing the number of bugs in the shipped software solutions. Considering the fact that software technology has been one of the most rapidly evolving technologies in the history of mankind, it has become impossible to keep developing and implementing quality software without proper planning and execution. Over the years, a number of planning methods and best practices have been developed and documented by programmers to help in the development and testing of software programs. These methods and practices together form frameworks known as software development methodologies. Today, there are several software development methodologies available in the market. The choice of methodology for a particular project depends upon several factors such as the size of the project, requirements of the project, and timelines. All the development approaches have their own merits and demerits. Agile is one such methodology which has evolved rapidly in the last decade due to its focus on adaptability and flexibility. Agile methodology is a people oriented approach towards software planning and development. It allows the requirements to change at frequent intervals and follows an iterative approach towards meeting the users’ requirements. The scope of this paper will be to explore the Agile software development methodology in detail and to illustrate its applicability in the management of group project.
Introduction
Since the system analysis stage of any Information Systems development is required in the process of solving a company’s problems, it is vital to gather the system requirements and business requirements of the existing system and the proposed new system. During the development of software projects, it is often found that requirements change several times during the course of development to accommodate changing business needs. This frequently leads to the creation of software which is different from the actual business requirements and hence results in a lot of iterative work. Traditional software development methods based on sequential development are process-oriented and provide little flexibility to support new or modified requirements once the development is underway. This makes them unsuitable for scenarios where the requirements are not completely finalised at the beginning of the project or where they are prone to frequent changes. In this regard, Agile methodology was introduced to deal with such situations (Cockburn, 2006).
The main advantage of agile methodology is that it ensures the alignment of business needs with the developed software throughout the life cycle through continuous inspection and adaptation, such that necessary changes in regards to system requirements can be made quickly. This in turn reduces the development costs and the effort of rework. The Agile methodology basically breaks down the project requirements into smaller tasks which need to be delivered within small timeframes known as iterations. The entire project consists of several such iterations and does not require long term planning. Each iteration resembles a project in itself and includes planning, requirement analysis, development, testing, bug fixing, and validation. The output of each iteration is a piece of working software which satisfies one or more of the overall requirements and which is testable. Also, reviews and tests are conducted after each iteration to ensure that the development is on track with the requirements. The development through iterations ensures that there is a certain amount of planning and control involved at each stage of developing a software and yet allowing scope for dynamic changes (Fowler, 2005).
Consequently, Agile methodology is a people-oriented approach and hence there is a lot of interaction among the team members as compared to traditional methodologies. Since the project being undertaken in this case is a group project, continuous interactions between the group members is very important to ensure consensus on requirements and non overlapping development. Also, since the project is a business related website, the requirements may change dynamically as the development progresses and the methodology being followed needs to be flexible enough to accommodate changes. Considering the above factors, Agile methodology is considered to be the best possible approach for the current group project.
Therefore, this paper seeks to address the various aspects of Agile methodology along with their advantages and features and why it considered as an important development method in the group project. The various sections covered include the following: Features of Agile Methodology; various types of Agile Methodologies; advantages and disadvantages of Agile methodology; when to use Agile; application of Agile in the Group Project; and conclusion and future works.
Features of Agile Methodology
As mentioned in the previous section, Agile methodology lays less focus on process as compared to many traditional methods. Agile is less document-oriented and does not need the requirements to be finalised and documented before the beginning of the project; project conception can take place with the available requirements Therefore, some of the main features of Agile are as follows:
- Adaptive methods – Since there is a constant monitoring of the development process and outcomes by all the stakeholders, the scope for identifying errors and incorporating new features is much higher. Therefore, agile methods are considered to be highly adaptive in relation to the changing requirements.
- Short and light releases – Since the development is conducted in short iterations, there are several smaller releases or subsets of working software throughout the process. These smaller units of the software constitute a reliable software solution when the development process is complete.
- Periodic meeting and reviews – Agile is characterised by periodic reviews of the code developed at each stage to ensure that the finished product is as close to the actual requirements as possible. This also creates a high level of interaction among different stakeholders to ensure that everyone is on the same page and thus consistency in the software project being developed.
- Timeboxing – A certain amount of time is set aside for each iteration, typically ranging from 2 to 4 weeks. However, this time can be increased or decreased based on the requirements and the problems encountered during development. This ensures delivery success for each iteration in the software process.
- Focus on success – The main focus of Agile is on the successful delivery of working softwares for each iteration and the overall delivery of the finished product rather than sticking to plan. The project plan and iteration plans are often modified dynamically depending on the situation (Ambler, 2002).
Various types of Agile Methodologies
Agile is basically a framework or a philosophy of software development. There are several ways in which this framework can be implemented based upon the project needs. The various common forms of Agile methodology include the following.
Extreme Programming – Also referred to as XP, this method begins with five values namely: communication, feedback, simplicity, courage, and respect and tries to outline them according to a set of fourteen principles and twenty four practices (Beck, 2004). The 5 values are the basic rules which a company or individual following XP is meant to follow. Practices are the actual day to day tasks like designing and coding which are followed by programmers in order to design effective programs. Principles bridge the gap between values and practices and give a concrete set of guidelines for translating values into practices. Some of the commonly followed principles in XP are providing rapid feedback, accepting responsibility, embracing change, and other user centred principles. Extreme programming is also characterised by features like pair programming where 2 programmers program together each keeping an eye on the other’s code (Williams, Kessler, Cunningham, & Jeffries, 2000), test driven development where test cases are written before writing the actual code to ensure all possible points of failure are captured beforehand etc (Fowler, 2005).
Scrum – Scrum is an important agile method that divides the development process into iterations called sprints with each sprint typically lasting for about 4 weeks. This methodology is characterized by daily scrum meetings conducted by a scrum master who closely monitors the progress of the project and ensures that team is able to tackle any distracting influences. Scrum methodology focuses on the project management aspect and ensures fast delivery of quality software to customers and users (Ambler, 2002).
Crystal – Crystal methodology is an adaptation of Agile which is made up of practices, principles and self-awareness. This method focuses on three aspects namely safety in project outcome, efficiency and habitability, and is characterized by Frequent Delivery, Reflective Improvement, and Close Communication (Cockburn, 2006). This is considered to be one of the most adaptive approaches of development. The Crystal method incorporates several constituent methodologies, such as Crystal Clear, Crystal Yellow and many more (Cockburn, 2006). The main benefit of crystal is that it enables software developers to modify the development practices according to their operating environment and thus satisfying the requirements of each project.
Apart from the above mentioned methodologies, there are several other implementations of Agile which have evolved over the years. Many organizations use a combination of two or more of these methods (for example XP with Scrum) to form their own approach towards software development. In essence, any method chosen depends on the way the proposed system will meet the requirements of the business end-users and deliver the optimal benefit.
Advantages and Disadvantages of Agile Methods
Every methodology available in the market has its own advantages and disadvantages and the suitability of a methodology for a particular project depends on several factors, including the type of the project, the time required to complete the project, the available programmers, the number of codes to be generated, and more importantly the users requirements. Some of the main advantages and disadvantages of Agile are outlined below:
Advantages of Agile
- Since there is a constant review and inspection being carried out throughout the process, the finished product is aligned with the current market needs.
- Due to the continuous flow of information between various stakeholders through meetings, reviews and other interactive engagement, there is little scope for guesswork leading to high levels of accuracy.
- Due to shorter iterations and scope for change, the team members learn about the process used to build the product, which in turn helps in formulating best practices during each iteration (Berteig, 2007).
- The Agile process delivers results in the form of a working piece of software after every iteration. This provides an early return on investment for the investing stakeholders as they can use these pieces of software to gain more business, advertise the product features etc.
- Mistakes can be rectified immediately due to which rework effort is less.
Disadvantages of Agile
- It is difficult to manage very large projects or teams using this methodology due to the lack of processes and documentations.
- Unplanned absence of team members can have a huge impact on schedule.
- If the requirements keep changing at very frequent intervals, the project can go off track.
- The planning and execution using Agile methodologies is highly aggressive and it is difficult to sustain the momentum for very long durations.
- Lack of comprehensive documentation can cause problems in the future after the project is built and delivered and the stakeholders go off board.
When to use Agile Methodology
Every project is not suitable for implementing Agile methodologies. There are some of the common scenarios that might be considered suitable for Agile methods. These include:
- If the project does not have a finite or definite set of requirements to begin with or if there are frequent changes anticipated.
- If the time available for development is very less or if the team size is small.
- When there is no separate budget allocated for management and process related activities.
- When frequent deliveries product subsets are needed either for marketing or for verification purposes.
- When customers are highly responsive and it is possible for all the stakeholders to work side by side.
- When team members are either experienced or willing to work in an intense delivery oriented programming environment.
Application of Agile in the Group Project
Choice of Methodology
Agile methodologies will be considered in the group project involving the creation of an E- business website. Since a major portion of the research and requirement gathering for this project will be based on interactions with business users to find out their generic and specific needs, it was important to choose a method which is user centric and focuses on end user experience. Since the project does not have an absolute finite set of requirements to begin with, it is difficult to apply traditional sequential methods like the Structured Systems Development Life Cycle (SDLC). Also, using a customer-centric, test-oriented methodology will help in providing a compelling user experience, faster application development, more flexibility and better control of presentation layer. (Spillers, F, 2006). Considering all these factors, Extreme programming has been chosen as the software development methodology for this project along with certain aspects of Scrum, like daily meetings and reviews.
Justification of Methodology
Some of the main reasons for choosing Extreme Programming for the group project are highlighted below:
- Since this is a group project, it is extremely important for each member to be aware of what the others are doing in order to avoid overlapping or replication of work and thus improving consistency of the project. This being the case, it is important to conduct regular reviews and provide feedback to each other on a daily basis.
- Since the project involves a small group and the focus is on business values, it is important for each member to accept responsibility and take ownership of the assigned tasks. This blends better with the principles of extreme programming as compared to other methods.
- The project provides a good foundation for pair programming. Programming can be done in pairs to ensure requirements are not missed out.
- Since the website is primarily meant for business users, any errors or bugs can have financial implications. Therefore, it is important to test the application for every possible failure scenario. Extreme programming places a lot of focus on aggressive testing as compared to other methods and hence it appears to be the best choice for this project.
Planning
The development and testing schedules and iterations will be planned and tracked in a simple manner as possible. Each of the group members will have certain specific tasks and responsibilities assigned to them like requirement verification, progress tracking, and design and testing, along with their regular tasks. Members will work in pairs as well as a group. Release and iteration planning will be done in advance but with enough scope to modify the plan as and when needed. Progress will be monitored on a weekly basis.
Conclusion and Future Works
Managers and business organizations invest in information technology and systems because such strategies provide real economic value to the business. The decision to implement or sustain an information system presumes that the profits on this investment will be higher than that of other assets. In this light, a proper information system that meets the organizational requirements should be developed following the core activities of system development. Agile methodologies can be extremely advantageous in situations where the needs of users are to be met urgently. However, before embarking on the project is important to plan for unplanned absences and have sufficient buffer time allocated for overruns. Also, the schedule and planning has to be flexible enough to accommodate changes as the work progresses.
This paper and the group project are currently focussed on the Extreme Programming methodology along with a few features of Scrum like daily meetings, so as to have reliable plan for the project. It is also possible to integrate certain features of other methodologies like Crystal with Extreme Programming in order to make commendable effort on the project output in regard to user requirements. The group project will try to explore these areas during the lifecycle of the process and if possible implement some of them in future.
Also, the Extreme Programming methodology was chosen for the project based on the articles and success stories from industry experts. However, not too much of empirical data which confirms the effectiveness of these methods for similar projects was found. This project will also aim to record the data and best practices gathered during the course of the project for future use.
References
Ambler, S. (2002). Agile Modeling: Effective Practices for Extreme Programming and the Unified Process. New York: John Wiley & Sons, Inc.
Berteig, M. (2007). Agile Benefits: Rapid Learning. Web.
Cockburn, A. (2006). Agile Software Development: The Cooperative Game. Boston: Addison-Wesley Professional.
Fowler, M. (2005). The New Methodology. Web.
Spillers, F. (2006). The Importance of User Experience- the Poster, Demystifying Usability. Web.
Williams, L., Kessler, R., Cunningham, W., & Jeffries, R. (2000). Strengthening the case for Pair Programming. IEEE Software.