Introduction to Agile Methodology : Comprehensive Explanation
What is Agile Methodology?
Agile methodology points to a software development methodology consolidated to the idea of repetitive development, where requirements and solutions are developed through fraternizing between self-organizing and cross-functional teams. The utmost value in Agile development is that it allows teams to deliver faster value, with good quality and predictability, and greater ability to respond to change.
It splits the products into small incremental builds. These builds are provided in iterations. Duration of each iteration lasts from about one to three weeks. Each iteration involves working of cross functional teams working simultaneously on various areas.
- Planning
- Requirements Analysis
- Design
- Coding
- Unit Testing and
- Acceptance Testing.
Related – What is DevOps?
What is the Agile Manifesto?
The Agile Manifesto is a proclamation of the values and principles expressed in agile methodology. Agile Mnifesto is made up for four foundational values and 12 key principles. The main aim is to find out better means of developing software by providing a clear and measurable structure that promotes iterative development, team collaboration, and change recognition.
The key values and principles of the ‘Agile Manifesto’ are:
Values
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Principles
- Early and continuous delivery of software delivery
- Accommodate changing requirements throughout the development process
- Frequent delivery of working software
- Alliance between the business stakeholders and developers throughout the project
- Support, trust, and motivate the people involved.
- Face-to-face interactions
- Working software
- consistent development pace
- Technical Excellence
- Simplicity
- Self-organizing teams
- Regular reflections
Anyone who applies any type of agile methodology will follow these values and principles.
There are buffet of different frameworks that can be used in order to run an Agile project. Some of the more popular frameworks are.
- Agile Scrum Methodology
- Lean Software Development
- Kanban
- Extreme Programming (XP)
- Crystal
- Dynamic Systems Development Method (DSDM)
- Feature Driven Development (FDD)
Agile Scrum Methodology
It is an agile framework which is used to implement the ideas behind agile software development. Agile Scrum Methodology consists of five values: commitment, courage, focus, openness, and respect. Agile Scrum Methodology’s objective is to develop, deliver, and also sustain complex products through collaboration, accountability, and iterative progress.
The main difference between Scrum from other agile methodologies are the roles, events, and artifacts that it is made up of, with which it uses to operate. Here’s what they are
Scrum team roles
- Product owner: Product expert who represents the stakeholders, and is the voice of the customer.
- Development team: Team of professionals who deliver the product. Team consists of developers, programmers, designers Testers etc.
- Scrum master: He holds the Scrum meetings. He make sure that scrum is used properly and also ensures the understanding and execution of Scrum is followed
Scrum events
- Sprint: Repetitive time boxes where a goal is fulfilled. Sprint time frame does not exceed one month and are consistent in the entire development process.
- Sprint planning: In the Sprint Planning entire Scrum team get together at the beginning of every Sprint to plan the upcoming sprint.
- Daily Scrum: It is a 15 minute time boxed meeting held at the same time, every day of the Sprint. In Daily Scrum previous day’s achievements are discussed and expectations for the following one are discussed.
- Sprint review: A casual meeting held at the end of every Sprint where the Scrum team present their progress to the clients, and discuss feedback.
- Sprint retrospective: A meeting where the Scrum team demonstrate on the proceedings of the previous Sprint and initiate improvements for the next Sprint.
Scrum Artifacts
- Product backlog: It is managed by the Product Owner. It consists list of features that should be implemented during the development process. It’s ordered by priority and every item in Product backlog is called a User story. A unique ID is generated for every user story
- Sprint backlog: It consists a list of the tasks and requirements that need to be fulfill during the next Sprint. Sometimes Sprint backlog is escorted by a Scrum task board. Scrum task board provides information on progress of the tasks in the current Sprint.
Kanban
It is a highly visual method mostly used within agile project management. In order to identify any bottlenecks early in the process it paints a picture of the workflow process, so that a top quality product or service is delivered.
Its six general practices are:
- Visualization
- Limiting work in progress
- Flow management
- Making policies explicit
- Using feedback loops
- Collaborative or experimental evolution
Extreme Programming (XP)
It is a method to achieve high-quality agile software development, focused on speed and continuous delivery. It is aimed to improve software quality and responsiveness according to the changing customer requirements. The Practices followed by XP are
- The Planning Game
- Small Releases
- Metaphor
- Simple Design
- Testing
- Refactoring
- Pair Programming
- Collective Ownership
- Continuous Integration
- 40-hour week
- On-site Customer
- Coding Standard
Crystal
Crystal incorporates a family of agile methodologies that include Crystal Clear, Crystal Yellow, and Crystal Orange. Their unique characteristics depend upon the factors such as team size, system criticality, and project priorities. Key components of the crystal include teamwork, communication and simplicity.
Dynamic Systems Development Method (DSDM)
It is an agile methodology which focuses on the full project lifecycle. Considering the eight principles, its philosophy states that ‘that any project must be aligned to clearly defined strategic goals and focus upon early delivery of real benefits to the businesses.
It promotes the following practices so that it can offer best practice guidance for on-time, in-budget delivery of projects:
- Facilitated Workshops
- Modelling and Iterative Development
- MoSCoW Prioritization
- M– Must have requirements
- S– Should have them if at all possible
- C– Could have but not critical
- W– Will get back to them in later days
- Time boxing
DSDM is designed to be independent. It can also be implemented in conjunction with other iterative methodologies.
Feature-Driven Development (FDD)
It is a lightweight repetitive and incremental software development process. FDD main objective is to deliver palpable working software in a timely manner. Its development process is deep rooted on a set of best practices with a client-value aim. The eight best practices are:
- Domain Object Modeling
- Developing by Feature
- Component/Class Ownership
- Feature Teams
- Inspections
- Configuration Management
- Regular Builds
- Visibility of progress and results
Agile methodology best practices
There are seven things which should be done when implementing any type of agile methodology:
Customer collaboration
Customer collaboration is an important part of agile methodology. Through regular communication with the development team, the customer will always be aware of the progress, and the combined effort will result in a top quality product.
User Stories
The motive of a User Story is to create a simplified description of a requirement. It helps to picture the type of the product, what they want, and the reason(s) for it.
Continuous Integration
Continuous Integration (CI) helps to keep the code up to date by constructing a clean build of the system. There is a rule stating that programmers never leave anything unintegrated at the end of the day. The main motive of CI is to minimize the time and effort required by each integration.
Automated tests
By performing automated tests the team gets information about which of the code changes are acceptable, and functionality is working or not as planned. Regression tests are done automatically before work starts.
Pair programming
Programming in pairs aims to improve better designs, less bugs, and a sharing of knowledge across the development team. In this Pair Programming one programmer ‘driving’ (operating the keyboard), while the other ‘navigates’ (watches, learns, provides feedback).
Test-driven development (TDD)
It is a method based on the iteration of a very short development cycle where requirements are turned into test cases, and then the software is improved to pass the new tests.
Burndown charts
It is a graphical representation of the work that is left to do versus the time you have to do it. It enables you to forecast when all the work will be completed. In a detailed burndown chart the amount of User Stories per unit of time will also be included.