<?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" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[ArcSyn Insights]]></title><description><![CDATA[Explorando a arquitetura de software como prática, teoria e cultura]]></description><link>https://blog.arcsyn.solutions</link><image><url>https://substackcdn.com/image/fetch/$s_!FV9E!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4127c7c-e22d-41a3-a99c-06e938b1c115_256x256.png</url><title>ArcSyn Insights</title><link>https://blog.arcsyn.solutions</link></image><generator>Substack</generator><lastBuildDate>Tue, 21 Apr 2026 10:53:54 GMT</lastBuildDate><atom:link href="https://blog.arcsyn.solutions/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[ArcSyn]]></copyright><language><![CDATA[pt-br]]></language><webMaster><![CDATA[arcsyn@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[arcsyn@substack.com]]></itunes:email><itunes:name><![CDATA[ArcSyn]]></itunes:name></itunes:owner><itunes:author><![CDATA[ArcSyn]]></itunes:author><googleplay:owner><![CDATA[arcsyn@substack.com]]></googleplay:owner><googleplay:email><![CDATA[arcsyn@substack.com]]></googleplay:email><googleplay:author><![CDATA[ArcSyn]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Documentando decisões arquiteturais – Da visão à prática]]></title><description><![CDATA[Porque pensar bem vem antes de programar certo.]]></description><link>https://blog.arcsyn.solutions/p/documentando-decisoes-arquiteturais</link><guid isPermaLink="false">https://blog.arcsyn.solutions/p/documentando-decisoes-arquiteturais</guid><dc:creator><![CDATA[Lucas Kalb]]></dc:creator><pubDate>Fri, 07 Nov 2025 22:42:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cdec6d0b-7d40-483c-bfb8-23949b8dedf6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Um sistema &#233; t&#227;o bom quanto as decis&#245;es que o sustentam. Cada escolha de arquitetura &#8211; da estrutura de dados ao padr&#227;o de comunica&#231;&#227;o entre servi&#231;os &#8211; incorpora uma expectativa sobre o neg&#243;cio, o comportamento de usu&#225;rios e o ambiente operacional. Quando essas escolhas s&#227;o registradas, a empresa ganha mem&#243;ria corporativa, consist&#234;ncia e argumentos para evoluir. Quando n&#227;o s&#227;o, a organiza&#231;&#227;o se perde em debates circulares, repete erros e fica ref&#233;m de narrativas orais. <strong>Documentar decis&#245;es</strong> n&#227;o &#233; burocracia; &#233; um ato estrat&#233;gico que conecta a vis&#227;o &#224; pr&#225;tica.</p><h2>O problema do conhecimento t&#225;cito</h2><p>Nas primeiras fases de uma startup, &#233; comum que as decis&#245;es sejam tomadas informalmente, em conversas r&#225;pidas entre fundadores, l&#237;deres de produto e desenvolvedores. As justificativas s&#227;o &#243;bvias para quem estava na sala, mas ningu&#233;m as registra. O c&#243;digo cresce, a equipe multiplica, pessoas entram e saem. Meses depois, algu&#233;m pergunta: <strong>&#8220;Por que usamos este framework de ORM?&#8221;</strong> e as respostas variam: &#8220;porque na &#233;poca era o mais simples&#8221;, &#8220;porque o fulano gostava&#8221;, &#8220;porque era o &#250;nico que funcionava com nosso banco&#8221;. Nenhuma delas &#233; mais que um palpite.</p><p>Esse conhecimento t&#225;cito se torna um problema s&#233;rio quando o neg&#243;cio escala. Investidores exigem governan&#231;a, auditores pedem rastreabilidade, novos engenheiros precisam entender o legado e decis&#245;es de ontem condicionam a inova&#231;&#227;o de amanh&#227;. Sem documenta&#231;&#227;o, a empresa fica ref&#233;m do acaso. Decis&#245;es importantes se perdem em e-mails, chats ou na mente de quem j&#225; saiu. A falta de contexto gera retrabalho: novas equipes repetem experimentos, descartam solu&#231;&#245;es que j&#225; foram testadas e sofrem com c&#243;digos com hist&#243;ria mal contada.</p><p>Michael Nygard, em <em>Release It!</em>, conta casos em que a falta de registro dos &#8220;porqu&#234;s&#8221; levou empresas a implementar solu&#231;&#245;es redundantes, comprar softwares desnecess&#225;rios e repetir falhas de seguran&#231;a. Quando chegou a hora de auditar, ningu&#233;m sabia explicar por que determinada tecnologia havia sido escolhida, e a empresa gastou milh&#245;es para refazer algo que havia sido constru&#237;do h&#225; anos.</p><h2>O que s&#227;o Architecture Decision Records (ADRs)?</h2><p>ADR, ou <strong>Architecture Decision Record</strong>, &#233; um documento curto e estruturado que registra uma decis&#227;o arquitetural. Criado pelo pr&#243;prio Nygard, ele segue um formato simples: apresenta contexto, decis&#245;es, op&#231;&#245;es descartadas e consequ&#234;ncias. O objetivo &#233; que qualquer pessoa, ao ler um ADR, entenda a motiva&#231;&#227;o e as implica&#231;&#245;es daquela escolha em poucos minutos. Um ADR t&#237;pico cont&#233;m:</p><ul><li><p><strong>T&#237;tulo</strong>: descreve em uma frase o que foi decidido (por exemplo, &#8220;Escolha de banco de dados NoSQL para m&#243;dulo X&#8221;);</p></li><li><p><strong>Contexto</strong>: explica a situa&#231;&#227;o que levou &#224; decis&#227;o, incluindo requisitos, restri&#231;&#245;es, e informa&#231;&#245;es sobre o neg&#243;cio, usu&#225;rios e tecnologia;</p></li><li><p><strong>Decis&#227;o</strong>: descreve a solu&#231;&#227;o escolhida, por que foi escolhida, e quem participou da decis&#227;o;</p></li><li><p><strong>Alternativas consideradas</strong>: mostra outras op&#231;&#245;es avaliadas, com argumentos a favor e contra;</p></li><li><p><strong>Consequ&#234;ncias</strong>: lista efeitos imediatos e de longo prazo, positivos e negativos, e a&#231;&#245;es derivadas (por exemplo, &#8220;adotar NoSQL implica em replicar dados manualmente e monitorar consist&#234;ncia&#8221;);</p></li><li><p><strong>Data</strong> e <strong>status</strong>: registram quando a decis&#227;o foi tomada e se ainda est&#225; em vigor ou foi revisada.</p></li></ul><p>Neal Ford e Mark Richards, em <em>Software Architecture: The Hard Parts</em>, refor&#231;am que o &#8220;porqu&#234;&#8221; (racionalidade) &#233; mais importante que o &#8220;como&#8221; (implementa&#231;&#227;o). A implementa&#231;&#227;o pode mudar, mas a l&#243;gica que levou &#224; escolha permanece relevante. Um ADR bem escrito ensina novas gera&#231;&#245;es de desenvolvedores por que a empresa evita determinado framework ou por que optou por dividir o mon&#243;lito apenas em certos dom&#237;nios.</p><h2>Benef&#237;cios de documentar os porqu&#234;s</h2><ol><li><p><strong>Alinhamento e transpar&#234;ncia</strong> &#8211; Quando decis&#245;es s&#227;o registradas com clareza, todos na organiza&#231;&#227;o compreendem as motiva&#231;&#245;es. Isso reduz ru&#237;do e evita discuss&#245;es repetitivas. Times de produto entendem por que determinadas features t&#234;m restri&#231;&#245;es, opera&#231;&#245;es sabem onde est&#227;o as fragilidades e times de compliance podem verificar se a tecnologia atende &#224;s normas.</p></li><li><p><strong>Acelera&#231;&#227;o do onboarding</strong> &#8211; Novos engenheiros e arquitetos n&#227;o precisam se perguntar o motivo das escolhas; os ADRs fornecem contexto hist&#243;rico. Isso acelera a capacidade produtiva de novos colaboradores e reduz a depend&#234;ncia de &#8220;gurus&#8221; que conhecem tudo de cabe&#231;a.</p></li><li><p><strong>Base para revis&#245;es</strong> &#8211; Quando o contexto muda (crescimento de tr&#225;fego, mudan&#231;a de estrat&#233;gia, altera&#231;&#227;o legislativa), as decis&#245;es podem ser revisadas com base em suas justificativas originais. Se um ADR indica que a escolha de n&#227;o usar replica&#231;&#227;o geogr&#225;fica se devia ao baixo volume inicial, &#233; mais f&#225;cil revisitar essa decis&#227;o quando a vis&#227;o de expans&#227;o global se torna realidade.</p></li><li><p><strong>Rastreabilidade e governan&#231;a</strong> &#8211; Investidores e reguladores exigem que a empresa saiba explicar como protege dados, como administra transa&#231;&#245;es e como decide mudan&#231;as cr&#237;ticas. ADRs fornecem material para auditorias e relat&#243;rios de conformidade. Eles mostram que as decis&#245;es n&#227;o s&#227;o arbitr&#225;rias, mas baseadas em crit&#233;rios e aprovadas por respons&#225;veis.</p></li><li><p><strong>Preven&#231;&#227;o de decis&#245;es ruins</strong> &#8211; Ao descrever alternativas descartadas, os ADRs revelam contrapartes que podem ser &#250;teis no futuro. E ao expor consequ&#234;ncias, alertam sobre limita&#231;&#245;es que poderiam passar despercebidas em discuss&#245;es apressadas. O ato de escrever obriga os decisores a refletirem mais profundamente, o que por si s&#243; aumenta a qualidade da escolha.</p></li></ol><h2>Como incorporar ADRs &#224; cultura da empresa</h2><ol><li><p><strong>Definir padr&#245;es e templates</strong> &#8211; Crie um template de ADR simples, adaptado ao contexto da empresa, e disponibilize a todos. Explique que n&#227;o se trata de relat&#243;rios longos, mas de registros r&#225;pidos e direcionados.</p></li><li><p><strong>Registrar as decis&#245;es ao serem tomadas</strong> &#8211; N&#227;o adie a escrita. Documente logo ap&#243;s a decis&#227;o, enquanto a motiva&#231;&#227;o est&#225; fresca.</p></li><li><p><strong>Revisar periodicamente</strong> &#8211; Estabele&#231;a momentos (trimestrais ou semestrais) para revisar ADRs e verificar se ainda fazem sentido. Marque ADRs como superseded (superado) quando uma decis&#227;o &#233; alterada. Essa revis&#227;o ajuda a manter o conhecimento atualizado e evita duplicidade.</p></li><li><p><strong>Facilitar acesso e comunica&#231;&#227;o</strong> &#8211; Armazene ADRs em reposit&#243;rios acess&#237;veis (como Git) ou wikis, e divulgue internamente. Fa&#231;a workshops para apresentar decis&#245;es cruciais a todas as &#225;reas. Garanta que l&#237;deres de produto e opera&#231;&#245;es entendam o conte&#250;do.</p></li><li><p><strong>Incentivar a participa&#231;&#227;o de stakeholders</strong> &#8211; Um ADR fica mais rico quando inclui perspectivas de diferentes &#225;reas. Ao registrar uma decis&#227;o sobre pol&#237;tica de logs, convide profissionais de seguran&#231;a e jur&#237;dico para oferecerem insumos. Isso garante que a decis&#227;o esteja alinhada &#224; vis&#227;o e considere limita&#231;&#245;es de todos os lados.</p></li></ol><h2>Exemplos pr&#225;ticos de ADRs</h2><p>Imagine que uma empresa de e-commerce precise decidir como armazenar dados de sess&#227;o de usu&#225;rios. Tr&#234;s op&#231;&#245;es surgem: banco relacional, Redis e cookies persistentes. O ADR mostraria:</p><ul><li><p><strong>Contexto</strong>: alta frequ&#234;ncia de acesso, necessidade de escalabilidade horizontal, lat&#234;ncia baixa, dados de sess&#227;o com expira&#231;&#227;o curta.</p></li><li><p><strong>Decis&#227;o</strong>: uso de Redis por causa da lat&#234;ncia e capacidade de escalar horizontalmente.</p></li><li><p><strong>Alternativas</strong>: banco relacional (acesso lento, mas boa consist&#234;ncia), cookies (sem custo de infraestrutura, mas risco de seguran&#231;a e tamanho limitado).</p></li><li><p><strong>Consequ&#234;ncias</strong>: necessidade de adicionar mecanismo de failover ao Redis para alta disponibilidade; custo de infraestrutura; monitoramento da expirabilidade.</p></li></ul><p>Em outra situa&#231;&#227;o, uma fintech decide adotar API aberta para integrar com parceiros. O ADR registraria que a decis&#227;o foi tomada para acelerar integra&#231;&#245;es e captar parceiros, apesar do aumento de superf&#237;cie de ataque. Como consequ&#234;ncia, a empresa decide investir em WAF (Web Application Firewall) e monitoramento de APIs. Depois de tr&#234;s anos, ao rever o ADR, a empresa pode decidir evoluir para um gateway de API mais robusto, pois o n&#250;mero de parceiros e requisi&#231;&#245;es cresceu.</p><h2>Como a IA pode apoiar na constru&#231;&#227;o de ADRs</h2><p>A escrita de ADRs exige clareza e disciplina, mas isso n&#227;o significa que precise ser um processo pesado. Modelos de linguagem (LLMs) podem atuar como assistentes de racioc&#237;nio, ajudando times a transformar conversas e decis&#245;es dispersas em registros estruturados. Em vez de substituir o julgamento t&#233;cnico, a IA pode <strong>organizar, sugerir e acelerar</strong> o processo de documenta&#231;&#227;o, permitindo que as pessoas se concentrem no essencial: pensar bem.</p><p>Aqui est&#227;o tr&#234;s formas pr&#225;ticas de us&#225;-la:</p><ol><li><p><strong>Transformar discuss&#245;es em decis&#245;es documentadas</strong></p><p>Ao integrar um modelo de linguagem a canais de comunica&#231;&#227;o (como Slack, Jira ou Notion), &#233; poss&#237;vel capturar automaticamente decis&#245;es que emergem em reuni&#245;es ou threads de chat. A IA identifica padr&#245;es de decis&#227;o &#8212; frases como &#8220;decidimos usar&#8230; porque&#8230;&#8221; &#8212; e prop&#245;e um rascunho de ADR, preenchendo se&#231;&#245;es de contexto, decis&#227;o e alternativas. O arquiteto ou tech lead revisa e valida o conte&#250;do, garantindo precis&#227;o e autoria.</p></li><li><p><strong>Gerar e comparar alternativas t&#233;cnicas</strong></p><p>Diante de um problema, LLMs podem ajudar a explorar op&#231;&#245;es, vantagens e riscos de diferentes abordagens. Por exemplo, ao avaliar entre Kafka e RabbitMQ, a IA pode listar crit&#233;rios de escolha com base no contexto descrito (volume de mensagens, SLA, custo, maturidade da equipe). Isso estimula uma an&#225;lise mais rica e reduz o vi&#233;s do &#8220;gosto pessoal&#8221; na decis&#227;o. O resultado pode alimentar diretamente a se&#231;&#227;o <em>&#8220;Alternativas consideradas&#8221;</em> do ADR.</p></li><li><p><strong>Analisar coer&#234;ncia e impacto das decis&#245;es ao longo do tempo</strong></p><p>Com um conjunto de ADRs versionados em um reposit&#243;rio, um modelo de linguagem pode revisar periodicamente os documentos e detectar inconsist&#234;ncias, decis&#245;es conflitantes ou oportunidades de revis&#227;o. Por exemplo, pode sinalizar que um ADR antigo definia um padr&#227;o de autentica&#231;&#227;o diferente do adotado em servi&#231;os recentes. Essa leitura transversal ajuda times a manter a arquitetura coerente e a governan&#231;a viva.</p></li></ol><p>Em suma, a IA amplia a capacidade de uma organiza&#231;&#227;o <strong>refletir sobre si mesma</strong>. Ela n&#227;o substitui o racioc&#237;nio arquitetural &#8212; mas torna o processo de pensar, registrar e revisar decis&#245;es mais cont&#237;nuo, acess&#237;vel e inteligente. O que antes dependia apenas da mem&#243;ria e disciplina humana pode agora se transformar em um <strong>sistema de aprendizado organizacional</strong>, onde cada decis&#227;o alimenta a pr&#243;xima com mais contexto e menos ru&#237;do.</p><h2>Da vis&#227;o &#224; pr&#225;tica: os porqu&#234;s que sustentam a estrat&#233;gia</h2><p>Quando l&#237;deres apresentam uma vis&#227;o arrojada &#8211; expandir para novos mercados, lan&#231;ar produtos disruptivos, multiplicar a base de usu&#225;rios &#8211; a equipe de arquitetura fica respons&#225;vel por traduzir essa vis&#227;o em decis&#245;es concretas. Documentar os porqu&#234;s dessas decis&#245;es fortalece a ponte entre ambi&#231;&#227;o e execu&#231;&#227;o. Ao revisitar os ADRs, l&#237;deres podem avaliar se a estrat&#233;gia ainda se sustenta ou se precisam redirecionar investimentos.</p><p>No longo prazo, uma empresa que mant&#233;m registro de suas decis&#245;es constr&#243;i um diferencial competitivo: ela aprende com seu pr&#243;prio hist&#243;rico, evita armadilhas, acelera a inova&#231;&#227;o e demonstra maturidade. Essa empresa tamb&#233;m cria uma cultura em que questionar, registrar e revisar se torna natural. E isso, por si s&#243;, melhora a qualidade das discuss&#245;es e aproxima a pr&#225;tica da vis&#227;o. O resultado s&#227;o sistemas que evoluem com coer&#234;ncia, equipes que gastam menos tempo em debates vazios e lideran&#231;as que tomam decis&#245;es baseadas em conhecimento s&#243;lido.</p>]]></content:encoded></item><item><title><![CDATA[Arquitetura sob evidência: o valor de um assessment bem conduzido]]></title><description><![CDATA[Por que lideran&#231;as t&#233;cnicas precisam transformar suposi&#231;&#245;es em diagn&#243;sticos e planos de a&#231;&#227;o reais.]]></description><link>https://blog.arcsyn.solutions/p/arquitetura-sob-evidencia-o-valor</link><guid isPermaLink="false">https://blog.arcsyn.solutions/p/arquitetura-sob-evidencia-o-valor</guid><dc:creator><![CDATA[Lucas Kalb]]></dc:creator><pubDate>Tue, 07 Oct 2025 23:52:36 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8befa89c-4135-4cea-a21f-8014a6c81a48_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Crescer &#233; mais do que atingir n&#250;meros de usu&#225;rios ou de faturamento; &#233; sustentar esse crescimento sem perder qualidade e sem comprometer a sa&#250;de financeira. Para startups em expans&#227;o, a arquitetura de software pode ser tanto catalisador como gargalo. Quando decis&#245;es s&#227;o tomadas sem an&#225;lises estruturadas, o risco de falhas aumenta. &#201; a&#237; que entra o <strong>assessment arquitetural</strong>, um processo formalizado que avalia a capacidade do sistema de atender aos objetivos estrat&#233;gicos da empresa e define a&#231;&#245;es para alinhar vis&#227;o e pr&#225;tica.</p><h2>Por que estruturar a avalia&#231;&#227;o?</h2><p>Startups, por natureza, t&#234;m pressa. Elas testam, erram, acertam e pivotam. Esse dinamismo n&#227;o combina com an&#225;lises que consomem meses e geram relat&#243;rios de centenas de p&#225;ginas. Por outro lado, improvisar constantemente gera d&#237;vida t&#233;cnica, sistemas fr&#225;geis e uma bola de neve de refatora&#231;&#245;es. O assessment surge como um meio-termo: um instrumento &#225;gil, mas criterioso, que transforma suposi&#231;&#245;es sobre arquitetura em diagn&#243;sticos e planos de melhoria baseados em evid&#234;ncias.</p><p>Paulo Merson, especialista em engenharia de software, define um assessment como &#8220;uma an&#225;lise sistem&#225;tica para assegurar que a arquitetura atenda aos requisitos funcionais e n&#227;o funcionais&#8221;. Isso inclui revisar arquitetura e documenta&#231;&#227;o existentes, esclarecer requisitos de atributos de qualidade, registrar decis&#245;es e seus motivos, identificar riscos e aumentar a comunica&#231;&#227;o entre stakeholders. Em resumo, o assessment responde &#224;s perguntas: <strong>Nosso sistema suporta a vis&#227;o de neg&#243;cio? Onde est&#227;o os riscos? O que precisamos fazer para ajustar o caminho?</strong></p><h2>Passos fundamentais do assessment</h2><ol><li><p><strong>Defini&#231;&#227;o de escopo e metas</strong> &#8211; Antes de qualquer an&#225;lise, &#233; preciso alinhar as expectativas: o que ser&#225; avaliado (um m&#243;dulo espec&#237;fico, todo o sistema, uma nova iniciativa?), quais atributos de qualidade s&#227;o priorit&#225;rios (desempenho, seguran&#231;a, escalabilidade, manutenibilidade?) e qual horizonte de tempo se deseja cobrir (suporte ao crescimento nos pr&#243;ximos 6 meses, 1 ano, 3 anos?). Sem esse alinhamento, o assessment se torna vago e termina em recomenda&#231;&#245;es gen&#233;ricas.</p></li><li><p><strong>Coleta de dados</strong> &#8211; Uma vez definido o escopo, a equipe de assessment &#8211; formada por arquitetos, desenvolvedores experientes e representantes de produto e opera&#231;&#245;es &#8211; re&#250;ne informa&#231;&#245;es: diagramas, documentos de requisitos, logs de uso, incidentes reportados, m&#233;tricas de lat&#234;ncia e throughput, custos de nuvem, integra&#231;&#245;es externas e cronogramas de entregas. A ideia &#233; ter um panorama realista, e n&#227;o idealizado, do sistema.</p></li><li><p><strong>Modelagem e an&#225;lise</strong> &#8211; Nessa etapa, utiliza-se t&#233;cnicas como a <em>&#193;rvore de Utilidades</em> para organizar atributos de qualidade e cen&#225;rios de avalia&#231;&#227;o. Por exemplo, a &#225;rvore pode conter &#8220;Performance&#8221; no topo, seguido por &#8220;Tempo de Resposta em Pico&#8221; e &#8220;Tempo de Processamento de Lote&#8221;. Para cada cen&#225;rio, definem-se m&#233;tricas esperadas. Usa-se tamb&#233;m a <em>Tabela de Trade-offs</em> para mapear decis&#245;es que impactam positivamente e negativamente atributos de qualidade. Uma decis&#227;o de usar cache melhora performance, mas aumenta complexidade; usar criptografia forte aumenta seguran&#231;a, mas impacta lat&#234;ncia. A an&#225;lise busca identificar onde est&#227;o os gargalos e quais escolhas foram feitas sem considerar consequ&#234;ncias.</p></li><li><p><strong>Identifica&#231;&#227;o de riscos e prioriza&#231;&#227;o</strong> &#8211; Com base na modelagem, cria-se uma lista de riscos: falta de redund&#226;ncia, escalabilidade insuficiente, depend&#234;ncia excessiva de fornecedores, aus&#234;ncia de observabilidade. Em seguida, classifica-se cada risco por probabilidade e impacto, identificando aqueles que mais amea&#231;am a vis&#227;o estrat&#233;gica. Por exemplo, se a meta de crescimento &#233; duplicar o n&#250;mero de transa&#231;&#245;es em um ano, um gargalo em processamento de pagamentos &#233; mais cr&#237;tico do que problemas de interface de backoffice.</p></li><li><p><strong>Propostas de a&#231;&#227;o</strong> &#8211; O assessment n&#227;o se limita a apontar problemas; ele indica caminhos. Para cada risco priorit&#225;rio, prop&#245;e-se solu&#231;&#245;es de curto, m&#233;dio e longo prazo, considerando o or&#231;amento e o tempo. Isso pode incluir migra&#231;&#227;o de banco de dados, refatora&#231;&#227;o de m&#243;dulos cr&#237;ticos, ado&#231;&#227;o de ferramentas de observabilidade, treinos de equipe ou cria&#231;&#227;o de times dedicados a certos componentes. O objetivo &#233; conectar cada a&#231;&#227;o a um objetivo de neg&#243;cio, evitando recomenda&#231;&#245;es que n&#227;o gerem valor real.</p></li><li><p><strong>Documenta&#231;&#227;o e comunica&#231;&#227;o</strong> &#8211; Uma vez analisados e priorizados os riscos e propostas, &#233; vital documentar o que foi descoberto e acordado. Isso envolve atualizar diagramas, escrever ADRs para decis&#245;es tomadas ou revisadas, gerar relat&#243;rios executivos concisos e compartilhar com todas as &#225;reas envolvidas: diretoria, produto, engenharia, opera&#231;&#245;es e suporte. A transpar&#234;ncia evita confus&#245;es e garante que todos saibam por que certas mudan&#231;as ocorrer&#227;o.</p></li><li><p><strong>Acompanhamento e revis&#227;o</strong> &#8211; Um assessment n&#227;o &#233; um evento isolado, mas parte de um ciclo de melhoria cont&#237;nua. A empresa deve acompanhar a execu&#231;&#227;o das a&#231;&#245;es propostas, medir os resultados e planejar revis&#245;es peri&#243;dicas. Se a estrat&#233;gia de neg&#243;cio mudar, o assessment deve ser refeito com novo foco. Essa disciplina evita que sistemas envelhe&#231;am sem cuidado e reduz custos de refatora&#231;&#227;o futura.</p></li></ol><h2>Vantagens para a lideran&#231;a</h2><p>Um assessment estruturado oferece benef&#237;cios tang&#237;veis para executivos:</p><ul><li><p><strong>Visibilidade</strong>: revela a real capacidade do sistema de suportar metas de neg&#243;cio, evitando surpresas desagrad&#225;veis.</p></li><li><p><strong>Tomada de decis&#227;o informada</strong>: apresenta op&#231;&#245;es e trade-offs, mostrando o custo e o impacto de cada escolha, permitindo que l&#237;deres decidam com base em dados.</p></li><li><p><strong>Prioriza&#231;&#227;o de investimentos</strong>: orienta onde investir tempo e recursos, evitando desperd&#237;cios em iniciativas de baixo impacto.</p></li><li><p><strong>Alinhamento</strong>: cria um discurso comum entre diferentes &#225;reas da empresa, reduzindo ru&#237;do e conflitos.</p></li><li><p><strong>Governan&#231;a e conformidade</strong>: ajuda a documentar decis&#245;es, atender auditorias e cumprir requisitos regulat&#243;rios.</p></li></ul><p>Para startups financiadas, apresentar um assessment aos investidores demonstra maturidade e compromisso com sustentabilidade. Para empresas em crescimento org&#226;nico, o assessment &#233; um guia para n&#227;o comprometer a experi&#234;ncia do cliente ao escalar.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A27z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A27z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!A27z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!A27z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!A27z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A27z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86276,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.arcsyn.solutions/i/175576318?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!A27z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!A27z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!A27z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!A27z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79ff51fd-43bd-4496-ad9f-15456f2e3f85_1024x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Conectando avalia&#231;&#227;o e vis&#227;o estrat&#233;gica</h2><p>O grande valor do assessment &#233; alinhar arquitetura &#224; estrat&#233;gia. Ao definir metas de neg&#243;cio e traduzir em atributos de qualidade, o processo deixa claro para a lideran&#231;a qual &#233; o pre&#231;o da ambi&#231;&#227;o. Por exemplo, se a vis&#227;o &#233; ser a plataforma mais r&#225;pida do mercado, o assessment mostrar&#225; o custo de investir em infraestruturas em mem&#243;ria e distribui&#231;&#227;o geogr&#225;fica. Se a meta &#233; expandir para mercados regulados, o assessment trar&#225; &#224; tona a necessidade de refor&#231;ar compliance e seguran&#231;a de dados.</p><p>Isso possibilita conversas maduras: <strong>O quanto estamos dispostos a investir para atingir a vis&#227;o?</strong> <strong>Qual o risco de n&#227;o agir?</strong> <strong>Quais partes do sistema n&#227;o precisamos mudar agora?</strong>. Ao mostrar dados concretos e planos de a&#231;&#227;o, o assessment permite decis&#245;es respons&#225;veis, reduzindo a chance de iniciativas que sacrificam o futuro por ganhos imediatos ou vice-versa.</p><h2>Boas pr&#225;ticas para um assessment eficaz</h2><ul><li><p><strong>Envolver m&#250;ltiplos stakeholders</strong>: Produto, opera&#231;&#245;es, seguran&#231;a e suporte t&#234;m vis&#245;es complementares. O assessment precisa capturar todas.</p></li><li><p><strong>Adotar crit&#233;rios claros de sucesso</strong>: Definir previamente como ser&#225; medida a efic&#225;cia das a&#231;&#245;es recomendadas (redu&#231;&#227;o de lat&#234;ncia, elimina&#231;&#227;o de incidentes, diminui&#231;&#227;o de custos, etc.).</p></li><li><p><strong>Evitar perfeccionismo</strong>: N&#227;o buscar uma arquitetura ideal e est&#225;tica. Foco em resolver os problemas mais cr&#237;ticos agora e preparar terreno para evolu&#231;&#245;es futuras.</p></li><li><p><strong>Registrar e revisitar decis&#245;es</strong>: Manter mem&#243;ria das escolhas. Futuras equipes precisam entender por que a empresa escolheu X em vez de Y.</p></li><li><p><strong>Promover transpar&#234;ncia</strong>: Compartilhar resultados e planos. Nada afeta mais a confian&#231;a do que mudan&#231;as sem justificativas claras.</p></li></ul><div><hr></div><blockquote><p><strong>Aprendizados pr&#225;ticos</strong></p><ul><li><p>Um assessment sem escopo claro vira auditoria improdutiva.</p></li><li><p>M&#233;tricas concretas transformam debates subjetivos em decis&#245;es.</p></li><li><p>Pequenas revis&#245;es frequentes valem mais que um diagn&#243;stico tardio.</p></li></ul></blockquote><div><hr></div><h2>Da vis&#227;o &#224; pr&#225;tica: internalizando o assessment</h2><p>O assessment arquitetural &#233; uma ferramenta que conecta a vis&#227;o estrat&#233;gica &#224; pr&#225;tica cotidiana. Ele torna expl&#237;citas as lacunas entre onde a empresa est&#225; e onde pretende chegar, tra&#231;a um caminho concreto e permite monitorar o progresso. Para startups que desejam escalar sem perder agilidade, internalizar a cultura de assessment &#233; fundamental: ele disciplina o crescimento, reduz riscos, otimiza investimentos e cria uma organiza&#231;&#227;o que aprende com seus sistemas.</p><h3>Refer&#234;ncias</h3><ul><li><p>Paulo Merson &#8212; <em>Architecture Assessment</em></p></li><li><p>Elemar J&#250;nior &#8212; <em>Arquitetura de Software</em></p></li><li><p>Michael Nygard &#8212; <em>Release It!</em></p></li><li><p>Neal Ford &amp; Mark Richards &#8212; <em>Software Architecture: The Hard Parts</em></p></li><li><p>Gregor Hohpe &#8212; <em>The Architect Elevator</em></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Estratégia Tecnológica como Descoberta]]></title><description><![CDATA[Como alinhar vis&#227;o estrat&#233;gica e pr&#225;tica de engenharia em ciclos de descoberta]]></description><link>https://blog.arcsyn.solutions/p/estrategia-tecnologica-como-descoberta</link><guid isPermaLink="false">https://blog.arcsyn.solutions/p/estrategia-tecnologica-como-descoberta</guid><dc:creator><![CDATA[Lucas Kalb]]></dc:creator><pubDate>Wed, 01 Oct 2025 13:07:28 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7c6a4337-2a8c-40ab-a588-74aaeac14f13_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Lideran&#231;as em startups sabem que a &#250;nica constante &#233; a mudan&#231;a. Modelos de neg&#243;cio evoluem, oportunidades emergem, concorrentes reagem e legisla&#231;&#245;es se alteram. Em um ambiente assim, tratar a arquitetura de software como um projeto fechado &#8212; que se desenha uma vez e depois se segue cegamente &#8212; &#233; uma receita para a obsolesc&#234;ncia. <strong>Arquitetura como descoberta</strong> &#233; a percep&#231;&#227;o de que desenhar sistemas &#233; um processo cont&#237;nuo de aprendizado e adapta&#231;&#227;o, em que a vis&#227;o estrat&#233;gica precisa ser constantemente reinterpretada &#224; luz de novas informa&#231;&#245;es.</p><h2>O mito da arquitetura perfeita</h2><p>&#201; tentador buscar a &#8220;arquitetura ideal&#8221;: um conjunto de padr&#245;es e tecnologias que resolva todos os problemas de escalabilidade, seguran&#231;a e agilidade de uma vez por todas. Livros, confer&#234;ncias e tutoriais oferecem receitas prontas, desde micro servi&#231;os at&#233; serverless. Contudo, na pr&#225;tica, poucas organiza&#231;&#245;es conseguem usar uma receita &#8220;universal&#8221; sem customiza&#231;&#245;es. O problema n&#227;o &#233; a aus&#234;ncia de boas pr&#225;ticas, mas a cren&#231;a de que existe uma solu&#231;&#227;o permanente independente do contexto.</p><p>Quando a empresa se pauta por esse mito, a equipe passa meses desenhando diagramas complexos, investindo em ferramentas caras e frameworks sofisticados, mas ignora as incertezas do neg&#243;cio: <strong>quem s&#227;o nossos usu&#225;rios?</strong>, <strong>qual &#233; a nossa proposta de valor?</strong>, <strong>que integra&#231;&#245;es realmente precisaremos?</strong> Pouco depois, quando se descobre que o p&#250;blico n&#227;o responde como esperado ou que uma funcionalidade &#233; menos usada, a arquitetura pronta se mostra inadequada. Ajustes r&#225;pidos se tornam dolorosos e, em vez de agregar valor, o sistema se torna um entrave.</p><h2>Descoberta como ciclo cont&#237;nuo</h2><p>Tratar arquitetura como descoberta significa aceitar que o entendimento do problema evolui. A cada itera&#231;&#227;o, novas hip&#243;teses de neg&#243;cio se confirmam ou s&#227;o refutadas; novas m&#233;tricas mostram gargalos de desempenho; feedback de clientes revela necessidades n&#227;o mapeadas. <strong>O arquiteto passa a ouvir o mercado tanto quanto o c&#243;digo</strong>: acompanha testes A/B, interage com times de produto e marketing, participa de reuni&#245;es de estrat&#233;gia e discute prioridades com a lideran&#231;a.</p><p>Esse ciclo de descoberta inclui algumas etapas:</p><ol><li><p><strong>Explorar a vis&#227;o do neg&#243;cio</strong> &#8211; Entender qual problema a empresa resolve, qual proposta de valor &#233; inegoci&#225;vel e qual ambi&#231;&#227;o de crescimento existe. A vis&#227;o define o &#8220;norte&#8221; e permite que a arquitetura evolua para suport&#225;-la.</p></li><li><p><strong>Mapear incertezas</strong> &#8211; Listar o que ainda n&#227;o se sabe: volume de transa&#231;&#245;es, comportamento de usu&#225;rios, regulamenta&#231;&#245;es futuras, integra&#231;&#245;es externas. Isso evita que decis&#245;es cr&#237;ticas se apoiem em suposi&#231;&#245;es.</p></li><li><p><strong>Hip&#243;tese e prototipagem</strong> &#8211; Construir pequenos experimentos de arquitetura para testar ideias: simula&#231;&#245;es de carga, provas de conceito com tecnologias emergentes, APIs de teste para valida&#231;&#227;o de integra&#231;&#245;es. Em vez de adotar uma abordagem big bang, prototipos revelam limita&#231;&#245;es sem comprometer toda a stack.</p></li><li><p><strong>Medi&#231;&#227;o e feedback</strong> &#8211; Medir lat&#234;ncias, custos de opera&#231;&#227;o, taxa de falhas. Coletar feedback de clientes e analisar logs de uso. Esses dados alimentam ajustes na arquitetura.</p></li><li><p><strong>Refinar e reavaliar</strong> &#8211; Ajustar designs, abandonar escolhas que n&#227;o se mostraram eficazes, escalar componentes que se provaram &#250;teis. Documentar as descobertas e revisit&#225;-las periodicamente.</p></li></ol><p>Nesse ciclo, a arquitetura deixa de ser um fim em si e se torna um meio para validar hip&#243;teses de neg&#243;cio. Cada decis&#227;o &#233; acompanhada de m&#233;tricas. Por exemplo: se a vis&#227;o exige atender clientes em diferentes fusos hor&#225;rios, a descoberta pode mostrar a necessidade de replicar servi&#231;os em m&#250;ltiplas regi&#245;es &#8211; mas s&#243; se monitorarmos o comportamento real de usu&#225;rios nos novos mercados.</p><blockquote><p>Em minha experi&#234;ncia, times de produto e engenharia conseguem atender bem aos itens 3 ao 5. No entanto, alinh&#225;-los ao negocio (item 1-2), fator cr&#237;tico, necessitam de maiores esfor&#231;os e sinergia entre os times.</p></blockquote><h2>Traduzindo mudan&#231;as de neg&#243;cio em atributos t&#233;cnicos</h2><p>Uma das habilidades centrais de arquitetos descobridores &#233; traduzir uma estrat&#233;gia de neg&#243;cio em atributos de qualidade. Se o neg&#243;cio exige lan&#231;ar um servi&#231;o de assinatura premium, isso implica requisitos de alta disponibilidade, sistemas de cobran&#231;a e prote&#231;&#227;o de dados sens&#237;veis. Se a vis&#227;o &#233; expandir para o mercado europeu, a descoberta inclui mapear as exig&#234;ncias do GDPR, como anonimiza&#231;&#227;o e consentimento expl&#237;cito, e ajustar a arquitetura para suportar obriga&#231;&#245;es legais.</p><p>Esse trabalho de tradu&#231;&#227;o leva ao conceito de <strong>atributos de qualidade</strong>: desempenho, seguran&#231;a, disponibilidade, manutenibilidade, escalabilidade, entre outros. Cada atributo est&#225; ligado a uma meta de neg&#243;cio. Por exemplo, uma empresa que oferece um servi&#231;o de streaming precisa de lat&#234;ncia baixa (experi&#234;ncia do cliente), alta disponibilidade (reten&#231;&#227;o de usu&#225;rios) e compliance com direitos autorais (legal). J&#225; uma fintech que processa pagamentos precisa de consist&#234;ncia (integridade financeira), rastreabilidade (auditoria) e resili&#234;ncia (redu&#231;&#227;o de risco). A arquitetura deve refletir essa escolha de prioridades.</p><p>Ao alinhar cada decis&#227;o a um atributo de qualidade ligado &#224; vis&#227;o, o arquiteto garante que recursos e esfor&#231;os sejam direcionados ao que mais importa, evitando desperd&#237;cio em caracter&#237;sticas desnecess&#225;rias. Por exemplo, n&#227;o adianta investir em complexidade de replica&#231;&#227;o geogr&#225;fica se a legisla&#231;&#227;o e a base de usu&#225;rios n&#227;o justificam. Da mesma forma, &#233; desperd&#237;cio desenhar uma solu&#231;&#227;o que suporte 1 milh&#227;o de requisi&#231;&#245;es por segundo quando a previs&#227;o de uso &#233; 10 mil.</p><h2>Exemplos de trade-offs reais</h2><p>Descobrir implica reconhecer trade-offs. Para ilustrar, pense em um marketplace de alimentos artesanais. A vis&#227;o &#233; se tornar a principal vitrine para pequenos produtores, oferecendo experi&#234;ncia premium e log&#237;stica r&#225;pida. Tr&#234;s desafios surgem:</p><ul><li><p><strong>Seguran&#231;a vs. Experi&#234;ncia</strong>: O marketplace precisa proteger dados de cart&#227;o, mas tamb&#233;m requer um fluxo de compra sem fric&#231;&#227;o. Implementar autentica&#231;&#227;o em dois fatores em todas as compras aumenta seguran&#231;a, mas reduz convers&#227;o. A descoberta consiste em medir impacto real na taxa de abandono e decidir onde aplicar autentica&#231;&#227;o, possivelmente com a ajuda de modelos de risco.</p></li><li><p><strong>Desempenho vs. Custo</strong>: Para oferecer busca r&#225;pida e recomenda&#231;&#245;es em tempo real, talvez seja necess&#225;rio adotar um banco de dados em mem&#243;ria. Por&#233;m, isso aumenta o custo de infraestrutura em 300%. A pergunta &#233;: a receita gerada pela experi&#234;ncia premium paga essa conta? A descoberta envolve testes com subset de clientes e acompanhamento do ticket m&#233;dio.</p></li><li><p><strong>Escalabilidade vs. Complexidade</strong>: Conforme o marketplace cresce, surge a tenta&#231;&#227;o de migrar para microservi&#231;os. Isso promete escalabilidade, mas adiciona overhead em comunica&#231;&#227;o, orquestra&#231;&#227;o e observabilidade. A decis&#227;o precisa considerar a capacidade do time e se a estrutura atual ainda atende as previs&#245;es de crescimento. A descoberta pode levar a solu&#231;&#245;es intermedi&#225;rias, como modularizar o mon&#243;lito ou adotar micro servi&#231;os somente em partes cr&#237;ticas.</p></li></ul><p>Cada exemplo mostra que decis&#245;es t&#233;cnicas devem ser tomadas &#224; luz de dados e experimentos, n&#227;o em &#8220;achismos&#8221;. E que a descoberta cont&#237;nua traz &#224; tona o custo real de cada caminho.</p><h2>A import&#226;ncia da comunica&#231;&#227;o e documenta&#231;&#227;o</h2><p>Um ambiente de descoberta exige comunica&#231;&#227;o constante. O arquiteto precisa escutar o produto, traduzir conceitos t&#233;cnicos para stakeholders n&#227;o t&#233;cnicos e documentar as hip&#243;teses testadas e suas conclus&#245;es. Documentar (via ADRs, diagramas atualizados, relat&#243;rios de experimentos) evita que descobertas se percam quando as equipes mudam, e ajuda a alinhar todos &#224; nova vis&#227;o.</p><p>Ao documentar, &#233; poss&#237;vel mostrar para a lideran&#231;a quais foram os experimentos que levaram a uma arquitetura, qual o impacto estimado de uma melhoria e quais decis&#245;es podem ser revisitadas. Isso cria confian&#231;a entre quem define a estrat&#233;gia e quem a implementa, refor&#231;ando que a arquitetura n&#227;o &#233; um campo de improvisos, mas de decis&#245;es justificadas que evoluem com o tempo.</p><h2>Da vis&#227;o &#224; pr&#225;tica: descobrindo sempre</h2><p>Adotar <strong>arquitetura como descoberta</strong> &#233; admitir que n&#227;o existe &#8220;sistema pronto&#8221;, apenas vers&#245;es provis&#243;rias que refletem o que sabemos hoje. Isso traz flexibilidade: a empresa deixa de ficar presa a escolhas do passado e passa a ajustar sua base tecnol&#243;gica conforme a vis&#227;o e as condi&#231;&#245;es mudam.</p><p>Lideran&#231;as que incorporam esse pensamento n&#227;o buscam um &#250;nico &#8220;arquiteto g&#234;nio&#8221; com respostas definitivas, mas constroem equipes que aprendem coletivamente. Elas apoiam experimentos controlados, aceitam descartar componentes que n&#227;o funcionam e entendem que tempo investido em prot&#243;tipos e medi&#231;&#245;es economiza tempo de reescrita futura.</p><p>Na pr&#225;tica, alinhar vis&#227;o &#224; descoberta exige planejamento: reservar tempo para avalia&#231;&#245;es regulares, incluir arquitetos em discuss&#245;es de neg&#243;cio, medir resultados de decis&#245;es anteriores e manter uma cultura de transpar&#234;ncia sobre o que se sabe e o que n&#227;o se sabe. Com isso, a arquitetura deixa de ser uma barreira e se torna um catalisador para o sucesso &#8212; um guia que adapta a rota conforme novas paisagens se revelam.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.arcsyn.solutions/subscribe?&quot;,&quot;text&quot;:&quot;Inscreva-se&quot;,&quot;language&quot;:&quot;pt-br&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Obrigado por ler ArcSyn Insights! Assine gratuitamente para receber novos posts e apoiar meu trabalho.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite seu e-mail&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Inscreva-se"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Perguntas definem sua arquitetura — e o futuro do seu produto]]></title><description><![CDATA[Como tensionar contexto e reduzir risco traduzindo objetivos de neg&#243;cio em decis&#245;es de arquitetura]]></description><link>https://blog.arcsyn.solutions/p/perguntas-definem-sua-arquitetura</link><guid isPermaLink="false">https://blog.arcsyn.solutions/p/perguntas-definem-sua-arquitetura</guid><dc:creator><![CDATA[Lucas Kalb]]></dc:creator><pubDate>Wed, 24 Sep 2025 12:03:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7c266645-9b93-4e35-8d78-c9e42338e41e_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A pr&#225;tica de arquitetura de software costuma ser retratada por diagramas elegantes e escolhas de tecnologias de ponta, mas esses artefatos s&#227;o apenas a ponta do iceberg. Por tr&#225;s de cada diagrama bem desenhado existe um trabalho de investiga&#231;&#227;o, feito de perguntas incisivas e dolorosas que colocam o neg&#243;cio e a tecnologia frente a frente. Lideran&#231;as executivas &#8211; CTOs, gestores de produto, investidores &#8211; sentem os impactos quando a arquitetura deixa de refletir a estrat&#233;gia: custos de infraestrutura inesperados, desempenho sofr&#237;vel em campanhas cruciais, falhas de seguran&#231;a em momentos de exposi&#231;&#227;o p&#250;blica. Com frequ&#234;ncia, essas dores s&#227;o fruto de perguntas n&#227;o feitas ou mal respondidas.</p><p>Se a inova&#231;&#227;o &#233; a vis&#227;o de uma startup, a arquitetura &#233; o conjunto de decis&#245;es que permite que essa vis&#227;o se transforme em pr&#225;tica. Para que essa transforma&#231;&#227;o ocorra, os arquitetos precisam se comportar como investigadores. Em vez de come&#231;ar por "qual framework vamos usar?" ou "vamos nos dividir em microservi&#231;os?", o di&#225;logo come&#231;a com perguntas que tensionam o contexto: <strong>Qual &#233; o modelo de neg&#243;cio que queremos sustentar? Quantas transa&#231;&#245;es pretendemos processar nos pr&#243;ximos 12 meses? Que n&#237;vel de risco regulat&#243;rio podemos assumir?</strong> Esse tipo de questionamento exp&#245;e restri&#231;&#245;es, prioridades e o terreno onde as escolhas t&#233;cnicas ser&#227;o feitas.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.arcsyn.solutions/subscribe?&quot;,&quot;text&quot;:&quot;Inscreva-se&quot;,&quot;language&quot;:&quot;pt-br&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Obrigado por ler ArcSyn Insights! Assine gratuitamente para receber novos posts e apoiar meu trabalho.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite seu e-mail&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Inscreva-se"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Arquitetura como arte de perguntar n&#227;o &#233; apenas uma t&#233;cnica de desenho, mas uma disciplina de alinhamento. Cada pergunta &#233; um elo entre a vis&#227;o estrat&#233;gica e as decis&#245;es cotidianas que a transformar&#227;o em c&#243;digo. Perguntar <strong>"O que acontece se nosso volume de usu&#225;rios triplicar do dia para a noite?"</strong> n&#227;o &#233; pessimismo; &#233; colocar a vis&#227;o de crescimento sob a luz da pr&#225;tica. Perguntar <strong>"Estamos preparados para abrir novos mercados que exigem conformidade com diferentes legisla&#231;&#245;es?"</strong> &#233; traduzir a ambi&#231;&#227;o em requisitos de seguran&#231;a e compliance. Perguntar <strong>"Quanto de lat&#234;ncia nossos usu&#225;rios toleram antes de abandonarem o carrinho?"</strong> &#233; alinhar m&#233;tricas de desempenho com resultados de neg&#243;cio.</p><h2>A dor de n&#227;o perguntar</h2><p>Quando o time de engenharia ignora ou subestima a import&#226;ncia dessas perguntas, a arquitetura se desenvolve como uma colcha de retalhos. Cada entrega responde a um pedido urgente de neg&#243;cio, mas nenhuma decis&#227;o passa por uma an&#225;lise hol&#237;stica. Em startups, onde velocidade &#233; imperativo, essa abordagem parece natural &#8211; at&#233; o dia em que o faturamento &#233; interrompido porque a base de dados n&#227;o suporta o volume de pedidos, ou uma campanha de marketing provoca uma queda generalizada do sistema.</p><p>Um exemplo cl&#225;ssico: a decis&#227;o de adotar microservi&#231;os porque "todas as empresas modernas est&#227;o fazendo". Se ningu&#233;m pergunta <strong>"Quais s&#227;o nossos requisitos de escalabilidade?"</strong> ou <strong>"Quantas equipes independentes temos para justificar esse overhead?"</strong>, o resultado &#233; uma arquitetura fragmentada demais para um time pequeno, gerando custos desproporcionais e retrabalho. Da mesma forma, a ado&#231;&#227;o de uma tecnologia propriet&#225;ria sem perguntas sobre <strong>vendor lock-in</strong> pode prender a empresa a custos de licen&#231;a, impossibilitando pivotar quando a estrat&#233;gia mudar.</p><p>Em 2018, uma fintech brasileira quase perdeu a janela de mercado porque, ao lan&#231;ar um novo servi&#231;o de cr&#233;dito, n&#227;o considerou a pergunta <strong>"Quantas simula&#231;&#245;es de empr&#233;stimo ser&#227;o realizadas simultaneamente?"</strong> Estimativas t&#237;midas levaram a uma arquitetura centralizada; na primeira campanha promocional, a plataforma caiu. O resultado foi uma crise de confian&#231;a e gastos extras para refatorar a arquitetura em plena corrida contra concorrentes. Tudo poderia ter sido evitado com perguntas mais agressivas no in&#237;cio.</p><h2>Perguntas como ferramenta de vis&#227;o</h2><p>O livro <em>The Mom Test</em>, de Rob Fitzpatrick, mostra que fazer perguntas &#233; uma arte que evita dados falsos. Ele aconselha a perguntar sobre fatos passados, n&#227;o suposi&#231;&#245;es futuras, e a buscar o que as pessoas fazem, n&#227;o o que dizem que fariam. Em arquitetura, a aplica&#231;&#227;o &#233; direta: perguntar <strong>"Como lidamos com picos de demanda atualmente?"</strong> &#233; mais &#250;til do que perguntar <strong>"Voc&#234; acha que vamos crescer?"</strong>; perguntar <strong>"Quanto dinheiro o downtime custou no &#250;ltimo incidente?"</strong> revela prioridades de neg&#243;cio melhor do que <strong>"Voc&#234;s querem alta disponibilidade?"</strong></p><p>Da mesma forma, Rian Dutra, em <em>Enviesado</em>, alerta para armadilhas cognitivas que contaminam nossas perguntas: medo de parecer incompetente, tend&#234;ncias a confirmar hip&#243;teses pr&#233;vias ou a imitar decis&#245;es de empresas de sucesso sem refletir sobre contexto. Evitar esses vieses exige coragem para perguntar com neutralidade: <strong>"O que realmente importa para o neg&#243;cio nesta decis&#227;o?"</strong> e ouvir respostas que podem contrariar prefer&#234;ncias pessoais ou modismos.</p><p>Quando CEOs e investidores demandam crescimento acelerado, &#233; responsabilidade dos arquitetos traduzir esse imperativo em perguntas t&#233;cnicas. O alinhamento "da vis&#227;o &#224; pr&#225;tica" acontece quando se pergunta <strong>"Se aumentarmos nossa base de usu&#225;rios em 10 vezes, temos estrutura para suportar a nova carga sem degrada&#231;&#227;o?</strong>", ou <strong>"Quanto nos custar&#225; em termos de infraestrutura e equipe atender a esse volume?"</strong>. Perguntar assim garante que o entusiasmo do pitch deck se materialize em plataformas sustent&#225;veis, evitando a frustra&#231;&#227;o de prometer mais do que se pode entregar.</p><h2>O papel do arquiteto como questionador</h2><p>Arquitetos n&#227;o s&#227;o desenhistas de sistemas no v&#225;cuo; s&#227;o mediadores entre a ambi&#231;&#227;o do neg&#243;cio e o pragmatismo da implementa&#231;&#227;o. Um arquiteto eficiente entra em reuni&#245;es de estrat&#233;gia munido de perguntas provocativas: <em>"O que acontece se o mercado regulat&#243;rio mudar?"</em>; <em>"Se a receita de um produto superar as previs&#245;es, como isso impacta nosso throughput?"</em>; <em>"Qual &#233; a expectativa de experi&#234;ncia do usu&#225;rio e como ela se traduz em lat&#234;ncia e disponibilidade?"</em> Essas perguntas abrem discuss&#245;es sobre prioridades e fazem a lideran&#231;a perceber que cada funcionalidade tem implica&#231;&#245;es em capacidade, seguran&#231;a e custos.</p><p>Ao apresentar seus questionamentos, o arquiteto precisa dominar a arte de traduzir linguagem t&#233;cnica em impacto de neg&#243;cio. Se uma pergunta t&#233;cnica surgir, como <em>"Quanto tempo levaria para implementar replica&#231;&#227;o geogr&#225;fica?"</em>, o arquiteto a deve traduzir em <em>"Replica&#231;&#227;o geogr&#225;fica reduzir&#225; nosso downtime m&#225;ximo de 1 hora para 15 minutos, atendendo &#224;s demandas de grandes clientes que pagam pr&#234;mios. Isso vale o investimento?"</em>. O poder da pergunta est&#225; em relacionar escolhas t&#233;cnicas com m&#233;tricas como churn, NPS e receita recorrente.</p><p>Perguntar exige enfrentar incomodidades. Em muitas organiza&#231;&#245;es, existe a cultura do "faz r&#225;pido e corrige depois", e arquitetos que insistem em perguntar sobre custos ou riscos podem ser vistos como empecilhos. Aqui, a lideran&#231;a deve reconhecer que boas perguntas s&#227;o investimentos: economizam dinheiro ao evitar reescritas e incidentes, protegem a reputa&#231;&#227;o ao antecipar falhas, e aceleram entregas ao reduzir o retrabalho. &#201; preciso promover uma cultura em que perguntar n&#227;o seja visto como cr&#237;tica, mas como amor ao neg&#243;cio.</p><h2>Perguntas para tornar a vis&#227;o pr&#225;tica</h2><p>Para colocar a vis&#227;o estrat&#233;gica em pr&#225;tica, algumas perguntas precisam ser recorrentes em toda startup que busca escalar:</p><ol><li><p><strong>Qual &#233; nosso modelo de monetiza&#231;&#227;o e como o sistema o suporta?</strong> &#8211; Perguntar isso direciona decis&#245;es de arquitetura para otimizar o que traz receita, seja ads, assinaturas ou transa&#231;&#245;es.</p></li><li><p><strong>Qual &#233; a previs&#227;o de crescimento em usu&#225;rios e transa&#231;&#245;es?</strong> &#8211; Sem essa pergunta, &#233; imposs&#237;vel definir escalabilidade necess&#225;ria e custos de infraestrutura.</p></li><li><p><strong>Quais s&#227;o as expectativas de experi&#234;ncia do cliente?</strong> &#8211; Performance, disponibilidade e seguran&#231;a devem ser alinhadas com o que o p&#250;blico valoriza; perguntar isso evita gastar em atributos que n&#227;o geram retorno.</p></li><li><p><strong>Quais regulamenta&#231;&#245;es e pol&#237;ticas de compliance precisamos cumprir?</strong> &#8211; Responde a perguntas de arquitetura sobre criptografia, segrega&#231;&#227;o de dados e logging.</p></li><li><p><strong>Quais s&#227;o os piores cen&#225;rios poss&#237;veis?</strong> &#8211; Perguntar "como isso pode dar errado?" orienta planejamento de resili&#234;ncia e falhas.</p></li><li><p><strong>Qual &#233; a toler&#226;ncia ao risco do neg&#243;cio?</strong> &#8211; Saber se a empresa prefere investir em qualidade ou aceitar riscos com menor custo operacional ajuda a priorizar.</p></li></ol><p>Fazer dessas perguntas um ritual formal &#8211; em reuni&#245;es de kick-off, revis&#245;es de roadmap e retrospectivas de incidentes &#8211; cria um ambiente em que a vis&#227;o se desdobra em crit&#233;rios t&#233;cnicos discutidos abertamente.</p><h2>Da vis&#227;o &#224; pr&#225;tica: um trabalho cont&#237;nuo</h2><p>Ao final do dia, perguntas movem a arquitetura porque elas s&#227;o pontes entre inten&#231;&#227;o e a&#231;&#227;o. Um <strong>CEO</strong> que visualiza sua empresa no topo de um mercado <strong>precisa de arquitetos que fa&#231;am perguntas inc&#244;modas</strong> <strong>agora para evitar desastres depois</strong>. Um investidor quer retorno r&#225;pido, mas esse retorno s&#243; vir&#225; se o sistema aguentar o crescimento; cabe ao arquiteto perguntar se a infraestrutura suporta a vis&#227;o. Um product manager visualiza uma funcionalidade inovadora, mas o arquiteto precisa perguntar se essa funcionalidade n&#227;o compromete seguran&#231;a ou custo.</p><p>A verdadeira pr&#225;tica de arquitetura, portanto, n&#227;o &#233; um evento pontual de design, mas um di&#225;logo permanente entre <strong>vis&#227;o e pr&#225;tica</strong>. Perguntar &#233; uma postura estrat&#233;gica. &#201; a forma como se constr&#243;i confian&#231;a entre tecnologia e neg&#243;cio. &#201; a disciplina que evita que as decis&#245;es sejam tomadas com base em modismos. E, ao registrar e responder a essas perguntas de maneira estruturada, a empresa constr&#243;i uma mem&#243;ria organizacional que orienta cada nova iniciativa.</p><p>&#201; assim que a arquitetura se transforma de passivo ignorado em ativo estrat&#233;gico. Perguntar &#233; o primeiro passo. Responder com dados &#233; o segundo. Documentar e comunicar as implica&#231;&#245;es fecha o ciclo. E, ao repetir esse processo continuamente, startups aprendem a <strong>alinhar vis&#227;o ambiciosa com execu&#231;&#227;o s&#243;lida</strong>, traduzindo planos ousados em sistemas resilientes, <strong>eficientes e alinhados ao que realmente importa</strong>.</p><div><hr></div><p><em>Tenho ajudado equipes a transformar perguntas em guias arquiteturais. Mas quero ouvir de voc&#234;s:</em></p><blockquote><p><strong>Voc&#234;s acham que seus times est&#227;o perguntando o suficiente &#8212; ou j&#225; partem direto para a solu&#231;&#227;o?</strong></p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.arcsyn.solutions/p/perguntas-definem-sua-arquitetura/comments&quot;,&quot;text&quot;:&quot;Deixe um coment&#225;rio&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.arcsyn.solutions/p/perguntas-definem-sua-arquitetura/comments"><span>Deixe um coment&#225;rio</span></a></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.arcsyn.solutions/subscribe?&quot;,&quot;text&quot;:&quot;Inscreva-se&quot;,&quot;language&quot;:&quot;pt-br&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Obrigado por ler ArcSyn Insights! Assine gratuitamente para receber novos posts e apoiar meu trabalho.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite seu e-mail&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Inscreva-se"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Arquitetura de software na era da IA: quatro fatores, novas tensões]]></title><description><![CDATA[Os 4 pilares da arquitetura ainda se sustentam na era da IA?]]></description><link>https://blog.arcsyn.solutions/p/arquitetura-de-software-na-era-da</link><guid isPermaLink="false">https://blog.arcsyn.solutions/p/arquitetura-de-software-na-era-da</guid><dc:creator><![CDATA[Lucas Kalb]]></dc:creator><pubDate>Wed, 17 Sep 2025 15:19:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0598a3d7-e0e1-4f9b-9c7f-873b4b57be6e_1248x832.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Quem me conhece sabe que n&#227;o fui um entusiasta precoce da IA generativa. Pelo contr&#225;rio: acompanhei os primeiros an&#250;ncios com desconfian&#231;a, vendo mais hype do que subst&#226;ncia. O que me fez mudar de postura n&#227;o foi a avalanche de manchetes ou os v&#237;deos impressionantes, mas sim o momento em que as ferramentas come&#231;aram a oferecer respostas mais assertivas &#8212; quando deixaram de ser curiosidade de laborat&#243;rio e passaram a resolver problemas concretos. Foi a&#237; que tive o <em>click</em>: percebi que a IA n&#227;o era apenas mais uma onda tecnol&#243;gica, mas uma for&#231;a capaz de redefinir a forma como pensamos e constru&#237;mos produtos de software.</p><p>E &#233; justamente nesse ponto que volto a Neal Ford e Mark Richards. No cl&#225;ssico <em>Fundamentals of Software Architecture</em>, eles defendem que arquitetura n&#227;o &#233; apenas diagrama ou estilo arquitetural, mas a combina&#231;&#227;o de quatro fatores: <strong>estrutura do sistema, caracter&#237;sticas da arquitetura, decis&#245;es de arquitetura e princ&#237;pios de design</strong>. Esses fatores j&#225; eram suficientes para enquadrar os dilemas de um arquiteto. A chegada da IA, no entanto, n&#227;o os substitui: ela os expande, adicionando tens&#245;es in&#233;ditas.</p><div><hr></div><h2>A estrutura em muta&#231;&#227;o: das linhas pretas aos pipelines de IA</h2><p>Ford e Richards definem <strong>estrutura</strong> como a organiza&#231;&#227;o f&#237;sica e conceitual do sistema &#8212; os estilos arquiteturais como camadas, microservi&#231;os ou microkernel. Na pr&#225;tica, sempre que desenhamos diagramas de caixas e setas, estamos lidando com estrutura. No in&#237;cio da carreira, eu via essa atividade como o cora&#231;&#227;o da arquitetura: escolher se a aplica&#231;&#227;o seria monol&#237;tica ou distribu&#237;da, onde colocar o banco de dados, quais servi&#231;os poderiam se comunicar diretamente. A chegada da IA, por&#233;m, modificou o tabuleiro.</p><p>Modelos de IA exigem <strong>pipelines de dados</strong> para coleta, limpeza, versionamento e treinamento. Eles tamb&#233;m demandam infraestruturas espec&#237;ficas (GPUs, TPUs, clusters distribu&#237;dos) e integra&#231;&#227;o com servi&#231;os externos. Em outras palavras, s&#227;o componentes que n&#227;o se encaixam nas estruturas tradicionais. Arquiteturas modernas precisam comportar pipelines que treinam e fazem <em>fine-tuning</em> de modelos, sistemas de observabilidade para monitorar <em>drift</em>, e mecanismos de infer&#234;ncia servindo modelos em tempo real.</p><p>Essa imprevisibilidade tem impactos profundos. C&#243;digos gerados por IA s&#227;o probabil&#237;sticos e desafiam as suposi&#231;&#245;es determin&#237;sticas de arquiteturas tradicionais, levando a testes inst&#225;veis e diverg&#234;ncias de comportamento. Percebi isso quando um microservi&#231;o, alimentado por um LLM para normalizar dados banc&#225;rios, gerou tr&#234;s vers&#245;es diferentes do mesmo algoritmo durante o desenvolvimento. O problema n&#227;o era o estilo arquitetural em si, mas a incorpora&#231;&#227;o de uma nova &#8220;camada&#8221; probabil&#237;stica dentro da estrutura. A solu&#231;&#227;o que tem emergido &#233; adotar uma camada intermedi&#225;ria de orquestra&#231;&#227;o &#8212; um <em>guardrail</em> que direciona chamadas, controla contexto e filtra resultados. De repente, a estrutura n&#227;o &#233; apenas sobre caixas est&#225;ticas; &#233; sobre fluxos de aprendizado, &#237;ndices vetoriais e sidecars de racioc&#237;nio que protegem o restante do sistema.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.arcsyn.solutions/subscribe?&quot;,&quot;text&quot;:&quot;Inscreva-se&quot;,&quot;language&quot;:&quot;pt-br&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Obrigado pela leitura! Caso deseje receber novas publica&#231;&#245;es assine meu newsletter</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite seu e-mail&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Inscreva-se"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>Caracter&#237;sticas expandidas: al&#233;m dos &#8220;-ilities&#8221; cl&#225;ssicos</h2><p>O segundo fator, as <strong>caracter&#237;sticas da arquitetura</strong>, abrange atributos como disponibilidade, escalabilidade, desempenho e seguran&#231;a. Esses &#8220;-ilities&#8221; funcionam como crit&#233;rios de sucesso: definem o que precisa ser preservado, mesmo que a funcionalidade mude.</p><p>No contexto de IA, os atributos cl&#225;ssicos continuam v&#225;lidos, mas novos entram em cena:</p><ul><li><p><strong>Explicabilidade e &#233;tica</strong>: usu&#225;rios e reguladores querem saber por que um modelo tomou certa decis&#227;o.</p></li><li><p><strong>Confiabilidade de infer&#234;ncia</strong>: lidar com alucina&#231;&#245;es e resultados inconsistentes exige estrat&#233;gias de <em>fallback</em>, testes de robustez e monitoramento de acur&#225;cia.</p></li><li><p><strong>Privacidade e compliance</strong>: dados sens&#237;veis usados em treinamento ou infer&#234;ncia precisam de cuidados adicionais.</p></li><li><p><strong>Custo operacional</strong>: modelos de linguagem de &#250;ltima gera&#231;&#227;o s&#227;o caros; arquiteturas precisam equilibrar lat&#234;ncia e custo de GPUs ou chamadas a APIs.</p></li></ul><p>Esses atributos influenciam a estrutura. Se a privacidade &#233; essencial, talvez seja necess&#225;rio treinar modelos localmente; se a confiabilidade &#233; cr&#237;tica, um mecanismo de valida&#231;&#227;o humana (<em>human in the loop</em>) pode ser obrigat&#243;rio. As novas caracter&#237;sticas tamb&#233;m criam trade-offs: priorizar explicabilidade pode reduzir desempenho; garantir privacidade pode limitar a qualidade do modelo. A arquitetura vira um exerc&#237;cio constante de negocia&#231;&#227;o entre requisitos cl&#225;ssicos e emergentes.</p><div><hr></div><h2>Decis&#245;es de arquitetura em um mar de incertezas</h2><p>Ford e Richards definem <strong>decis&#245;es de arquitetura</strong> como regras ou restri&#231;&#245;es que determinam como o sistema deve ser constru&#237;do. Elas protegem a integridade da estrutura e das caracter&#237;sticas, impondo limites claros.</p><p>A IA amplia e complica esse universo de decis&#245;es. Uma das primeiras perguntas tornou-se: <strong>treinar ou consumir modelos?</strong> Decidir entre um modelo pr&#243;prio, que exige curadoria de dados e infraestrutura pesada, ou um servi&#231;o externo, que oferece menor controle e custos vari&#225;veis, &#233; hoje uma decis&#227;o arquitetural. Outras quest&#245;es incluem:</p><ul><li><p><strong>On-device ou cloud?</strong> Modelos executados localmente t&#234;m menor lat&#234;ncia e preservam privacidade, mas podem ser limitados em tamanho.</p></li><li><p><strong>Modelo geral ou especializado?</strong> Usar um LLM poderoso para tarefas gen&#233;ricas ou um modelo pequeno e afinado para dom&#237;nios espec&#237;ficos.</p></li><li><p><strong>Forma de integra&#231;&#227;o</strong>: IA como m&#243;dulo interno, como servi&#231;o externo ou como interface principal (chatbots, voz).</p></li><li><p><strong>Pol&#237;ticas de </strong><em><strong>prompt</strong></em><strong> e governan&#231;a</strong>: definir padr&#245;es de engenharia de <em>prompt</em>, selecionar modelos apropriados e estabelecer pipelines de avalia&#231;&#227;o.</p></li></ul><p>Decis&#245;es agora se tornam mais frequentes e ef&#234;meras. Como os modelos evoluem r&#225;pido, regras que valem hoje podem se tornar obsoletas em meses. Por isso, muitas organiza&#231;&#245;es adotam o conceito de <strong>fitness functions</strong>: m&#233;tricas automatizadas que avaliam continuamente se as decis&#245;es ainda entregam os atributos desejados. Em vez de decidir uma &#250;nica vez e documentar, o arquiteto cria guardrails e mecanismos de revis&#227;o constantes.</p><div><hr></div><h2>Princ&#237;pios de design: da separa&#231;&#227;o de responsabilidades ao <em>responsible AI</em></h2><p>O quarto fator, os <strong>princ&#237;pios de design</strong>, fornece orienta&#231;&#245;es para os desenvolvedores tomarem boas decis&#245;es sem que tudo seja imposto. Esses princ&#237;pios funcionam como uma b&#250;ssola: se uma decis&#227;o n&#227;o for expl&#237;cita, o desenvolvedor sabe qual caminho seguir.</p><p>Na era da IA, esses princ&#237;pios precisam evoluir. Alguns exemplos:</p><ul><li><p><strong>Responsible AI</strong>: adotar diretrizes &#233;ticas e sociais desde a concep&#231;&#227;o, evitando vieses e assegurando uso transparente de dados.</p></li><li><p><strong>Data-centric design</strong>: tratar dados como produto central, com pipelines e cat&#225;logos governados.</p></li><li><p><strong>Observabilidade de modelos</strong>: monitorar acur&#225;cia, deriva (<em>model drift</em>) e <em>fairness</em>.</p></li><li><p><strong>Simplicidade e modularidade</strong>: princ&#237;pios cl&#225;ssicos como separa&#231;&#227;o de responsabilidades tornam-se ainda mais valiosos para encapsular componentes imprevis&#237;veis.</p></li></ul><p>Esses princ&#237;pios, assim como os tradicionais SOLID ou DRY, ajudam a manter a coer&#234;ncia quando novas integra&#231;&#245;es surgem. Em projetos recentes, percebi que instruir equipes a encapsular chamadas de IA em adaptadores e expor apenas contratos est&#225;veis evitava propaga&#231;&#227;o de mudan&#231;as. Outro princ&#237;pio importante &#233; n&#227;o confiar cegamente em sa&#237;das de modelos; sempre que poss&#237;vel, adicionar valida&#231;&#227;o humana ou l&#243;gica determin&#237;stica.</p><div><hr></div><h2>Entre o fasc&#237;nio e a prud&#234;ncia</h2><p>Escrever este ensaio foi um exerc&#237;cio de reflex&#227;o sobre como os quatro fatores de Ford &amp; Richards continuam fundamentais, mesmo quando somos seduzidos pela magia da IA. A arquitetura de software permanece ancorada na <strong>estrutura</strong>, nas <strong>caracter&#237;sticas</strong>, nas <strong>decis&#245;es</strong> e nos <strong>princ&#237;pios</strong>, mas cada um desses elementos ganhou novas camadas de significado. A IA n&#227;o dissolveu os pilares; ela os esticou e, em alguns casos, os tensionou at&#233; quase romper.</p><p>A estrutura agora inclui fluxos de dados e pipelines de IA. As caracter&#237;sticas expandiram-se com explicabilidade, &#233;tica e custo de infer&#234;ncia. As decis&#245;es tornaram-se mais vol&#225;teis e sujeitas a revis&#245;es constantes. Os princ&#237;pios de design passaram a incorporar a no&#231;&#227;o de <em>responsible AI</em> e a centralidade de dados.</p><p>As bases que Ford &amp; Richards propuseram, no entanto, oferecem uma estrutura mental s&#243;lida para navegar nessa nova era. Entender que cada decis&#227;o &#233; um trade-off e que cada caracter&#237;stica requer concess&#245;es torna mais f&#225;cil discutir, por exemplo, por que vale a pena sacrificar lat&#234;ncia para ganhar mais privacidade.</p><p>Arquitetos n&#227;o ser&#227;o substitu&#237;dos por um &#8220;ArchitectGPT&#8221;, mas por outros arquitetos que souberem usar IA com intelig&#234;ncia e responsabilidade. Para mim, isso significa abra&#231;ar a IA como companheira de trabalho, n&#227;o como rival &#8212; e adaptar os quatro fatores da arquitetura a um mundo onde o software j&#225; n&#227;o &#233; apenas feito por humanos, mas em colabora&#231;&#227;o com m&#225;quinas inteligentes.</p><div><hr></div><blockquote><p><em>E voc&#234;, <strong>como a IA tem influenciado as suas decis&#245;es arquiteturais?</strong> Quero ouvir suas opini&#245;es nos coment&#225;rios.</em></p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.arcsyn.solutions/p/arquitetura-de-software-na-era-da/comments&quot;,&quot;text&quot;:&quot;Deixe um coment&#225;rio&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.arcsyn.solutions/p/arquitetura-de-software-na-era-da/comments"><span>Deixe um coment&#225;rio</span></a></p>]]></content:encoded></item><item><title><![CDATA[Property-Based Testing: entrando no mundo das propriedades ]]></title><description><![CDATA[Quando um c&#225;lculo inocente vira dor de cabe&#231;a]]></description><link>https://blog.arcsyn.solutions/p/property-based-testing-entrando-no</link><guid isPermaLink="false">https://blog.arcsyn.solutions/p/property-based-testing-entrando-no</guid><dc:creator><![CDATA[Lucas Kalb]]></dc:creator><pubDate>Fri, 12 Sep 2025 12:28:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/283dda51-89ce-49d0-a424-a5474cdf60cb_4001x4001.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Tempos atr&#225;s trabalhei em um sistema financeiro que precisava calcular o <strong>rateio de categorias</strong>. O c&#225;lculo envolvia tanto valores de <strong>compet&#234;ncia</strong> quanto de <strong>caixa</strong> &#8211; duas vis&#245;es distintas, mas fundamentais.</p><p>Fizemos v&#225;rios testes: cobrimos cen&#225;rios esperados, aqueles que todo mundo imaginava que poderiam dar errado. Tudo parecia em ordem. At&#233; que em produ&#231;&#227;o surgiram combina&#231;&#245;es de valores que ningu&#233;m tinha previsto. Os resultados sa&#237;am incorretos, relat&#243;rios ficavam inconsistentes e a press&#227;o foi imediata: <strong>correria para corrigir em produ&#231;&#227;o, mais erros, atrasos acumulados e desgaste com os usu&#225;rios</strong>.</p><p>O mais curioso &#233; que os bugs n&#227;o estavam escondidos em alguma l&#243;gica obscura. Eles apareciam justamente em <strong>edge cases</strong> que simplesmente n&#227;o foram testados. Situa&#231;&#245;es improv&#225;veis mas poss&#237;veis como acontece em software o improv&#225;vel sempre d&#225; um jeito de aparecer.</p><p>Foi nessa experi&#234;ncia que percebi: testar apenas casos exemplares nos d&#225; uma falsa sensa&#231;&#227;o de seguran&#231;a. E foi assim que comecei a enxergar valor em outra abordagem &#8211; o <em>property-based testing</em>.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.arcsyn.solutions/subscribe?&quot;,&quot;text&quot;:&quot;Assine agora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.arcsyn.solutions/subscribe?"><span>Assine agora</span></a></p><div><hr></div><h3>Property-Based Testing</h3><p>Quando falamos em testar software &#233; comum pensar em casos de uso espec&#237;ficos: &#8220;com este input, espero este output&#8221;. Essa abordagem funciona, mas &#224;s vezes nos d&#225; uma sensa&#231;&#227;o exagerada de seguran&#231;a. <em>Property-based testing</em> prop&#245;e um olhar diferente: em vez de verificar exemplos isolados, vamos identificar <strong>regras gerais</strong> que o sistema sempre deve respeitar, independentemente dos dados de entrada.</p><blockquote><p>Quais s&#227;o as <strong>propriedades invariantes</strong> que sempre devem se manter verdadeiras, n&#227;o importa o input</p></blockquote><p>Por exemplo:</p><ul><li><p>&#8220;O saldo de uma conta nunca pode ser negativo.&#8221;</p></li><li><p>&#8220;Um relat&#243;rio consolidado n&#227;o pode perder transa&#231;&#245;es no processo.&#8221;</p></li><li><p>&#8220;Se eu ordenar uma lista e depois inverter a ordem, devo conseguir recuperar os elementos originais.&#8221;</p></li></ul><p>Essas propriedades n&#227;o descrevem cen&#225;rios, descrevem <strong>leis</strong> e &#233; aqui que PBT mostra seu valor: ele <strong>gera automaticamente milhares de casos aleat&#243;rios</strong> para tentar quebrar essas leis. Se alguma falhar, descobrimos uma brecha antes que ela chegue em produ&#231;&#227;o.</p><p>Essa mudan&#231;a de foco ajuda a aumentar a confian&#231;a em sistemas complexos e, em experi&#234;ncias relatadas por empresas que adotaram PBT, como Amazon e Volvo, revelou benef&#237;cios significativos ao descobrir bugs fora do alcance dos testes tradicionais.</p><h4>Descobrindo boas propriedades</h4><p>Uma das d&#250;vidas mais frequentes &#233;: &#8220;como encontro essas propriedades?&#8221;. N&#227;o existe f&#243;rmula m&#225;gica, mas alguns <strong>padr&#245;es</strong> ajudam a guiar o processo, Comece entrevistando neg&#243;cio, suporte e finan&#231;as. Busque frases que soam como lei:</p><ul><li><p>&#8220;Saldo de conta n&#227;o pode ficar negativo.&#8221;</p></li><li><p>&#8220;N&#227;o existe fatura paga duas vezes.&#8221;</p></li><li><p>&#8220;Pedido n&#227;o pode ser entregue antes de emitida a nota.&#8221;</p></li><li><p>&#8220;Convers&#227;o de moedas deve conservar valor at&#233; a precis&#227;o acordada.&#8221;</p></li></ul><p>Transforme cada frase em propriedade usando um padr&#227;o simples:</p><ul><li><p><strong>Invariante</strong>: &#8220;Para todo X, Y&#8230; sempre vale Z.&#8221;</p></li><li><p><strong>Limite/monotonicidade</strong>: &#8220;Se A aumenta, B n&#227;o pode diminuir.&#8221;</p></li><li><p><strong>Conserva&#231;&#227;o</strong>: &#8220;Total antes == total depois (considerando taxas/ajustes).&#8221;</p></li><li><p><strong>Reversibilidade/round-trip</strong>: &#8220;encode(decode(x)) == x (dentro de toler&#226;ncia).&#8221;</p></li><li><p><strong>Idempot&#234;ncia</strong>: &#8220;Aplicar a mesma opera&#231;&#227;o N vezes == 1 vez.&#8221;</p></li><li><p><strong>Comutatividade/associatividade</strong>: &#8220;op(a,b) == op(b,a)&#8221; / &#8220;op(op(a,b),c) == op(a,op(b,c))&#8221;.</p></li></ul><blockquote><p><strong>Dica</strong>: invariantes &#8220;chatas&#8221; s&#227;o ouro. As falhas caras nascem quase sempre do &#243;bvio esquecido.</p></blockquote><p>Esses padr&#245;es n&#227;o esgotam as possibilidades, mas fornecem um ponto de partida &#250;til. Outra fonte rica s&#227;o incidentes passados e contratos de neg&#243;cio: falhas anteriores e SLAs costumam revelar invariantes impl&#237;citas (&#8220;saldo nunca negativo&#8221;, &#8220;transa&#231;&#245;es n&#227;o duplicadas&#8221;). Transform&#225;-las em propriedades evita a repeti&#231;&#227;o desses erros.</p><p><em>psc: futuramente farei um post exclusivo de como ser um ca&#231;ador de problema xD</em></p><h4>Refinando o que realmente importa</h4><p>Uma vez identificada a propriedade, &#233; hora de refin&#225;-la. Testes baseados em propriedades pedem que voc&#234; defina <strong>dom&#237;nios de entrada</strong> (faixa de valores poss&#237;veis), <strong>estado inicial</strong> e <strong>observ&#225;veis</strong> (o que ser&#225; medido para validar a propriedade).</p><p>No exemplo de testar a fun&#231;&#227;o <code>max</code> em uma lista, em vez de enumerar dezenas de casos, voc&#234; pode dizer: &#8220;para qualquer lista, <code>max(list) == last(sort(list))</code>&#8221; e deixar o framework gerar dados aleat&#243;rios. Se o teste falhar, o mecanismo de <em>shrinking</em> reduz o contraexemplo para um caso m&#237;nimo, o que facilita ajustar a propriedade ou o c&#243;digo.</p><p>Sugest&#245;es pr&#225;ticas:</p><ul><li><p><strong>Varie entradas realistas e maliciosas</strong>: valores comuns, extremos e inv&#225;lidos.</p></li><li><p><strong>Considere correla&#231;&#245;es</strong>: respeite depend&#234;ncias internas, como data de entrega &#8805; data de emiss&#227;o.</p></li><li><p><strong>Defina toler&#226;ncias</strong>: margens de erro aceit&#225;veis em c&#225;lculos num&#233;ricos.</p></li><li><p><strong>Trate exce&#231;&#245;es como parte do teste</strong>: entradas inv&#225;lidas devem gerar erros claros e sem efeitos colaterais.</p></li></ul><h4>Quando abrir ou fechar a caixa</h4><p>O PBT pode funcionar como <strong>teste de caixa preta</strong>, em que voc&#234; n&#227;o olha para o c&#243;digo interno: apenas fornece entradas e observa as sa&#237;das. Essa abordagem tem a vantagem de exercitar o sistema de ponta a ponta, avaliando interface, servidor, banco de dados e integra&#231;&#245;es.</p><p>Mas h&#225; momentos em que abrir a &#8220;caixa&#8221; &#233; &#250;til, como para:</p><ul><li><p><strong>Instrumentar contadores internos</strong>: medir valores escondidos (como n&#250;mero de retries ou erros) para garantir que n&#227;o ultrapassem limites esperados.</p></li><li><p><strong>Verificar invariantes estruturais em estruturas de dados</strong>: checar se propriedades internas (como &#225;rvore balanceada ou &#237;ndices &#250;nicos) continuam v&#225;lidas ap&#243;s opera&#231;&#245;es.</p></li><li><p><strong>Modelar sequ&#234;ncias de estados em fluxos complexos</strong>: gerar passos aleat&#243;rios em processos (ex.: pedido &gt; pagamento &gt; estorno) e validar que cada transi&#231;&#227;o respeita as regras.</p></li></ul><p>Em muitos casos, combinar abordagens &#8211; caixa preta para APIs p&#250;blicas e caixa branca para estruturas internas &#8211; oferece o melhor equil&#237;brio entre realismo e cobertura.</p><h4>Pontos de aten&#231;&#227;o e limites</h4><p>Apesar de poderoso, o PBT traz alguns desafios:</p><ul><li><p><strong>Complexidade inicial</strong>: escrever boas propriedades e geradores demanda esfor&#231;o.</p></li><li><p><strong>Sobrecarga de configura&#231;&#227;o</strong>: escolher ferramentas e definir propriedades leva tempo.</p></li><li><p><strong>Distribui&#231;&#227;o de dados</strong>: geradores mal calibrados podem deixar &#225;reas cegas.</p></li><li><p><strong>Interpreta&#231;&#227;o de falhas</strong>: entender contraexemplos pode exigir investiga&#231;&#227;o cuidadosa.</p></li><li><p><strong>Flakiness</strong>: rel&#243;gio, timezones e depend&#234;ncias externas podem gerar instabilidade.</p></li><li><p><strong>Integra&#231;&#227;o com outras t&#233;cnicas</strong>: PBT complementa, n&#227;o substitui, testes unit&#225;rios ou de integra&#231;&#227;o.</p></li></ul><div><hr></div><h3>Ades&#227;o no mundo real</h3><p>Voltando ao caso do <strong>c&#225;lculo de rateio de categorias</strong>, o <em>property-based testing</em> poderia ter sido um grande aliado. O processo partia de um pedido de venda, com valores de frete, impostos e descontos, que depois eram distribu&#237;dos entre categorias espec&#237;ficas. A regra de ouro era simples:</p><blockquote><p><strong>a soma dos valores de compet&#234;ncia e de caixa deveria ser exatamente igual &#224; soma dos valores rateados.</strong></p></blockquote><p>Com testes tradicionais cobrimos alguns cen&#225;rios previs&#237;veis, mas com PBT poder&#237;amos ter declarado essa propriedade como lei, deixando o framework gerar automaticamente <strong>milhares de combina&#231;&#245;es de pedidos</strong>: com ou sem frete, descontos negativos, impostos fora do padr&#227;o, rateios ausentes ou m&#250;ltiplos por centro de custo (totais ou parciais).</p><p>A cada execu&#231;&#227;o, a verifica&#231;&#227;o seria sempre a mesma: <em>a soma dos valores rateados deve bater com os totais do pedido</em>. Se alguma entrada quebrasse essa regra, o teste encontraria o contraexemplo e ainda o reduziria ao caso mais simples para facilitar a investiga&#231;&#227;o.</p><p>Em outras palavras, enquanto n&#243;s test&#225;vamos exemplos &#8220;&#243;bvios&#8221;, o PBT teria explorado as possibilidades &#8220;escondidas&#8221; &#8211; justamente aquelas que acabaram estourando em produ&#231;&#227;o.</p><blockquote><p>Empresas que lidam com sistemas cr&#237;ticos t&#234;m usado PBT h&#225; anos em componentes de alta complexidade. Nessas situa&#231;&#245;es, propriedades atuam tamb&#233;m como <strong>documenta&#231;&#227;o viva</strong>, ajudando novos desenvolvedores a compreender o que &#233; essencial no sistema.</p></blockquote><div><hr></div><h3>Arquitetura, dom&#237;nio e estrat&#233;gia</h3><p>Em um n&#237;vel mais profundo, propriedades n&#227;o s&#227;o apenas aspectos t&#233;cnicos. Elas revelam <strong>o que &#233; essencial no dom&#237;nio de neg&#243;cio</strong>.</p><p>Quando uma fintech afirma que <em>&#8220;nenhuma transa&#231;&#227;o pode ser contabilizada duas vezes&#8221;</em>, est&#225; expressando uma <strong>regra inegoci&#225;vel de sobreviv&#234;ncia</strong>. Quando um ERP de log&#237;stica define que <em>&#8220;nenhuma entrega pode ser registrada com data anterior &#224; emiss&#227;o da nota fiscal&#8221;</em>, est&#225; lidando com a <strong>base legal do neg&#243;cio</strong>.</p><p>Essas invariantes n&#227;o s&#227;o detalhes de c&#243;digo: s&#227;o <strong>decis&#245;es arquiteturais</strong> que sustentam a <strong>confiabilidade</strong> do produto. Ignor&#225;-las &#8211; ou test&#225;-las apenas com exemplos ocasionais &#8211; &#233; abrir espa&#231;o para falhas estrat&#233;gicas.</p><p>O property-based testing, nesse sentido, &#233; mais do que uma t&#233;cnica de QA. &#201; uma forma de alinhar <strong>arquitetura de software e l&#243;gica essencial do neg&#243;cio</strong>.</p><h3>O &#226;ngulo da confiabilidade</h3><p>Grandes falhas em sistemas cr&#237;ticos raramente nascem de cen&#225;rios complexos. Quase sempre, s&#227;o quebras de propriedades simples:</p><ul><li><p>um saldo que ficou negativo,</p></li><li><p>uma duplicata que passou batido,</p></li><li><p>um campo que aceitou valores inconsistentes.</p></li></ul><p>Essas falhas custam caro n&#227;o apenas em retrabalho, mas em perda de confian&#231;a. E confian&#231;a, em software corporativo, &#233; capital estrat&#233;gico.</p><p>Ao aplicar PBT, ampliamos o alcance da valida&#231;&#227;o. Em vez de dezenas de casos escolhidos a dedo, temos milhares de combina&#231;&#245;es testadas de forma autom&#225;tica. N&#227;o se trata de eliminar todo risco, mas de aumentar a confian&#231;a estat&#237;stica de que nossas invariantes est&#227;o protegidas.</p><div><hr></div><h3>Conclus&#227;o</h3><p>Property-based testing nos convida a refletir: <strong>quais verdades devem permanecer imut&#225;veis no nosso sistema?</strong>. N&#227;o se trata de abandonar os testes que j&#225; fazemos, mas de acrescentar uma lente diferente. Essa lente ajuda a expor e proteger as leis invis&#237;veis que regem o neg&#243;cio, aumentando a confian&#231;a no software.</p><p>Vale a pena come&#231;ar pequeno: escolha uma propriedade simples, implemente, e veja o que os testes revelam. A experi&#234;ncia tende a ser reveladora e, com o tempo, gratificante.</p><div><hr></div><p>Para continuar a conversa&#8230;</p><blockquote><p>E voc&#234;, j&#225; passou por situa&#231;&#245;es em que um detalhe n&#227;o testado acabou virando um problema em produ&#231;&#227;o? Como imagina que o property-based testing poderia ajudar no seu contexto?</p></blockquote><p>Deixe seu coment&#225;rio abaixo &#8211; vou gostar de ouvir suas experi&#234;ncias e trocar ideias.</p>]]></content:encoded></item><item><title><![CDATA[Software sem qualidade não quebra só sistemas — quebra empresas]]></title><description><![CDATA[A import&#226;ncia de limitar atributos de qualidade, alinh&#225;-los &#224; estrat&#233;gia e revis&#225;-los continuamente.]]></description><link>https://blog.arcsyn.solutions/p/software-sem-qualidade-nao-quebra</link><guid isPermaLink="false">https://blog.arcsyn.solutions/p/software-sem-qualidade-nao-quebra</guid><dc:creator><![CDATA[Lucas Kalb]]></dc:creator><pubDate>Wed, 10 Sep 2025 14:14:10 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6110a7f7-ef06-4ff0-aed1-0895c9cbe9a5_1080x1350.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Um caso que chocou Wall Street</h2><p>Poucas horas no mercado podem arruinar anos de trabalho. Em 1&#186; de agosto de 2012, a Knight Capital &#8212; uma das maiores corretoras de alta frequ&#234;ncia &#8212; colocou em produ&#231;&#227;o um novo m&#243;dulo de roteamento de ordens (SMARS). </p><p>O c&#243;digo substitu&#237;a um algoritmo de teste antigo chamado <strong>Power Peg</strong> que havia sido desativado desde 2003. Entretanto, parte desse algoritmo de testes permaneceu no sistema e um engenheiro reutilizou a mesma flag que ativava o Power Peg para acionar o novo m&#243;dulo. O programador implantou manualmente o c&#243;digo em oito servidores; por engano, um deles ficou com a vers&#227;o antiga, sem testes e com o Power Peg oculto. Como n&#227;o havia processo de valida&#231;&#227;o ou automa&#231;&#227;o para a implanta&#231;&#227;o, ningu&#233;m percebeu o erro. &#192;s 9h30, o servidor defeituoso come&#231;ou a enviar milhares de ordens de compra e venda a cada segundo, sem considerar o n&#250;mero de a&#231;&#245;es j&#225; executadas. </p><p>Em 45 minutos a Knight executou mais de 4 milh&#245;es de opera&#231;&#245;es e perdeu cerca de US$ 440 milh&#245;es. Investigadores notaram que o c&#243;digo morto n&#227;o foi removido, a reutiliza&#231;&#227;o de flags confundiu a equipe e faltou automa&#231;&#227;o de testes e implanta&#231;&#227;o. A empresa tamb&#233;m trabalhou com um prazo de apenas 30 dias para desenvolver, testar e implantar mudan&#231;as complexas em um sistema que movimentava bilh&#245;es de d&#243;lares por dia &#8212; um cronograma &#8220;<em>impulsivo, ing&#234;nuo e imprudente</em>&#8221;.</p><h2>O problema: falta de alinhamento com objetivos estrat&#233;gicos</h2><p>Os fatos acima ilustram um problema recorrente: <strong>a qualidade do software n&#227;o foi tratada como parte da estrat&#233;gia do neg&#243;cio</strong>. A Knight priorizou velocidade de entrega e custo, mas ignorou atributos de qualidade vitais para uma corretora &#8212; <strong>confiabilidade, seguran&#231;a operacional e gerenciamento de risco</strong>. N&#227;o havia processos formais de valida&#231;&#227;o, automa&#231;&#227;o de implanta&#231;&#227;o nem gest&#227;o de riscos. O resultado foi uma falha catastr&#243;fica que levou &#224; perda de reputa&#231;&#227;o e &#224; venda da empresa dois anos depois.</p><p>A mesma falta de alinhamento aparece em outras trag&#233;dias da engenharia. A Boeing projetou o 737 Max para competir com o Airbus A320neo sem exigir treinamento adicional dos pilotos. Para economizar custos e acelerar a certifica&#231;&#227;o, os engenheiros escolheram um &#250;nico sensor de &#226;ngulo de ataque para alimentar o sistema de corre&#231;&#227;o MCAS &#8212; <strong>omitindo redund&#226;ncia e criando um ponto &#250;nico de falha</strong>. Press&#245;es de cronograma e cultura corporativa focada em margens fizeram a empresa ocultar o sistema dos manuais de pilotagem e minimizarem riscos. Dois acidentes (Lion Air JT610 e Ethiopian Airlines ET302) e 346 mortes for&#231;aram a paralisa&#231;&#227;o global da frota. Na miss&#227;o da <strong>Mars Climate Orbiter</strong>, a NASA perdeu uma sonda de US$ 125 milh&#245;es porque o software de navega&#231;&#227;o em solo usava unidades inglesas, enquanto os demais sistemas trabalhavam em unidades m&#233;tricas; a discrep&#226;ncia passou despercebida porque as verifica&#231;&#245;es e valida&#231;&#245;es n&#227;o confirmaram que o software atendia aos requisitos e porque as equipes n&#227;o comunicaram suas preocupa&#231;&#245;es. </p><p>Outro caso cl&#225;ssico presente como case nas universidades. A sequ&#234;ncia de erros do <strong>Therac&#8209;25</strong> &#8212; acelerador de radioterapia que matou pelo menos cinco pessoas &#8212; mostra como a elimina&#231;&#227;o de intertravamentos de hardware e a falta de revis&#227;o de c&#243;digo e testes permitiram que software n&#227;o testado controlasse doses letais.</p><p>Esses casos mostram que <strong>qualidade de software n&#227;o &#233; um atributo isolado</strong>; ela deve estar alinhada com os riscos, valores e estrat&#233;gias do neg&#243;cio. </p><blockquote><p><em><strong>Quando empresas se concentram apenas em prazos ou custos e desconsideram atributos como seguran&#231;a, confiabilidade ou usabilidade, criam riscos sist&#234;micos que podem se materializar em acidentes, perdas financeiras ou at&#233; mortes.</strong></em></p></blockquote><h2>Um relato pessoal: relat&#243;rios financeiros e o cabo de guerra entre usabilidade e seguran&#231;a</h2><p>Apesar de as trag&#233;dias acima terem impacto midi&#225;tico, muitos conflitos relacionados &#224; qualidade permanecem invis&#237;veis dentro das organiza&#231;&#245;es. Recentemente, vivenciei um caso que ilustra como a aus&#234;ncia de crit&#233;rios expl&#237;citos para ordenar atributos de qualidade pode gerar tens&#245;es internas. Trabalh&#225;vamos em um m&#243;dulo para disponibilizar <strong>relat&#243;rios financeiros</strong> a clientes via e&#8209;mail. A solu&#231;&#227;o inicial envolvia enviar um <strong>link p&#250;blico</strong> para acessar o relat&#243;rio. Do lado de produto, a prioridade era <strong>usabilidade</strong>: o processo deveria ser simples, com poucos cliques e sem cadastros. Do lado de engenharia, havia preocupa&#231;&#227;o com <strong>confidencialidade</strong> e prote&#231;&#227;o dos dados. Como n&#227;o havia uma diretriz pr&#233;via sobre quais atributos de qualidade deveriam prevalecer, a discuss&#227;o se transformou em um cabo de guerra com reuni&#245;es intermin&#225;veis e atrasos.</p><p>Essa disputa exp&#244;s riscos invis&#237;veis que muitas vezes passam despercebidos. Relat&#243;rios financeiros cont&#234;m dados sens&#237;veis que, se compartilhados por um link p&#250;blico e sem controle de acesso, podem ser interceptados por terceiros ou cair nas m&#227;os erradas. Um simples erro de envio de e&#8209;mail pode constituir um vazamento de dados. </p><p>No nosso caso, o <strong>bom senso</strong> acabou prevalecendo: optou&#8209;se por exigir autentica&#231;&#227;o e links expirados, implementando controles de acesso para priorizar a seguran&#231;a &#8212; uma decis&#227;o que deveria ter sido &#243;bvia se houvesse um alinhamento pr&#233;vio com os objetivos estrat&#233;gicos da empresa (proteger dados sens&#237;veis e preservar a confian&#231;a dos clientes). O conflito poderia ter sido evitado se a organiza&#231;&#227;o tivesse definido explicitamente que, em produtos financeiros, <strong>seguran&#231;a e confidencialidade</strong> t&#234;m prioridade sobre conveni&#234;ncia, servindo como crit&#233;rio de desempate em decis&#245;es de design.</p><p> Esse epis&#243;dio tamb&#233;m revelou outras fragilidades comuns: fun&#231;&#245;es cr&#237;ticas sem um simples perfil de acesso, aus&#234;ncia de mascaramento de valores e campos vulner&#225;veis a XSS. Esses riscos n&#227;o geraram manchetes, mas representam um <strong>risco invis&#237;vel</strong> que pode levar a perdas financeiras, multas regulat&#243;rias e danos &#224; reputa&#231;&#227;o se n&#227;o forem tratados.</p><blockquote><p><em><strong> Alinhar atributos de qualidade aos objetivos do neg&#243;cio &#8212; e comunicar essa ordem a todo o time &#8212; evita disputas desgastantes e reduz a exposi&#231;&#227;o a esses riscos.</strong></em></p></blockquote><h2>Por que alinhar atributos de qualidade com a estrat&#233;gia?</h2><p>Um software existe para atender a necessidades de diversos stakeholders. O modelo <strong>ISO/IEC 25010</strong> define: </p><blockquote><p><em><strong>Qualidade de software</strong> &#233;<strong> </strong>o grau em que o sistema satisfaz as necessidades expl&#237;citas e impl&#237;citas dos stakeholders.</em></p></blockquote><p>E prop&#245;e um modelo de nove atributos de qualidade (funcionalidade, desempenho, compatibilidade, usabilidade, confiabilidade, seguran&#231;a, portabilidade, manutenibilidade e escalabilidade) subdivididas em subatributos. Esses atributos representam valores que podem apoiar objetivos estrat&#233;gicos como satisfa&#231;&#227;o do cliente, conformidade regulat&#243;ria ou efici&#234;ncia operacional.</p><p>Alinhar atributos de qualidade com a estrat&#233;gia significa responder a quest&#245;es como: <strong>quais atributos s&#227;o cr&#237;ticos para gerar valor?</strong> Se a empresa opera servi&#231;os financeiros, confiabilidade e integridade de dados s&#227;o fundamentais; se o neg&#243;cio prioriza crescimento r&#225;pido de usu&#225;rios, usabilidade e escalabilidade importam mais. T&#233;cnicas modernas de trade&#8209;off, como as propostas por <strong>Neal Ford</strong> no livro <em>Software Architecture: The Hard Parts</em>, seguem essa premissa. Em vez de um processo extenso como o ATAM, os autores recomendam um <strong>processo simples de tr&#234;s etapas</strong>: </p><ol><li><p>I<strong>dentificar o que est&#225; entrela&#231;ado</strong>, ou seja, quais requisitos e componentes entram em conflito; </p></li><li><p><strong>Analisar como esses elementos est&#227;o acoplados</strong> e como cada decis&#227;o de arquitetura impacta m&#250;ltiplos atributos;</p></li><li><p><strong>Avaliar o impacto de mudan&#231;as</strong> discutindo explicitamente os trade&#8209;offs com base nos objetivos de neg&#243;cio. </p></li></ol><p>Para orientar essa conversa, a <strong>Architecture Characteristics Worksheet</strong> sugere listar no m&#225;ximo sete atributos arquiteturais. Atributos impl&#237;citos como seguran&#231;a ou viabilidade podem tornar&#8209;se priorit&#225;rias quando s&#227;o cr&#237;ticas para o neg&#243;cio. </p><h3>Escolhendo os atributos certos (e por que limitar-se a tr&#234;s)</h3><p>&#201; tentador querer otimizar todos os atributos &#8212; ter software r&#225;pido, seguro, confi&#225;vel, f&#225;cil de usar, port&#225;til e barato. No entanto, isso &#233; imposs&#237;vel na pr&#225;tica. Como observa um artigo do Stack Overflow, n&#227;o existe &#8220;o melhor de todos os mundos&#8221;: h&#225; <strong>inevit&#225;veis trade&#8209;offs</strong> entre atributos de qualidade; aumentar a seguran&#231;a pode reduzir a usabilidade, melhorar a performance pode dificultar manuten&#231;&#227;o. Por isso, uma parte essencial da an&#225;lise de requisitos &#233; <strong>entender quais atributos de qualidade s&#227;o mais importantes</strong> para o neg&#243;cio. Muitas listas incluem dezenas de atributos, mas poucos projetos precisam se preocupar com todos. </p><p>Se a sua empresa &#233; uma start/scale-up, concentre&#8209;se nos <strong>dois ou tr&#234;s atributos</strong> que melhor suportam a vis&#227;o e as metas estrat&#233;gicas da empresa &#8212; isso facilita a tomada de decis&#245;es e evita conflitos de design. Neal Ford e Mark Richards defendem de 5 a 7 atributos, acho  que isso se aplica a grandes corpora&#231;&#245;es ou grandes projetos, se esse for o seu caso, considere-os.</p><p>Na pr&#225;tica, o time <strong>identifica quais atributos arquiteturais</strong> s&#227;o importantes para o sistema, p.ex.: desempenho, seguran&#231;a, disponibilidade. Cada atributo recebe uma classifica&#231;&#227;o de import&#226;ncia de acordo com o contexto do neg&#243;cio. Para cada atributo, descreve-se o <strong>porqu&#234;</strong> ele &#233; importante, <strong>em que cen&#225;rios</strong> ser&#225; testado/avaliado e <strong>qual o crit&#233;rio de sucesso</strong>. Por fim, <strong>registrar trade-offs</strong>, e utilizar a planilha como uma &#8220;b&#250;ssola&#8221;: <strong>quando h&#225; d&#250;vida sobre design, a escolha &#233; guiada pelos atributos priorit&#225;rios documentados</strong>.  </p><p><em>Em novo post, falarei mais sobre Architecture Characteristics Worksheet<strong>.</strong></em></p><h3>Faz sentido escolher atributos diferentes por &#233;pico ou produto?</h3><p>Em produtos amplos ou em portf&#243;lios de solu&#231;&#245;es, diferentes epics podem ter metas espec&#237;ficas: um m&#243;dulo de pagamentos precisa priorizar seguran&#231;a e conformidade, enquanto outro m&#243;dulo voltado para marketing pode valorizar usabilidade e desempenho. Portanto, <strong>definir atributos de qualidade por &#233;pico ou produto pode fazer sentido</strong>, contanto que haja <strong>coer&#234;ncia com a estrat&#233;gia global</strong>. A arquitetura deve assegurar que atributos cr&#237;ticos (por exemplo, seguran&#231;a e confiabilidade) n&#227;o sejam negligenciados em nenhum componente que possa impactar a empresa como um todo. Al&#233;m disso, decis&#245;es sobre atributos locais devem ser comunicadas a toda a equipe para evitar incompatibilidades (como aconteceu no Mars Climate Orbiter, onde equipes isoladas n&#227;o comunicaram suas preocupa&#231;&#245;es e o erro de unidades passou despercebido).</p><h3>Quando mudar os atributos priorit&#225;rios?</h3><p>Os atributos de qualidade s&#227;o <strong>vivos</strong> e devem evoluir com a estrat&#233;gia. Mudan&#231;as no mercado (como regulamenta&#231;&#245;es de prote&#231;&#227;o de dados), novas metas de neg&#243;cio (por exemplo, priorizar expans&#227;o internacional ou reduzir custos), est&#225;gio do produto (MVP vs. produto consolidado) ou indicadores de desempenho (alta taxa de churn por dificuldade de uso) podem exigir <strong>revisar as prioridades</strong>. T&#233;cnicas modernas de trade&#8209;off recomendam ciclos de reavalia&#231;&#227;o: ap&#243;s identificar e priorizar os atributos de qualidade, a equipe deve revis&#225;&#8209;las periodicamente para revalidar os trade&#8209;offs e ajustar as escolhas. Uma revis&#227;o semestral ou a cada grande release pode detectar a necessidade de incluir um novo atributo (como escalabilidade) ou rebaixar outro. A mudan&#231;a deve ser tratada como decis&#227;o estrat&#233;gica: avalie como ela impacta a arquitetura e se h&#225; recursos para atender &#224;s novas metas.</p><h3>Contraste: o perigo de escolhas isoladas</h3><p>Tomar decis&#245;es de qualidade isoladamente &#8212; seja por equipe, funcionalidade ou gestor &#8212; &#233; perigoso. No 737 Max, a escolha de usar um &#250;nico sensor e esconder o MCAS foi tomada sob press&#227;o comercial sem considerar a seguran&#231;a global; a falta de comunica&#231;&#227;o com reguladores e pilotos agravou o risco. Na NASA, a equipe de navega&#231;&#227;o n&#227;o utilizou a documenta&#231;&#227;o de interface para validar unidades e n&#227;o comunicou suas preocupa&#231;&#245;es a outras equipes; erros &#8220;escorregaram pelas rachaduras&#8221; e levaram &#224; perda da sonda. O Therac&#8209;25 concentrou responsabilidades de seguran&#231;a no software sem intertravamentos de hardware e sem revis&#227;o independente; a cren&#231;a de que o sistema n&#227;o podia causar sobredosagem e a falta de canais de reporte impediam que os incidentes fossem investigados. Esses exemplos refor&#231;am que <strong>qualidade precisa ser discutida transversalmente</strong>, com participa&#231;&#227;o de todas as &#225;reas, revis&#245;es independentes e valida&#231;&#227;o de requisitos.</p><h2>Conclus&#227;o</h2><p>A qualidade de software n&#227;o &#233; um atributo t&#233;cnico isolado, mas sim <strong>uma extens&#227;o da estrat&#233;gia da empresa</strong>. A hist&#243;ria da Knight Capital mostra que ignorar atributos essenciais &#224; confiabilidade e &#224; seguran&#231;a operacional pode levar a perdas bilion&#225;rias e &#224; ru&#237;na; os casos do 737 Max, da Mars Climate Orbiter e do Therac&#8209;25 mostram que decis&#245;es de engenharia desconectadas dos objetivos de seguran&#231;a e comunica&#231;&#227;o acabam em trag&#233;dia.</p><p>Para evitar esses erros, as organiza&#231;&#245;es devem:</p><ol><li><p><strong>Identificar drivers de neg&#243;cio e derivar atributos de qualidade</strong> que realmente suportem esses objetivos;</p></li><li><p><strong>Priorizar um pequeno conjunto de atributos (tipicamente 2 ou 3)</strong> para orientar decis&#245;es e evitar trade&#8209;offs conflitantes;</p></li><li><p><strong>Definir cen&#225;rios mensur&#225;veis</strong> e revis&#225;-los iterativamente com base em t&#233;cnicas modernas de trade&#8209;off (como as de Neal Ford), envolvendo todas as partes interessadas;</p></li><li><p><strong>Comunicar e coordenar</strong> decis&#245;es de qualidade atrav&#233;s de todas as equipes para evitar discrep&#226;ncias e erros como os que levaram &#224; perda da Mars Climate Orbiter.</p></li><li><p><strong>Revisar e ajustar prioridades</strong> quando a estrat&#233;gia, o mercado ou os resultados exigirem;</p></li></ol><p>Ao <strong>alinhar a qualidade do software aos objetivos estrat&#233;gicos</strong> e tratar essa escolha como uma decis&#227;o de neg&#243;cios, as empresas <strong>reduzem riscos, melhoram a satisfa&#231;&#227;o do cliente e aumentam suas chances de sucesso sustent&#225;vel</strong>.</p><blockquote><p><em>Voc&#234; j&#225; parou para pensar qual atributo de qualidade o seu time defende quando tudo entra em conflito? Velocidade, usabilidade, seguran&#231;a&#8230; e quando ningu&#233;m define a ordem, o que acontece?</em></p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.arcsyn.solutions/p/software-sem-qualidade-nao-quebra/comments&quot;,&quot;text&quot;:&quot;Deixe um coment&#225;rio&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.arcsyn.solutions/p/software-sem-qualidade-nao-quebra/comments"><span>Deixe um coment&#225;rio</span></a></p><p></p><p>Abaixo deixo um <strong>cheat sheet,</strong> um atalho para escolher e comunicar o <strong>Top 3</strong> de atributos de qualidade alinhados &#224; estrat&#233;gia. Siga o fluxo <strong>Identificar &#8594; Definir &#8594; Comunicar &#8594; Revisar</strong> para tomar decis&#245;es com menos atrito e mais dire&#231;&#227;o.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SfL6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SfL6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png 424w, https://substackcdn.com/image/fetch/$s_!SfL6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png 848w, https://substackcdn.com/image/fetch/$s_!SfL6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!SfL6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SfL6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png" width="800" height="2000" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2000,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:263824,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://arcsyn.substack.com/i/173140794?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SfL6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png 424w, https://substackcdn.com/image/fetch/$s_!SfL6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png 848w, https://substackcdn.com/image/fetch/$s_!SfL6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png 1272w, https://substackcdn.com/image/fetch/$s_!SfL6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217d7054-2a99-48ab-b5c6-7df8d7b3cc8e_800x2000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Refer&#234;ncias</h2><ul><li><p><a href="https://stackoverflow.blog/2022/01/17/plan-for-tradeoffs-you-cant-optimize-all-software-quality-attributes/">Plan for tradeoffs: You can&#8217;t optimize all software quality attributes</a></p></li><li><p><a href="https://www.henricodolfing.com/2019/06/project-failure-case-study-knight-capital.html">Case Study 4: The $440 Million Software Error at Knight Capital</a></p></li><li><p><a href="https://sma.nasa.gov/docs/default-source/safety-messages/safetymessage-2009-08-01-themarsclimateorbitermishap.pdf">System Failure Case Studies (august 2009 vol. 3 issue 05)</a></p></li><li><p><a href="https://www.geeksforgeeks.org/software-engineering/architecture-tradeoff-analysis-method-atam">Architecture Tradeoff Analysis Method (ATAM)</a></p></li><li><p><a href="https://www.oreilly.com/library/view/software-architecture-the/9781492086888/">Software Architecture: The Hard Parts</a></p></li><li><p><a href="https://sebokwiki.org/wiki/Medical_Radiation">The Therac-25 accidents Case Study</a></p></li><li><p><a href="https://iso25000.com/index.php/en/iso-25000-standards/iso-25010">ISO/IEC 25010</a></p></li></ul><p></p>]]></content:encoded></item></channel></rss>