The SAFe way of building software quality

Listen on the go!

The speed at which the market is changing its dynamics has made it difficult for enterprises to keep up using the traditional methodologies. As a result, the need for a faster approach arose for the enterprises to be able to respond quickly and continuously to the evolving demands. With quality at the center, enterprises are looking to derive the benefits of greater customer satisfaction and performance capabilities. A Scaled Agile Framework or SAFe is enabling such customer-facing organizations to deliver continuous value to their users while keeping their overall business goals aligned with the adopted processes.

Having a lean-agile mindset as the foundation, SAFe empowers enterprises to scale and accelerate delivery processes without compromising on the quality. In fact, SAFe has ‘built-in quality’ as one of its core principles. SAFe is all about eliminating unnecessary steps and optimizing the legacy processes to ensure delivery of the highest quality services to the customers.

By definition, a lean enterprise is a thriving digital age business that delivers competitive systems and solutions to its customers in the shortest sustainable lead time. Driven by lean-agile leadership and team & technical agility, a lean enterprise incorporates DevOps practice to facilitate on-demand releases. Like DevOps, SAFe also requires a cultural and organizational change in terms of processes as well as people. With quality becoming the top priority for both enterprises as well as their customers, software quality assurance is leading the key process changes. As built-in quality becomes the norm, let us understand the best practices to engineer quality into a product right from the beginning.

The dimensions of built-in quality

1. Continuous delivery pipeline with a test-first approach for uninterrupted flow: In major enterprises where there are multiple teams working on multiple parts, it becomes highly impractical to perform a quality check retrospectively. Doing so not only slows down the delivery speed but also does not guarantee compliance with the desired quality standards. If the product does not meet the required criteria for quality, the entire process will have to be repeated, thus, causing unnecessary delay in final delivery.

For achieving an uninterrupted flow of quality software production and deployment, it is necessary that enterprises take a test-first approach. In such an approach, enterprises are able to test early and test continuously, parallel to the actual development. A continuous delivery pipeline that is backed with a test-first strategy makes it possible to facilitate releases on demand.

2. Architecture and Design Quality: The architectural and design quality is the pillar on which an entire product stands. If the architecture itself lacks in the quality, the end-product will be of sub-standard quality. While developing a product’s architecture, enterprises need to consider various aspects such as ease of implementation, ease of testing, ability to satisfy the non-functional requirements, ability to meet the future business goals, etc.

For creating an ideal design, a key aspect to keep in mind is sustainability. Enterprises should ensure that the product stands viable not only for the current business goals but also for the potential future requirements as well.

3. Code Quality: Taking a Test-Driven Development (TDD) approach to software development is an integral requirement for building quality from the start. Developers, being on a tight schedule, often do not get sufficient time for the testing phase. To resolve this, a TDD approach helps them write codes that not only meet the desired quality expectations but also do not hamper with the pre-determined timelines.

With TDD incorporated into the development strategy, quality assurance can primarily focus on complex behaviors and interactions. This allows the development and testing part to be done within the same iteration, thus, providing the scope for innovation. Also, test doubles are used to replace slow or unavailable components with faster proxies to accelerate testing.

4. System Quality: This dimension of built-in quality takes care of the external front or business front of a product. With the help of a Behavior-Driven Development (BDD) approach, enterprises can assess how the system works from an end-user’s point of view. Taking a BDD approach allows enterprises to keep their developers aligned with the overall business requirements in order to minimize rework and wastage.

5. Release Quality: As the test early, test often, and test everywhere practice is undertaken in SAFe, it is natural to test the quality at the release stage as well. In fact, as per scaledagileframework.com, “releasing allows the business to measure the effectiveness of a Feature’s benefit hypothesis. The faster an organization releases, the faster it learns and the more value it delivers.” Within SAFe, the infrastructure is immutable. This means, no change to the code can be applied without proper validation and approval. This minimizes production defects and facilitates predictable releases.

Conclusion

“Continuous attention to technical excellence and good design enhances agility” is one of the core principles of Agile manifesto. For enterprises to be able to provide continuous value to their customers, they must ensure that quality is built from the beginning of the development.

Join Jermain Oldham, Sr. Director – DevOps, SDLC, & Enterprise QE at J.B. Hunt Transport, Inc. and Pradeep Govindasamy, CTO & President at Cigniti Technologies for a webinar on “Quality Engineering in a SAFe World” on 07th November 2019. Register for the webinar and learn how you can promote a quality culture within your enterprise.