- Agile software development describes an approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s). It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.
- The term agile (sometimes written Agile) was popularized, in this context, by the Manifesto for Agile Software Development. The values and principles espoused in this manifesto were derived from and underpin a broad range of software development frameworks, including Scrum and Kanban.
- There is significant evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations;
Agile enables you to learn directly for end users and implement changes while doing so.
- Extreme programming (XP) is a software development methodology which improves software quality and responsiveness to changing customer requirements. It advocates frequent “releases” in short development cycles, which is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted. It includes: programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are needed, flat management structure, code simplicity and clarity, expecting changes in the requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers.
Agile Scrum Sprints
- Scrum Sprint is a repeatable fixed time-box during which a “Done” product of the highest possible value is created. It also has a maximum duration. Usually, a Sprint lasts for one month or less.
- Usually, daily meetings are held to discuss the progress of the project undertaken and any difficulty faced by any team member of the team while implementing the project. The outcome of the sprint is a deliverable, albeit with some increments. The scrum is used for projects like Web Technology or development of a product for the new market, i.e. the product with many requirements or fast-changing requirements.
Agile User Story
Product Owner is responsible for product’s current state of development and for maximizing the product’s value. Product Owner can be one person, even if he represents a committee. His jobs includes:
- Maintaining items in Product Backlog.
- Assigning order to items in Backlog.
- Ensuring that items in Product Backlog are clear to the Development Team.
It is important to ensure that the product owners include end users that understand the end goals for the product.
Agile Product Backlog
The product backlog comprises an ordered list of product requirements that a scrum team maintains for a product. The format of product backlog items varies, common formats include user stories, use cases, or any other requirements format the team finds useful. These will define features, bug fixes, non-functional requirements, etc.—whatever must be done to successfully deliver a viable product. The product owner prioritizes product backlog items (PBIs) based on considerations such as risk, business value, dependencies, size, and date needed.
More Agile Terminologies
- Development Team: The development team is responsible for the implementation of the articles in the Sprint Backlog. Although several members of the development team may specialize in different areas, the development team as a whole is responsible for the development of functionality.
- Sprint Backlog: Sprint Backlog refers to a subset of Product Backlog that is selected for a Sprint along with its delivery plan. Based on the items in the Sprint Backlog, the Development Team decides how they will create a “Done” product.
- Daily Scrum: A fixed time, fixed place event that allows the Development Team to synchronize and plan work for the next 24 hours based on the amount of work done since the last Daily Scrum. During Daily Scrum, Development Team members explain:
- What did I do yesterday that helped toward the Sprint Goal?
- What am I going to do today toward my Sprint Goal?
- What Impediments I see toward accomplishing my Sprint Goal?
- The Daily Scrum usually lasts for 15 minutes, but can be followed by other meetings for detailed discussions.
- Sprint Review and Retrospective: The Sprint Review is scheduled after the sprint ends to inspect the amount of work done and adapt the Product Backlog if necessary. Similarly, Retrospective is used to analyze what went right in the Sprint and what could be improved upon. This Retrospective feedback helps improve the process in Sprints to follow.
Agile vs Waterfall Methodologies: Top 10 Differences
- The software development process is divided into different phases in the Waterfall model while Agile methodology segregates the project development lifecycle into sprints.
- Waterfall is a structured software development methodology, and often times can be quite rigid, whereas the Agile methodology is known for its flexibility.
- According to the Waterfall model, software development is to be completed as one single project, which is then divided into different phases, with each phase appearing only once during the SDLC. However, the Agile methodology can be considered as a collection of many different projects, which are nothing but the iterations of the different phases focusing on improving the overall software quality with feedback from users or the QA team.
- If you want to use the Waterfall model for software development, then you have to be clear with all the development requirements beforehand as there is no scope of changing the requirements once the project development starts. The Agile methodology, on the other hand, is quite flexible, and allows for changes to be made in the project development requirements even after the initial planning has been completed.
- All the project development phases such as designing, development, testing, etc. are completed once in the Waterfall model while as part of the Agile methodology, they follow an iterative development approach. As a result, planning, development, prototyping and other software development phases can appear more than once during the entire SDLC.
- One of the major differences between Agile and Waterfall development methodology is their individual approach towards quality and testing. In the Waterfall model, the “Testing” phase comes after the “Build” phase, but, in the Agile methodology, testing is typically performed concurrently with programming or at least in the same iteration as programming.
- While Waterfall methodology is an internal process and does not require the participation of customers, the Agile software development approach focuses on customer satisfaction and thus, involves the participation of customers throughout the development phase.
- The Waterfall model can be regarded as a stringently sequential process, however, the Agile methodology is a highly collaborative software development process, thereby leading to better team input and faster problem solving.
- The Waterfall model is best suited for projects which have clearly defined requirements and in which change is not expected at all, while Agile development supports a process in which the requirements are expected to change and evolve. Thus, if you are planning to develop a software that would require frequent overhauls and has to keep up with the technology landscape and customer requirements, Agile is the best approach to follow.
- The Waterfall model exhibits a project mindset and lays its focus strictly on the completion of project development, while Agile introduces a product mindset that focuses on ensuring that the developed product satisfies its end customers, and changes itself as the requisites of customers change.