Agile Software Development – A Beginners Tutorial and Detailed Guide
Before I start explaining about Agile Software Development, in a detailed, easy, step by step manner from scratch, lets first understand the meaning of the term “Agile” first.
If we search the meaning of Agile in a dictionary or google, you will get its meaning as ‘moving quick‘. Agile simply means quick.
As you have understood the general meaning of Agile, now lets get started with the understanding of the Agile Software Development.
Agile Model is one of the different Software Development Life Cycle models (i.e. SDLC Models) available in the market.
The below are the different Software Development Life Cycle Models available in the market:
- Waterfall Model
- Prototyping Model
- Incremental Iterative Model
- Spiral Model
- V Model
- Agile Model
- RAD Model (Rapid Application Development)
- Big Bang Model
- And many more
The below image depicts all the above listed SDLC Models:
So far, we have understood that Agile is one the SDLC Models. Now, lets understand why most of the Development Projects these days choose Agile as their SDLC Model.
Agile SDLC Model
Traditional Software Development don’t adapt to change and hence is not suitable for the projects these days which adapt/change quickly. Medium and Large Size Projects evolve over a period of time by implementing the changes coming in for surviving in the market. In Traditional Software Development say Waterfall SDLC Model, all the requirements or changes required cannot be guessed in the beginning of the project and these models won’t adapt to the changes to requirements, code, architecture of the Software to be developed. And the cost and time of incorporating and fixing these required changes in these Traditional Software Development projects is very high.
The solution for the above problem is Agile SDLC Model. The below are the different points, which explain how the Agile solves to problem of quickly adapting to changes:
- Agile is an Iterative Development Model, where the development happens over multiple iterations. Instead of implementing all the features required for developing the software at a go, only a few set of features will be identified based on priority and implemented in every iteration. Hence the development in Agile SDLC Model happens over multiple iterations.
- In every iteration of Agile SDLC Model, the requirements evolve, the changes will be quickly adapted and the problems will be fixed/resolved.
- All the teams like Business, Development and Testing etc. will be collaborating effectively on the agreed functionalities to be implemented in an iteration and solving the problems in a efficient, quick and focused manner.
- Because of all the above three points, Agile enables the teams to deliver the Software faster with good quality and quick adaptability to incorporate changes.
- Agile SDLC Model, develops the software over multiple iterations in an incremental manner, where the Software to be developed will evolve with more features over a period of time.
Agile SDLC Model has several frameworks (i.e. methodologies) for its implementation in our software development projects. As we have understood the purpose of using Agile SDLC Model for Software Development Projects, now lets go a bit further and understand the different Agile frameworks (i.e. Agile Methodologies) that are available for us to implement the Agile SDLC Model in our Software Development Projects.
There are several frameworks/methodologies in Agile SDLC Model, which we can use for developing the projects. Scrum and Kanban are the mostly used frameworks/methodologies in Projects, when Agile SDLC Model is chosen for developing the Software.
The below are the different Agile Methodologies/Frameworks which can be used in the Software Project Development:
- XP (Extreme Programming)
- FDD (Featured Driven Development)
- DSDM (Dynamic Systems Development Methods)
- And others methodologies
The below image depicts all the above listed Agile Methodologies:
Agile Scrum Methodology is Number One
The Number one Agile Methodology which is most popular than any other Agile Methodologies in the market for developing the Software Projects is Agile Scrum Methodology. In the coming sections, I will explain about this Agile Scrum Methodology/Framework in detail.
Agile is not Equal to Scrum
As Scrum is the famous Agile Methodology/Framework, every one tend to refer Scrum as Agile, but they are not same. Scrum is one of the different Agile Methodologies/Frameworks, where as Agile is one of the SDLC Models, where Software is developed over multiple iterations.
Agile Practices are nothing but the best practices that we can implement in any of the Agile Software Development projects. Multiple Agile Practices can be used/implemented in the Agile Development Projects. F0r example, there is a Software Project which is using Agile SDLC Model for its development and Agile Scrum as the implementation Methodology/Framework, it can also implement the several Agile Practices like Behaviour Driven Development (BDD) and Pair Programming to get better results.
The below are the different Agile Practices which can be implemented in the Agile Development Projects:
- TDD (Test Driven Development)
- BDD (Behaviour Driven Development)
- ATDD (Acceptance Test Driven Development)
- CI (Continuous Integration)
- CD (Continuous Delivery)
- Pair Programming
- Iterative Development
- Incremental Development
- Burndown Chart
- Kanban Board
- Simple Design
- Team Room
- Lead Time
- Project Charters
- And many more
The below image depicts all the above listed Agile Practices:
If you want to refer to the complete list of Agile Practices, you can refer them here.
Let’s forget about ‘Agile Manifesto’ for a while, and now lets focus on understanding the term ‘Manifesto’ separately first. For example, every Political party before elections and during the political campaign produces a manifesto (an open public declaration of their policies, how they are going to serve or make difference from other political parties etc.), which there by helps the general public in deciding whom to vote.
Agile SDLC Model also has a Manifesto, which was prepared by 17 developers during an outing. This Manifesto is nothing but a document, containing 4 Agile Values and 12 Agile Principles.
In the coming sections, I will explain more about these 4 Agile Values and 12 Agile principles in detail.
As per Agile Manifesto, the below are the four values that Agile Methodologies and Agile Practices should follow:
- Individuals and Interactions over Process and tools
- Working Software over Comprehensive Documentation
- Customer Collaboration over Contract Negotiation
- Responding to change over Following a Plan
The below image depicts all the above listed Agile Values:
Agile Value #1 : Individuals and Interactions over Process and Tools
In Traditional Development Projects, the Software Teams focus on having the best possible tools and processes for developing the software, but they don’t focus on the Individuals who are part of the Project and how their communication/interaction is helping the Project while building the software.
But Agile Manifesto, suggest that the people behind these process and tools are even more important in helping the Project move towards its success. Keeping the Project in right hands, and making sure they are communicating well which each other and solving the problems that arise in the projects, will actually help the project moving towards its success, than just implementing the great processes and using the best tools. Hence Individuals & Interactions over Process & Tools is followed in the Agile Development Projects.
Agile Value #2 : Working Software over Comprehensive Documentation
In Traditional Development Projects, more priority is given to the documentation and there by showcasing these documents to the Customers/Clients on a regular basis. But what actually the Customer/Client wants is a working software, over all these detailed and glittered documents and reports.
Agile Manifesto, recommend the Agile Development Projects to give priority to something that Customer/Client really wants i.e. Workable/Deliverable Software over documentation. Hence in Agile Software Development Projects, more importance is given to the working of the Software and less importance is given to the documentation.
Agile Value #3 : Customer Collaboration over Contract Negotiation
In traditional Development Projects, when the Project Team completely develop the Software and deliver it to the Customers/Clients, the Customer may identify the functionalities in the Software that are not meeting their expectations or may want some additional functionalities to be incorporated into the Software. In this case, the Project Manager negotiate with the Customers on adding these additional changes to the original agreed contract, instead of listening to them, understanding what is that they really want and incorporating those additional changes into the Software.
Agile Manifesto, recommends that the focus should be on the continuous development accompanied by intaking as much as feedback from the Customers and incorporating the needed changes into the Software, instead of negotiating with them over contracts.
Agile Value #4 : Responding to Change over Following a Plan
In Traditional Development Projects, more emphasis/focus is given to the Planning and road map creation in advanced. But, Project Team cannot plan, know or design everything that is needed in advance (i.e. way before the Project starts). Customers/Client may not know all the required reequipments of the Software in Advance. Hence the Traditional Development Projects, tend to fail and go way behind the allocated budget.
Agile Manifesto, suggest the Software Teams to have the ability to adapt to the required changes when needed in the Software Projects, rather than sticking to the initial or non-dynamic/non-changeable plans.
As per Agile Manifesto, the below are the Twelve Principles that Agile Methodologies and Agile Practices should follow:
- Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software.
- Welcoming changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is the face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity – the art of maximizing the amount of work not done — is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.
So far, we have learnt a lot about Agile SDLC Model, Agile Methodologies, Agile Practices, Agile Values and Agile Practices. Now, lets learn even more about Agile from the to be followed sections.
Agile refers to the team as Cross Functional Team, instead of calling as Development Team, Testing Team etc. As Agile believes that each and every member of the Team, irrespective of whether a Developer or Tester etc. should contribute to the successful delivery of workable Software to the Customers. In the coming sections, I am going to explain one of the methodology of Agile i.e. Agile Scrum in detail in the next section, where we are going to use this term ‘Agile Team’ instead of terms or roles like Developer, Tester, etc.
Agile Scrum is one of the different Agile Methodologies (i.e. Frameworks) and is the most popular one and widely used in most of the Projects when compared to other Agile methodologies.
Before digging deep into this Agile Scrum methodology, lets have a high level glimpse on the below image of Agile Scrum Methodology:
Instead of explaining about Agile Scrum Methodology in a detailed manner here, I would like you to go through the one of the Software Testing Expert Talks given by Neelima Wali on Agile Scrum at our QAFox Youtube channel:
Conclusion: Agile mean quick and is one of the SDLC Model which can be used in the Software Development Projects. Agile has several Methodologies and Practices, where Scrum is the most used Agile Methodology. Agile Development Projects has to follow Agile Manifesto, which includes 4 Values and 12 Principles. Agile Scrum is the popular and widely used Agile Methodologies having lot of terminologies and concepts that we have to understand.
Happy Learning 🙂