Continuous Architecture in Practice

Murat Erder, Pierre Pureur, Eoin Woods
Pearson, 2021

Continuous Architecture is an approach to software architecture that embraces uncertainty and was developed to support agile software development. Simply put, it posits that architecture cannot be an activity that happens first on any project that is iterative in nature. Rather, it has to happen continuously and in parallel with other activities.

In this world of agile software development, the authors assert that architects should focus on quality attributes over functional requirements. (This is principle four of the six principles that define Continuous Architecture.) The point here is that it’s the quality attributes that drive many architectural decisions, even as functionality may evolve. I think that is overstated; even quality attributes can’t be addressed without knowing if you’re building a financial exchange or a word processor. But if one assumes that the domain of the system is known, then the emphasis on maintaining quality seems wise.

In the second chapter, the authors offer guidance on activities that architects should undertake. I was pleased to see a mention of an architectural backlog, which is an excellent but under-utilized practice. I was disappointed to see technical debt promoted as an equally useful too, as I continue to believe that technical debt is at odds with agility.

The bulk of the book is then structured as guidance on applying these principles to some quality attributes: security, scalability, performance, and resilience. These are sandwiched between chapters on data architecture and integrating new technologies. As with so many current books on the subject, it assumes cloud-hosted services accessed via a web application. Obviously, that describes an awful lot of software being built these days. However, it doesn’t describe all of it, and anyone working on operating systems, desktop applications, car infotainment systems, and so on will find little help here.

Because the authors focus on connecting these architectural concerns to agile practices, the architecture and technology discussions themselves lack depth. (I lost track of the number of times the reader is told a topic isn’t to be covered for lack of space!) For a more comprehensive treatment of architecture, including quality attributes, read Software Architecture: Foundations, Theory, and Practice. For a still comprehensive but more practical and cloud-focused treatment, see Fundamentals of Software Architecture: An Engineering Approach. For data specifically, there is simply no substitute for Designing Data Intensive Applications. But if your interest is on the interplay between architecture and continuous development practices—​and perhaps if you’ve already read at least one of these books—​then you will find the material here relevant.



© 2024 by Oliver Goldman