![](/posts/software-engineering-agile-model.png)
The meaning of Agile is swift or versatile.”Agile process model” refers to a software development approach based on iterative development. Agile methods break tasks into smaller iterations, or parts do not directly involve long term planning. The project scope and requirements are laid down at the beginning of the development process. Plans regarding the number of iterations, the duration and the scope of each iteration are clearly defined in advance.
Each iteration is considered as a short time “frame” in the Agile process model, which typically lasts from one to four weeks. The division of the entire project into smaller parts helps to minimize the project risk and to reduce the overall project delivery time requirements. Each iteration involves a team working through a full software development life cycle including planning, requirements analysis, design, coding, and testing before a working product is demonstrated to the client.
Main factors of Agile
- It enables teams to deliver value to their customers with ease
- Agile team deliver work in small but usable increments
- Evolution of the requirements, plans, and results take place continuously. This allows teams to respond to changes quickly
Phases of Agile Model:
Following are the phases in the Agile model are as follows:
- Requirements gathering
- Design the requirements
- Construction/ iteration
- Testing/ Quality assurance
- Deployment
- Feedback
Agile Manifesto
Agile manifesto details of the value and principles of agile process
Some of the values mentioned in the agile manifesto are
Individuals and Interactions OVER Process and tools
Process and tools are important in software development which cannot be skipped however this model is more focused on the individuals and interactions
Working products OVER Comprehensive Documentation
The main goal is to achieve the output rather than putting too much effort on writing documentation like in waterfall model
Customer Collaboration OVER Contract Negotiation
A project must have contract and negotiations, however customer collaboration is also considered very important to keep them updated with the current progress
Responding to Changes OVER Following a plan
we might not have a rigid plan like in waterfall methodologies, based on scenarios changes, we may required to change our directions, and move faster.
Agile Principles
There are 12 principles in agile model that needed to be followed
-
Customer Satisfaction
You need to satisfy customer through early and quickly delivery of the product
-
Welcome Change
Changes needs to be addressed even late in the development process
-
Deliver Frequently
Ensure software is delivered frequently, focusing on a shorter timescale
-
Work together
Developers and business individuals need to work together through the course of the project
-
Motivated Team
Project needs to be built around motivated individuals and they must be trusted to get the job done
-
Face to Face
Face to face conversation is the most efficient means of communication
-
Working Software
Working software is the primary measure of the progress
-
Constant pace
The Agile process promotes sustainable development
-
Good Design
Agility can be improved by focusing on technical excellence and good design
-
Simplicity
The amount of work that’s not being done needs to be minimized. Simplicity doesn’t means less, extra processes should be minimized
-
Self organization
Self organized team provide the best architecture, requirements and design. Coming together, discussing and resolving together is the key factor
-
Reflect and adjust
Effectiveness can be improved by the team regularly effecting on it
Advantages of Agile
-
Large amounts of interaction between the client and project development team
-
Improved transparency to clients in every phase of the project
-
The delivery of the output is predictable and can sometimes be earlier than the expected
-
The costs of the project are predictable and follow a rigid schedule
-
It allows changes to refine and reprioritize the product backlog
-
The client can provide the priority of the features allowing the team to ensure maximum project value
-
By focusing on the needs of the users, the team can deliver the value to the customers
-
The project is broken into smaller units with the high quality of development, testing and collaboration
Agile Methodologies
- XP (extreme programming)
- It is a framework that enables teams to create high quality software and improves their quality
- It enables software development with appropriate engineering practices
- When it is applicable?
- Changing software requirements
- To handle risks caused due to new technology
- Work with small, extended development team
- To use technology to allow automated unit and functional tests
- Kanban
- The method is used to design, manage and improve the flow of the systems
- Organizations can visualize flow of work and limiting their work in progress
- When it is applicable?
- It can be used in situations where work is arrived in unpredictable fashion.
- It is also used to deploy work immediately without waiting work for other work items
- Lean
- In Lean, values are always in customer prospective.
- Lean is a set tools and principles that is aim to identify and remove waste to increase the process development
- It focus on maximizing value to client ensuring waste is minimized
- When it is applicable
- Lean’s principles apply to any sector where there’s waste of any form
- Scrum
- Scrum is a framework that is used by teams to establish a hypothesis, try it out, reflect on the experience and adjust
- It is used to enable teams to incorporate practices from other frameworks depending upon the team’s requirements.
- When it is applicable
- It is used when cross-functional teams are working on product development when work is split into more than one one 2-4 week interactions
- Crystal
- Crystal is a approach to software development that focuses on people and their interactions , rather than tools and processes
- It is aimed to streamline processes and improve optimization
- It works on the principle that projects are unique and dynamic. Each requiring its specific methods
- When it is applicable?
- It focuses on strengthening team communication
- It also focuses on continuous integration, active user involvement and configurable processes