Note that all blogs have been migrated to

What is hard about software architecture

Jul 5, 2007 | George Fairbanks

Here’s my initial list of things that are hard about software architecture. Many are open research questions.

  • Non-static component configurations. That is, dynamic architectures.
  • Bridging objects to components. Each has a different vocabulary and communication idioms.
  • Cost-benefit analysis. How much benefit do you get from doing some architecture modeling, and when should you stop?
  • Modeling of connectors and ports. When to use an N-way connector? When to attach two connectors to the same port?
  • Refinement. Code-architecture unity / correspondence / assurance.
  • Frameworks.
  • Multiple languages (especially scripting languages) in one system.
  • Evaluating alternative architectures.
  • Choosing which qualities to promote to the architectural level.
  • Using architecture models to discover problems in advance, not just document designs after the fact.
  • Shoehorning your abstractions into {component, connector, port, role}
  • Behavior. More specifically, how to abstractly model architectural behavior without continuing on into detailed behavior descriptions.
  • Designs or patterns that span components.

Why Rhino Research?

Rhino Research is devoted to improving the state of software practice. We do this by using our industrial and academic roots to give you the freshest and most practical advice in classes and during consulting engagements.

Our clients

We have taught classes for many kinds of clients, ranging from regular information technology shops, to huge internet shops, to NASA.


subscribe via RSS


Rhino Research is a training and consulting company specializing in software architecture

124 W 60th St #37L
New York, NY 10023