While working on projects many times, I see either software architecture review is not carried out or not done effectively. Architecture Review or Architecture Evaluation helps ensuring the effectiveness of Architecture.
Architecture Trade-Off Analysis Method (ATAM), Architecture Review of Intermediate Design (ARID) and Software Architecture Analysis Method (SAAM) are some of the well known methods for architecture evaluation.
These methods can also be customized based on the context and the need of the stakeholders.
Many times, I see people discussing on whether to have Architecture Evaluation or not? Sometimes, they try to defer it by giving some of the below reasons,
- Architect is already part of the project so why do we need another architect for architecture evaluation.
- Architecture is not yet complete so wait for the completion. [some times in some of the agile project, if it is incremental then that “completion point” never comes or forgotten.]
- We don’t have time for architecture evaluation.
- What external architect can do with limited info and time, where current architect with so much effort and time investment can’t do?
- So on and so forth…
I don’t say that above points are completely wrong or not valid, but these may be because of some reasons,
- Stakeholders may not have good experience with architecture evaluation in the past.
- Stakeholders don’t see a value due to less understanding about the architecture evaluation process, outcomes and impacts.
- Past evaluations may not be transparent, intuitive or effective.
When you come across the similar situation then it’s time to start spreading the knowledge and convincing the stakeholders about its value to evaluate the architecture, before it’s too late.
In this article, I will try to answer 3 major questions about Software Architecture Evaluation.
- Why do we need Architecture Evaluation?
- When should we do Architecture Evaluation?
- How to ensure that Architecture Evaluation is effective?
Question 1. Why do we need Architecture Evaluation?
Answer: In short below are some of the major reasons,
- Software Architecture is collection of major design decisions, which can’t be reverted/corrected easily so need to ensure the effectiveness of these decisions.
- Assess the impact of design decisions on the System Qualities i.e. Performance, Availability, Security etc.
- Identify Risks and Reduce the Cost/Schedule/Quality impact of ineffective decisions.
- Build confidence on software architecture among stakeholders.
- Verify, whether architecture can support current and future business goals.
Question 2. When should we do Architecture Evaluation?
Answer: There is no specific time to carry out Architecture Evaluation. It can be done any time, sooner is better, but need to consider below points to ensure the timeliness of the review.
- When major Architecturally Significant Requirements (ASRs) are addressed.
- When First Draft is ready.
- When Architecture is finalized.
- Before development starts.
- After every major update in Architecture Design.
Question 3. How to ensure that the Architecture Evaluation is effective?
Answer: Effectiveness of the Architecture Evaluation can be easily ensured by following some basic guidelines.
Below are few guidelines to help in carrying out architecture review, effectively.
- Identify the purpose of the architecture review.
- Follow a structured architecture review approach.
- Full vs Partial Architecture Review
- Understand the time and budget constraints for the review.
- Agreement on the review process, timelines and outcomes.
So, the architecture review is important but review process and predictability on review outcomes is more important for the effectiveness of the review.
Below are few software architecture evaluation methods, which can be referred for the software architecture evaluation or review. These methods provide guidance and structured approach, which can be optimized to address specific need of the organization or software architecture review.
- Software Architecture Analysis Method (SAAM)
- Architecture Trade-Off Analysis Method (ATAM)
- Architecture Review of Intermediate Design (ARID)
Here is a good book to understand above methods.
If you want to get basic idea about the Software Architecture Design, please refer to my previous post – Process to Design an Architecture.
Thank you and Happy Reading !