For almost eight years I wrote the column “On Architecture” for IEEE Software, a journal of the IEEE Computer Society, wherein I explored themes associated with the Handbook of Software Architecture. You can listen to the podcast of each column here.
- On Architecture
My inaugural column discussing the growth of software architecture and the Handbook of Software Architecture
- The Accidental Architecture
The differences between intentional and accidental architecture
- From Small To Gargantuan
The different forces at work that act to make systems so complex
- Goodness of Fit
After a wide-ranging conversation with John Backus, we examine that, for a given domain, there are forces at play that are best resolved by a common architectural pattern that allows variants
- It Is What It Is Because It Was What It Was
Software systems and their same basic architectural patterns
- Speaking Truth To Power
The pitfalls, promises, complexities, and contradictions of speaking truth to power
- The Irrelevance Of Architecture
The architecture of a software-intensive system and why it’s largely irrelevant to its end users
- The Well-Tempered Architecture
By comparing musical and software patterns, we clarify the purposes and forms of patterns
- The Economics of Architecture-First
How an architecture-first approach appears to be a reflection of sound development practices
- Artifacts And Process
How comparison of building architecture and software architecture reveals the differences, congruences, and commonalities between the two
- Morality And The Software Architect
There is a moral dimension to developing software, another force to consider when engineering a reasonably optimal software-intensive solution
- Tribal Memory
How a software development organization can preserve its stories in a system’s written architecture and make evolving that system materially easier
- Architctural Organizational Patterns
Five overarching organizational patterns
- Measuring Architectural Complexity
Complex software-intensive systems and how they become increasingly irregular and thus chaotic over time
- Nine Things You Can Do With Old Software
What one can do intentionally with legacy code, from abandonment to evolution and many things in between
- Back To The Future
Over the past 25 years, we’ve made great advances in tooling, technologies, and techniques that make software design more concrete, but design still requires careful thought
- Not With A Bang
Two patterns and one antipattern that can help architects address the systemic issues that, left unattended, can lead software-intensive systems to collapse
- The Resting Place Of Innovation
Successful software-intensive systems are generally quite innovative, as evidenced by their success; although their architectures will, over time, converge to a stable point, this does not mean that innovation stops; rather, for any such system to remain vibrant and relevant, innovation much proceed simultaneously at many levels
- Like A River
The metaphor of software development as building construction is an old one; here is a fresh perspective, considering the life cycle of a software-intensive system as a river
- The Defenestration Of Superfluous Architectural Accoutrements
Simple architectures have conceptual integrity and are better than more complex ones; continuous architectural refactoring helps to converge a system to its practical and optimal simplicity
- Software Abundance In The Face Of Economic Scarcity, Part 1
Software-intensive systems are an inescapable and necessary element in helping us operate, innovate, and even thrive in the face of lean economic times
- Software Abundance In The Face Of Economic Scarcity, Part 2
Software-intensive systems are an inescapable and necessary element in helping us operate, innovate, and even thrive in the face of lean economic times
- Architecture As A Shared Hallucination
Architecture is just a collective hunch, a shared hallucination, an assertion by a set of stakeholders on the nature of their observable world, be it a world that is or a world as they wish it to be; we examine the technical and social factors that give rise to the value of architecture-as-artifact
- Enterprise Architecture And Technical Architecture
Enterprise architecture and technical architecture are related yet different: whereas EA focuses on the architecture of a business that uses software-intensive systems, TA focuses on the architecture of the software-intensive systems that are used by a business to makes its mission manifest
- Architecture Reviews
An architectural review serves several purposes: to gain confidence in the design, to reason about alternatives, to attend to architectural rot; the process of such a review involves the interplay of design decisions, scenarios, and forces on the system
- Systems Architecture
All complex systems fail, by some measure of the word “fail,” with consequences ranging from benign to catastrophic; here we examine triage in the face of a failing system
- An Architectural Oxymoron
To some, the phrase “agile architecture” is an oxymoron; here we explore why we view the meaning behind the phrase to be a very good idea, helping a team attend to building the right software at the right time with the right amount of resources
- The Elephant And The Blind Programmers
The architecture of a software-intensive system is best reasoned about through multiple, nearly independent views; here we examine Kruchten’s 4+1 model view in a new light
- Draw Me A Picture
How we can reconcile the need for drawing diagrams and visualizing ultra-large complex systems
- Dominant Design
The architecture of innovative software-intensive systems experience many periods of growth and collapse; fighting this reality wastes energy; ignoring it is even more disastrous
- The Architect’s Journey
Architecting a software-intensive system encompasses technical elements and social considerations; most interesting systems start small and focus on technical concerns, but once they become economically significant, social issues begin looming large
- Soul Of A New Watson
Watson, IBM’s reasoning system, is both new and exploratory, and managing its architecture has considerable payoff
- Unintentional And Unbalanced Transparency
Security and privacy impact each other, and saying they are alternatives is a false dichotomy; architecting a system that attends to both security and privacy is possible and desirable, yet there are often unintended, unexpected consequences in doing so
- The Architecture Of Small Things
There is complexity, and then there is organized complexity; pure complexity is chaotic; organized complexity is full of patterns; naming these patterns and respecting their intention is the essence of architecture
- The Professional Architect
All complex systems grow from smaller systems that work in the first place; all complex systems will fail, in one way or another; between the small and the large, between the perfect and the flawed, there is some person or persons who had a vision for the shape of things to come; we call such people “architects”
- Facing Future
Every successful software-intensive system comes to a point where placing a pile of your best developers at one end of a lever can no longer move the world; crossing that point while preserving the values and tribal memory of your organization’s development culture requires serious adult supervision
- All Things Seen
Considerable literature exists on the public face of civil architecture, but now we are coming to live in structures made not of atoms, but of bits; we ponder how these things unseen may become part of the fabric of our lives