Saturday, January 6, 2007

The Architecture Process

Here are the steps that I take, that help me define the architecture for any solution. Previously, I had attended a Software Architecture Workshop by Bredemeyer consulting, which helped me validate my ideas and helped me better structure the process.


  1. Understand the history, the current context, and the future direction of the solution space. This helps me better understand the motivation behind why a solution is required.
  2. Understand the available set of requirements and validate them against the ideas gathered in step 1.
  3. Once I have a good understanding of steps 1&2, I establish the architectural strategy by defining the key principles, concepts, style, etc that would guide the architecture. These aspects of the strategy are then validated through brainstorming sessions and prototypes.
  4. Identify the functional requirements that are architecturally significant. This helps me focus my attention on the key areas of the solution. The other thing that I have realized from experience is that it helps in the long-term manageability of the solution, if the structural approach were consistent across both architecturally significant and non-significant requirements.
  5. Identify the non-functional requirements. I usually add this information to the corresponding use cases, and then trace them all the way down to the design documents.
  6. Develop a conceptual architecture, to identify the various systems and sub-systems, their responsibilities, and their collaborations. This is again validated either through prototypes or through brainstorming sessions.
  7. Define the logical architecture, to come up with the various interface specifications, and validate them.
  8. Have the team build a reference implementation of the architecture.
  9. Analyze the non-functional requirements, to derive the key characteristics of the run-time environment. This would relate to high availability, failover, load-balancing, number of processes, etc.
  10. Incorporate any feedback from the development team, into the architecture. These set of activities fall under architecture change management.

No comments: