2025-09-10
We’ve mentioned a few times that what matters is who the system is for, not what the system does. Of course, there are multiple different sets of interested parties. These are the stakeholders.
Back to our Blue Bridge example. Who are the stakeholders in this project?
| Role | Concerns | Instances |
|---|---|---|
| Assessors | Oversee the system’s conformance to standards and legal regulation | |
| Communicators | Explain the system to other stakeholders via its documentation and training materials | |
| Developers | Construct and deploy the system from specifications (or lead the teams that do this) | |
| Maintainers | Manage the evolution of the system once it is operational | |
| Production Engineers | Design, deploy, and manage the hardware and software environments in which the system will be built, tested, and run | |
| Suppliers | Build and/or supply the hardware, software, or infrastructure on which the system will run | |
| Support Staff | Provide support to users for the product or system when it is running | |
| System Administrators | Run the system once it has been deployed | |
| Testers | Test the system to ensure that it is suitable for use | |
| Users | Define the system’s functionality and ultimately make use of it |
Rozanski and Woods book on architecture
Let’s fill that in for the Blue Bridge example.
Why do we care about who the stakeholders are? These are the people with varying levels of need and interest in a system.
At the least, we need to think about who the documentation stakeholders are. If we are doing a system design, we need to think about who should be consulted.
And at the end of the project, we evaluate success with respect to stakeholders.
A good architecture is one that successfully meets the objectives, goals, and needs of its stakeholders. (Rosanski and Woods)
Some stakeholders are more important than others. e.g., mgmt vs end users.
Stakeholder users wanted the search function to find the result in less time (it was taking minutes). They were used to Google speed (milliseconds), and yet, solving these problems turned out to be very complex.
Our documentation needs to do different things for different people. Who the stakeholders are will help us determine that.
Let’s classify requirements along the lines of Martin Glinz’s paper “On Non-Functional Requirements”.
User stories help capture the functionality the software should provide.
User stories are a ~3 sentence description of what the software should do
As a student, I need to login to Gitlab in order to finish the assignment
User Story also
INVEST (for a good user story): Independent, Negotiable, Valuable to users or customers, Estimable, Small, Testable
As a job company, I can use my credit card so I can pay for postings. (A job company can pay for posting with a credit card.)
As a Creator, I want to upload a video from my local machine so that any users can view it.
Note: Accept Visa or MC. Consider Discover card.
Let’s look at an example with Modifiability.
The Architecturally Significant Requirements are the ones with wide impact on the system.
The first step is to find the ASRs.
For our purposes we will make the simplifying assumption that they are most often related to quality attributes (Modifiability, Performance, Usability, etc).
We tend to focus on the features and functions clients want, and leave quality to the end.
In order to make our quality requirements more tangible, we will work on scenarios that test our system qualities.
Quality attribute utility trees: mechanism for translating the business drivers of a system into concrete quality attribute scenarios.
A utility tree shows the prioritization of quality attribute requirements, realized as scenarios.
The utility tree serves to make concrete the quality attribute requirements, forcing architect and customer representatives to define relevant quality attributes precisely.
Those scenarios rated high in business importance and high in technical difficulty provide the most critical context against which the architecture can be analyzed.
These scenarios are candidates for the ASRs.
Utility trees are specific to the project you are working on.
One way to figure out a Utility Tree is to conduct a workshop with stakeholders to elicit the important business drivers/goals, figure out the proposed architecture, and identify the key architectural drivers.
An architecture driver is a key decision that will influence what the system can and cannot do.
Ideally, we would get a long presentation from a knowledgeable business person for the first, the architect would show us the plan, and then all of the stakeholders would help prioritize key scenarios. However, we don’t have any of that.
Our business drivers will have to come from your analysis of the stakeholders and the system. And the architecture decisions are things you will have to work out.
We are going to walk through a quick utility tree exercise.
As I briefly state the business case, write down things you feel are important about this system wrt architecture.
As I sketch the architecture approach, write down the key business goals and quality attributes you hear being mentioned (perhaps implicitly; remember the project will not necessarily use the same jargon).
I sketched out a brief runtime architecture diagram.
To help identify the risks and drivers of this system, I want you to formulate some exposition questions you would have if you were helping to analyze this approach for its technical soundness. What questions would help find potential problems and omissions?
In groups of 3-4,
In your group, compare notes on the last two presentations and identify the key architecture drivers you think this new system has.
For each of the drivers, propose a scenario that will show how well the architecture drivers will support the scenario. Scenarios are intended to map to (satisfy) business drivers.
Scenarios have these parts:
| Aspect | Details |
|---|---|
| Scenario Name | |
| Business Goals | |
| Quality Attributes | |
| Stimulus | |
| Stimulus Source | |
| Response | |
| Response Measure |
We then worked out a scenario in class to show the template.
The textbook has good examples on the inside front cover.
A QAS is like an acceptance test or system test. It allows you to see to what extent the proposed design will meet the scenario.
Once you have a few scenarios, you can begin to group them by quality attribute.
Furthermore, we need to prioritize our scenarios because we can’t fix them all.
We want to give the stakeholders the 5 or 6 scenarios that we feel (that is, the stakeholders and the review team) are most important to the business (H), and most difficult to fix or implement (H).

Neil Ernst ©️ 2024-5