To understand the concepts of agile in software development it is probably important to decipher the meaning of the term itself. The best example that comes to my mind is “The Covid Era” and how the world adapted to it with agility. Within days human civilization brought about ways to make the best out of the “stuck in a home situation”. This approach of thinking quickly, come to a solution, and act upon it forms the basis of Agility. In a matter of a night, schools, colleges, and offices shifted completely from an office space into the corner of our bedroom with utmost ease.
Agile Software Development can be described as a collection of frameworks. The Manifesto for Agile Software Development contains the set of values and principles which define Agile Software Development. These values and principles are incorporated into particular situations to help figure out the solutions arising in software development.
The members working and how they are working in a team are important aspects of Agile which separates it from the other software development methods. Self-organizing and cross-functional teams work together by using the above-mentioned principles according to their needs. Thus self-organizing and cross-functional are important terms in the Agile ambiance.
This ensures the team is equipped with every skill which might be required to handle and successfully conduct a project. In such a setup the managers usually ensure that the team has every skill required thus providing the right setup to deliver the expected results.
Along with collaboration and organization of the work, agile practices also help in technical practices used during software development in uncertain conditions. However, the latter is not so widely used.
Agile Software Development Life Cycle
The different stages of Agile Software Development Life Cycle are:
- Requirements
- Design
- Develop
- Test
- Deploy
- Review
- Launch
What are Agile Methodologies?
A few of the popular Agile Methodologies are listed below:
Scrum
As one of the most important Agile Methodologies, Scrum is used to do tasks in a scenario where teams are involved. The idea of scrum comes from the game of rugby and it helps in the proper working of smaller teams. The three aspects of scrum can be described as below:
- Scrum Master helps in building the team, look after sprint meetings and take care of problems in the path of progress.
- Product Owner helps in building the product backlog. The owner also gives the most priority to the backlog and ensures that there is delivery after every iteration.
- The Scrum Team looks after their work and completes the sprint.
Extreme Programming
This methodology is helpful when the demand is not stable i.e. the requirement of the demand is always changing. It can be also used when there is uncertainty regarding the functionality of the whole system. Thus with the help of extreme programming, the product is released in shorter intervals of time thus creating checkpoints and improving productivity. The aim of extreme programming works with respect to the customer.
The different phases of extreme programming are:
- Planning
- Analysis
- Execution
- Wrapping
- Closure
Crystal Methodologies
The different aspects of Crystal Methodology are:
Chartering
The phases of chartering are:
- Forming the development team
- Participating in feasibility analysis
- Bringing a plan on the table
- Making the development methodology better.
Cyclic Delivery
In the delivery process there are at least two cycles which consist of the following pointers:
- The release plan is updated and refined.
- Subsets of requirements are implemented.
- Products delivery to the users
- Project plan is reviewed.
Wrap up
Dynamic Software Development Method (DSDM)
Dynamic Software Development Method follows a Rapid Application Development approach. In DSDM, the users participate actively and the team has the ability to make decisions. The different techniques used in DSDM are:
- Time Boxing
- MoSCoW Rules
- Prototyping
The phases of DSDM are
- Preproject
- Feasibility Study
- Business Study
- Functional Model Iteration
- Design and Build Iteration
- Implementation
- Post Project
Feature Driven Development
As the name suggests, FDD helps in designing and building features.FDD has small phases where the features are developed. FDD keeps the following in mind while development
- Domain Object Modeling
- Feature Teams
- Inspections
- Regular Builds
- Ownership by the class
- Configuration Management
Lean Software Development
Lean Software Development works to increase the speed of software development and decreases the cost. The different ste[s of Lean Software Development are:
- Removing Waste
- Increasing Learning
- Delivering early
- An empowered team
- Instiliting integrity
- Optimizing the whole process
Kanban
The Japanese word Kanban refers to a card that has all the information which is required and done on the product during its process of completion. This method is widely used in software development.
Agile Principles
The Agile Principles are based on the Agile Manifesto. They can be interpreted as:
- Satisfy the customer with recurring delivery of software at regular intervals.
- If there are changes in requirements then accept them, even if they arrive late in the development cycle
- Deliver the software at intervals between 3 weeks to 3 months.
- The developers and the businessmen should work in collaboration.
- Building projects keeping in mind individuals who are highly motivated and then supporting them to get the work done.
- Using face to face conversation as the most effective way of communication.
- To measure progress the software should be working.
- The development should be sustainable and there should be consistency.
- Technical excellence and a good design helps in better agility.
- Simplicity is the key.
- A team which is self organizing helps to deliver best architecture, design and requirements.
- The team decides and discusses ways in which the team can be more effective.
Agile Values
The important agile values are:
Individuals and interactions
Along with the software tools and processes, agile suggests that the people working in the processes are equally if not more important. A project can be the most successful if the people working on it are the best suited for it.
A working software
Working software is more important. It is of utmost importance according to the agile manifesto to provide the customers with working software than to have piles and piles of documentation.
Customer collaboration
Previously there would only be a contract between the customer and the developer. So after the project would be completed it would be handed over to the customer. Many times a situation would arise that the product asked for and the product delivered was not the same. Thus agile insists on continuous delivery so that the developer and the customer are on the same page and can react to changing market conditions.
Responding to change
According to the Agile Manifesto, there might be many phases in software development when changes can be done to the product. These changes should be encouraged irrespective of the phase the project is in. This helps in achieving better goals and revised results.
FAQ of Agile Software Development
It is a group of methods of software development in which the requirements and solutions can evolve based on the work of cross-functional teams.
Kanban is a popular Agile methodology.
Agile methodology is considered to be the best because it maximizes the results as it increases value throughout the development process.
A disadvantage of agile processes is fragmented output. This may happen because different parts of the teamwork on different parts of the project thus raising the possibility of a fragmented output.