Agile Development Model
Agile Development Model
The term Agile means ‘moving quickly.’ Agile process itself is a software development process by small teams, in a short time frame, and involving system users as well as developers. This agile process is an iterative approach in which customer satisfaction is at highest priority as the customer has direct involvement in evaluating the software. An Agile approach focuses on adaptability and response time to changing requirements.
The definition for agile software development evolved in the mid 1990s. It helps in adaptive planning, iterative development and time boxing. It is a theoretical framework that promotes foreseen interactions throughout the development cycle.
Agile Model Phases
The agile process follows the software development life cycle which includes requirements gathering, analysis, design, coding, testing and delivers partially implemented software and waits for the customer feedback. In the whole process, customer satisfaction is at highest priority with faster development time. The following diagram depicts the software development life cycle of Agile Process.
The Agile process requires less planning and it divides the tasks into small increments. This process is meant for short term projects with an effort of team work that follows the software development life cycle. Software development life cycle includes the following phases
The involvement of software team management with customers reduces the risks associated with the software. This agile process is an iterative process in which changes can be made according to the customer satisfaction.
The Agile system development life cycle model begins with initial elicitation of requirements in order to conceptualize the system. Once the system concept is formed, requirements are estimated and prioritized in order to plan the development iterations. Within each iteration, requirements continue to evolve and are used in brief model storming sessions in order to design the functionality required to meet requirements allocated to the iteration. When the system model is developed/modified, the coding is initiated/continued using a test-driven approach. Once the functionality for the iteration is tested successfully, refactoring takes place. Refactoring is a disciplined technique for altering the structure of an existing code base without altering functionality. When refactoring is completed and functionality is confirmed, the code is deployed internally, completing the iteration.
If plans include deploying the code beyond the development iteration, the code is then deployed externally. Eventually, all iterations are completed, resulting in a system with full functionality that is accepted by stakeholders because it meets allocated requirements.
There are several methodologies through which we can implement Agile Projects. The agile methods are focused on different aspects of the software development life cycle. Some focus on the practices (extreme programming, pair programming), while others focus on managing the software projects (the scrum approach).
The three methodologies which are most widely used in Industry are
1. Extreme Programming (XP).
3. Feature Driven Development (FDD).
1. Extreme Programming (XP): XP is the most successful method of developing agile software because of its focus on customer satisfaction. XP requires maximum customer interaction to develop the software. It divides the entire software development life cycle into several number of short development cycles. It welcomes and incorporates changes or requirements from the customers at any phase of the development life cycle.
2. Scrum: Scrum is another popular method of agile development through which productivity becomes very high. It is basically based on incremental software development process. In scrum method the entire development cycle is divided into a series of iteration where each iteration is called as a sprint. Maximum duration of a sprint is 30 days.
3. Feature Driven Development (FDD): FDD is one of the agile development methods. The key advantage of this method is to design the domain of the software to be produced before development.
Advantages of Agile Model
• Adaptive to the changing environment.
• Agile helps to speed up the SDLC phases and bypasses process steps that add little value to the project.
• Engages the stakeholders continuously so that the new requirements are gathered faster and there is no scope for guess work by the teams.
• Saves cost, time and efforts by following iterative incremental work delivery and thereby identifying deviations early.
• Least documentation.
• Provides the end result of higher quality of the software delivered and a highly satisfied customer.
Disadvantage of Agile Model
• Time consuming and wastage of resources because of constant change of requirements.
• More helpful for management than developer.
• Only senior developers are in a better position to take the decisions necessary for the agile type of development.
• Once teams become bigger, agile methodologies begin to fail, as they don’t scale to large teams, or teams spread across geographies.
• If the projects are large then it becomes difficult to judge the efforts and the time required for the project in the software development life cycle.