{"id":1531,"date":"2022-05-10T09:10:46","date_gmt":"2022-05-10T12:10:46","guid":{"rendered":"https:\/\/elemarjr.com\/cookbook\/?p=1531"},"modified":"2025-07-09T14:42:39","modified_gmt":"2025-07-09T17:42:39","slug":"estilos-e-padroes-v-1-0","status":"publish","type":"post","link":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/estilos-e-padroes-v-1-0\/","title":{"rendered":"Estilos e padr\u00f5es arquiteturais \/ v-1-0"},"content":{"rendered":"<p><b>Bons arquitetos garantem que as melhores pr\u00e1ticas de arquitetura sejam adotadas durante o desenvolvimento de um software.<\/b><span style=\"font-weight: 400;\"> Isso implica na elabora\u00e7\u00e3o, revis\u00e3o e estrutura\u00e7\u00e3o cuidadosa de componentes, seus relacionamentos e responsabilidades, garantindo que objetivos de neg\u00f3cio sejam atingidos, as restri\u00e7\u00f5es respeitadas e os atributos de qualidade atendidos, minimizando o custo e o risco.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><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:\/\/arquiteturadesoftware.online\/wp-content\/uploads\/2021\/09\/livro-arquiteo-de-software-2.png\" alt=\"\" width=\"150\" \/><\/td>\r\n<td class=\"nota-livro-coluna-2\"><img decoding=\"async\" class=\"nota-img\" src=\"https:\/\/arquiteturadesoftware.online\/wp-content\/uploads\/2021\/09\/livro-arquiteo-de-software-2.png\" alt=\"\" width=\"150\" \/>\r\n<p style=\"font-size: 24px; font-weight: bold; color: #4c4c4c; line-height: 1.1; font-family: Lufga; margin-bottom: 10px;\">Manual do Arquiteto de Software<\/p>\r\nO que \u00e9 arquitetura de software? Qual o papel do arquiteto? Quais pr\u00e1ticas de arquitetura posso adotar para ser um bom arquiteto?.\r\n<p><a class=\"botao-livro\" href=\"https:\/\/arquiteturadesoftware.online\/definindo-arquitetura-de-software-e-o-papel-do-arquiteto-capitulo-0-v3-03a\/#O_arquiteto_de_software\" target=\"_blank\" rel=\"noopener\">Acessar livro<\/a><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div><\/span><\/p>\n\u00c9 importante que se entenda que cabe ao arquiteto orquestrar as tomadas de decis\u00e3o, n\u00e3o necessariamente tom\u00e1-las.<strong> Em um mundo onde o ritmo da mudan\u00e7a \u00e9 t\u00e3o acelerado,\u00a0 ser especialista em todos os assuntos \u00e9 praticamente imposs\u00edvel.<\/strong>\n<hr \/>\n<p><span style=\"font-weight: 400;\"><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=\"\/cookbook\/wp-content\/uploads\/2022\/04\/ico-lamp-2.png\" alt=\"\" width=\"70\" height=\"70\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img decoding=\"async\" class=\"nota-img\" src=\"\/cookbook\/wp-content\/uploads\/2022\/04\/ico-lamp-2.png\" alt=\"\" width=\"70\" height=\"70\" \/> Especialista \u00e9 aquele que sabe cada vez mais, sobre cada vez menos.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div><\/span><\/p>\n<p><b>Cabe ao arquiteto, ent\u00e3o, envolver os especialistas no momento certo. Tamb\u00e9m, cabe a ele recorrer a pr\u00e1ticas consolidadas com efic\u00e1cia demonstrada. Isso envolve a ado\u00e7\u00e3o de padr\u00f5es e estilos arquiteturais.<\/b><\/p>\n<h2>Por que estilos e padr\u00f5es s\u00e3o importantes<\/h2>\n<p><b>Toda escolha implica em uma ren\u00fancia.<\/b><span style=\"font-weight: 400;\"> Maximizar a entrega de valor, com o menor custo e risco, muitas vezes implica na resolu\u00e7\u00e3o de <\/span><i><span style=\"font-weight: 400;\">trade-offs<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">N\u00e3o h\u00e1 uma f\u00f3rmula pronta ou &#8220;bala de prata&#8221; em arquitetura de software. Todo projeto que vale a pena apresenta desafios \u00fanicos que demandam escolhas. Entretanto, cada decis\u00e3o seja &#8220;virtualmente&#8221; \u00fanica, afinal nenhum software \u00e9 igual ao outro, h\u00e1 similaridades entre problemas que permitem, para aqueles com conhecimento ou experi\u00eancia, maior efici\u00eancia na busca de solu\u00e7\u00f5es.<\/span><\/p>\n<span style=\"font-weight: 400;\">O enfrentamento recorrente de problemas semelhantes no <\/span><i><span style=\"font-weight: 400;\">design <\/span><\/i><span style=\"font-weight: 400;\">de software fez emergir um conjunto consider\u00e1vel de padr\u00f5es e estilos arquiteturais &#8211; ou seja, abordagens recorrentes para resolver problemas semelhantes. <\/span><b>Bons arquitetos conhecem esses padr\u00f5es e estilos e os adotam de forma a serem mais eficientes.<\/b>\n<hr \/>\n<p><span style=\"font-weight: 400;\">O conjunto de padr\u00f5es e estilos arquiteturais compreende o &#8220;repert\u00f3rio&#8221; de um arquiteto. Quanto maior esse repert\u00f3rio, mais valor em sua aplica\u00e7\u00e3o.<\/span><\/p>\n<h2>Estilos arquiteturais<\/h2>\n<p><span style=\"font-weight: 400;\">Estilos s\u00e3o abstra\u00e7\u00f5es\u00a0 que descrevem como os componentes de um <\/span><i><span style=\"font-weight: 400;\">software<\/span><\/i><span style=\"font-weight: 400;\"> devem ser organizados.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Um <\/span><i><span style=\"font-weight: 400;\">software<\/span><\/i><span style=\"font-weight: 400;\"> que utiliza o estilo <\/span><i><span style=\"font-weight: 400;\">client-server<\/span><\/i><span style=\"font-weight: 400;\">, define alguns componentes: cliente, servidores e o protocolo que faz comunica\u00e7\u00e3o entre eles. Podemos implementar este estilo com diferentes clientes, diferentes protocolos ou at\u00e9 mesmo com m\u00faltiplos servidores, mas ainda estamos falando do estilo <\/span><i><span style=\"font-weight: 400;\">client-server<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Microsservi\u00e7os, outro estilo arquitetural, estabelece um alto grau de desacoplamento atrav\u00e9s de componentes delimitados por um contexto de neg\u00f3cio. Novamente um software pode utilizar este estilo com diferentes protocolos de rede para comunica\u00e7\u00e3o entre seus componentes.<\/span><\/p>\n<span style=\"font-weight: 400;\">\u00a0<\/span><b>Quando um arquiteto come\u00e7a a pensar em um software, escolhe um estilo. Isso ir\u00e1 nortear suas futuras decis\u00f5es. A escolha correta do estilo pode facilitar o atendimento dos objetivos de neg\u00f3cio, restri\u00e7\u00f5es e atributos de qualidade.<\/b>\n<hr \/>\n<h2>Padr\u00f5es arquiteturais<\/h2>\n<p><span style=\"font-weight: 400;\">Diferenciar estilo arquitetural e padr\u00e3o arquitetural pode ser confuso, levando arquitetos a considerarem conceitos iguais. <\/span><b>Padr\u00e3o arquitetural \u00e9 uma forma de resolver problemas espec\u00edficos e frequentes dentro um estilo arquitetural<\/b><span style=\"font-weight: 400;\">. Enquanto que estilo arquitetural define, de forma macro, a \u201corganiza\u00e7\u00e3o\u201d de uma sistema, sem levar em considera\u00e7\u00e3o um \u201cproblema\u201d espec\u00edfico.\u00a0<\/span><\/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 decoding=\"async\" class=\"img-citacao\" src=\"\/cookbook\/wp-content\/uploads\/2021\/11\/ico-citacao-3.png\" alt=\"\" width=\"60\" height=\"60\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img loading=\"lazy\" decoding=\"async\" class=\"nota-img\" src=\"\/cookbook\/wp-content\/uploads\/2021\/11\/ico-citacao-3.png\" alt=\"\" width=\"60\" height=\"60\" \/> <span style=\"font-weight: 400;\">Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice<\/span>\r\n<p><strong><\/strong><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<p><span style=\"font-weight: 400;\">Uma aplica\u00e7\u00e3o com o estilo arquitetural baseado em servi\u00e7os, pode implementar diversos padr\u00f5es arquitet\u00f4nicos para resolver problemas espec\u00edficos. O padr\u00e3o arquitetural <\/span><i><span style=\"font-weight: 400;\">Gateway <\/span><\/i><span style=\"font-weight: 400;\">pode ser utilizado para reduzir acoplamento aferente de servi\u00e7os expostos via APIs internas. Dentro do mesmo sistema podemos adotar o padr\u00e3o de <\/span><i><span style=\"font-weight: 400;\">caching <\/span><\/i><span style=\"font-weight: 400;\">para resolver problemas de desempenho em um servi\u00e7o.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Uma vez identificada a necessidade em adotar um padr\u00e3o, o pr\u00f3ximo passo \u00e9 planejar como aplic\u00e1-lo dentro do seu contexto. <strong>Adotar um padr\u00e3o &#8220;\u00e0s cegas&#8221; \u00e9 receita para falha<\/strong>. Podemos ter o mesmo padr\u00e3o implementado de diversas formas, inclusive levando a implementa\u00e7\u00e3o de outro padr\u00e3o arquitetural para atender o contexto.<\/span><\/p>\n<span style=\"font-weight: 400;\">Conforme a aplica\u00e7\u00e3o evolui, tens\u00f5es na estrat\u00e9gia arquitetural (objetivos de neg\u00f3cio, restri\u00e7\u00f5es e atributos de qualidade) surgem, criando \u201cnovos\u201d problemas para serem resolvidos. Diferente de um estilo arquitetural, padr\u00f5es s\u00e3o utilizados em qualquer momento do ciclo de vida da aplica\u00e7\u00e3o, para resolver essas tens\u00f5es na estrat\u00e9gia arquitetural. <\/span><b>Habilidade de entender quando e como adotar padr\u00f5es arquiteturais \u00e9 chave para arquitetos planejarem softwares bem-feitos, com o menor custo e risco.<\/b>\n<hr \/>\n<h2>Concluindo<\/h2>\n<p><span style=\"font-weight: 400;\">Sabemos que padr\u00f5es e estilos, ent\u00e3o, constituem o repert\u00f3rio do arquiteto. Dedicaremos os pr\u00f3ximos cap\u00edtulos apresentando em profundidade alguns deles. Faremos isso, com exemplos reais, baseados em nossa experi\u00eancia ajudando empresas de todos os segmentos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Importante n\u00e3o esquecer: no &#8220;fim do dia&#8221; queremos software que atende os objetivos do neg\u00f3cio, respeitando restri\u00e7\u00f5es e atingindo atributos de qualidade. Esse \u00e9 um grande desafio que n\u00e3o pode ser &#8220;enfrentado&#8221; apenas com boa vontade. Conhecimento s\u00f3lido vai te ajudar a fazer a diferen\u00e7a!<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bons arquitetos garantem que as melhores pr\u00e1ticas de arquitetura sejam adotadas durante o desenvolvimento de um software. Isso implica na elabora\u00e7\u00e3o, revis\u00e3o e estrutura\u00e7\u00e3o cuidadosa de componentes, seus relacionamentos e responsabilidades, garantindo que objetivos de neg\u00f3cio sejam atingidos, as restri\u00e7\u00f5es respeitadas e os atributos de qualidade atendidos, minimizando o custo e o risco. Cabe ao [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1788,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"hashtags":[],"url":[33],"capitulos":[15],"class_list":["post-1531","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","url-permanente","capitulos-capitulo-0"],"_links":{"self":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/posts\/1531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/comments?post=1531"}],"version-history":[{"count":50,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/posts\/1531\/revisions"}],"predecessor-version":[{"id":2013,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/posts\/1531\/revisions\/2013"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/media\/1788"}],"wp:attachment":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/media?parent=1531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/categories?post=1531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/tags?post=1531"},{"taxonomy":"hashtags","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/hashtags?post=1531"},{"taxonomy":"url","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/url?post=1531"},{"taxonomy":"capitulos","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/cookbook\/wp-json\/wp\/v2\/capitulos?post=1531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}