The agile development model is a process model that decides what will be the plan of action to develop software. Here ‘Agile’ means ‘move quickly’. Now a day’s market condition changes frequently and the need of the customer evolves day by day.
In order to cope with these rapid changes, the developer must approach an engineering practice that would allow them to remain agile. So, developers define a manoeuvrable, adaptive and lean process that would accommodate the need of the uprising market. And we refer it as the ‘agile development model‘.
Content: Agile Development Model
- What is Agile Development Model?
- What is the Agile Manifesto?
- Stages of Agile Model
- Agile Software Development Approaches
- Advantages and Disadvantages
What is Agile Development Model?
The agile development model divides a large project into small chunks that we refer to as iterations. Now the different developer teams work on these iterations parallelly. An iteration is developed tested and launched to the customer. So after each delivery, the developers take the customer feedback. Thus on the basis of feedback from the customer, the software is enhanced and rereleased.
The agile development model emphasises four key issues:
- Rapid delivery of software that satisfies the immediate business need of the customer.
- Communication and collaboration between the developer team and the customer.
- Identify the changes that can emerge as an opportunity.
- A developing team that has control over the work they perform.
What is the Agile Manifesto?
Every process model has its manifesto so does the agile model. The four-core value of the agile manifesto are:
- Individual creativity and interactions among the group over the process and tools are more effective.
- Working software is the actual product, not the accompanying comprehensive documentation.
- Collaboration of client and developer over the contract must be a healthy way.
- Responding to the changes requested by the client over the following plan.
Stages of Agile Model
The agile development model is a lightweight model used to develop software. This approach emphasises individual skills and the communication between the client and the developer. So the stages involved in the agile development model are:
At this stage, the developers gather information from the customer through the communication activity. Here the customer specifies the problem to which he needs a solution. Thus, the effective communication is helpful for the rest of the process.
After getting goals and objectives in the communication phase the next step is to plan a roadmap to it. However, over-planning is time-consuming and is not even fruitful and under-planning may create chaos.
So, the developers go for agile planning i.e., quick planning and the roadmap emerges as the work on software begins.
A model always provides you with a basic understanding of the entity that the developer has to build. However, a software model represents:
- The information that software would transform.
- The architecture of the software.
- Functions that transform the information.
- User-desired features.
- The behaviour of the system during the transformation of information.
This stage includes a set of coding and testing. Thus it produces the operational software that is ready to deliver. The coding incorporates the programming style, programming language and programming methods.
Testing is initially performed at the component level we refer to this as unit testing. \omponent level testing is followed by validation testing. It verifies whether the developed software meets the requirements specified by the customer.
After validation testing comes acceptance testing where the customer exercises all the features and functions of the software.
It incorporates three activities that are delivery, support and feedback. In the conventional models, the deployment stage would occur only once. But in the agile model, this stage occurs a number of times as the software moves towards completion.
Agile Software Development Approaches
The agile model focuses on individual creativity and regular feedback from the customer. The common approaches for agile software development are extreme programming (XP), DSDM, SCRUM, Crystal and FDD. Amon this the most popular is extreme programming.
Extreme Programming (XP)
The extreme programming approach identifies that the requirement of the customer keeps on changing continuously as the work on the software proceeds. This method embraces these frequent changes.
In XP, the customer who has demanded a software solution to his problem is always present as a member of the development team. He writes the use cases that represent a statement of requirement.
The developer evaluates how much effort the team will require to implement each use case. Usually, the developers implement a use case within a few weeks as the use cases are generally small.
But if there are longer use cases, the developer breaks them into smaller use cases. Once the developer evaluates the time and effort required to implement the use cases, the customer will provide more information about the requirement.
Further, the customer would prepare the acceptance test for each implemented use case to verify whether they have been implemented correctly.
These use cases are automated to verify the implemented use cases iteratively and the customer is accountable to verify that the acceptance tests are ultimately been successful.
The acceptance tests are performed iteratively on the implemented use cases. Initially, these tests fail but it gets clear one by one eventually as the implementation proceeds and gets completed.
Implementation is completed in an incremental fashion. Developers do not implement all the use cases parallelly, it is the customer who will decide which use case first. The selection of a use case depends on which use case’s implementation will fulfil the most immediate business need.
Dynamic Systems Development Method (DSDM)
It is an agile development approach that is suitable for software that follows a tight timeline. This approach is an iterative process of software development where enough work is done to deliver each increment and this facilitates movement to the next increment. In DSDM developers deliver 80 per cent of software in the 20 per cent of the time that they would have taken to deliver the complete software.
The stages of the DSDM method of developing software are:
- Feasibility study
- Business study
- Functional Model Iteration
- Design and built iteration
SCRUM agile method follows the principles of the agile model. This method incorporates the following development activities within a process.
SCRUM emphasises the process pattern of a project with a very tight timeline and the changing requirement and business criticality. The process pattern of such a project defines the following development activities:
It is a prioritized list of project requirements that would immediately fulfil the business requirement. The product manager reviews the backlog list and updates the priorities as required. The customer is free to add new priorities (changes) to this list at any time.
It comprises work units required for achieving the business requirement defined in the backlog prioritized list. These work units must fit into a predefined time box (maximum 30 days).
However, the changes are not introduced in the sprint activity. This is why this activity requires a short duration but it enhances the development by providing a stable environment.
It is the Scrum master who heads the scrum meeting. He assesses the response from each team member. This is a short meeting held daily for a maximum of 15 days. The scrum master asks three questions to all the team members:
- What did you do since the last meeting?
- Are you encountering any obstacles?
- What you are planning to accomplish by the next Scrum meeting?
Thus, this meeting reveals the potential problems and helps the scrum master reorganize the team structure.
The developer team delivers the incremental software and demonstrates the implemented functionality to the customer.
Crystal is a software development approach that follows the agile principle. It emphasises “maneuverability” i.e. the quality of being easily directed, during the resource-limited, cooperative game of invention and communication. Here the primary goal is to deliver the useful and working software and the secondary goal is to prepare for the next iteration.
Feature Driven Development (FDD)
FDD emphasises the client valued function (feature). The developers have to complete the client valued function in two or fewer weeks. These features are small blocks of deliverable functionality. The FDD adopts the philosophy that emphasizes:
- Collaboration of the people of the FDD team.
- Manage project complexity and its problems using feature-based decomposition. This decomposition is then followed by the integration of the software increments.
- The team communicates the technical details using verbal graphical and text-based means.
Advantages and Disadvantages
- The agile model provides frequent deliveries of software increment.
- Face to face communication between the developer and the customer.
- The customer can introduce change at any point in time.
- It decreases the time required for the overall development of the software.
- The agile model doesn’t focus on the documentation of the software which may lead to confusion for the customer. It would even mislead the new team members about the decisions taken at various phases of the software.
- Due to a lack of documentation, it becomes difficult for developers to go for the maintenance of finished software.
This is all about the agile development model allows the developers to accommodate the frequent changes in the customer’s requirement and thereby succeed in an unpredictable market.