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.


George Fairbanks is a software developer, designer, and architect living in New York city


+1-303-834-7760 (Recruiters: Please do not call)
Twitter: @GHFairbanks