Directly or indirectly, all the twelve agile principles of “agile manifesto” convey the importance of quality. Quality is a big part of the agile software development process. It defines whether the software can fulfill all the requirements of the customers. The agile approach promotes an environment where teams are encouraged to deliver valuable, working products that meet customers' needs.
The article below shows the importance of quality in the agile approach. Also, here we'll discuss how the agile approach to quality is different from the traditional approach. So, without further ado, read on.
The Agile Approach to Quality
In agile methodology, an entire team works together on a project to deliver a quality product. The team has their own responsibilities. They decide the activities related to the project. How the product will be developed, how they’ll divide their work among team members, and how they’ll organize their work, all these things are determined by the agile team.
In short, in the agile approach, the team is accountable to deliver high quality products. And it has all the responsibilities related to product development. The entire product development process is controlled by the team members, not the project manager.
In agile methodology, the team has the approach of building quality while developing the product. Additional quality is not ensured by doing more and more quality inspection. Rather the team puts in place the best engineering practices to build products with the highest quality.
However, the traditional approach of product/project quality management is different from agile approach. In the traditional approach, the project manager controls the development process. The development team follows the direction and plan of the project manager. In this method, it's difficult to make changes as customers or clients are distant from the daily work process of the development team.
In the below chart, we’ve mentioned the key differences between agile and traditional quality management method:
Traditional Quality Management
Agile Quality Management
|Quality is addressed reactively through product testing and fixing issues.||In agile, quality is addressed both proactively and reactively. Proactively through encouraging face-to-face communication, establishing coding standards, and pair programming. Reactively through product testing.|
|Product testing occurs at the last stage of the product development process. In fact, some features of the products are tested after a long time.||In agile, testing is the part of the everyday development process. In every requirement’s Acceptance Criteria, testing is involved. In agile, the team allows automated testing in each sprint. Teams verify if all the requirements developed in every sprint meet the Definition of Done.|
|Focuses on pre-established requirements||Focuses on customer changing needs|
|Prioritizes documentation||Prioritizes working software|
|Work progress is monitored through periodical meetings and status reports.||Work progress is monitored through daily scrum meetings and results.|
|The project manager controls the work process||The team member controls the work process|
|Sometimes, the development team compromises with the testing phase to meet a deadline or save money.||Testing is compulsory. It’s part of each sprint in agile|
|Difficult to find bugs or issues in products at the end of the project. Also, it’s costly to fix those issues.||Easy to find the problems when you test constantly. Also, fixing issues are easier than the traditional approach.|
|Executives or Managers or team leaders make most decisions.||Gives freedom to team members. They make all the decisions regarding requirements, design, and development.|
On the other hand, the agile software development method focuses on constant improvement of the delivered products. The process of product development emphasizes changes. The agile team organizes daily scrum meetings to deliver quality products.
Also, the user stories are important for understanding the quality requirements. The product owner ensures that changes are made in the product backlog, and teams are working together to determine how to solve the customers' needs. In agile software development, the development team focuses on deciding how they create the product with quality.
Because the teams are self-managing in nature, it becomes easier for them to bring changes to meet their clients' needs. The team flexibility allows them to innovate and deliver quality products. In agile quality management, user stories are involved in understanding the costumes needs. Adding acceptance criteria in user stories helps to clarify the user requirements more accurately. For example:
User StoryLet's imagine you're developing a seat reservation app for a movie theatre. You're developing the app, keeping the movie fans in mind. So, the user story will be: “As a movie-fan, I want to book seats so that I can safely reserve my seat before all the tickets are sold out."
- Customers can select their favorite movie
- They can select the number of seats they want to book for the movie
- Customers get booking confirmation through email
- Customer can’t choose specific seats
- Customers can pay for the seats in the movie theatre
Want to learn Quality Management? Leading SAFe Training with SAFe Agilist Certification is the first step.
10 Ways of Quality DevelopmentAgile software development uses different quality development techniques. Including these ten techniques in your development process will allow you to improve the quality of your products: Test-driven development has the test-first mindset. In the test-driven development process, the work is based on tests created at the start of the project. This test is only passed when the objectives of the product have been made. BDD is the test-first approach to writing requirements. BDD permits building executable specifications. The acceptance criteria become acceptance tests. Acceptance criteria are written in the following structure: Given [a specific initial condition] When [a specific action occurs] Then [a specific result is expected]
Pair ProgrammingIn your software development process, pair programming is a vital method. In this method, two developers sit together to code as a unit on one computer. One of the developers helps to type while the other one offers advice or acts as a navigator. The pair programming method opens great learning opportunities for developers. It also helps to improve the design quality and reduce defects. The cross-functional team uses DoD or the Definition of Done to measure the completeness of a project requirement. It's an artifact that defines when an item can be decided as done.
Peer ReviewIn this technique, the peers or members of the development team review each other's work. If there's a problem, they work together to fix it and improve the overall software.
Trunk-based DevelopmentThis method suggests managing one trunk for all teams by avoiding long-lived and multiple open branches. Every single commit should be merged to main. This does not mean there can be no developer branches. A branch for every story seems like a lot of branches, but the question is not how many branches we have, but how often we merge back.
We try to merge back as quickly as we can. The goal is to merge back into the trunk at least every day. It’s good to have build validation capabilities before moving to trunk-based development, but sometimes the very fact of moving to trunk-based development makes it easier to understand what we need to automate.
Build and Test AutomationThis method encourages to build the code often, preferably on every commit and run unit tests as part of the build. All unit tests should be automated and run as part of the build. If these pass, we want to merge these and other changes into the trunk to test more comprehensive tests. Static and dynamic code analysis allows us to identify problems as we’re coding, helping build quality.
Continuous IntegrationThis method encourages frequently merging developer working copies to stay away from integration issues. It's crucial to use continuous integration as a seamless part of the work. That means it's essential to make sure to check in the code regularly.
Collective Code OwnershipEvery member of the development team has ownership of the project. They can make any desired changes in the project work. With this quality management technique, you can increase the innovation and defect identification ability of the team.
RefactoringThe code should be often re-written for better readability, maintainability, and scalability without changing the behavior. This helps in reducing technical debt, keeping the code clean, avoiding bugs to appear and thus improving the quality of the product.
Want to learn DevOps? Enroll in the SAFe DevOps Certification Training