This article is the second one in a series that provides practical advice and guidance on how to leverage the Continuous Architecture approach. Today, we’ll discuss some of its benefits.
The Cost-Time-Quality Triangle
The cost–quality–time triangle is a well-known project management aid, which captures the fundamental constraints of any project:
The basic premise is that it is not possible to optimize all three corners of the triangle—you are asked to pick any of the two corners and sacrifice the third. Most of us have witnessed software development teams “cutting corners” because they are running out of time and money, at the expense of quality. The result is an increase in technical debt, and unfortunately that debt is often not “repaid”.
We do not claim that Continuous Architecture solves this problem, but the triangle does present a good context in which to think about benefits of Continuous Architecture. If we identify good architecture as resulting in a high quality software solution, then applying the Continuous Architecture principles and essential activities (see our “Revisiting Continuous Architecture” article in this series) is a good way to balance time and cost. Another way of saying this is that Continuous Architecture helps us balance the time and cost constraints while not sacrificing quality, specifically through its essential activities (focus on quality attributes, drive architectural decisions, know your technical debt and implement feedback loops) and principles, such as principle 3, Delay design decisions until they are absolutely necessary and principle 4: Architect for change—leverage the “power of small.”
The time dimension is also a key aspect of Continuous Architecture. Architectural practices should be aligned with agile practices and should not be an obstacle. In other words, we are continuously developing and improving the architecture rather than trying to do it all at once, at the start of the delivery process. Continuous Architecture puts special emphasis on quality attributes (principle 2, Focus on quality attributes, not on functional requirements). In summary, Continuous Architecture does not solve the cost–quality–time triangle but gives us tools to balance it while maintaining quality.
Continuous Architecture Improves Software Quality
Since Continuous Architecture and similar approaches were introduced a few years ago, we have observed that teams leveraging these principles and tools have noticed an increase of quality in the software they are delivering. Specifically, they find that they need to do much less refactoring due to architecture quality issues, such as security, scalability, performance or resilience. Overall delivery timeframes are decreasing because fewer architecture-related defects are found during software testing.
This benefit is even more noticeable in innovation projects and projects involving emerging technologies. Most innovation teams focus on developing minimum viable products (MVPs), giving little or no thought to software architecture considerations. However, turning MVPs into actual production-grade software becomes a challenge. This may lead to a complete rewrite of the MVP before it can be used in production. Innovation teams leveraging Continuous Architecture or similar approaches tend to avoid this problem.
What about Sustainability?
A missing element from the cost–quality–time triangle is sustainability. Most large enterprises have a complex technology and application landscape as a result of years of business change and IT initiatives. Agile and Continuous Delivery practices focus on delivering solutions rapidly, perhaps at the expense of fully satisfying quality attribute requirements. Teams who use Continuous Architecture tackle this complexity by focusing on technical debt and applying the Continuous Architecture principles and essential activities. Continuous Architecture strives to create a sustainable model for individual software applications as well as the overall enterprise.
Sustainability is not only about the technology but also about the people and team. Applying Continuous Architecture principles, specifically principle 6, Model the organization of your teams after the design of the system you are working on, enables a more cohesive team and also significantly increases the ability to sustain the knowledge of the architectural decisions supporting the software product by ensuring that team members have a “full stack” perspective of the system they are delivering.
Teams that apply Continuous Architecture or similar approaches at the individual application level can notice that it enables a more sustainable delivery model and a sound technology platform that is more resilient against future change. Companies leveraging those approaches at the enterprise level can observe an increased efficiency in delivering solutions, a healthier ecosystem of common platforms, and increased knowledge sharing.