DZone
Agile Zone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
  • Refcardz
  • Trend Reports
  • Webinars
  • Zones
  • |
    • Agile
    • AI
    • Big Data
    • Cloud
    • Database
    • DevOps
    • Integration
    • IoT
    • Java
    • Microservices
    • Open Source
    • Performance
    • Security
    • Web Dev
DZone > Agile Zone > Agile Architecture, Lean Principles

Agile Architecture, Lean Principles

Kirk Knoernschild user avatar by
Kirk Knoernschild
·
Sep. 23, 09 · Agile Zone · Interview
Like (0)
Save
Tweet
9.40K Views

Join the DZone community and get the full member experience.

Join For Free

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.

From http://techdistrict.kirkk.com

Architecture agile Lean (proof assistant) Software development Lean software development

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Component Testing of Frontends: Karate Netty Project
  • What Is High Cardinality?
  • What Developers Need to Know About Table Partition Pruning
  • Event-Driven Hello World Program

Comments

Agile Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • MVB Program
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends:

DZone.com is powered by 

AnswerHub logo