{"id":4095,"date":"2022-05-03T09:45:41","date_gmt":"2022-05-03T12:45:41","guid":{"rendered":"https:\/\/elemarjr.com\/arquiteturadesoftware\/?p=4095"},"modified":"2024-01-12T11:26:02","modified_gmt":"2024-01-12T14:26:02","slug":"documentacao-arquitetural-na-medida-certa","status":"publish","type":"volume-1","link":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/","title":{"rendered":"Cap 1.3 Documenta\u00e7\u00e3o arquitetural na medida certa"},"content":{"rendered":"<strong>Muitos times qualificados e profissionais experientes s\u00e3o resistentes a ideia de documentar arquitetura de software.\u00a0<\/strong>A raiz dessa resist\u00eancia costuma estar em um passado cheio de burocracia exagerada e processos\u00a0<em>up-front\u00a0<\/em>para design. H\u00e1 tamb\u00e9m quem fa\u00e7a associa\u00e7\u00e3o de documenta\u00e7\u00e3o com &#8220;arquitetos de torre de marfim&#8221;, que consomem tempo e outros recursos preciosos de projetos elaborando diagramas que ningu\u00e9m consulta ou mesmo se importa. <strong>Entretanto, negar a utilidade de boa documenta\u00e7\u00e3o arquitetural pode ser um problema grande, principalmente em projetos mais complexos.<\/strong>\n<hr \/>\n<p>Se\u00a0 o prop\u00f3sito das pr\u00e1ticas de arquitetura de software \u00e9 aumentar as chances de que os objetivos do neg\u00f3cio sejam atingidos &#8211; respeitando restri\u00e7\u00f5es e atributos de qualidade &#8211; \u00e9 importante disseminar esses par\u00e2metros, com o m\u00ednimo de ambiguidade e subjetividade, durante todo o ciclo de vida do software que, ali\u00e1s, pode durar d\u00e9cadas come\u00e7ando muito antes da primeira linha de c\u00f3digo ser escrita.<\/p>\nSeja por motivos nobres, como aumentar o alinhamento de prop\u00f3sito que autoriza autonomia de atua\u00e7\u00e3o, ou tristes, como gerar evid\u00eancias de trabalho ou de acordos passados, <strong>documenta\u00e7\u00e3o arquitetural exerce papel importante e \u00e9 \u00fatil desde que feita na medida certa e focada para quem a ir\u00e1 utilizar.<\/strong>\n<h2>Considera\u00e7\u00f5es sobre Gest\u00e3o do Conhecimento<\/h2>\n<p><strong>\u00c9 comum, quando discute-se gest\u00e3o do conhecimento, tratar da elabora\u00e7\u00e3o e manuten\u00e7\u00e3o de documenta\u00e7\u00f5es. A falha, entretanto, est\u00e1 em assumir que gerenciar conhecimento implica em &#8220;apenas&#8221; elaborar documenta\u00e7\u00f5es. Na verdade, o processo \u00e9 consideravelmente mais complexo que isso.<\/strong><\/p>\n<p><strong>H\u00e1 dois tipos de conhecimento: t\u00e1cito e expl\u00edcito.<\/strong> O conhecimento t\u00e1cito \u00e9 aquele que &#8220;sabemos por fazer&#8221;, mas que n\u00e3o necessariamente conseguimos explicar. J\u00e1 o conhecimento expl\u00edcito \u00e9 aquele que est\u00e1 codificado, geralmente em documenta\u00e7\u00f5es. A dissemina\u00e7\u00e3o do conhecimento, logo, sua perpetua\u00e7\u00e3o, acontece pela transi\u00e7\u00e3o cont\u00ednua do conhecimento de t\u00e1cito para expl\u00edcito e, no outro sentido, de expl\u00edcito para t\u00e1cito.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-4096 aligncenter\" src=\"https:\/\/elemarjr.com\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/imagem-eximia-02.png\" alt=\"\" width=\"523\" height=\"424\" srcset=\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/imagem-eximia-02.png 2294w, https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/imagem-eximia-02-300x243.png 300w, https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/imagem-eximia-02-1024x829.png 1024w, https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/imagem-eximia-02-768x622.png 768w, https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/imagem-eximia-02-1536x1244.png 1536w, https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/imagem-eximia-02-2048x1659.png 2048w\" sizes=\"(max-width: 523px) 100vw, 523px\" \/><\/p>\n<div class=\"nota-insight\">\r\n<table class=\"tabelainsight\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-coluna-1\" valign=\"top\"><img decoding=\"async\" class=\"img-insight\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/ico-lamp-2.png\" alt=\"\" width=\"70\" height=\"70\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img decoding=\"async\" class=\"nota-img\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/ico-lamp-2.png\" alt=\"\" width=\"70\" height=\"70\" \/> A socializa\u00e7\u00e3o do conhecimento \u00e9 fundamental, mas insuficiente quando se deseja atingir escala.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<p>Documenta\u00e7\u00e3o arquitetural \u00e9 a explicita\u00e7\u00e3o do conhecimento e deve emergir como resultado dos eventos de socializa\u00e7\u00e3o. Mais tarde, deve ser utilizada para treinar pessoas facilitando novos eventos de socializa\u00e7\u00e3o.<\/p>\n<div class=\"nota-livro\">\r\n<table class=\"tabelalivro\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-livro-coluna-1\" valign=\"top\"><img decoding=\"async\" src=\"https:\/\/m.media-amazon.com\/images\/I\/41ztZ5lj4KL.jpg\" alt=\"\" width=\"150\" \/><\/td>\r\n<td class=\"nota-livro-coluna-2\"><img decoding=\"async\" class=\"nota-img\" src=\"https:\/\/m.media-amazon.com\/images\/I\/41ztZ5lj4KL.jpg\" alt=\"\" width=\"150\" \/>\r\n<p style=\"font-size: 20px; font-weight: bold; color: #4c4c4c; line-height: 1.1; font-family: Montserrat; margin-bottom: 10px;\">Gest\u00e3o do conhecimento<\/p>\r\nVivemos hoje na sociedade do conhecimento, sociedade essa que n\u00e3o usa m\u00e1quinas, linhas de montagens ou rob\u00f4s como \u201cmeios de produ\u00e7\u00e3o\u201d. Seus meios de produ\u00e7\u00e3o est\u00e3o na cabe\u00e7a e nas m\u00e3os das pessoas que nela trabalham. Este livro \u00e9 uma corajosa tentativa de repensar a gest\u00e3o a partir da perspectiva do conhecimento. Como devemos pensar sobre estrat\u00e9gia, organiza\u00e7\u00e3o, branding, competi\u00e7\u00e3o global ou TI do ponto de vista do conhecimento? \r\n<p><a class=\"botao-livro\" href=\"https:\/\/www.amazon.com.br\/Gest%C3%A3o-do-Conhecimento-Hirotaka-Takeuchi-ebook\/dp\/B016UWFVTQ\/\" target=\"_blank\" rel=\"noopener\">Acessar livro<\/a><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<h2>Suporte a lideran\u00e7a situacional<\/h2>\n<p>Naturalmente, pessoas envolvidas com atividades relacionadas a arquitetura exercem alguma forma de lideran\u00e7a nos times em que atuam.<\/p>\n<div class=\"nota-insight\">\r\n<table class=\"tabelainsight\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-coluna-1\" valign=\"top\"><img decoding=\"async\" class=\"img-insight\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/ico-lamp-2.png\" alt=\"\" width=\"70\" height=\"70\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img decoding=\"async\" class=\"nota-img\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/ico-lamp-2.png\" alt=\"\" width=\"70\" height=\"70\" \/> L\u00edder \u00e9 todo aquele que possui seguidores.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<p>Lideran\u00e7a \u00e9 um exerc\u00edcio din\u00e2mico e contextual. O comportamento do l\u00edder acaba se adaptando ao n\u00edvel de prontid\u00e3o (entendo maturidade) para fazer o trabalho daqueles que s\u00e3o liderados. As mudan\u00e7as de comportamento tem rela\u00e7\u00e3o com o n\u00edvel de dire\u00e7\u00e3o e apoio.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4098 aligncenter\" src=\"https:\/\/elemarjr.com\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/knowledge.png\" alt=\"\" width=\"442\" height=\"433\" srcset=\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/knowledge.png 1861w, https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/knowledge-300x294.png 300w, https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/knowledge-1024x1003.png 1024w, https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/knowledge-768x752.png 768w, https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/05\/knowledge-1536x1505.png 1536w\" sizes=\"(max-width: 442px) 100vw, 442px\" \/><\/p>\n<p>Quando o arquiteto precisa exercer lideran\u00e7a mais diretiva, sobretudo por estar atuando com um time com menor senioridade, se beneficiar\u00e1 da documenta\u00e7\u00e3o para dar mais clareza sobre o que precisa ser feito.<\/p>\n<p>Quando o arquiteto atua como\u00a0<em>coaching, <\/em>desenvolvendo o time, se beneficiar\u00e1 da documenta\u00e7\u00e3o tanto para fornecer quanto para receber <em>insights\u00a0<\/em>do time.<\/p>\n<p>Quando o arquiteto atua como &#8220;consultor&#8221;, apoiando o time do desenvolvimento de solu\u00e7\u00f5es, opinando, se beneficiar\u00e1 da documenta\u00e7\u00e3o como registro e mecanismo para &#8220;simplificar&#8221; sua vis\u00e3o para o time.<\/p>\n<p>Finalmente, quando o arquiteto atua como &#8220;delegador&#8221;, se beneficiar\u00e1 da documenta\u00e7\u00e3o como mecanismo de propagar os resultados que o time consegue atingir.<\/p>\n<div class=\"nota-livro\">\r\n<table class=\"tabelalivro\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-livro-coluna-1\" valign=\"top\"><img decoding=\"async\" src=\"https:\/\/images-na.ssl-images-amazon.com\/images\/I\/412JvQ4Vn8L._SX319_BO1,204,203,200_.jpg\" alt=\"\" width=\"150\" \/><\/td>\r\n<td class=\"nota-livro-coluna-2\"><img decoding=\"async\" class=\"nota-img\" src=\"https:\/\/images-na.ssl-images-amazon.com\/images\/I\/412JvQ4Vn8L._SX319_BO1,204,203,200_.jpg\" alt=\"\" width=\"150\" \/>\r\n<p style=\"font-size: 20px; font-weight: bold; color: #4c4c4c; line-height: 1.1; font-family: Montserrat; margin-bottom: 10px;\">Psicologia para administradores<\/p>\r\nPsicologia para Administradores se destina a todos os que trabalham em \u00e1reas em que \u00e9 preciso tomar decis\u00f5es. O livro concentra a aten\u00e7\u00e3o na intera\u00e7\u00e3o entre as pessoas, na motiva\u00e7\u00e3o e na lideran\u00e7a. \u00c9 o livro que apresentou para o mundo o conceito de lideran\u00e7a situacional.\r\n<p><a class=\"botao-livro\" href=\"https:\/\/www.amazon.com.br\/Psicologia-Administradores-T%C3%A9cnicas-Lideran%C3%A7a-Situacional\/dp\/8512660406\/\" target=\"_blank\" rel=\"noopener\">Acessar livro<\/a><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<h2>Documenta\u00e7\u00e3o arquitetural em processos \u00e1geis<\/h2>\n<div class=\"nota-alerta\">\r\n<table class=\"tabelaalerta\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-coluna-1\" valign=\"top\"><img loading=\"lazy\" decoding=\"async\" class=\"img-citacao\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img loading=\"lazy\" decoding=\"async\" class=\"nota-img\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/> <\/p>\n<p><em>Atrav\u00e9s desse trabalho, passamos a valorizar [..] Software em funcionamento mais que documenta\u00e7\u00e3o abrangente;<\/em><\/p>\n<p>\r\n<p><strong>Manifesto \u00c1gil<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<p>Os processos \u00e1geis de desenvolvimento de software s\u00e3o uma rea\u00e7\u00e3o a m\u00e9todos pesados que eram comuns no passado (com resqu\u00edcios fortes dentro de muitas empresas ainda hoje, infelizmente).<\/p>\n<p>Por causa de um rigor dif\u00edcil de justificar hoje em dia, era comum que se consumisse semanas elaborando documenta\u00e7\u00f5es detalhadas, n\u00e3o apenas em n\u00edvel arquitetural mas bem &#8220;perto do c\u00f3digo&#8221;, para um esfor\u00e7o de implementa\u00e7\u00e3o que iria durar apenas dias. A justificativa era uma pretensa garantia de qualidade que nunca se confirmava na pr\u00e1tica. Felizmente, essa j\u00e1 n\u00e3o \u00e9 mais a realidade, embora, talvez, hoje pequemos pelo contr\u00e1rio.<\/p>\n<hr \/>\n<p>Na \u00e2nsia de eliminar etapas desnecess\u00e1rias para o desenvolvimento de sistemas de software, muitos &#8220;agilistas&#8221; resistem n\u00e3o apenas a documenta\u00e7\u00e3o arquitetural mas a tudo que esteja relacionado com t\u00e9cnicas para a pr\u00e1tica da arquitetura. Importante, entretanto, destacar que essa posi\u00e7\u00e3o n\u00e3o \u00e9 universal. Muitos expoentes das pr\u00e1ticas \u00e1geis &#8211; incluindo Martin Fowler, Robert Martin, Scott Ambler &#8211; reconhecem que essa conduta \u00e9 perigosa.<\/p>\n<div class=\"nota-alerta\">\r\n<table class=\"tabelaalerta\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-coluna-1\" valign=\"top\"><img loading=\"lazy\" decoding=\"async\" class=\"img-citacao\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img loading=\"lazy\" decoding=\"async\" class=\"nota-img\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/> <\/p>\n<p><em>Os m\u00e9todos \u00e1geis n\u00e3o se op\u00f5em \u00e0 documenta\u00e7\u00e3o, apenas \u00e0 documenta\u00e7\u00e3o sem valor. Documentos que auxiliam a pr\u00f3pria equipe podem ter valor, mas somente se forem mantidos atualizados.<\/em><\/p>\n<p>\r\n<p><strong>Nygard<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<strong>Atividades de refatora\u00e7\u00e3o para corrigir escolhas ruins de arquitetura s\u00e3o, muitas vezes, caras demais para serem colocadas em pr\u00e1tica.<\/strong> Por isso, \u00e9 importante que decis\u00f5es razo\u00e1veis sejam adotadas cedo e, para que isso aconte\u00e7a, s\u00e3o necess\u00e1rias aplica\u00e7\u00e3o de algumas t\u00e9cnicas incluindo, acredito, elabora\u00e7\u00e3o e manuten\u00e7\u00e3o de boa documenta\u00e7\u00e3o arquitetural. <strong>Resistir a pr\u00e1ticas arquiteturais, inclusive documenta\u00e7\u00e3o na medida certa, tem pouco haver com agilidade, mas com teimosia, falta de conhecimento profundo ou imaturidade.<\/strong>\n<div class=\"nota-insight\">\r\n<table class=\"tabelainsight\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-coluna-1\" valign=\"top\"><img decoding=\"async\" class=\"img-insight\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/ico-lamp-2.png\" alt=\"\" width=\"70\" height=\"70\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img decoding=\"async\" class=\"nota-img\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/ico-lamp-2.png\" alt=\"\" width=\"70\" height=\"70\" \/> Boa documenta\u00e7\u00e3o \u00e9 fundamento para a agilidade.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<h2>O que a documenta\u00e7\u00e3o arquitetural N\u00c3O \u00e9<\/h2>\n<p><strong>A documenta\u00e7\u00e3o arquitetural trata das decis\u00f5es de <em>design<\/em> com impacto determinante para o atendimento dos objetivos de neg\u00f3cio, respeito a restri\u00e7\u00f5es e atributos de qualidade. <\/strong><\/p>\n<strong>Raramente, uma decis\u00e3o arquitetural, estar\u00e1 associada a uma <em>feature\u00a0<\/em>especificamente.<\/strong> Dessa forma &#8220;<em>System Engineering Documents<\/em>&#8221; &#8211; documentos que detalham prop\u00f3sitos e implica\u00e7\u00f5es do desenvolvimento de funcionalidades, muitas vezes, afetando a arquitetura -, embora importantes, n\u00e3o s\u00e3o documentos arquiteturais.\u00a0\n<hr \/>\n<strong>Especifica\u00e7\u00f5es exaustivas de requisitos funcionais ou n\u00e3o funcionais, embora importantes para a elabora\u00e7\u00e3o da arquitetura, tamb\u00e9m n\u00e3o s\u00e3o documentos arquiteturais.<\/strong> Tais documentos, ali\u00e1s, s\u00e3o\u00a0<em>inputs\u00a0<\/em>para as atividades de arquitetura, mas n\u00e3o s\u00e3o necessariamente formulados, tampouco mantidos, por arquitetos.\n<hr \/>\n<p>Documenta\u00e7\u00e3o arquitetural, finalmente, tamb\u00e9m n\u00e3o \u00e9 documenta\u00e7\u00e3o para usu\u00e1rios finais.<\/p>\n<h2>Documenta\u00e7\u00e3o arquitetural e a comunica\u00e7\u00e3o<\/h2>\n<b>Comunica\u00e7\u00e3o \u00e9 parte fundamental de qualquer atividade relacionada \u00e0 engenharia de software<\/b>. Quanto melhor (n\u00e3o necessariamente ampla) a comunica\u00e7\u00e3o, maiores as chances de que exista alinhamento de prop\u00f3sito e que autonomia de atua\u00e7\u00e3o seja poss\u00edvel. A documenta\u00e7\u00e3o arquitetural \u00e9 ferramenta para a comunica\u00e7\u00e3o em projetos de sistemas de software.\n<hr \/>\n<div class=\"card-insight\" style=\"background-color: #f0f0f0; width: 100%; padding: 35px 30px 30px 35px; border-radius: 5px 5px 5px 5px; margin-top: 30px; margin-bottom: 35px; font-size: 16px; box-shadow: 0px 4px 0px 0px #dddddd;\">\r\n<p style=\"font-size: 24px; font-weight:bold; line-height: 28px; font-family: Montserrat;\">Comunica\u00e7\u00e3o nem sempre \u00e9 uma coisa boa<\/p>\r\n<\/p>\n<p>Skelton e Pais fazem uma advert\u00eancia importante:<\/p>\n<p><em>Se a organiza\u00e7\u00e3o tem uma expectativa de que \u201ctodos devem ver todas as mensagens do chat\u201d ou \u201ctodos precisam comparecer \u00e0s massivas reuni\u00f5es standup\u201d ou \u201ctodos precisam estar presentes nas reuni\u00f5es\u201d para aprovar as decis\u00f5es, ent\u00e3o temos um problema de design da organiza\u00e7\u00e3o. A lei de Conway sugere que este tipo de comunica\u00e7\u00e3o muitos-para-muitos tende a produzir sistemas monol\u00edticos, emaranhados, altamente acoplados e interdependentes que n\u00e3o suportam fluxo r\u00e1pido. <strong>Mais comunica\u00e7\u00e3o n\u00e3o \u00e9 necessariamente uma coisa boa.<\/strong><\/em><\/p>\n<p><\/div>\n<p><strong>Os componentes de um software, evidentes em sua arquitetura, interagem e s\u00e3o desenvolvidos por times que tamb\u00e9m precisam interagir.<\/strong> Ambos, componentes e times, precisam de interfaces qualificadas, sem revelar seus funcionamentos internos, para que comunica\u00e7\u00e3o eficiente aconte\u00e7a.<\/p>\n<div class=\"nota-alerta\">\r\n<table class=\"tabelaalerta\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-coluna-1\" valign=\"top\"><img loading=\"lazy\" decoding=\"async\" class=\"img-citacao\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img loading=\"lazy\" decoding=\"async\" class=\"nota-img\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/> <\/p>\n<p><i>Arquitetura de software \u00e9 a divis\u00e3o prudente de um todo em partes, com rela\u00e7\u00f5es espec\u00edficas entre essas partes. Esse particionamento \u00e9 o que permite que grupos de pessoas &#8211; geralmente separados por limites organizacionais, geogr\u00e1ficos e at\u00e9 mesmo de fusos hor\u00e1rios &#8211; trabalhem em conjunto de forma cooperativa e produtiva para resolver um problema muito maior do que qualquer um deles resolve individualmente.<\/i><\/p>\n<p>\r\n<p><strong>Clements et al.<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<b>Documenta\u00e7\u00e3o arquitetural bem-feita exerce papel importante na comunica\u00e7\u00e3o. <\/b>H\u00e1 quem defenda que o c\u00f3digo, testes, <i>scripts <\/i>para automa\u00e7\u00e3o de <i>deploy<\/i> e gr\u00e1ficos din\u00e2micos gerados por ferramentas APM s\u00e3o suficientes. Pessoalmente, n\u00e3o concordo com essa vis\u00e3o pois todos esses artefatos, embora fundamentais para a comunica\u00e7\u00e3o, revelam apenas o &#8220;como&#8221; e dificilmente o &#8220;porqu\u00ea&#8221; das coisas.\n<hr \/>\n<strong>Mesmo o melhor projeto de arquitetura de um software ser\u00e1 in\u00fatil se as pessoas n\u00e3o forem capazes de entend\u00ea-lo direito, ao longo do tempo, para coloc\u00e1-lo em pr\u00e1tica ou, pior, entend\u00ea-lo errado implantando-o incorretamente.<\/strong> A documenta\u00e7\u00e3o bem-feita da arquitetura registra e explica os &#8220;porqu\u00eas&#8221; das decis\u00f5es e deve facilitar o entendimento do projeto de software, reduzindo chances de\u00a0 equ\u00edvocos de entendimento.\nDocumenta\u00e7\u00e3o arquitetural fala sobre a arquitetura hoje, liberando o arquiteto para que ele seja mais produtivo, tirando d\u00favidas dos envolvidos e, principalmente, fala sobre a arquitetura &#8220;amanh\u00e3&#8221;, quando outras pessoas, fora do time original, forem respons\u00e1veis por manter o sistema. <b>Documenta\u00e7\u00e3o insuficiente ou ruim aumenta as chances de eros\u00e3o arquitetural!<\/b>\n<hr \/>\n<h2>(Documenta\u00e7\u00e3o da) arquitetura de software e a complexidade<\/h2>\n<strong>Projetos de software t\u00eam se tornado maiores e mais complexos com o passar dos anos.<\/strong> Esse aumento da complexidade dos sistemas tem sido compensada, de alguma forma com o surgimento de IDEs inteligentes, compiladores sofisticados, linguagens de programa\u00e7\u00e3o mais expressivas, <i>frameworks <\/i>e componentes prontos. <strong>A complexidade dos projetos de software tamb\u00e9m pode ser mitigada pela ado\u00e7\u00e3o de pr\u00e1ticas eficientes de arquitetura de software.<\/strong>\n<hr \/>\n<p>H\u00e1 pelo menos tr\u00eas contribui\u00e7\u00f5es not\u00e1veis da arquitetura de software para o combate da complexidade:<\/p>\n<ol>\n<li><b>Divis\u00e3o do problema <\/b>&#8211; estruturando software em componentes que possam ser mantidos por times pequenos e que, depois, podem ser combinados, formando um sistema maior, a arquitetura autoriza, pelo menos por um tempo, a desenvolver partes de um software sem conhecer detalhes sobre como as outras funcionam. A \u00eanfase passa ser nas intera\u00e7\u00f5es.<\/li>\n<li><b>Aproveitamento do conhecimento dos times <\/b>&#8211; facilitando, a partir de componentes pequenos e desacoplados, o reaproveitamento do conhecimento dos desenvolvedores na implementa\u00e7\u00e3o do projeto (ex: algu\u00e9m que j\u00e1 implementou um mecanismo de cobran\u00e7a, ter\u00e1 uma boa ideia de como implementar essa solu\u00e7\u00e3o). Tamb\u00e9m crescem as chances de encontrar boas fontes de conhecimento em livros, palestras, descri\u00e7\u00e3o de padr\u00f5es, projetos de c\u00f3digo aberto e mais.<\/li>\n<li><b>Ado\u00e7\u00e3o de abstra\u00e7\u00f5es <\/b>&#8211; facilitando, ao ignorar detalhes menos significativos, os esfor\u00e7os para desenvolver solu\u00e7\u00f5es.<b><\/b><\/li>\n<\/ol>\n<hr \/>\nTanto os crit\u00e9rios utilizados na &#8220;divis\u00e3o do problema&#8221; como as abstra\u00e7\u00f5es utilizadas para desenvolver solu\u00e7\u00f5es se perdem facilmente em detalhes de implementa\u00e7\u00e3o e ficam melhor representados em boas documenta\u00e7\u00f5es fora do c\u00f3digo.\n<h2>Atividades suportadas pela documenta\u00e7\u00e3o arquitetural<\/h2>\n<p>Falar que a documenta\u00e7\u00e3o ajuda a melhorar a arquitetura e facilita a comunica\u00e7\u00e3o \u00e9 importante, mas um tanto abstrato. Dando &#8220;um passo \u00e0 frente&#8221;, ficam evidentes tr\u00eas usos comuns para a documenta\u00e7\u00e3o:<\/p>\n<ol>\n<li aria-level=\"1\">Educa\u00e7\u00e3o, seja para novos membros do time, analistas externos ou at\u00e9 mesmo um novo arquiteto.<\/li>\n<li aria-level=\"1\">Alinhamento com <i>stakeholders<\/i><\/li>\n<li aria-level=\"1\">Base para a continuidade da constru\u00e7\u00e3o e an\u00e1lise do software.<\/li>\n<\/ol>\n<hr \/>\nEm termos econ\u00f4micos, a documenta\u00e7\u00e3o da arquitetura \u00e9 essencial porque ela reduz o custo total de propriedade do software. Ali\u00e1s, a medida certa de quanto documentar \u00e9 determinada pela a capacidade de &#8220;c\u00f3digo+documenta\u00e7\u00e3o&#8221; custar menos do que &#8220;apenas c\u00f3digo&#8221;. <b>Ou seja, precisa ser mais barato e menos arriscado adicionar features ou fazer ajustes quando h\u00e1 boa documenta\u00e7\u00e3o arquitetural dispon\u00edvel.<\/b>\u00a0\n<div class=\"nota-alerta\">\r\n<table class=\"tabelaalerta\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-coluna-1\" valign=\"top\"><img loading=\"lazy\" decoding=\"async\" class=\"img-citacao\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img loading=\"lazy\" decoding=\"async\" class=\"nota-img\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/> <em>O esfor\u00e7o precisa ser compat\u00edvel com o risco de falha no projeto. <strong>Cada projeto enfrenta diferentes riscos e n\u00e3o h\u00e1 uma \u00fanica forma de fazer de arquitetura de software.<\/strong><\/em>\r\n<p><strong>Fairbanks<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<b>A utilidade de um documento arquitetural \u00e9 aquele onde o custo para sua produ\u00e7\u00e3o \u00e9 menor do que as economias que este ir\u00e1 gerar em outras atividades, ou ainda, por sua contribui\u00e7\u00e3o para mitiga\u00e7\u00e3o de riscos. <\/b>Documento \u00e9 \u00fatil se \u00e9 consultado, em algum momento. Se um documento n\u00e3o for utilizado ativamente, valer\u00e1 menos do que os <i>bytes <\/i>comprometidos com ele.\n<hr \/>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/imgs.xkcd.com\/comics\/future_self.png\" \/><\/p>\n<p>Em minha atua\u00e7\u00e3o como consultor \u00e9 comum encontrar software, principalmente em empresas menores, sem qualquer tipo de documenta\u00e7\u00e3o. Por outro lado, tamb\u00e9m n\u00e3o \u00e9 incomum, principalmente em empresas maiores, encontrar documenta\u00e7\u00e3o t\u00e3o \u201cabstrata\u201d e desatualizada que n\u00e3o resolve d\u00favida alguma. H\u00e1 tanta burocracia envolvida que toda informa\u00e7\u00e3o relevante, quando h\u00e1, fica escondida atr\u00e1s de formatos e normas. <b>Muitas vezes, as \u201cdores\u201d que geram a necessidade de consultoria s\u00e3o provenientes da falta de alinhamento do time sob aspectos b\u00e1sicos da arquitetura. Quase sempre, os problemas \u201cse resolvem sozinhos\u201d assim que se inicia o esfor\u00e7o para gerar documenta\u00e7\u00e3o b\u00e1sica, por\u00e9m de qualidade.<\/b><\/p>\n<h2>O que (geralmente) precisa ser documentado<\/h2>\n<p>Se a documenta\u00e7\u00e3o \u00e9 boa quando o custo de sua elabora\u00e7\u00e3o \u00e9 compensado pela redu\u00e7\u00e3o de custos em outras atividades ou pela mitiga\u00e7\u00e3o de riscos, ent\u00e3o, sua manuten\u00e7\u00e3o precisa custar o m\u00ednimo poss\u00edvel. De forma objetiva, a documenta\u00e7\u00e3o de arquitetura \u00fatil para os projetos demanda atualiza\u00e7\u00f5es menos frequentes.<\/p>\n<p><b>A documenta\u00e7\u00e3o arquitetural deve registrar, primeiro, aspectos que v\u00e3o permanecer verdadeiros por mais tempo.<\/b> Sem d\u00favidas, se encaixam nessa caracter\u00edstica algum detalhamento das restri\u00e7\u00f5es e dos atributos de qualidade.<\/p>\n<p><b>A documenta\u00e7\u00e3o arquitetural tamb\u00e9m precisa dar \u00eanfase na estrat\u00e9gia &#8211; padr\u00e3o coerente para tomada de decis\u00f5es &#8211; que ir\u00e1 autorizar mudan\u00e7as. <\/b>Ou seja, que crit\u00e9rios devem ser observados para determinar a necessidade de adicionar, remover ou substituir a implementa\u00e7\u00e3o dos componentes.<\/p>\n<p><b>Finalmente, a documenta\u00e7\u00e3o tamb\u00e9m deve expor a estrutura atual e suas propriedades. <\/b>Entretanto, quanto maior for a fragmenta\u00e7\u00e3o de componentes de um software, por exemplo, em arquiteturas baseadas em microsservi\u00e7os &#8211; extremamente din\u00e2micos e auto organizados, com estrat\u00e9gias de descoberta sofisticadas &#8211; menor ser\u00e1 o incentivo para documentar suas intera\u00e7\u00f5es. Nesses casos, ferramentas que permitam a &#8220;captura&#8221; da arquitetura-do-momento automaticamente, como, por exemplo, solu\u00e7\u00f5es APM s\u00e3o essenciais.<\/p>\n<h2>Considera\u00e7\u00f5es sobre &#8220;Architecture Haiku&#8221;<\/h2>\n<p><a href=\"https:\/\/www.linkedin.com\/in\/georgefairbanks\/\">George Fairbanks<\/a> prop\u00f4s a ideia do Architecture Haiku &#8211; uma descri\u00e7\u00e3o de design super concisa de uma p\u00e1gina, r\u00e1pida de construir.<\/p>\n<p>A provoca\u00e7\u00e3o \u00e9 colocar um\u00a0<em>overview\u00a0<\/em>da arquitetura em uma \u00fanica folha de papel A4. Assim, com menos espa\u00e7os para indecis\u00f5es ou prolongamentos. Eventualmente, pode n\u00e3o haver espa\u00e7o para diagramas &#8211; o que \u00e0 primeira vista parece loucura, mas talvez seja muito brilhante!<\/p>\n<p>Com t\u00e3o pouco espa\u00e7o, escolher as informa\u00e7\u00f5es certas a serem inclu\u00eddas \u00e9 extremamente importante. Aqui est\u00e1 o que Fairbanks recomenda:<\/p>\n<ul>\n<li>breve resumo da solu\u00e7\u00e3o geral,<\/li>\n<li>descri\u00e7\u00e3o contextual relevante,<\/li>\n<li>uma lista de restri\u00e7\u00f5es t\u00e9cnicas importantes,<\/li>\n<li>resumo de alto n\u00edvel dos principais requisitos funcionais,<\/li>\n<li>lista priorizada de atributos de qualidade,<\/li>\n<li>breve explica\u00e7\u00e3o das decis\u00f5es de design, incluindo justificativa e compensa\u00e7\u00f5es,<\/li>\n<li>lista de estilos e padr\u00f5es arquitet\u00f4nicos usados,<\/li>\n<li>apenas diagramas que adicionem significado al\u00e9m das informa\u00e7\u00f5es j\u00e1 na p\u00e1gina.<\/li>\n<\/ul>\n<hr \/>\nUm <em>Haiku\u00a0<\/em>pode ser um bom come\u00e7o para organiza\u00e7\u00f5es sem pr\u00e1tica consolidada de arquitetura.\n<hr \/>\n<h2>Considera\u00e7\u00f5es sobre ADRs (Architecture Decision Records)<\/h2>\n<p>Uma decis\u00e3o arquitetural trata sempre de uma escolha de <em>design <\/em>relacionada a uma caracter\u00edstica funcional ou n\u00e3o-funcional \u00a0indiscutivelmente relevante, pois, geralmente, tem algumas das seguintes caracter\u00edsticas:<\/p>\n<ul>\n<li>afeta os objetivos do neg\u00f3cio ou atributos de qualidade (como performance, disponibilidade, seguran\u00e7a, manutenabilidade, etc.)<\/li>\n<li>\u00e9 dif\u00edcil de ser desfeita (uma das quatro fontes da complexidade)<\/li>\n<li>implica em gastos ou economias consider\u00e1veis de tempo ou dinheiro (<strong>protip<\/strong>: tempo geralmente \u00e9 um <em>proxy<\/em> para dinheiro)<\/li>\n<li>demandou, para sua formula\u00e7\u00e3o, consider\u00e1vel tempo e esfor\u00e7o do time, geralmente demandando provas de conceito e avalia\u00e7\u00e3o de <em>trade-offs<\/em>.<\/li>\n<li>\u00e9 extremamente complexa podendo n\u00e3o fazer sentido em primeira an\u00e1lise, sem o\u00a0<em>background\u00a0<\/em>necess\u00e1rio.<\/li>\n<\/ul>\n<hr \/>\n<strong>Decis\u00f5es arquiteturais s\u00e3o realizadas durante todo o ciclo de vida de um software, com maior frequ\u00eancia em sua concep\u00e7\u00e3o e em pontos onde ocorrem mudan\u00e7as sens\u00edveis na escala ou escopo.<\/strong> Se n\u00e3o forem adequadamente documentadas, podem, no futuro, gerar comportamentos perigosos que coloquem em risco o sistema.\n<hr \/>\n<div class=\"nota-alerta\">\r\n<table class=\"tabelaalerta\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-coluna-1\" valign=\"top\"><img loading=\"lazy\" decoding=\"async\" class=\"img-citacao\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img loading=\"lazy\" decoding=\"async\" class=\"nota-img\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/> <\/p>\n<p><em>Uma das coisas mais dif\u00edceis de rastrear durante a vida de um projeto \u00e9 a motiva\u00e7\u00e3o por tr\u00e1s de certas decis\u00f5es. Uma nova pessoa que est\u00e1 entrando em um projeto pode ficar perplexa, encantada ou enfurecida com alguma decis\u00e3o passada. Sem compreender a l\u00f3gica ou as consequ\u00eancias, essa pessoa tem apenas duas op\u00e7\u00f5es: aceitar cegamente a decis\u00e3o ou mud\u00e1-la cegamente.<\/em><\/p>\n<p>\r\n<p><strong>Nygard<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<hr \/>\n<p>Uma pr\u00e1tica que tem se tornado comum \u00e9 documentar as decis\u00f5es arquiteturais em registros (<em>architectural decision records<\/em>) em um arquivo de texto curto, mantidos no reposit\u00f3rio do projeto, geralmente composto das seguintes se\u00e7\u00f5es:<\/p>\n<ul>\n<li><strong>T\u00edtulo<\/strong>, curto e expressivo<\/li>\n<li><strong>Contexto<\/strong>, descrevendo aspectos t\u00e9cnicos, pol\u00edticos, sociais e espec\u00edficos que impactam na decis\u00e3o, preferencialmente em linguagem neutra.<\/li>\n<li><strong>Decis\u00e3o<\/strong>, expressando, em linguagem ativa, que caminho deve ser seguido.<\/li>\n<li><strong><em>Status<\/em><\/strong>, visto que a decis\u00e3o ainda pode ser uma proposta, estar implementada (aceita), ultrapassada (<em>deprecated<\/em>) ou revertida (<em>superseded<\/em>).<\/li>\n<li><strong>Consequ\u00eancias<\/strong>, descrevendo o contexto geral resultante da decis\u00e3o. Devem ser observados aspectos positivos, negativos e neutros.<\/li>\n<\/ul>\n<hr \/>\n<p>ADRs \u00e9 pr\u00e1tica recomendada pela Toughtworks em seu famoso radar.<\/p>\n<h2>Considera\u00e7\u00f5es sobre nota\u00e7\u00f5es gr\u00e1ficas informais<\/h2>\n<p>Muitos documentos arquiteturais incluem diagramas utilizando uma linguagem informal. Isso acontece, acredito, por um misto de preconceito e desconhecimento de linguagens formais como UML e Archimate.<\/p>\n<p>Nesses diagramas, n\u00e3o \u00e9 incomum, por exemplo, utilizar setas indicando algum tipo de rela\u00e7\u00e3o entre elementos arquiteturais, n\u00e3o ficado claro, exatamente, que rela\u00e7\u00e3o \u00e9 essa.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-1388 aligncenter\" src=\"https:\/\/elemarjr.com\/arquiteturadesoftware\/wp-content\/uploads\/2021\/04\/diagrama.png\" alt=\"\" width=\"419\" height=\"129\" srcset=\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/04\/diagrama.png 474w, https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/04\/diagrama-300x92.png 300w\" sizes=\"(max-width: 419px) 100vw, 419px\" \/><\/p>\n<p>No exemplo indicado:<\/p>\n<ul>\n<li>C1 &#8220;chama&#8221; C2?<\/li>\n<li>Dados de C1 s\u00e3o fornecidos para C2?<\/li>\n<li>C1 inicializa C2?<\/li>\n<li>C1 manda uma mensagem para C2?<\/li>\n<li>C1 \u00e9 uma especializa\u00e7\u00e3o de C2?<\/li>\n<\/ul>\n<hr \/>\n<p>Apenas por esse breve exemplo \u00e9 f\u00e1cil concluir que diagramas constru\u00eddos nota\u00e7\u00f5es informais, como o indicado, podem perder um bocado de seu significado ao longo do tempo (muitas vezes, nem tanto tempo assim). Por isso, devem ser utilizados com reservas.<\/p>\n<div class=\"nota-alerta\">\r\n<table class=\"tabelaalerta\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-coluna-1\" valign=\"top\"><img loading=\"lazy\" decoding=\"async\" class=\"img-citacao\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img loading=\"lazy\" decoding=\"async\" class=\"nota-img\" src=\"\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/11\/ico-citacao-2.png\" alt=\"\" width=\"60\" height=\"60\" \/> <em>Na corrida pela agilidade, muitas equipes de desenvolvimento de software perderam a capacidade de se comunicar visualmente.<\/em>\r\n<p><strong>Simon Brown<\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<h2>Considera\u00e7\u00f5es sobre a utiliza\u00e7\u00e3o de ferramentas de arquitetura corporativa<\/h2>\nArquitetura corporativa, embora nascida dentro dos departamentos de TI, extrapola setores de tecnologia incluindo temas como gest\u00e3o de processos, organogramas e mais. Sob muitos aspectos, n\u00e3o \u00e9 incorreto analisar arquitetura de software como parte da arquitetura corporativa, que \u00e9 bem mais ampla.\n<hr \/>\n<p><strong>Ferramentas destinadas ao registro de arquitetura corporativa, se usadas apenas para o registro de artefatos de arquitetura de software acabam sendo, geralmente, solu\u00e7\u00f5es &#8220;pesadas&#8221;<\/strong>. Entretanto, n\u00e3o se pode ignorar que o uso adequado abre possibilidades interessantes como, por exemplo, a realiza\u00e7\u00e3o de consultas no reposit\u00f3rio arquitetural respondendo quest\u00f5es como: &#8220;Que sistemas seriam afetados por um problema no servidor X?&#8221;, &#8220;Quais processos de neg\u00f3cio seriam impactados por modifica\u00e7\u00f5es no software Y&#8221;, etc. At\u00e9 mesmo indica\u00e7\u00f5es expl\u00edcitas das integra\u00e7\u00f5es, tema do cap\u00edtulo anterior, ficariam simplificadas.<\/p>\n<h2>Grandes jornadas s\u00e3o mais f\u00e1ceis com um mapa\u2026<\/h2>\n<strong>As decis\u00f5es de design que se relacionam com a arquitetura garantem o atendimento dos objetivos do neg\u00f3cio, respeitando restri\u00e7\u00f5es e atingindo atributos de qualidade. <\/strong>Entretanto, para que essas decis\u00f5es cumpram seu papel, precisam ser rememoradas e compartilhadas com quem se juntar ao time ao longo do tempo. Tudo bem come\u00e7ar um projeto sem um mapa, mas \u00e9 sempre bom ter um registro do caminho que foi percorrido e dos motivos para cada decis\u00e3o.\n<hr \/>\n<p>Documenta\u00e7\u00e3o elaborada na medida certa, de acordo com as complexidades e riscos de um sistema, reduzem o custo total de propriedade, simplificando, acelerando e potencializando as tomadas de decis\u00e3o.<\/p>\nN\u00e3o h\u00e1 uma forma certa de fazer documenta\u00e7\u00e3o de maneira geral, mas, sim uma forma apropriada de fazer documenta\u00e7\u00e3o para cada projeto. Geralmente, come\u00e7ar com Haiku e ADRs \u00e9 um primeiro passo s\u00f3lido na dire\u00e7\u00e3o certa.\n<hr \/>\n<p>N\u00e3o faltam exemplos de empresas, com sistemas s\u00f3lidos, por\u00e9m com arquiteturas mal documentadas, que ficam &#8220;caros&#8221; para migrar para a nuvem por serem &#8220;caixinhas de surpresas&#8221;, onde desenvolvedores que os mant\u00e9m s\u00e3o apenas \u00edntimos desconhecidos que os herdaram de profissionais que h\u00e1 tempos n\u00e3o est\u00e3o mais no time. <strong>Continuar sistemas sem os documentar beira a desonestidade.<\/strong><\/p>\n<p>Nos pr\u00f3ximos cap\u00edtulos, iremos introduzir, aos poucos, outros documentos e artefatos arquiteturais \u00fateis para a maioria dos projetos.<\/p>\n<h2>\/\/ TODO<\/h2>\n<p>Antes de avan\u00e7ar para o pr\u00f3ximo cap\u00edtulo recomendo as seguintes atividades:<\/p>\n<ul>\n<li>Relacione quais documenta\u00e7\u00f5es arquiteturais voc\u00ea est\u00e1 habituado a utilizar.<\/li>\n<li>Pondere sobre os &#8220;<em>gaps<\/em>&#8221; de informa\u00e7\u00e3o que precisa enfrentar rotineiramente em seu trabalho. Que informa\u00e7\u00f5es entende que precisaram estar documentadas?<\/li>\n<li>Pondere sobre o qu\u00e3o f\u00e1cil (ou dif\u00edcil) \u00e9 incluir algu\u00e9m novo no seu time hoje. Como \u00e9 feita a integra\u00e7\u00e3o t\u00e9cnica?<\/li>\n<\/ul>\n","protected":false},"featured_media":3823,"parent":0,"comment_status":"open","ping_status":"closed","template":"","url":[72],"sessoes":[57],"apendices":[],"capitulos":[16],"class_list":["post-4095","volume-1","type-volume-1","status-publish","has-post-thumbnail","hentry","url-permanente","sessoes-secao-1","capitulos-capitulo-1-3"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cap 1.3 Documenta\u00e7\u00e3o arquitetural na medida certa - Manual do Arquiteto de Software<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cap 1.3 Documenta\u00e7\u00e3o arquitetural na medida certa - Manual do Arquiteto de Software\" \/>\n<meta property=\"og:description\" content=\"Se\u00a0 o prop\u00f3sito das pr\u00e1ticas de arquitetura de software \u00e9 aumentar as chances de que os objetivos do neg\u00f3cio sejam atingidos &#8211; respeitando restri\u00e7\u00f5es e atributos de qualidade &#8211; \u00e9 importante disseminar esses par\u00e2metros, com o m\u00ednimo de ambiguidade e subjetividade, durante todo o ciclo de vida do software que, ali\u00e1s, pode durar d\u00e9cadas come\u00e7ando [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/\" \/>\n<meta property=\"og:site_name\" content=\"Manual do Arquiteto de Software\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/eximiaco\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-12T14:26:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/1.3.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"338\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@eximiaco\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"20 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/\",\"url\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/\",\"name\":\"Cap 1.3 Documenta\u00e7\u00e3o arquitetural na medida certa - Manual do Arquiteto de Software\",\"isPartOf\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/1.3.jpg\",\"datePublished\":\"2022-05-03T12:45:41+00:00\",\"dateModified\":\"2024-01-12T14:26:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/#primaryimage\",\"url\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/1.3.jpg\",\"contentUrl\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/1.3.jpg\",\"width\":600,\"height\":338},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Volume 1\",\"item\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Cap 1.3 Documenta\u00e7\u00e3o arquitetural na medida certa\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#website\",\"url\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/\",\"name\":\"Manual do Arquiteto de Software\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#organization\",\"name\":\"EximiaCo\",\"url\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/04\/simbolo-eximiaco.jpg\",\"contentUrl\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/04\/simbolo-eximiaco.jpg\",\"width\":150,\"height\":150,\"caption\":\"EximiaCo\"},\"image\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/eximiaco\",\"https:\/\/x.com\/eximiaco\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cap 1.3 Documenta\u00e7\u00e3o arquitetural na medida certa - Manual do Arquiteto de Software","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/","og_locale":"pt_BR","og_type":"article","og_title":"Cap 1.3 Documenta\u00e7\u00e3o arquitetural na medida certa - Manual do Arquiteto de Software","og_description":"Se\u00a0 o prop\u00f3sito das pr\u00e1ticas de arquitetura de software \u00e9 aumentar as chances de que os objetivos do neg\u00f3cio sejam atingidos &#8211; respeitando restri\u00e7\u00f5es e atributos de qualidade &#8211; \u00e9 importante disseminar esses par\u00e2metros, com o m\u00ednimo de ambiguidade e subjetividade, durante todo o ciclo de vida do software que, ali\u00e1s, pode durar d\u00e9cadas come\u00e7ando [&hellip;]","og_url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/","og_site_name":"Manual do Arquiteto de Software","article_publisher":"https:\/\/facebook.com\/eximiaco","article_modified_time":"2024-01-12T14:26:02+00:00","og_image":[{"width":600,"height":338,"url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/1.3.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@eximiaco","twitter_misc":{"Est. tempo de leitura":"20 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/","url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/","name":"Cap 1.3 Documenta\u00e7\u00e3o arquitetural na medida certa - Manual do Arquiteto de Software","isPartOf":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#website"},"primaryImageOfPage":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/#primaryimage"},"image":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/#primaryimage"},"thumbnailUrl":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/1.3.jpg","datePublished":"2022-05-03T12:45:41+00:00","dateModified":"2024-01-12T14:26:02+00:00","breadcrumb":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/#primaryimage","url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/1.3.jpg","contentUrl":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/03\/1.3.jpg","width":600,"height":338},{"@type":"BreadcrumbList","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/documentacao-arquitetural-na-medida-certa\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/"},{"@type":"ListItem","position":2,"name":"Volume 1","item":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/"},{"@type":"ListItem","position":3,"name":"Cap 1.3 Documenta\u00e7\u00e3o arquitetural na medida certa"}]},{"@type":"WebSite","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#website","url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/","name":"Manual do Arquiteto de Software","description":"","publisher":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#organization","name":"EximiaCo","url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#\/schema\/logo\/image\/","url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/04\/simbolo-eximiaco.jpg","contentUrl":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/04\/simbolo-eximiaco.jpg","width":150,"height":150,"caption":"EximiaCo"},"image":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/eximiaco","https:\/\/x.com\/eximiaco"]}]}},"_links":{"self":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/volume-1\/4095","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/volume-1"}],"about":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/types\/volume-1"}],"replies":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/comments?post=4095"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/media\/3823"}],"wp:attachment":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/media?parent=4095"}],"wp:term":[{"taxonomy":"url","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/url?post=4095"},{"taxonomy":"sessoes","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/sessoes?post=4095"},{"taxonomy":"apendices","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/apendices?post=4095"},{"taxonomy":"capitulos","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/capitulos?post=4095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}