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.
- 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.
- Understand the available set of requirements and validate them against the ideas gathered in step 1.
- 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.
- 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.
- 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.
- 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.
- Define the logical architecture, to come up with the various interface specifications, and validate them.
- Have the team build a reference implementation of the architecture.
- 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.
- Incorporate any feedback from the development team, into the architecture. These set of activities fall under architecture change management.
No comments:
Post a Comment