Architect Fundamentals



Axioms

  • Views, for working between stakeholders and developers (this can capture user stories / workflows too)
  • Requirements, particularly for non-functional (quality) attributes - this is where tradeoffs happen
  • Evaluation, of the system's ability to deliver on functional and non-functional (quality) attributes
  • Incremental Implementation, especially skeletons, and the ability to sub in for early stubs
  • Information-hiding should encapsulate what can and is likely to change, behind well defined interfaces
  • Separation of concerns allows teams to work independently, producers vs providers often have changes in  one or the other, rarely both ...
  • Caution with dependencies on commercial products, design so that upgrades are straightforward, or alternatives can readily drop in, the architecture can't fail due to a variable outside of your control
  • Proliferate patterns, between components, for developoment/release processes - this will increase reliability, understandability, modifiability and velocity