The key to software architecture

August 15 · 2 mins read

The secret to software architecture: Don’t cross the streams. — Uncle Bob Martin, on Twitter

Software architecture is the art of drawing lines that I call boundaries. Those boundaries separate software elements from one another, and restrict those on one side from knowing about those on the other. Some of those lines are drawn very early in a project’s life—even before any code is written. Others are drawn much later. Those that are drawn early are drawn for the purposes of deferring decisions for as long as possible, and of keeping those decisions from polluting the core business logic.

— Uncle Bob Martin, “Clean Architecture: A Craftsman’s Guide to Software Structure and Design”

I have also blogged about this a few years ago, here.

[Software] Architecture is the art of drawing lines, with the interesting rule that once you have drawn the lines, all the dependencies that cross that line go in the same direction.”

— Uncle Bob Martin, “Architecture: The Lost Years (Ruby Midwest 2011)”

But of course, knowledge is only potential power, so… sad life… but at least now we can have a direction…


In the video “Architecture without Architects” by Erik Dörnenburg, it was suggested that “Town Planning” or “Gardening” are better metaphors than “Architecture” for this activity in software we now refer to as “architecture”