My Stuff

2010 Conferences

OSGi DevCon @ JAX London

February 23 - Keynote titled OSGi in the Enterprise: Agility, Modularity, and Architecture’s Paradox

EclipseCon

March 22 - 25 - Tutorial on Modular Architecture

Tweets @ Twitter

RT I'm looking for good practitioner case study on BPM, speaking opportunity for right case. Takers? Suggestions? #bpm /via @bmichelson 15 hrs ago

"AT&T ... recently notified Sling Media - as well as Apple – that the optimized app can run on its 3G network" <- http://bit.ly/byqkeM #win 3 days ago

Don't get too happy using iPhone location based service primarily for ads...Apple isn't going to let you. http://bit.ly/bFFW9y 3 days ago

RT #lambdalounge will host a great talk by @mstine on Polyglot OSGi tomorrow Thursday Feb. 4th! http://tr.im/LXMz /via @puredanger 5 days ago

The XO-3 concept. If you liked the iPad, you'll dig this. If you didn't like the iPad, you'll dig this! http://bit.ly/4SyeYL 1 week ago

LinkedIn Profile

The opinions expressed on this site are my own, and not necessarily those of my employer.

Agile Architecture, Lean Principles

Filed Under Agile, Architecture & Design, Development, OSGi |  

Most of my discussions surrounding agile architecture have been focused on exploring how modularity helps increase architectural agility. I claim that modularity is a required (and to this point, missing) aspect of agile architecture. The basis for this claim follows:

  • Architecture is design, but not all design is architecture (ala Booch).
  • Design is architecture if the design is architecturally significant. That is, if it’s hard to change.
  • The goal of architecture is to eliminate the impact and cost of change.
  • The way to eliminate the impact and cost of change is through flexibility.
  • With flexibility comes complexity. We must therefore strive to increase flexibility while taming complexity.
  • Modularity helps us identify where we need flexibility by understanding the joints of the system where flexibility is necessary.

Without modularity, we can’t identify the joints so it’s more difficult to understand where we need the flexibility. My posts titled Modularity & Architecture and Modularity by Example show visual examples comparing designs that are isolated and insulated to designs that span the joints of a system. I’ve also devoted extensive discussion to these ideas in a number of other posts, which I summarize in my Agile Architecture Presentation post.

Lean Principles

Recently, I’ve been spending more time exploring lean software development principles and their relationship to agile architecture, and the best place to start when examining lean is with the Poppendiecks. I’m fascinated by the synergy that exists between the lean principles and agile architecture. In fact, when reading the second chapter of their book, “Implementing Lean Software Development: From Concept to Cash“, I was pleasantly surprised by an interesting discovery.

It seems that a study of software development practices by Harvard Business School professor Alan MacCormack revealed four fundamental practices that lead to successful software development. These include releasing early, continuous integration, experience and instinct, and a modular architecture. So it seems I’m not alone in feeling modularity is a critical component of agile architecture. But the thrust of the discussion comes later on in Chapter Two, when speaking of deferring commitment.

Deferring Committment, Reversibility, and Eliminating Architecture

Deferring commitment focuses on two fundamental factors - reversibility and irreversibility. In general, reversible decisions are those that can be changed while irreversible decisions are those that cannot be changed. We should strive to make irreversible decisions at the last responsible moment. For it is at this moment when we possess the most knowledge that will allow us to choose the most viable option. But we are also advised that, and I quote:

“First and foremost, we should try to make most decisions reversible, so they can be made and then easily changed.”

For me, this captures the essence of eliminating architecture. If we are able to take a seemingly architecturally significant challenge and make it reversible, then we have effectively minimized the impact and cost of change to a point where change is no longer architecturally significant.

Going forward, I intend to more fully explore additional synergies between lean software development principles and agile architecture.

Comments

2 Responses to “Agile Architecture, Lean Principles”

  1. The Use/Reuse Paradox : Software & Technology @kirkk.com on October 7th, 2009 5:07 pm

    [...] to minimize the architectural significance (impact and cost) of change by making our designs as reversible as possible. Reversibility doesn’t always mean great flexibility, though. Sometimes it means [...]

  2. 3 Pillars of Architecture : Software & Technology @kirkk.com on January 27th, 2010 4:43 pm

    [...] did talk a little about these ideas in Agile Architecture, Lean Principles. But certainly more needs to be fleshed out surrounding the process pillar. This tends to be where [...]

Leave a Reply