Software architecture is taking a bad rap with the agilists and other proponents of agile and lean software development approaches: “BUFD (big up-front design);” “YAGNI (You Ain’t Gonna Need It);” “massive documentation;” “smells of waterfall;” these are common claims made about software architecture when it is portrayed as a typical nonagile practice. However, in certain classes of systems, ignoring architectural issues for too long causes teams to “hit a wall” and collapse from a lack of architectural focus. But isn’t “Agile architecture” a paradox or an oxymoron? Aren’t they two totally incompatible approaches?
In this lecture, we will review the real issues at stake, move past the rhetoric and posturing, and show that the two cultures can coexist and support each other, where appropriate. We define heuristics to scope how much architecture a project really needs, attempt to assign actual value to an otherwise invisible architecture, and review management and development practices that do work in the circumstances where some significant architectural effort is needed, when you are actually going to need it.