Week2 ATAM and views #27
Replies: 10 comments
-
[Architecture views] Hello. [Which structures?] [Architecture view] perspectives, you can relate that to different views. [Boxes and lines in architecture diagrams] [Views suggested by different authors] [What is the “right” set of views?] In this course. [Categories of views] All right. [Module vs component] Exists inside different components. [Architecture style and architecture pattern] [Types of views and architecture styles] E F G and H are view classes. |
Beta Was this translation helpful? Give feedback.
-
Hello. [Agenda] [Module views] So in general. [The Unified Modeling Language] All right. documentation are familiar with. OK. [UML history] Bit of history. 0 in 2004, they changed, they added diagrams. [UML extension mechanisms] [UML in module views - elements] [UML in module views - relations] All right. [Agenda] [Module decomposition view] [Module decomposition view - example 1] OK. apply the basic concept of refinement or view refinement, if you will. And that's what we're going to do here. [Module decomposition view - example 2] That's what you have in this other diagram. [Module decomposition view - example 3] [Module decomposition view - example 4] This is a more recent example. these boxes, I will see for the details and sub sub modules, sub sub sub modules and so [Questions? Paulo Merson pmerson@cmu. |
Beta Was this translation helpful? Give feedback.
-
[Module uses view] Hello. [Module uses view] [Coupling] [Module uses view - example 1] All right. [Module uses view - example 2] Here's another example. [Module uses view - example 3] Here's a third example. [Module uses view - example 4] Here's another example. [Uses of the module uses view] Four months from now, six months from now,you get assigned a task to implement somethin and you go to the project as you usually doand you start reading and then you reach a modules should be developed first. [Uses view is key to incremental development] Look. |
Beta Was this translation helpful? Give feedback.
-
[Layered style] [Layered style] view. And there's more. Sometimes people create. [Layered architecture of the OSGi framework] [(Design diagram tips)] Usually that kind of relation is one on top of the other, but it can be sideways as Naturally, you will create design diagrams that are better, better in the sense that they are more expressive,that they more clearly explaine the design because you if you draw something like this A,then Arrow B and you know you need to have the notation key. [Layered style and modifiability] Okey, dokey. [Layered style and portability] [Layered style - example 1] [Layered style - example 2] Here's another example. [Layered style - example 3] [Layered style - example 4] OK, and we didn't know about these good practices. In any case, I am criticizing the diagram. [Picture 7] And here it is. |
Beta Was this translation helpful? Give feedback.
-
[MVC, data model] Hello. [Model-View-Controller style] [How MVC works] So that's why we have this kind of arrow here saying there was a change andI'm notifying anyone, and the view gets that notification and will refresh the screen. [MVC has several variations] [MVC style example] [Agenda] [Data model] architecture. OK. [Agenda] OK. [Data model] [Data Model example - Pet Shop . NET application] rivals of the Pittsburgh Steelers is the Baltimore Ravens. [What is the data model good for?] [From data model to domain model] [Domain-Driven Design] [DDD leads to a layered design] |
Beta Was this translation helpful? Give feedback.
-
Hello. [Agenda] [Software architecture] Before we move on. [Runtime views (aka C&C views) (1)] [Runtime views (aka C&C views) (2)] A component has ports. You don't wait for a response, there is no response coming back. [What do runtime views tell you] [Runtime architecture styles] [Agenda] [Pipe-and-filter style] [Pipe-and-filter topology] In terms of topology. [Pipe-and-filter uses and benefits] Uses and benefits. [Pipe-and-filter in UML] [Pipe-and-filter example] |
Beta Was this translation helpful? Give feedback.
-
[REST - Representational State Transfer] system?And here's the, uh, the insight, or here's how rest is different. [REST architecture constraints] [REST constraints - stateless] Redis. [REST constraints - cache] [REST API design guidelines] [URL formation] [HTTP methods] If you repeat, what's the end result the same? You can press multiple times. [HTTP status codes] So you asking for the data in XML in the service can only reply in JSON, for example, so I can give you that error. [Picture 3] And if you watched the show, you may recognize that's that little song. [@ExceptionHandler(BusinessException. class) @responsebody. [Questions? Paulo Merson pmerson@cmu. edu] |
Beta Was this translation helpful? Give feedback.
-
[Peer-to-peer style, interceptors] Hello. [Peer-to-peer style] Well, I don't know if he ever said that. This is my speculation. [Topology and uses for P2P] [Peer-to-peer example] [Agenda] [except for the problem of too many levels of. . [Interceptor] Service is a component that sits there and accepts calls from other from clients and will respond to these calls. [What are interceptors used for?] [A design with interceptors] [Where do interceptors run?] [Typical flow of execution for interceptors] the response. [class ValidateJwtTokenFilter : UsernamePasswordAuthenticationFilter. . [Impact of using interceptors] You may have multiple instances of the interceptors, especially if the interceptor is an independent component. [Another challenge of interceptors] [Questions? Paulo Merson pmerson@cmu. edu] |
Beta Was this translation helpful? Give feedback.
-
[Publish-subscribe] [Publish-subscribe style] [Topology and uses for publish-subscribe] MVC. [Publish-subscribe example] [Difference between pub-sub and point-to-point (1)] [Difference between pub-sub and point-to-point (2)] There is a sender component. [Asynchronous messaging] [Message queues] And when we have. [Message queue configuration] [Example of distributed system that uses pub-sub] [@service open class ConsumerKafka(val handlerEmailMessage. . [@component public class EmailSenderKafka { public. . [data class EmailDto(val version: Int, . . [Questions? Paulo Merson pmerson@cmu. edu] |
Beta Was this translation helpful? Give feedback.
-
Hello. [Agenda] [Other messaging patterns] [Sync over Async] One application, be the message that application B sends back is contains CI one two three four. [Alternatives to sync over async] [Sync over Async] [Alternatives to sync over async] [Improving reliability (sender side)] [Store and forward] [Picture 2] [Store and forward] [Picture 2] [Transactional outbox] [Improving reliability (receiver side)] [Dead letter channel] But then when it picks up speed, then you go back to zero, etc. [In distributed systems, when given the choice, choose. . [Example of all-synchronous design] [Example of event-driven, pub-sub design] [EDA benefits] [Example of event-driven, pub-sub design] [EDA benefits] [In event-driven architectures (EDA), publishers. . [Example of all-synchronous design] [Example of event-driven, pub-sub design] No problem. [MaintainabilityPublishers and subscribers are. . [EDA challenges (1)] [EDA challenges (2)] [Questions? Paulo Merson pmerson@cmu. |
Beta Was this translation helpful? Give feedback.
-
[ATAM] Hello.
This is the first video of Week two in the previous week.
We talked about several quality attributes such as performance, availability,
modifiability and security for each quality attribute. We talked about different tactics.
And last week we also discussed how can we describe quality attribute requirements as
quality attributes scenarios.
And we mentioned that the quality attribute requirements are essential to drive design
decisions.
So in this first video, of week two, we'll talk about ATAM.
[Architecture evaluation]
ATAM is a method for architecture evaluation.
So in general,the goal of architecture evaluation techniques is to assess to what degree
the architecture is fit for the purpose for which it is intended.
The output of the architecture evaluation is the identification of risks.
We will look at the software architecture and the output is not to fix the architecture. If he has problems, is to identify potential problems.
That means the risk of the architecture not being able to address the quality attribute
requirements.
So that is the question down below that we're trying to answer with an architecture
evaluation.
And of course, we want the architecture evaluation effort to be lean, to be unexpensive,
agile.
You cannot be more expensive than the value it provides.
Well, we should remember that this is a quote from Brian Foote in the big ball of mud
paper.
We should remember that if you think good architecture is expensive, try bad
architecture.
[The ATAM*] So.
ATAM means architecture, trade off analysis method.
And it's a technique, a method to evaluate architectures.
And it was created by the SEI in the late 90s and has been used since by people at the
SEI and all around the world.
Documentation for the method descriptions of the method are publicly available on the
internet.
It's also described in different books, including our textbook software, architecture and
practice.
So we use ATAM to evaluate the consequences of design decisions, understanding the
quality, attribute requirements and business goals.
So in this lecture.
I'm going to go over a basic explanation of the ATAM method, if you are going to apply it
in full well, contact me for more details about the method.
And we also have in the reading assignment the section in the book the software
architecture and Practice Book that describes the method.
In the slides I'm going to use in this video are.
To the most part, the same slides that the SEI uses when people at the SEI are presenting
theATAM method to a team that has an architecture that is going to be evaluated.
[Purpose of the ATAM (1)]
So purpose of the ATAM, it helps stakeholders to ask the right questions to discover
potentially problematic architectural decisions.
Later on, this is past the ATAM risks that were discovered can be the focus of mitigation
activities.
For example, you can do further design start, a technical experiment, a prototype trying
to address the potential issues, the risks. We don't fix.
We don't do all of that.
During the ATAM, the ATAM may point out a risk fixing or mitigating the risk is something
that happens after the ATAM.
The trade offs will be explicitly identified and documented as part of the method.
[Purpose of the ATAM (1)]
And look, the purpose of the ATAM is not to provide precise analysis, ATAM is to it to
some extent a subjective evaluation. It's not a mathematical evaluation.
We want to.
Illicit risks based on existing architectural decisions, not to say, for example,this
architecture will fall short of the performance requirement X by 10 milliseconds. No, it's not like so objective.
It's more subjective, pointing out potential problems.
So we find we try to find trends which are correlations between architectural decisions
and how these decisions affect system properties or qualities.
[ATAM Benefits] But look.
The benefits of the ATAM go beyond the identified risks, we clarify quality attribute
requirements.
If you remember our discussion in week one,we said that often times teams focus on
functional requirements and overlook quality attribute requirements.
If that is the case and you do an ATAM,the ATAM will create the need to describe the
quality attributes requirements, which is a side kind of benefit.
It also improves the architectural documentation because the technique during the
method,we will look at different architecture artifacts and you need to understand it. So if the documentation is not clear enough, the evaluation team will point out how to
improve the architectural documentation itself.
And we'll produce documented basis for architectural decisions, so architecture decisions
will be more well informed.
And one thing that is also a side benefit, there is increased communication among various
stakeholders.
So at the end, of course, the end result is an improved architecture.
[ATAM phases]
So the ATAM method has four phases. Zero, one, two and three.
Phase zero is offline, basically, the software team will interact with the evaluation team or at least one person thatIs part of the evaluation crew, and we'll exchange emails, etc.
And that may take a while, a few weeks.
So that's phase zero to establish partnership and prepare for the actual evaluation.
The actual evaluation consists of phases one and two, these two phases have nine steps
that we're going to cover in a minute.
In each phase takes one or two days, and there is an interval of one or two weeks between
them.
And well, at least in the old days before COVID, phasesone and two would take place at
the customer site so people would be physically together and discuss the architecture
and evaluate the architecture.
Phase three is follow up also of typically offline exchanging emails or maybe having a
phone or Zoom call.
So let's go over all these phases in detail.
[ATAM Phase 0]
Phase zero, again, this precedes the actual architecture evaluation, and then there is
this interaction between the customer.
I mean, this is the customer would be the someone responsible for the software project
oftentimes is thelead architect that will interact with the evaluation team or one person in the evaluation team,and they will exchange information about the method itself.
How it works.
What do we need? Who should participate?And then come to an agreement, OK, let's do this and then you move on to phases one and two.
One thing that happens that's not mentioned here is the evaluation team.
Hmm, excuse me, asks for, um, the the existing architecture documentation.
At that point, there is a go no go decision because sometimes the customer will ask for
an evaluation,but there's no architecture yet because the whole project is still in its
initial steps.
So when there is no architecture yet, the then we can not perform the ATAM. And in that case, it's a no go decision.
There are other techniques that we can use.
For example, the quality attribute workshop, but the AATAM requires some understanding of
the architecture.
Of course, it's not the final architecture, it's not the complete architecture,but the
the key design decisions should be in place and should be reasonably documentedso that
we have something to look at when we are evaluating the architecture.
So if there is some understanding of the architecture and the customer, meaning the team
project.
The people responsible for the project and the evaluation team come to an agreement. We move on to phase one.
Here we will gather the evaluation team in the software project team.
[ATAM Phase 1]
In most of the people are technically oriented, so the phase one is architecture
centric.
We will focus on finding out what architecture information we have and analyze itbased on
some requirements that we list in the shape of quality attributes and areas.
And this is a top down analysis looking at quality attributes in high level architecture
design decisions.
[The 9 steps of the ATAM]
So phases one and two.
Consist of nine steps, the famous ATAM nine steps, and they are broken down into one
through six in phase one, seven eight and nine in phase two. Let's go over each step.
We're covering the first six steps, which are part of phase one.
So this is terminology, this part of the ATAM method, description phases and inside each
phase you have steps.
[Step 1: Present the ATAM]
So step one, remember, at this point, we have the evaluation team on site or these days
in a Zoom call, and they're they're gathered for the day. OK, remember phase one takes a whole day.
Sometimes it spills into a second day.
But we have the project team and the evaluation team.
They get together and in step one, someone from the evaluation team. Typically, the team evaluation team leader will present the ATAM method itself. And there is.
This is a 30 minute presentation very similar to this presentation that I am recording
here in the shape of a lecture. OK.
Just describing the technique covering utility tree generation. What we do.
Scenario brainstorming, describing what is a scenario, what, what, what our risks, trade
offs, et cetera.
So in mentioning the outputs of the ATAM.
So this is a kind of canned presentation.
That you're just repeating every time you do The ATAM describing the method, then we mo
on to step two.
v
[Step 2: Present the business goals]
Someone from the project team gives a presentation.
That person is typically someone with.
Business focus, like the product owner, a business analyst, a domain expert.
That person will describe the business context of the system, will mention the high level
functional requirements.
It's an overview of the system what it does and will mention high level quality attribute
requirements,saying security is very important because of this and that performance is
very important because of this and that cost, etc. So this is also a brief presentation.
Then we move on to step three here.
[Step 3: Present architecture]
Someone more on the technical side and less on the business side will give a presentation
of the architecture.
So sometimes there is an architect or the lead technical lead.
It doesn't matter what role that person plays,but there's some that is someone who
understands the existing architecture and that person will give an overview of the
architecture.
We'll talk about the technical constraints.
Um.
We'll talk about the runtime environment, the runtime, infrastructure, hardware,
middleware,etc.
the implementation frameworks languages will describe the system using different perspectives.
So you may think where, but how does that person know what to say in the preparation phase?Phase zero the evaluation team already gives basically like a recipe of what they should see in the architectural presentation.
OK.
And that person will go over the architectural approaches in the existing solution in how they can address quality attribute requirements.
At that point, this is somewhat interactive.
The evaluation team begins probing the architecture and.
Trying to identify risks.
So step four, this is where.
[Step 4: Identify architectural approaches]
Good part of the architecture evaluation risk elicitation starts, so this is when there
is a discussion. That goes like this.
We go over the architecture not to understand the parts that take care of each
functional requirement.
We go over the architecture to understand the major architectural approaches.
And when we say architectural approach in this context, it can be the use of a tactic, a
design pattern, an architecture pattern, some design strategy. So the evaluation team is not familiar with the business domain. Necessarily.
And they're not familiar with the implementation details.
Sometimes the evaluation team doesn't understand, for example, the I mean is not familiar
with, the programing language being used,but they understand design patterns, tactics, etc.
So in step four,we go over the architecture and the evaluation team will try to identify these tactics.
So they will say, Oh, it looks like you're organizing the code in layers.
Oh, it looks like you're using data replication here.
What is the mechanism for synchronization? Oh, you have a batch program that does
extract, transform and load.
So you have, um, event driven communication.
So you're using a message queue, this message queueIs it um, is there redundancy? Is
there partitioning?And you can ask, OK, so there is this sensor.
How do you know the sensor is alive?Is there a ping echo mechanism? So we we bring the vocabulary of tactics and patterns to the discussion so that even if the architect,the development team is not familiar with these terms,these tactics and patterns, the evaluation team will try to identify the use of tactics and patterns, and they build
that terminology.
OK.
And why would we do that? Because we know that given certain tactics and patterns contribute to achieve specific qualities.
So if we we know you're using Ping Echo, we know you will be able to identify availability issues timely.
And these are places where we have these architectural approaches, are key to realize the quality attribute goals.
[Step 5: Generate quality attribute utility tree] In step five.
We discuss the requirements more specifically the quality attribute requirements of the
system.
And per the ATAM method, we do that building a utility tree,which is this top down list
of quality attributes and areas of quality requirements, let's say.
OK, so the top level?Well, there's the root of the tree and then the high level nodes are
the quality attributes, performance, modify ability, security, et cetera.
And we may have multiple levels, but the leaves of the tree are quality attributes
scenarios.
So part of phase one, we go over an explanation of what is a quality attribute scenario
that takes place in step one.
So at this moment, the evaluation team will help the customer, the technical team,to
describe quality attribute requirements in the shape of scenarios with the different
parts.
And we will put them together in a tree utility tree, and we will prioritize these
quality attributes scenarios. Now.
I'm not going.
I'm not going to go over the description of a key scenario because we covered that in week one.
And there's this note that says that when we come to this step where we want to enlist the quality attributes scenarios, the evaluation team.
Doesn't simply say, tell me, what are the scenarios?What, tell me what is a performance quality attributes an area that you may have in the system.
So, um, people on the customer side, they're not familiar with quality attributes scenarios, usually.
One way to stimulate the discussion to start a discussion is to use what we call general scenarios.
And there are multiple general scenarios for different quality attributes.
In fact, if you search the software architecture in practice book,you'll see that for
each chapter where we have the quality attribute, there is a description of general
scenarios. So.
The evaluation team comes prepared with some general scenarios that work as seeds for
the discussion. Okay.
Here's a simple example of a utility tree.
[Utility tree]
And you see this one has performance, modify ability, availability, security. There's this next level.
For example, performance can be subdivided into data latency and transaction throughput
for this particular system.
And then the leaves of the tree are the scenarios.
Look, in this slide, this is a simplified version of a utility tree in practice. The utility tree is recorded in a document, a text document in a table. OK.
Yeah, it's not practical to try to draw it as a tree. Like this? OK.
Oh, and you see in blue, this is the prioritization of each scenario. And he has two dimensions.
First one is the technical difficulty of realizing or addressing that requirement. Which maps to how difficult means how risky it is in the second dimension is the
importance of that scenario for the business.
Sometimes addressing a given requirement is very, very difficult. But it's not that relevant for the business.
So we may not ever achieve that requirement.
And we use a high, medium, low scale here.
And another comment is that when we are creating the utility tree,we'll have a document
that everybody's seen and we record recording the the scenarios. There's someone in the evaluation team taking notes.
And.
We will check that the scenarios haveThe six parts.
Simply, it can be a little simpler, we want to identify the stimulus, the environment,
and we want to see a testable slash measurable response.
And of course, as we mentioned in week one, the classification here is less relevant than
understanding the scenario and understanding its priority.
So if during this discussion, someone says, well, this an that you have under usability
is actually a performance scenario. There's no problem we can move it around.
The important thing is that, that scenario is there.
Is there somewhere in this division in quality attributes?It's just something that we do
to simplify.
Walking through all of the scenarios.
[Step 6: Analyze architectural approaches]
And we get to step six here.
We analyze the architecture by probing.
The architectural approaches vis-a-vis the quality attribute requirements. So we go over the utility tree.
We pick the highest priority scenarios and we basically go back and ask.
How does the architecture address this scenario?We go one by one scenario by scenario. And then typically, the architect will bring back the architecture and describe what
architectural approaches are used to address each scenario.
So maybe for a performance scenario, the architect will say, Well, we introduce
concurrency here, so we have parallel processing, so that's a tactic. And.
In this discussion, we identify. Risks, no risks.
Sensitivity points and trade offs.
So this probing of the architecture, uh, happens by asking. Quality attributes, specific questions.
And what is that?
[Quality attribute questions]
Well, we will ask questions that.
Relate the requirements with the design decisions, so if you have a performance
requirement,you can ask, for example, how many instances of Service X should exist at
peak load.
Given that we understand that the system will get that many requests at peak load because
there is a scenario for that.
What are the message arrival rates? So you have a device that is receiving messages from
sensors or actuators,so you can ask that question and then discuss how the architecture
takes care can handle that message arrival rate.
For modifiability, you may have scenarios for modifiability anticipating changes.
So you may think, Oh, this this device should have installed apps, should have plug ins,
may require online updates,so you may ask questions related to code organization in layers and anticipating how can you make specific changes,maybe to add a plug in to change an API, etc.
? And the evaluation team is taking note of these things risks, non risks, etc.
[Risk, non-risk, sensitivity point, tradeoff point]
A risk is what the name says, a potential problem in this context. The potential problem might be an architecture decision.
A non risk is an architecture decision that we looked back and forth, and it is
positive.
So it is helping to achieve a given quality with no negative effects that are visible.
A sensitive point is some property of a component of a configuration that is critical for
achieving a particular quality attribute scenario response.
So maybe, for example, if you have concurrency, you doing parallel processing?The number
of instances of the processing that you have at the same time is a sensitive,
sensitivity point.
If you're doing encryption.
And encryption is necessary for privacy, but you're concerned with the performance
overhead.
The choice of the algorithms, the choice of number of bits for the encryption key. That's a sensitivity point.
OK.
And the last item there is a trade off point.
So this is a property that was a decision that affects two or more quality attributes. And you know, you gaining with respect to one quality, but you losing with respect to
another quality.
Next slide has some better examples.
So here's an example of a risk.
[Examples]
Rules for defining the functional scope of business logic in modules of the domain layer
are not clear.
This issue may result in replication of functionality, thereby compromising
modifiability, so I don't know,maybe during the architecture description, the the architect presented a design diagram saying our application is organized in four layers.
We have our UI layer.
We have an application layer.
We have a domain layer, we have the database.
And then when we discuss quality attributes in areas, we identify that there is there are
scenarios regarding business logic that is evolving,etc.
So and then we ask a question, how do you know?If a given piece of business logic is to be placed in the domain layer or in the application layer,so if, uh, if the architect
doesn't know the answer,if it's not clear what business logic should go in the domain layer, for example,then there is a risk because the maybe there's like tens of people writing code.
And some people may place business logic in the application layer in other people may place, may create the same business logic in the domain layer.
OK, so that's a possible risk.
And you just take note of that doing the ATAM.
Here's an example of a sensitivity point.
The number of person days of effort to create the new rest service is sensitive to the
choice between using Python and the Django Framework,which is new to the team or using
JAVA and spring, which is something that the team is familiar with.
So you need to create rest services There's the design decision there, or should we use
Python?Because Python, with Django brings benefits A and B, but it's something that the
team is not familiar with.
So that choice, we will fact modifiability will affect the effort. The number of person days.
Down below we have an example of a trade off.
So using a cloud based identity and access management service to authenticate users,
improves security and modifiability,but will create a performance overhead for on premises applications that will interact with the service.
So maybe during the architecture discussion, we found out that, um. So let's try to illustrate that there is a local network.
And the system that we are discussing. Let's say it's s one.
This system runs on a server here on the local network. Most of the users.
Are connected using the same local network. And they access the system right there.
However, in a recent design decision, um. The organization decided to use.
An identity access management system.
That is in a in the cloud service connected via the internet for log in, maybe allowing
users to log in with their Google account.
OK.
That means for this person to use the application here first, you need an interaction
with this external service to to perform the log in, the sign inSo that creates a performance overhead.
So that's a trade off.
You knew you chose this, this solution here, because it's super secure. It's easily maintained, has a lot of benefits, not expensive, etc.
But it will bring you a performance overhead, so there's a clear tradeoff there. And finally, an example of a non risk.
So you have some device.
That has a message, arrival rate one per second.
And, you know, the processing time of each message is less than 30 milliseconds. And there is a high, um, high, high priority process, uh, that is processing these
messages.
And given the CPU, you have the environment, you have a one second soft deadline is
reasonable.
So you look at the configuration prescribed by the architecture.
You look at the message arrival rate and you are sure you have some confidence that
there's no problem there.
So you look at that and hey, this is good.
We know this is going to work.
This requirement, this performance requirement is fine.
[ATAM Phase 2] All right.
So step six is the last step of phase one. The evaluation team goes home.
We have a bunch of artifacts, possibly in a Google Doc or a word document.
Um, and then um, we wait a week or two and we get together again.
The very same evaluation team and a group of people on the customer side, OK,we have the
same people that we have in the in phase one, but we add a lot of stakeholders.
So phase two is stakeholder centric and we want to get a more diverse point of view
around the requirements for the system.
And we will also double check the findings of phase one in terms of requirements and
whether the architecture can address the requirements.
[Stakeholders in phase 2] So we invite for phase two.
A wide group of stakeholders that is anyone that is concerned with some aspect of the
system.
So project manager, developers, product owners or ba or domain expert, architect or
technical leader,people who work with tests, integration, we can also invite the UI
designer or web designer if that person is there.
Um, people who work with information security.
So someone from the Information Security Office, if there is a database, there might be a
data administrator or a DBA, so you can invite them.
If this is a network or distributed system, you can invite the SRE, the site reliability
engineer or network admin or system admin.
Device hardware expert, maybe have a performance expert or performance analyst who can
invite the person so there is no right list of stakeholders,you just try to find out who
are the stakeholders of the system and invite all of them. I mean, one representative of each role.
If you will.
And I remember when I joined the SCI and was learning about software, architecture,
techniques, et cetera, everywhere,I would hear the word stakeholder and talking about it
and talking to stakeholders the importance of the stakeholders.
And I was thinking on my mind, who are these stakeholders? And the first image that came
to mind for me was something like this.
[steak holders]
But this is the wrong spelling.
So these are not people holding steaks.
Actually, I am from Brazil.
So when I heard stakeholder, uh, first I was thinking more of of the people you find in
in a Brazilian steakhouse like, uh, like this.
[Picture 3]
[steak holders]
I don't know if you have been to a Brazilian steak house where they serve meat on skewers
and they go around and I apologize if you are a vegetarian.
And this image showing all this carnage may be aggressive.
So anyway, but this is the wrong stakeholder.
We're talking about stakeholders different spellings, so people who have some stake, some
concern in the system.
[The 9 steps of the ATAM] So we are in phase two.
We invite all these people and we are going to perform step seven, eight and nine before we get to step seven.
[Phase 2 begins with a phase 1 recap] We do a recap of phase one, of course. So there are several new participants.
So we repeat step one, which is the presentation of ATAM, we recap the business presentation, the architectural presentation and we recap.
We take a look at the utility tree and we take a look at we have what we have analyzed so far, the risks that we have identified so far.
OK.
And at that point, everybody, all the new participants are up to speed with the current list of risks, architectural approaches and trade offs.
[Step 7: Brainstorm and prioritize scenarios]
Then we do step seven, which is a brainstorming session for eliciting quality attributes
scenarios.
At that point, all participants are aware of what is QA scenario, it's their importance.
So we open up a brainstorm and ask everybody to suggest scenarios and remember because
it's a brainstorming session.
People will suggest scenarios freely.
We take note of them.
And we don't discuss them right away.
After the brainstorming.
There might be some clarification of the scenarios,and we, so the method suggests that we
do a voting, voting for what? To find out what are the most important scenarios. So this is for prioritizing the scenarios, and how do you do the voting?Well, each
stakeholder.
Gets a number of votes that is equal to 20 percent of the number of scenarios. So if you have 30 scenarios as a result of the brainstorm.
Um, each person will get.
Nine, nine votes, if you have 20 scenarios, each person will get six votes and so on and
so forth.
And then each person can vote.
The way they want, they can place all their votes on a given scenario.
They can distribute the votes across several scenarios in any way they see fit. Very often, the stakeholders will cast their votesTo the scenarios that they have
suggested,but oftentimes they they find other scenarios that people suggested that they
realize, Oh, this is quite important.
And one thing that is usually done, we go back to the utility tree, which was created in
phase one,when we compare that prioritization with the prioritization that results from the discussion with all the participants,with many more stakeholders and we realize that.
New people that are participating in phase two may bring up scenarios that are very important that had not been considered in phase one.
[Step 8: Analyze architectural approaches]
And then step eight, we do something very similar to what we did in step six.
So we will analyze the architecture based on the scenarios we pick the high priority
scenarios, typically five to 10 scenarios.
So for each scenario, we go to the architecture and ask and try to find out how does the
architecture can address that scenario?And again, we'll take note of risks, known risks and trade offs.
[Step 9: Present the results] Step nine.
Um.
Often times between step eight and step nine, there is a gap.
Maybe there's a lunch break, or maybe we finish at the end of day one and then step nine
takes place on day two of phase two.
That's when we present the results.
So between step eight and nine, the evaluation team is very busy putting together some
sort of presentation of the results of the ATAM.
So it's a brief presentation with the architectural approaches, the scenarios,utility
tree with the scenarios prioritized risks and non risks, sensitivity points and
tradeoffs and risk themes.
So we oftentimes looking at all the risks that were listed.
We find themes of risks,concentration of risks around part of the system or around some
element of the infrastructure or some major design decisions. And then phase two is concluded.
So this is a traditional diagram that.
[Conceptual flow of the ATAM]
Shows the conceptual flow of the ATAM, like 30000 feet description.
We use as input the business drivers that are more are distilled in the inform the
quality attributes.
And they are distilled in scenarios.
So this this part of the the diagram here. Is focusing on the problem.
And then we have the software architecture.
Where we identify architectural approaches like tactics and patterns that we see there. And detailed architectural decisions.
So this bottom part here. Is focusing on the solution.
Understanding the problem and understanding the solution, we perform the ATAM evaluation, the analysis,as a result of that, we find out the trade offs, the sensitivity points, the non risks.
This is all informative, but the the.
The major benefit is to identify the risks, because these risks, which can be distilled
in risk themes,should impact the architecture and sometimes the business drivers.
So I mean the problem space, so it may change, some requirements may change.
Um, for example, we may relax some performance requirement because you find out this is
too complicated toachieve or you change the architecture later on to address a given
potential problem.
So why do I say this is the key benefit?Because when we identify the risk doing an ATAM
evaluation, we can more easily fix the architecture or adapt the requirements to the
problem.
If you don't identify this risk and the project, moves on,gets to implementation and
maybe the product is ruled out and maybe we the problem corresponding to the risk
actually occurs.
And at that point, fixing the system there is already already in production is much more
expensive.
[ATAM Phase 3]
OK, so just to wrap up, there is phase three, which happens offline.
So the evaluation team at the end of phase two, uh, the evaluation is basically
completed, but the evaluation team goes,goes home and they just produce a final report,
a document with all the information organized. So they have time to organize things.
Um.
Sometimes the evaluation team doesn't need to to write a document. They just put together a presentation of like a PowerPoint presentation. OK.
And you do a postmortem of the ATAM itself.
So at the end of the ATAM, you have this final report or presentation that has an
executive summary.
[The final report/presentation]
We we have the canned description of the ATAM. We capture a summary of the business drivers.
We have pointers to architecture description we have.
Then the description of what we find found out in terms of quality attributes, scenarios,
architectural approaches, risks, non risks, trade offs. The risk themes.
And possibly next steps. Next steps.
Often times do not involve the evaluation team that is for the software project team to
go on to address the risks.
So that is the ATAM in a nutshell.
See you in the next video.
[Questions? Paulo Merson pmerson@cmu. edu]
Beta Was this translation helpful? Give feedback.
All reactions