Phase 1 is the first of two phases dedicated to the evaluation of the architecture. In this phase, the evaluation team meets with the project decision makers. Phase 1 consists of the following steps:
- Present the ATAM
- Present the business drivers
- Present the architecture
- Identify architectural approaches
- Generate the quality attribute utility tree
- Analyze architectural approaches
Step 1 – Present the ATAM
In this step, the evaluation leader explains the ATAM to the project decision makers. Any questions about the ATAM can be answered during this step.
If everyone in the meeting is already familiar with the ATAM, this step could potentially be skipped. For example, a development team may go through the ATAM phases and steps multiple times as it iteratively designs the architecture. If the team consists of the same members, it may not be necessary to go over the ATAM each time. However, if any participants in a given iteration are new to the method, either this step should not be skipped or there must be a suitable alternative for participants who are new to the method to learn it.
Step 2 – Present the business drivers
This step is used to present the software system from a business perspective to the various participants. The business goals, functionality, architectural drivers, and any constraints will help everyone to understand the overall context of the software system. This information is presented by one of the project decision makers.
Step 3 – Present the architecture
The software architect presents the architecture to the participants in this step. The software architect should provide sufficient detail about the architecture so that the participants can understand it.
The level of detail needed in the presentation can vary from project to project. It really depends on the quality attribute scenarios of the system, how much of the architecture design is complete/documented, and how much time is available for the presentation. In order to be clear what level of detail is expected, the software architect should use phase zero, when expectations are set, as an opportunity to ask for clarification.
Step 4 – Identify architectural approaches
By the time this step takes place, the participants should be familiar with the design concepts used in the architecture. This includes software architecture patterns, reference architectures, tactics, and any externally developed software. This information was available in Phase 0 when the architecture documentation was reviewed, as well as in the prior step (Step 3 – Present the architecture) when the architecture was presented. This step is to simply record the design concepts used so that the list can be used in a subsequent step for analysis.
Step 5 – Generate the quality attribute utility tree
Quality attribute scenarios can be represented in a utility tree, which represents the usefulness (utility) of the system. Utility trees help participants understand the quality attribute scenarios.
The utility tree is a set of detailed statements about the quality attributes and scenarios that are important to the software system. Each entry in the tree begins with the quality attribute itself (for example, maintainability, usability, availability, performance, or security), followed by a subcategory that breaks it down with more detail, followed by a quality attribute scenario.
For example, under a software quality attribute such as Security, we may have multiple subcategories ("Authentication" and "Confidentiality"). Each subcategory will have one or more quality attribute scenarios:
Quality attribute | Subcategory | Scenario |
Security
|
||
Authentication
|
||
User passwords will be hashed using the bcrypt hashing function.
|
||
Confidentiality
|
||
A user playing the role of a customer-service representative will only be able to view the last four digits of a customer's social security number.
|
||
A user playing the role of a customer-service manager will be able to view a customer's entire social security number.
|
||
Performance
|
||
Etc.
|
In addition to identifying the quality attribute scenarios, the project decision makers should prioritize them. As with the SAAM, a voting scheme can be used to allow participants to prioritize the scenarios.
Step 6 – Analyze architectural approaches
The quality attributes that were determined to be of the highest priority in Step 5 – Generate the quality attribute utility tree, are analyzed, one by one, by the evaluation team in this step. The software architect should be able to explain how the architecture can satisfy each one.
The evaluation team looks to identify, document, and ask about the architectural decisions that were made to support the scenario. Any issues, risks, or tradeoffs with the architectural decisions are raised and documented. The goal of the team is to match architectural decisions with quality attribute scenarios and determine whether the architecture and those architectural decisions can support the scenarios.
By the completion of this step, the team should have a good understanding of the overall architecture, the design decisions that were made, the rationale behind the decisions, and how the architecture supports the main goals of the system. The team should also now be aware of any risks, issues, and tradeoffs that may exist. The completion of this step signifies the end of Phase 1.