Sing with me: Architetural Tradeoff Analysis Rocks!!

Posted by Tracy Bannon on Sunday, June 25, 2023

๐—œ’๐—บ ๐˜๐—ฟ๐˜†๐—ถ๐—ป๐—ด ๐˜๐—ผ ๐—ด๐—ฒ๐˜ ๐—ฎ ๐˜€๐—ผ๐—ป๐—ด ๐˜€๐˜๐˜‚๐—ฐ๐—ธ ๐—ถ๐—ป ๐˜†๐—ผ๐˜‚๐—ฟ ๐—ต๐—ฒ๐—ฎ๐—ฑ! Ok, maybe not a song… actually a set of software architecture concepts and principles that drive architectural design decisions. The process and decisions are almost ๐—ป๐—ฒ๐˜ƒ๐—ฒ๐—ฟ binary. There is a logical an repeatable way to rationalize decisions: ๐˜๐—ฟ๐—ฎ๐—ฑ๐—ฒ๐—ผ๐—ณ๐—ณ ๐—ฎ๐—ป๐—ฎ๐—น๐˜†๐˜€๐—ถ๐˜€. Here is condensed version (I lean heavily on my SEI training and experience.)

Here is condensed version. I lean heavily on my SEI training and experience.

๐—ฆ๐˜๐—ฒ๐—ฝ ๐Ÿญ - Know the mission and business drivers and goals. Tech fails when it’s not directly grounded on delivering mission VALUE.

๐—ฆ๐˜๐—ฒ๐—ฝ ๐Ÿฎ - Identify the important software quality attributes (SQAs) and remember there can be many including performance, security, maintainability, scalability, reliability, etc. Understand them in the context of your domain and stakeholder needs. Translation: Know the mission drivers and goals. (Did I say that before?)

๐—ฆ๐˜๐—ฒ๐—ฝ ๐Ÿฏ - Identify tactics (aka techniques) that impact and/or achieve the SQAs They might include using specific algorithms, applying design patterns, or following certain architectural styles. Tactics are the tools in an architect’s toolbox

๐—ฆ๐˜๐—ฒ๐—ฝ ๐Ÿฐ - Evaluate trade-offs between different SQAs and tactics. This is the heart of architectural decision making. Improving one SQA may detriment another. For instance, you may need to balance implementing an advanced encryption algorithm to boost security (security attribute) that may slow down system performance (performance attribute).

As a guiding principle: remember that SQAs are not standalone entitiesโ€”they interact, overlap, and sometimes conflict.

๐˜ฝ๐™๐™ ๐™’๐™ƒ๐˜ผ๐™ ๐˜ผ๐˜ฝ๐™Š๐™๐™ ๐™ˆ๐™Š๐˜ฟ๐™€๐™‡๐™Ž? Architectures need to be living documents and I prefer models. Models help you to simulate and understand the impact of tradeoff decisions. All too often, I get pushback that (1) It’s too hard (2) That’s only for systems engineering (3) It will slow us down.

Remember my mantra: be practical and pragmatic… know your context and mission… your domain will likely determine your model usage.

๐—ฆ๐˜๐—ฒ๐—ฝ ๐Ÿฑ -Prioritize, Make Decisions, and Document them! Often, it can be nearly impossible to maximize all quality attributes simultaneously. When you make a tradeoff decision, annotate it! (Simply use architectural decision records– ADRs.)

It’s actually really challenging and fun not to mention being an integral part of delivering value with software. Also remember that software is never done ๐˜€๐—ผ๐—ผ๐—ผ๐—ผ๐—ผ architecture is never done either…

New needs, threats, and tech mean continuous architecture.

#SomethingToNoodleOn #ContinuousArchitecture #SoftwareArchitecture #TradeoffAnalysis #QualityAttributes

Photo by Felix Koutchinski on Unsplash