Top positive review
3 of 3 people found this helpful
The Etymology of Software Architecture
on September 30, 2003
I found this book so mesmerizing that I read it twice. During the first pass, I was surprised that the book was so philosophical and poetic in describing architecture. I expected something more technical. Later during the second pass, my goal was to find derivatives and analogies in software architecture. Based on what I found, I think every software architect would enjoy this book.
The writing style that I noticed in my first read of the book made me feel like I was reading an architecture bible. I hesitate to describe the book as religious, but the book's description "the power to make buildings beautiful lies in each of us already" and the description of the word "alive" giving architecture "the quality without a name" triggered an epiphany when recalling that the Bible says "In the beginning God created the heaven and the earth." and, "So God created man in his own image." This is why I'd say this book has a primal, sacred aspect, and this is why we like to build. Additionally, the book especially moved me so my mind's eye was opened to see "alive" patterns and to think about the morphology of architecture filling voids and generating towns.
On the second pass of reading, I was struck by this software architecture analogy in the table of contents: "16. Once we have understood how to discover individual patterns which are alive, we may then make a language for ourselves for any building task we face. The structure of the language is created by the network of connections among individual patterns: and the language lives, or not, as a totality, to the degree these patterns form a whole." Could this be the guidebook for designing enterprise software architecture?
Obviously this book was the inspiration for the philosophy and vocabulary for software architecture, and I thought some of the following excerpts were noteworthy paradigm shifts.
"The patterns are not just patterns of relationships, but patterns of relationships among other smaller patterns, which themselves have still other patterns hooking them together---and we see finally, that the world is entirely made of all these interhooking, interlocking nonmaterial patterns." This sounds like the difference between patterns of software architecture and object-oriented software design patterns.
"Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution." Deja vu for software patterns.
"You may be afraid that the design won't work if you take just one pattern at a time...There is no reason to be timid...The order of the language will make sure that it is possible." Likewise in software architecture design, as one design pattern is considered at a time to see how it fits needs into the large picture of design. If this pattern is later deemed to be dead, it can be replaced by an "alive" design pattern.
"Next, several acts of building, each one done to repair and magnify the product of the previous acts, will slowly generate a larger and more complex whole than any single act can generate." This correlates to software refactoring.
"It is essential, therefore, that the builder build only from rough drawings: and that he carry out the detailed patterns from the drawings according to the processes given by the pattern language in his mind." When I read this, I thought about the metaphor to the software architect's vision and design. The software architect's design needs to be abstract enough to accommodate change easily, but yet simple enough so software programmers can understand it, finish the detailed component design and build the component to fit the architectural whole.