<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Agentic Architecture]]></title><description><![CDATA[Notes and strategies on evolving software architecture. This blog covers the transition from traditional system design to agentic engineering]]></description><link>https://mashaigra.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>Agentic Architecture</title><link>https://mashaigra.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 21:11:44 GMT</lastBuildDate><atom:link href="https://mashaigra.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Will AI Replace Software Architects? The Case for Automated Design Reviews]]></title><description><![CDATA[TL;DR

AI is a reviewer, not a creator (yet): LLMs struggle to generate complex system architectures from scratch but are exceptionally good at evaluating existing High-Level Designs (HLDs) against st]]></description><link>https://mashaigra.hashnode.dev/will-ai-replace-software-architects-the-case-for-automated-design-reviews</link><guid isPermaLink="true">https://mashaigra.hashnode.dev/will-ai-replace-software-architects-the-case-for-automated-design-reviews</guid><category><![CDATA[architecture]]></category><category><![CDATA[Architecture Design]]></category><category><![CDATA[AI]]></category><category><![CDATA[agentic AI]]></category><category><![CDATA[agentic ai development]]></category><dc:creator><![CDATA[Masha Igra]]></dc:creator><pubDate>Tue, 11 Aug 2026 10:35:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a65c33667a823ffdd5cddb2/9538ee4b-b0f3-4e26-a854-c9d4c1899b81.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h3>TL;DR</h3>
<ul>
<li><p><strong>AI is a reviewer, not a creator (yet):</strong> LLMs struggle to generate complex system architectures from scratch but are exceptionally good at evaluating existing High-Level Designs (HLDs) against strict reference rules.</p>
</li>
<li><p><strong>Single-agent vs. Multi-agent workflows:</strong> When evaluating architectures, a single-agent hierarchical workflow proved far more cost-effective than a parallel multi-agent workflow, avoiding redundant token consumption and context overhead.</p>
</li>
<li><p><strong>Model comparison (Claude Opus vs. Gemini Pro):</strong> Both models successfully identified core architectural gaps. Gemini Pro acts as a strict rule enforcer, while Claude Opus provides broader, unprompted contextual awareness.</p>
</li>
</ul>
<hr />
<p><em>Will AI replace software architects? For now, the answer is no.</em></p>
<p>While teaching a comprehensive Software Architecture course, I decided to run an experiment. I converted my architecture material into a set of agentic skills covering major architecture domains: microservices, layered architecture, databases and storage, networking, messaging, big data, security, and more. Each skill included architecture patterns, trade-offs, and guidance on when to use them based on system requirements.</p>
<p>I then fed these skills alongside system requirements to high-performance LLMs and asked them to generate a High-Level Design (HLD) from scratch.</p>
<p>The results were mixed. The models struggled to differentiate between patterns like Microservices and SOA, they frequently made poor technical choices for analytics data storage, etc. LLMs easily get confused by the sheer breadth of software architecture when asked to generate a design from a blank canvas.</p>
<p><strong>However, LLMs are exceptionally good at evaluating an existing HLD against a strict reference architecture.</strong></p>
<p>When reviewing dozens of HLDs, architects must enforce mandatory patterns: API Gateways, public/private network separation, technology restrictions, and existing security paradigms. Once you establish this reference architecture, LLMs excel at validating the proposed solution.</p>
<p>Specifically, AI is highly effective at:</p>
<ul>
<li><p>Evaluating functional requirements and <strong>Quality Attributes</strong> <em>(See</em> <a href="https://mashaigra.hashnode.dev/guiding-ai-with-quality-attributes-returning-to-architectural-basics"><em>the article</em></a> <em>discussing quality attributes evaluation)</em>.</p>
</li>
<li><p>Extracting architecture entities and relationships by parsing formats like Markdown or PDF.</p>
</li>
<li><p>Interpreting static diagrams (e.g., C4 models) and dynamic flows (e.g., sequence or activity diagrams).</p>
</li>
<li><p>Evaluating the proposed architecture against constraints and reference architectures.</p>
</li>
<li><p>Providing concrete, actionable recommendations to fix architectural gaps.</p>
</li>
</ul>
<hr />
<h2>Evaluating Agentic Architectures: Single-Agent vs. Multi-Agent</h2>
<p>To build the evaluation engine, I tested two different agentic architectures for performance and cost.</p>
<p><strong>1. Single Agent with Hierarchical Skills</strong> A main orchestrator sequentially calls specialized evaluation skills. The context window compounds and increases from skill to skill during the sequential flow:</p>
<ul>
<li><p><code>hld_document_review_skill</code>: Reviews structural completeness.</p>
</li>
<li><p><code>functional_requirements_skill</code>: Validates functional requirements.</p>
</li>
<li><p><code>quality_attributes_skill</code>: Evaluates non-functional constraints.</p>
</li>
<li><p><code>project_hld_system_design_review_skill</code>: Reviews core design (C4, system flows) against reference rules.</p>
</li>
<li><p><code>system_design_additional_sections_skill</code>: Checks schemas, sizing, and upgradability.</p>
</li>
</ul>
<p><strong>2. Multi-Agent Workflow</strong> Five specialized agents run in parallel. Each agent uses an isolated context window to focus on a single skill, and a final synthesizer agent combines the output at the end.</p>
<h3>Side-by-Side Comparison</h3>
<table>
<thead>
<tr>
<th>Metric</th>
<th>Multi-Agent Workflow</th>
<th>Single-Agent (Hierarchical)</th>
<th>Delta</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Total Tokens</strong></td>
<td>~189,472</td>
<td>~86,500</td>
<td>Workflow uses ~2.2× more tokens</td>
</tr>
<tr>
<td><strong>Execution Phase</strong></td>
<td>Parallel (5 concurrent reviewers)</td>
<td>Sequential (one at a time)</td>
<td>Single-agent is ~3.5× slower</td>
</tr>
<tr>
<td><strong>Context Growth</strong></td>
<td>Isolated per agent</td>
<td>Compounds with every step</td>
<td>Single-agent compounds input cost</td>
</tr>
<tr>
<td><strong>Prompt Caching</strong></td>
<td>Shared across agents after first hit</td>
<td>Re-ingested implicitly</td>
<td>Partial mitigation in single-agent</td>
</tr>
</tbody></table>
<h3>Why Do Multi-Agent Workflows Consume More Tokens?</h3>
<p>Despite being faster, the multi-agent workflow incurred significantly higher token costs for three reasons:</p>
<ol>
<li><p><strong>Redundant Document Loading:</strong> With no shared memory, every single agent must independently load and process the full HLD document.</p>
</li>
<li><p><strong>Double-Billing on Synthesis:</strong> The final synthesis agent re-ingests all five outputs as its new input, meaning phase 1 output tokens are billed again as phase 2 input tokens.</p>
</li>
<li><p><strong>Baseline Overhead:</strong> Every sub-agent requires its own system prompt, tool schemas, and framework scaffolding. The single-agent setup pays this overhead once; the workflow pays it six times.</p>
</li>
</ol>
<p><strong>The Conclusion:</strong> Because my primary goal was cost optimization rather than execution speed, I chose to stick with the <strong>Single-Agent architecture</strong>.</p>
<hr />
<h2>Model Evaluation: Claude Opus vs. Gemini</h2>
<p>I evaluated these agentic architectures using the Antigravity framework across three major models: Claude Opus 4.8, Gemini 3.1 Pro, and Gemini 3.6 Flash.</p>
<p><em>Note: Gemini Flash was quickly ruled out, as its comprehension of complex architectural components and system flows was insufficient for this use case.</em></p>
<p>Here is how the heavyweights compared:</p>
<table>
<thead>
<tr>
<th>Criteria</th>
<th>Gemini Pro</th>
<th>Claude Opus</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Core Gaps Identified</strong></td>
<td>✅ Found all major gaps</td>
<td>✅ Found all major gaps</td>
</tr>
<tr>
<td><strong>Rule Strictness</strong></td>
<td>Stricter (e.g., flagged DB-per-service as a hard MISS)</td>
<td>Softer (flagged as a partial issue)</td>
</tr>
<tr>
<td><strong>Overall Coverage</strong></td>
<td>Tighter adherence to the specific prompt/skill</td>
<td>Broader coverage (Caught 2 extra valid gaps)</td>
</tr>
</tbody></table>
<p><strong>The Verdict:</strong> The two models are highly consistent—yielding the same overall grade, identifying the same headline problems, and suggesting identical fixes.</p>
<p>Their differences are complementary. Gemini Pro acts as a strict enforcer of reference rules (such as the database-per-service constraint), while Claude Opus possesses broader architectural awareness (identifying unprompted gaps like a missing Auth-service container and an unprotected on-prem entry point).</p>
<p>The optimal review combines the strict rule-following of Gemini Pro with the broad contextual awareness of Claude Opus—yielding a comprehensive, enterprise-grade architecture evaluation.</p>
<h2>Conclusion</h2>
<p>So, will AI replace software architects? The reality is that the blank-page creation of complex, context-heavy enterprise architecture still requires human intuition, business alignment, and strategic compromise. LLMs cannot yet shoulder that creative and structural burden alone.</p>
<p>However, the days of manual, error-prone HLD reviews may soon be behind us. By encapsulating reference architectures and quality attributes into specialized agentic skills, we can turn LLMs into rigorous, tireless design reviewers. They excel at holding proposed solutions accountable to established standards, ensuring that non-functional requirements are met, and identifying architectural anti-patterns before a single line of code is written.</p>
<p>As architects, our role is shifting. We are no longer just designing systems; we are designing the guardrails, reference patterns, and agentic workflows that will help evaluate and scale those systems reliably. AI won't replace us—but the architects who leverage AI to automate design validation will undoubtedly outpace those who don't.</p>
]]></content:encoded></item><item><title><![CDATA[Guiding AI with Quality Attributes: Returning to Architectural Basics]]></title><description><![CDATA[TL;DR: Quality Attributes (often called Non-Functional Requirements) are the true drivers of software architecture. Without defining exactly how a system behaves—using measurable frameworks like Bass-]]></description><link>https://mashaigra.hashnode.dev/guiding-ai-with-quality-attributes-returning-to-architectural-basics</link><guid isPermaLink="true">https://mashaigra.hashnode.dev/guiding-ai-with-quality-attributes-returning-to-architectural-basics</guid><category><![CDATA[architecture]]></category><category><![CDATA[Architecture Design]]></category><category><![CDATA[arch]]></category><category><![CDATA[architect]]></category><category><![CDATA[#architects]]></category><category><![CDATA[agentic AI]]></category><category><![CDATA[#agent]]></category><category><![CDATA[agents]]></category><category><![CDATA[skills]]></category><category><![CDATA[Skill]]></category><dc:creator><![CDATA[Masha Igra]]></dc:creator><pubDate>Wed, 29 Jul 2026 16:07:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a65c33667a823ffdd5cddb2/3a431cfc-8c46-48be-b36e-929289ed93f4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>TL;DR:</strong> Quality Attributes (often called Non-Functional Requirements) are the true drivers of software architecture. Without defining exactly <em>how</em> a system behaves—using measurable frameworks like Bass-style scenarios — AI coding agents will rapidly veer off the intended architectural path, inevitably leading to costly re-architectures. To govern these AI interactions effectively, you can leverage <a href="https://github.com/igramasha/architecture_skills">specific agent skills for quality attributes and functional requirements</a> to ensure your architecture quality.</p>
<hr />
<p>Early in my career—long before the current wave of AI-assisted development—a product manager handed me a set of system requirements and declared they had "no non-functional requirements."</p>
<p>My response was straightforward: "Without them, I will build the system <em>I</em> want to build. It will likely follow the easiest path for development, but it won't be what you actually need."</p>
<p>That alarmed him—and rightfully so.</p>
<p>In software architecture, capturing efficiency quality attributes—often referred to as non-functional requirements (NFRs)—is arguably the <strong>most critical phase of system design</strong>. I prefer the term "Quality Attributes." Architecture is fundamentally about defining the <em><strong>quality</strong></em> of a system. The term "Non-Functional Requirement," by contrast, focuses on what a system is <em>not</em>, rather than what it <em>is</em>.</p>
<h2>The "What" vs. The "How"</h2>
<p>Functional requirements are the easy part. Stakeholders are usually highly vocal about <em><strong>what</strong></em> the system should do, capturing the use cases and features.</p>
<p>However, Quality Attributes define <em><strong>how</strong></em> the system should behave under those functional use cases. How fast is it? How easy is it to use? How well does it scale?</p>
<p>You could write an entire web application in a single file. Functionally, it might do exactly <em>what</em> it is supposed to do. But what about modifiability? Maintainability? Scalability? These are the dozen or so attributes that ensure the long-term viability of your system.</p>
<p><strong>Quality attributes drive architectural decisions</strong>. They matter most to the Software Development Life Cycle (SDLC). A lack of clearly defined quality attributes—or poorly articulated ones—inevitably leads to re-architecture, which is the most expensive and painful change a team can make during an SDLC.</p>
<h2>Challenging the Stakeholders</h2>
<p>Returning to my product manager: when I probed further about performance requirements, he insisted he didn't have any.</p>
<p>"Understood," I replied. "I'll design it so the first page of images takes about five minutes to load." "Oh, no, that’s way too slow," he countered. "Okay, one minute?" "Still too slow." Eventually, we landed on a hard requirement of two seconds.</p>
<p>Now, I had the data I needed to actually begin the architectural design process. As architects, it is our job to <strong>challenge our stakeholders</strong>—whether they are product managers, security teams, or compliance officers—to extract these boundaries.</p>
<h2>The Bass-Style Scenario Framework</h2>
<p>Effective Quality Attribute scenarios were well defined by L. Bass, M. Klein, and F. Bachmann, and they have been widely embraced by the architecture community.</p>
<p>An effective quality scenario forces all stakeholders to think about <strong>measurable system attributes so the architectural solution can be objectively measured against the requirements</strong>. For each relevant quality attribute, you should construct a scenario using the following six elements:</p>
<table>
<thead>
<tr>
<th>Element</th>
<th>Description</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Source of stimulus</strong></td>
<td>Who or what triggers the event — a user, an external system, an administrator, a developer, an attacker, or an internal component</td>
</tr>
<tr>
<td><strong>Stimulus</strong></td>
<td>The event itself — a request, a failure, a change, an attack, a test, or a user action</td>
</tr>
<tr>
<td><strong>Artifact</strong></td>
<td>What's affected — a service, a dataset, a component, an interface, a platform, or the whole system</td>
</tr>
<tr>
<td><strong>Environment</strong></td>
<td>The conditions when it happens — normal operation, peak load, degraded mode, design time, runtime, staging, or production</td>
</tr>
<tr>
<td><strong>Response</strong></td>
<td>The observable system behavior — detect, recover, block, authenticate, process, notify</td>
</tr>
<tr>
<td><strong>Response measure</strong></td>
<td>The measurable criterion — time, throughput, probability, cost, error rate, or percentage</td>
</tr>
</tbody></table>
<p>Put together, the template reads:</p>
<blockquote>
<p><em>When [source of stimulus] [stimulus] the [artifact] in [environment], the system should [response], measured by [response measure].</em></p>
</blockquote>
<p><a href="https://raw.githubusercontent.com/igramasha/architecture-posts/refs/heads/main/quality_attributes_small.png?token=GHSAT0AAAAAAEBHWZQLS72JT6I2UDIOU3TW2TKEDGA"><img src="https://cdn.hashnode.com/uploads/covers/6a65c33667a823ffdd5cddb2/8f8fb789-e71e-4ef0-8c42-6efaed175bde.png" alt="Alt Text" style="display:block;margin:0 auto" /></a></p>
<h3>The Framework in Action</h3>
<p>Instead of writing a vague availability requirement like <em>"The system should be highly available,"</em> a proper Bass-style scenario looks like this:</p>
<blockquote>
<p><em>"When a payment service becomes unavailable [Stimulus] caused by an internal component failure [Source] affecting the checkout service [Artifact] during peak holiday traffic [Environment], the system should fail over to a standby instance [Response] within 30 seconds and preserve a 99.9% request success rate [Response Measure]."</em></p>
</blockquote>
<h2>Why Quality Attributes Matter Even More in the Age of AI</h2>
<p>With the rapid rise of agentic development and "vibe coding," the traditional SDLC process is fundamentally shifting. As Google recently outlined in their piece on the new SDLC, human-to-AI handoffs are becoming the norm.</p>
<p>During these conversations between humans and AI, explicitly captured architectural requirements become <strong>hyper-critical</strong>. Large Language Models (LLMs) and coding agents will take the path of least resistance if boundaries aren't clearly defined.</p>
<p>To bridge this gap, the <strong>requirement preparation and review phase</strong>s—whether conducted by a human or an AI agent—must be enhanced. <strong>AI agents can be guided to Create, Evaluate, and Fix well-structured quality-attribute</strong> scenarios using the Bass-style approach. You can explore concrete implementations of these <a href="https://github.com/igramasha/architecture_skills">agent skills for quality attributes and functional requirements on GitHub</a>.</p>
<p>By expressing requirements as measurable stimulus-response scenarios, we can programmatically score and repair existing quality-attribute statements, preventing vague implementation leakage and ensuring that our AI coding partners build systems that scale, endure, and perform.</p>
<h2>The Takeaway</h2>
<p>As we transition into an era of agentic development, the architect's role must focus heavily on defining precise, measurable boundaries. Challenge your stakeholders, use structured scenarios to capture quality attributes, and ensure your AI tools are guided by rigorous architectural standards rather than vague assumptions.</p>
<hr />
<h3>References</h3>
<ul>
<li><p>L. Bass, P. Clements, and R. Kazman, <em>Software Architecture in Practice</em>, 3rd ed. Upper Saddle River, NJ: Addison-Wesley, 2012</p>
</li>
<li><p><a href="https://www.researchgate.net/publication/225352221_Quality_Attribute_Design_Primitives_and_the_Attribute_Driven_Design_Method">Quality Attribute Design Primitives and the Attribute Driven Design Method</a></p>
</li>
<li><p>Bass Framework Details: <a href="https://people.ece.ubc.ca/matei/EECE417/BASS/ch04lev1sec4.html">EECE417/BASS/ch04</a></p>
</li>
<li><p><a href="https://readwise-assets.s3.amazonaws.com/media/wisereads/articles/the-new-sdlc-with-vibe-coding/1317.pdf">The New SDLC With Vibe Coding, Google</a></p>
</li>
</ul>
]]></content:encoded></item></channel></rss>