Beyond Software Architecture

Creating and Sustaining Winning Solutions

by Luke Hohmann

Architecture has become a very slippery word in the
software business. It's hard to come up with any solid
definition of what it means. I see it as a fundamentally
subjective term - when people describe their software
architecture they select the important parts of their systems,
how these parts fit together, and the key decisions they made
in designing their systems. Architecture is also seen as a
technical issue, with the implication that the key decisions
that need to be made are technical decisions.

In talking with Luke over the last few years I've really
enjoyed the fact that he talks about the kinds of things that
are often sadly omitted from most architectural discussions -
yet are every bit as important. Such things as the marketing
view of a system, licensing terms, branding, deployment,
billing. All of these issues have important technical and
business implications. Senior technical people need to think
about this stuff, or otherwise a technically capable system
could fail to be good business decision.

Many of these issues matter most to people who sell
software to other entities. But even if you're an architect of an
in-house IS shop these issues are just as likely to trip you
up. Licensing agreements with your vendors can make a big
difference to the costs of the software you deploy, billing
may become important if your business decides it wants to
introduce a charge-back scheme, branding helps affect your
visibility to the business side of your company.

Luke writes from the perspective of someone who has dealt
with both the technical and business sides of software
development. It's a duality I find appealing because it's led
him to ponder issues that often don't get talked about. He
shows that it's often the things you don't think to worry
about that hurt you the most and in the process provides the
advice you need to deal with them. As a result this book is a
much needed complement to the technical aspects of software
design.