Papers

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