Tuesday, August 30, 2011

The Permanence (or Not) of Software Architecture

There is a series of rants in software blogs about software architecture not being the same as building architecture. (http://bexhuff.com/software-architecture-is-not-building-architecture , http://triebert.nl/downloads/072005_swarm_concluding_paper.pdf ). The basic theory is the buildings are permanent where software is ever-changing.

I’m reading a book that throws this theory on its head. How Buildings Learn is subtitled “What happens after they’re built”. I live in a section of Massachusetts that has many old mills. The mills, beautiful sturdy buildings were falling down. An effort was made to rework them and now we have condos, restaurants, and businesses in these beautiful red brick buildings.

And although I agree that software architects are not building architects, we’ve been building for thousands of years and we’ve been creating software for 60 years at most. The book’s author agrees with the software people that buildings are not designed to adapt, but all buildings “adapt anyway, however poorly, because the usages in and around them are changing constantly.”

This line could also be applied to software. How many cases can you think of where the software was designed to do one thing but was called on to do another in later revisions? My team spends a lot of time figuring out what will be or could be desired in the future so we don’t break any needed extensibility. This is the Open-Closed Principle which states: Software entities like classes, modules and functions should be open for extension but closed for modifications.

Several famous building architecture quotes from the book can be examined in the software world. “Form ever follows function”, said by Lois Sullivan, a Chicago high rise designer in 1896 implies that we can always determine function. In software we can’t. In fact with Agile processes, we focus only on the needs at hand, not what could be (because it may never come to be).

Winston Churchill said “We shape our buildings, and afterwards our buildings shape us”. The author points out that this goes on forever. Yes we shape our buildings/software, then they shape us, and then we shape them again, etc. This reminds me of putting software in the marketplace, getting feedback, and then reworking the software to meet the needs of the customer.

“Flow, continual flow, continual change, continual transformation” is not part of the Agile Manifesto although it sounds like it could be. It’s how a Pueblo Indian, Rina Swentzel, describes her home village.

The book points out that more is being spent on changing buildings than building new ones. Most software engineers I know work on older systems modifying them versus building something brand new. The changes in old buildings are caused by three forces: technology, money, and fashion. In software, technology is a huge force in the design. No one would argue that. Money/ schedule/ resources also have more effect on software architecture than anything else in my experience. How many times have you not been able to do it right because of time/money/resource constraints?

Fashion is defined in the book as “non-functional stylistic dynamism”. There are certainly these pressures on software architecture – government regulations, software processes that go in and out of fashion, design patterns, etc. all effect software.

Three types of buildings are mentioned in the book – commercial, domestic, and institutional. I think there are also three types of software bodies – web, start-up and/or open-source, and larger companies/institutions. Commercial/web applications adapt quickly and radically due to intense competitive pressure. Domestic buildings/ start-up code bases or open source change steadily due to direct feedback from the family/customers and designers. Institutional buildings/software bases are slower to change there is reluctance and delay but they do eventually change.

But what in a building or software architecture project actually lasts or does not change? What makes it become loved? In a building, it is age. We have a module in our system that has been around since the beginning and has not changed much. I’m not sure it is loved or admired. But I secretly admire it - there isn’t much in the software world that survives the way an old grand building survives. The module is simple, extensible, and easy to learn.

So while I’ve always believed that Software Architecture is not permanent, I’m beginning to think we can learn more from the building architects. I will be blogging further abut many of the chapters in this book which I found on: http://www.accreditedonlinecolleges.com/blog/2011/20-educational-architecture-books-anyone-can-enjoy/


  1. How strange... Not 30 minutes ago I quoted Bex Huff on my blog, in relation to a post by HBR blogger Daniel Isenberg -- largely an exercise in brainstorming on the issue of IT architecture and the evolution of complex systems. With regard to my quote from Bex, I think he makes sense, in a way that doesn't conflict at all with your point. After all, the process you describe is evolutionary, no? A structure that started out as one thing becomes something else through adaptation. But just as often , one building is demolished to be replaced by another, arguably designed for a different purpose.

    Anyway, I welcome your thoughts on my post: http://blogs.oracle.com/archbeat/entry/it_architecture_complex_systems_and

  2. Thanks for sharing your info. I really appreciate your efforts and I will be waiting for your further write ups thanks once again.
    Vee Eee Technologies

  3. Hi...Mrs Christine, grow up of software architecture is very fast and those help human to make drawing and make somethink in engineering and other sector. i think This is a smart blog. I mean it. You have so much knowledge about this issue, and so much passion. You also know how to make people rally behind it, obviously from the responses. Youve got a design here thats not too flashy, but makes a statement as big as what youre saying. Great job, indeed.makeityourring diamond engagement rings

  4. I have read this post. collection of post is a nice one ..that am doing website designing company chennai india and website development company chennai india. That I will inform about your post to my friends and all the best for your future posts..

  5. You'll currently recover knowledge from pen drive easily. Pen drive brings us unpredictable risk along with great convenience. the positioning is often accustomed to save lots of our handy files in a very pen drive rather than in an exceedingly laptop.
    pen drive data recovery software

  6. Thanks for the valuable information and insights you have so provided here... Very helpful information particularly the last part I care for such information much. I was seeking this particular info for a long time. Thank you and good luck.free divx converter | dvd to ipad mac convert pdf to ipad |DVD copy software

  7. I wonder why other professionals don’t notice your website much m glad I found this.

  8. I consider this the finest blog I have read all this hour.
    price per head software

  9. There are many kinds of jewelry and watches, necklace, bracelet, earring, bangle, ring, barrette and so on. So, the display stands also have various types and styles. And you can get them form http://www.jianmeilai.com/jewelry-watch-displays/

  10. Hi!This is very useful post for everyone. Thank you so much this post.Just about everything looks good displayed.

    Total video downloader for Mac

  11. Great information to say the least. I really do appreciate everything so much from this great website.
    Software outsourcing company India

  12. I'm glad that I found your site. Very helpful information. I will be definitely waiting for your further write because you created a good peace of content. I will certainly share it with my friends. Greetings from the anegis :D