<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arkhi &#187; arquitetura</title>
	<atom:link href="http://blog.arkhi.com.br/tag/arquitetura/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.arkhi.com.br</link>
	<description>Arquitetura Corporativa</description>
	<lastBuildDate>Mon, 30 Nov 2009 01:21:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Os condutores arquiteturais para a adoção do SOA Orientado por Eventos &#8211; EDA e CEP</title>
		<link>http://blog.marcomendes.com/2009/11/03/os-condutores-arquiteturais-para-a-adocao-do-soa-orientada-por-eventos-eda-e-cep/</link>
		<comments>http://blog.marcomendes.com/2009/11/03/os-condutores-arquiteturais-para-a-adocao-do-soa-orientada-por-eventos-eda-e-cep/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 17:51:19 +0000</pubDate>
		<dc:creator>Marco Mendes</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.marcomendes.com/2009/11/03/os-condutores-arquiteturais-para-a-adocao-do-soa-orientada-por-eventos-eda-e-cep/</guid>
		<description><![CDATA[A abordagem tradicional para SOA está baseada nas premissas da modelagem, simulação, automação, monitoração e gerência de processos de negócio, i.e, o ciclo de vida de BPM (Gerenciamento de Processos de Negócio). Existem diversos cenários, entretanto, onde esta premissa não se torna válida.
Caso a nossa empresa ou o problema em questão apresente a lista de [...]]]></description>
			<content:encoded><![CDATA[A abordagem tradicional para SOA está baseada nas premissas da modelagem, simulação, automação, monitoração e gerência de processos de negócio, i.e, o ciclo de vida de BPM (Gerenciamento de Processos de Negócio). Existem diversos cenários, entretanto, onde esta premissa não se torna válida.
Caso a nossa empresa ou o problema em questão apresente a lista de [...]]]></content:encoded>
			<wfw:commentRss>http://blog.marcomendes.com/2009/11/03/os-condutores-arquiteturais-para-a-adocao-do-soa-orientada-por-eventos-eda-e-cep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Motores de Regras &#8211; BRMS 101</title>
		<link>http://blog.marcomendes.com/2009/09/08/motores-de-regras-brms-101/</link>
		<comments>http://blog.marcomendes.com/2009/09/08/motores-de-regras-brms-101/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 15:52:37 +0000</pubDate>
		<dc:creator>Marco Mendes</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[arquitetura]]></category>

		<guid isPermaLink="false">http://blog.marcomendes.com/2009/09/08/motores-de-regras-brms-101/</guid>
		<description><![CDATA[Com a popularização de projetos SOA, também houve um renascimento do conceito de motores de regras (Rule Engine). Mas o que são motores de regras?
Um motor de regra é um sistema computacional que tem a capacidade de executar um conjunto de regras de negócios em um ambiente de produção. Eles são chamados em inglês de [...]]]></description>
			<content:encoded><![CDATA[Com a popularização de projetos SOA, também houve um renascimento do conceito de motores de regras (Rule Engine). Mas o que são motores de regras?
Um motor de regra é um sistema computacional que tem a capacidade de executar um conjunto de regras de negócios em um ambiente de produção. Eles são chamados em inglês de [...]]]></content:encoded>
			<wfw:commentRss>http://blog.marcomendes.com/2009/09/08/motores-de-regras-brms-101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arquiteturas Testáveis</title>
		<link>http://blog.marcomendes.com/2009/09/07/arquiteturas-testaveis/</link>
		<comments>http://blog.marcomendes.com/2009/09/07/arquiteturas-testaveis/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 16:20:20 +0000</pubDate>
		<dc:creator>Marco Mendes</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.marcomendes.com/2009/09/07/arquiteturas-testaveis/</guid>
		<description><![CDATA[Um dos gaps existentes nos times de desenvolvimento de software é a distância entre a concepção e desenho da arquitetura e sua efetiva realização. Motivos para este problema incluem:

 Mudanças de escopo e mudanças nas prioridades dos condutores e requisitos arquiteturais,
 Ausência de desenvolvedores na definição da arquitetura. Quando uma pessoa não participa da definição [...]]]></description>
			<content:encoded><![CDATA[Um dos gaps existentes nos times de desenvolvimento de software é a distância entre a concepção e desenho da arquitetura e sua efetiva realização. Motivos para este problema incluem:

 Mudanças de escopo e mudanças nas prioridades dos condutores e requisitos arquiteturais,
 Ausência de desenvolvedores na definição da arquitetura. Quando uma pessoa não participa da definição [...]]]></content:encoded>
			<wfw:commentRss>http://blog.marcomendes.com/2009/09/07/arquiteturas-testaveis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O nascimento, declínio e renascimento do modelo de computação nas nuvens</title>
		<link>http://blog.marcomendes.com/2009/07/27/o-nascimento-morte-e-resurreicao-do-modelo-de-computacao-nas-nuvens/</link>
		<comments>http://blog.marcomendes.com/2009/07/27/o-nascimento-morte-e-resurreicao-do-modelo-de-computacao-nas-nuvens/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 15:38:15 +0000</pubDate>
		<dc:creator>Marco Mendes</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[arquitetura]]></category>

		<guid isPermaLink="false">http://blog.marcomendes.com/2009/07/27/o-nascimento-morte-e-resurreicao-do-modelo-de-computacao-nas-nuvens/</guid>
		<description><![CDATA[Fizemos na semana passada uma apresentação sobre o modelo de computação nas nuvens e a sua interação com novos modelos de negócio e novos modelos técnicos tais como software como serviço, virtualização de hardwares e o modelo de cauda longa.
A apresentação está disponível aqui para os interessados:
Computação nas Nuvens



]]></description>
			<content:encoded><![CDATA[Fizemos na semana passada uma apresentação sobre o modelo de computação nas nuvens e a sua interação com novos modelos de negócio e novos modelos técnicos tais como software como serviço, virtualização de hardwares e o modelo de cauda longa.
A apresentação está disponível aqui para os interessados:
Computação nas Nuvens



]]></content:encoded>
			<wfw:commentRss>http://blog.marcomendes.com/2009/07/27/o-nascimento-morte-e-resurreicao-do-modelo-de-computacao-nas-nuvens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Governança SOA</title>
		<link>http://blog.marcomendes.com/2009/07/10/governanca-soa/</link>
		<comments>http://blog.marcomendes.com/2009/07/10/governanca-soa/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 12:15:39 +0000</pubDate>
		<dc:creator>Marco Mendes</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.marcomendes.com/2009/07/10/governanca-soa/</guid>
		<description><![CDATA[Diversas empresas da primeira onda de SOA criaram um vasto portifólio de serviços em suas implementações de automação de processos de negócio. Muitas destas empresas, entretanto, criaram serviços não governados, i.e, serviços sem controle (sem cadeias de autoridade, controle de mudanças, versões, relacionamento entre serviços, políticas de reuso). A consequência foi um desalinhamento entre o [...]]]></description>
			<content:encoded><![CDATA[Diversas empresas da primeira onda de SOA criaram um vasto portifólio de serviços em suas implementações de automação de processos de negócio. Muitas destas empresas, entretanto, criaram serviços não governados, i.e, serviços sem controle (sem cadeias de autoridade, controle de mudanças, versões, relacionamento entre serviços, políticas de reuso). A consequência foi um desalinhamento entre o [...]]]></content:encoded>
			<wfw:commentRss>http://blog.marcomendes.com/2009/07/10/governanca-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Para saber mais sobre arquitetura de software, estude sobre arquiteturas de negócio</title>
		<link>http://blog.marcomendes.com/2009/07/07/para-saber-mais-sobre-arquitetura-de-software-estude-sobre-arquiteturas-de-negocio/</link>
		<comments>http://blog.marcomendes.com/2009/07/07/para-saber-mais-sobre-arquitetura-de-software-estude-sobre-arquiteturas-de-negocio/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 22:06:23 +0000</pubDate>
		<dc:creator>Marco Mendes</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[arquitetura]]></category>

		<guid isPermaLink="false">http://blog.marcomendes.com/2009/07/07/para-saber-mais-sobre-arquitetura-de-software-estude-sobre-arquiteturas-de-negocio/</guid>
		<description><![CDATA[Arquitetos de software de verdade investem grande parte do seu aprendizado em técnicas arquiteturais. Exemplos destas técnicas incluem o modelo de visualização 4+1 de Kruchten, processos de software, os modelos SEI QAW, ATAM, CBAM, V&#038;B e ADD, os modelos de requisitos FURPS+, ISO 9126, ISO SQUARE, as recomendações arquiteturais da norma IEEE 1471, técnicas de [...]]]></description>
			<content:encoded><![CDATA[Arquitetos de software de verdade investem grande parte do seu aprendizado em técnicas arquiteturais. Exemplos destas técnicas incluem o modelo de visualização 4+1 de Kruchten, processos de software, os modelos SEI QAW, ATAM, CBAM, V&#038;B e ADD, os modelos de requisitos FURPS+, ISO 9126, ISO SQUARE, as recomendações arquiteturais da norma IEEE 1471, técnicas de [...]]]></content:encoded>
			<wfw:commentRss>http://blog.marcomendes.com/2009/07/07/para-saber-mais-sobre-arquitetura-de-software-estude-sobre-arquiteturas-de-negocio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Palestra sobre Arquiteturas de Negócio na SUCESU-MG</title>
		<link>http://blog.marcomendes.com/2009/07/03/palestra-sobre-arquitetura-de-negocio-na-sucesu/</link>
		<comments>http://blog.marcomendes.com/2009/07/03/palestra-sobre-arquitetura-de-negocio-na-sucesu/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 22:15:32 +0000</pubDate>
		<dc:creator>Marco Mendes</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[arquitetura]]></category>

		<guid isPermaLink="false">http://blog.marcomendes.com/2009/07/03/palestra-sobre-arquitetura-de-negocio-na-sucesu/</guid>
		<description><![CDATA[Realizamos recentemente uma palestra na SUCESU-MG sobre Arquiteturas de Negócio no grupo de trabalho de BPMS.  Uma arquitetura de negócio é uma peça importante na estruturação e entendimento do modelo de negócio de uma organização e se constitui de ferramenta essecial para analistas de negócio e também arquitetos de TI.
Em particular, discutimos nesta apresentação [...]]]></description>
			<content:encoded><![CDATA[Realizamos recentemente uma palestra na SUCESU-MG sobre Arquiteturas de Negócio no grupo de trabalho de BPMS.  Uma arquitetura de negócio é uma peça importante na estruturação e entendimento do modelo de negócio de uma organização e se constitui de ferramenta essecial para analistas de negócio e também arquitetos de TI.
Em particular, discutimos nesta apresentação [...]]]></content:encoded>
			<wfw:commentRss>http://blog.marcomendes.com/2009/07/03/palestra-sobre-arquitetura-de-negocio-na-sucesu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Existe Arquitetura de Software em Projetos XP?</title>
		<link>http://blog.arkhi.com.br/2008/12/12/existe-arquitetura-de-software-em-projetos-xp/</link>
		<comments>http://blog.arkhi.com.br/2008/12/12/existe-arquitetura-de-software-em-projetos-xp/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 16:22:49 +0000</pubDate>
		<dc:creator>Eros Viggiano</dc:creator>
				<category><![CDATA[arquitetura de software]]></category>
		<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[extreme]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://dearchitectura.wordpress.com/?p=391</guid>
		<description><![CDATA[Extreme Programming é uma proeminente metodologia ágil de desenvolvimento de software, mas apresenta uma lacuna para a arquitetura de software. Apresentamos alguns pontos de vista que tentam resolver essa fragilidade.]]></description>
			<content:encoded><![CDATA[<p>Quando se trata de Extreme Programming, arquitetura de software é um assunto polêmico. Vários críticos da metodologia afirmam que não existem atividades para o estabelecimento da arquitetura de software &#8211; constituindo assim seu &#8220;calcanhar de Aquiles&#8221;. Por outro lado, seus praticantes respondem que a arquitetura é representada pela Metáfora Sistêmica (<a href="http://c2.com/xp/SystemMetaphor.html">System Metaphor</a>), criada durante o Jogo de Planejamento (Planning Game). Mas adeptos e críticos concordam em uma coisa: existe muito pouca informação sobre como obter uma boa Metáfora Sistêmica.</p>
<p>A prática da Metáfora Sistêmica é uma forma de explicar a arquitetura lógica através de uma analogia familiar tanto aos desenvolvedores quanto aos usuários. Até aí, ótimo! O maior problema é como conseguir uma boa metáfora. Das 190 páginas de <a href="http://www.pearsonhighered.com/educator/academic/product/0,3110,0321278658,00.html">&#8220;Extreme Programming Explained&#8221;</a>, <a href="http://en.wikipedia.org/wiki/Kent_Beck">Kent Beck</a> endereça somente duas delas para explicar o que é a Metáfora Sistêmica e deixa uma lacuna real em como atingí-la. <a href="http://martinfowler.com/">Martin Fowler</a>, um adepto não radical de XP, afirma em <a href="http://www.amazon.com/Extreme-Programming-Examined-Giancarlo-Succi/dp/product-description/0201710404">&#8220;Extreme Programming Examined&#8221;</a> que, apesar da Metáfora Sistêmica ter funcionado bem para o projeto C3 (descrito no mesmo livro), ele próprio não faz a mínima idéia em como explicar a forma de obtê-la. Ainda na série XP da Addison-Wesley, os autores de <a href="http://www.amazon.com/Extreme-Programming-Examined-Giancarlo-Succi/dp/0201710404">&#8220;Extreme Programming Examined&#8221;</a> declaram que a metáfora &#8220;é uma lacuna real no XP e que os XPmistas precisam resolvê-la&#8221; (desculpe, traduzimos &#8220;XPers&#8221; por &#8220;XPmistas&#8221;).</p>
<p>Com a polêmica carregada pela Metáfora Sistêmica e pelo fato de boa parte dos programadores praticantes de XP afirmarem que constroem software de sucesso mesmo sem tal metáfora, Kent Beck comentou publicamente que cogita a hipótese de remover esta prática da metodologia. No <a href="http://www.xprogramming.com/">site de Ron Jeffries</a> (outro guru radical do XP), arquitetura e desenho chegam a ser tratados com um certo <a href="/documents/dearch/xp2/Mysterious%20Stories.htm">tom de deboche</a>.</p>
<p>Por ser um dos mais proeminentes métodos de desenvolvimento da atualidade, existem muitas propostas para preencher a lacuna arquitetural do XP. A seguir, citaremos algumas.</p>
<ul>
<li>Estórias do Desenvolvedor (Developer stories) é um prática proposta no artigo &#8220;<a href="http://www.springerlink.com/index/xx7gn7588340831n.pdf">Architecture and Design in eXtreme Programming</a>&#8221; dos pesquisadores da <a href="http://www.aau.dk/">Aalborg Universitet</a>. O principal objetivo dessas estórias é introduzir um planejamento arquitetural ao XP. É uma abordagem é razoavelmente simples e, ao mesmo tempo, apresenta razoável eficiência no tratamento de requisitos de qualidade.</li>
<li>Pesquisadores da <a href="http://www.mcs.vuw.ac.nz/">Universidade de Wellington</a>, na Nova Zelândia e da <a href="http://www.carleton.ca/">Univerdade de Carleton</a>, no Canadá, propõem, através de uma <a href="http://homepages.mcs.vuw.ac.nz/~rkhaled/papers/xpm4remix.pdf">abordagem semiótica</a>, técnicas para desenvolver e avaliar a Metáfora Sistêmica. A <a href="http://pt.wikipedia.org/wiki/Semiótica">Semiótica</a>, mesmo parecendo um termo complicado para alguns, é o estudo formal dos sinais. Ao contrário do nome, a proposta desses pesquisadores é bem simples. Contudo não encontramos referências de sua aplicação na indústria.</li>
<li>O <a href="http://www.sei.cmu.edu/">SEI</a> publicou um <a href="http://www.sei.cmu.edu/publications/documents/04.reports/04tn036.html">artigo</a> descrevendo possíveis aplicações de seus métodos arquiteturais em projetos XP. Sem dúvida, o uso dos consagrados <a href="http://www.sei.cmu.edu/architecture">métodos</a> do SEI oferece uma forte e excelente abordagem para arquiteturas dos projetos XP. Entretanto o uso intensivo dos métodos conforme descrito no artigo pode desagradar a alguns agilistas. Mas possivelmente vale a adaptação. A tempo: postamos recentemente um pequeno <a href="http://dearchitectura.wordpress.com/2008/11/04/combinando-qaw-com-rup-e-xp/">texto comentando sobre a aplicação do QAW em projetos XP e RUP</a>.</li>
<li>Martin Fowler, apesar de não apresentar nenhuma teoria inédita, no artigo &#8220;<a href="http://martinfowler.com/articles/designDead.html">Is Design Dead?</a>&#8220;, aconselha a não ignorar aspectos arquiteturais já conhecidos e, já no início do projeto, começar com uma arquitetura que aparenta ser necessária. E, em seguida, mesmo que pareça uma contradição ao princípio <a href="http://en.wikipedia.org/wiki/You_Ain't_Gonna_Need_It">YAGNI</a>, evoluir a arquitetura simplificando-a ou adicionando complexidades na medida da necessidade.</li>
<li>A <a href="http://www.ambysoft.com/books/agileModeling.html">Modelagem Ágil</a>, apresentada no livro de Scott Ambler, pode ser utilizada em aderência ao processo do XP e traz alguns poucos (mas bons) conselhos em como desenvolver a metáfora sistêmica de forma a representar uma arquitetura inicial. Vale a pena também consultar a idéia de <a href="http://www.agilemodeling.com/essays/agileArchitecture.htm">Arquitetura Inicial Ágil</a> do Ambler.</li>
<li>David West propõe a <a href="http://www.agilealliance.org/system/article/file/968/file.pdf">Arquitetura Mandala</a>, um método exótico para tratar a questão arquitetural no XP. Programadores místicos devem simpatizar com o nome.</li>
</ul>
<p>Os valores e a filosofia de Extreme Programming visam de uma forma &#8220;extrema&#8221; a simplicidade e a acomodação das mudanças. Mudanças são de fato inevitáveis. Mas, mesmo acreditando nos princípios ágeis, devemos admitir que uma reestruturação arquitetural é uma atividade cara e de alto risco. Um esforço de investigação arquitetural um pouco maior que a indicada pelo XP &#8220;puro&#8221; pode minimizar boa parte dos riscos &#8211; não vale a pena ignorar aspectos estruturais já conhecidos no início do projeto. As abordagens indicadas podem ser um bom caminho para preencher a lacuna da arquitetura de software no XP. Resta ainda a questão: basta uma boa metáfora sistêmica para termos uma arquitetura completa?</p>
<p>Para obter mais visões críticas sobre como a arquitetura pode ser desenvolvida em projetos XP, sugerimos as seguintes referências:</p>
<ul>
<li>&#8220;<a href="http://www.agile-itea.org/public/deliverables/ITEA-AGILE-D2.14_v1.0.pdf">Software Architecture and eXtreme Programming</a>&#8221; de Andrew Wils e Stefan Van Baelen e</li>
<li>&#8220;<a href="http://reports-archive.adm.cs.cmu.edu/anon/isri/CMU-ISRI-03-103.pdf">The eXtreme Programming (XP) Metaphor and Software Architecture</a>&#8221; de James Herbsleb, David Root e James Tomayko da CMU.</li>
<li>&#8220;<a href="http://www.agilealliance.org/system/article/file/968/file.pdf">Metaphor, Architecture, and XP</a>&#8221; de David West (mesmo que você não seja assim tão místico).</li>
<li><a href="http://www.theregister.co.uk/2005/09/11/beck_on_xp_architecture/">Entrevista de Kent Beck publicada em 2005 no The Register</a> a respeito da segunda edição de &#8220;Extreme Programming Explained&#8221;.</li>
<li><a href="http://www.agilemodeling.com/essays/agileArchitecture.htm">&#8220;Agile Architecture: Strategies for Scaling Agile Development&#8221;</a> por Scott Ambler.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.arkhi.com.br/2008/12/12/existe-arquitetura-de-software-em-projetos-xp/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Desmistificando a Decomposição em Camadas</title>
		<link>http://blog.arkhi.com.br/2008/10/26/desmistificando-a-decomposicao-em-camadas/</link>
		<comments>http://blog.arkhi.com.br/2008/10/26/desmistificando-a-decomposicao-em-camadas/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 00:31:12 +0000</pubDate>
		<dc:creator>Eros Viggiano</dc:creator>
				<category><![CDATA[arquitetura de software]]></category>
		<category><![CDATA[antipattern]]></category>
		<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[camadas]]></category>
		<category><![CDATA[decomposição]]></category>
		<category><![CDATA[layers]]></category>
		<category><![CDATA[pattern]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://dearchitectura.wordpress.com/?p=161</guid>
		<description><![CDATA[O tema &#8220;camadas&#8221; é recorrente na arquitetura de software: muitas vezes apontado como a solução para todo tipo de software e recentemente criticado como anti-pattern. Para os iniciantes e leigos, a arquitetura de software se resume na divisão do software em camadas e sua associação a uma &#8220;pilha&#8221; de tecnologias.
O padrão &#8220;Layers&#8221;
O padrão (pattern) &#8220;Layers&#8221;, [...]]]></description>
			<content:encoded><![CDATA[<p>O tema &#8220;camadas&#8221; é recorrente na arquitetura de software: muitas vezes apontado como a solução para todo tipo de software e recentemente criticado como anti-pattern. Para os iniciantes e leigos, a arquitetura de software se resume na divisão do software em camadas e sua associação a uma &#8220;pilha&#8221; de tecnologias.</p>
<p><strong>O padrão &#8220;Layers&#8221;</strong></p>
<p>O padrão (pattern) &#8220;Layers&#8221;, reconhecido inicialmente em <a title="POSA 1" href="http://www.amazon.com/Pattern-Oriented-Software-Architecture-System-Patterns/dp/0471958697/ref=pd_sim_b_3">POSA 1</a>, identifica o contexto no qual um sistema requer decomposição e se endereça a um ou mais dos seguintes problemas, conforme sintetizado por <a href="http://www.ibm.com/developerworks/rational/library/4699.html">Eeles</a>:</p>
<ul>
<li>Complexidade do sistema dificulta sua inteira compreensão.</li>
<li>Baixa manutenibilidade &#8211; uma alteração gera uma série de impactos.</li>
<li>Elementos menos estáveis não estão isolados.</li>
<li>Dificuldade em identificar elementos mais reusáveis.</li>
<li>Construção de um sistema por diversos times com habilidades distintas.</li>
</ul>
<p>Tal como no conhecido <a href="http://pt.wikipedia.org/wiki/Modelo_OSI">Modelo OSI</a>, o padrão &#8220;Layers&#8221; sugere um particionamento com diferentes níveis de abstração. Camadas superiores são clientes das camadas inferiores e estas não tem dependências das primeiras.</p>
<p>As principais estratégias para a decomposição em camadas são baseadas em responsabilidadea e reuso. Também é possível a combinação dessas estratégias em outras, como a modelagem de camadas multidimensionais.</p>
<p><strong>Estratégia &#8220;Camadas com base em responsabilidades&#8221;</strong><br />
A estratégia com base em responsabilidades é possivelmente a mais popular, onde as responsabilidades de um sistema são isoladas umas das outras. Uma abordagem muito comum é a segmentação em camadas de apresentação, negócios e integração. A flexibilidade e manutenibilidade são os conceitos chave para esta estratégia.</p>
<p>Imagine que, para uma aplicação originalmente com interface web, tenha sido identificada a posterior necessidade de acesso por dispositivos móveis. Sem modificar as demais camadas, é possível oferecer uma camada de apresentação com suporte a tais dispositivos. Outra situação possível é a troca da implementação da camada de apresentação (ex: integração com mainframe para SGBD).</p>
<p>Esta estratégia também permite que indivíduos de habilidades distintas atuem em suas respectivas áreas de competência (ex: programadores web e integradores).</p>
<p><strong>Estratégia &#8220;Camadas com base no reuso&#8221;</strong><br />
Geralmente derivada de uma diretriz de arquitetura corporativa, a estratégia com base no reuso sugere o agrupamento de componentes em camadas conforme o seu grau de utilização.</p>
<p>Um exemplo típico de estratificação por reuso,  citado por <a title="Software Reuse" href="http://www.amazon.com/Software-Reuse-Architecture-Organization-Business/dp/0201924765/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1224979983&amp;sr=8-1">Jacobson</a>, é o conjunto das camadas &#8220;Base&#8221;, &#8220;Específica para Negócios&#8221; e &#8220;Específica para Aplicativos&#8221;. No livro <a title="DDD" href="http://domaindrivendesign.org/books/index.html#DDD">Domain Driven Design</a>, Evan também comenta sobre a separação das camadas e usa os termos &#8220;User Interface Layer&#8221;, &#8220;Application Layer&#8221;, &#8220;Domain Layer&#8221; e &#8220;Infrastructure Layer&#8221;.</p>
<p>A óbvia vantagem nessa estratégia é o avançado grau de reuso de componentes. Permite também, com facilidade, o provimento e a catalogação de serviços especializados.</p>
<p>Estratégia Camadas multidimensionais<br />
Combina as estratégias baseadas em responsabilidade e reuso.</p>
<p><strong>Mitos &#8220;modernos&#8221; (e ingênuos) sobre camadas arquiteturais</strong><br />
Recentemente temos percebido um agradável movimento a favor da simplicidade das arquiteturas de software. O uso de múltiplas camadas como pouca distinção de utilidade entre elas tem gerado nomes como &#8220;arquitetura lasanha&#8221; (ressaltamos que arquiteturas são muito mais que estratificação em camadas, isto é um abuso). Simplicidade é ótimo! Mas, com devido respeito a quem cunhou o termo, o que se deve combater são as arquiteturas ritualísticas, obras criadas por indivíduos que, com pouco conhecimento em arquitetura, não exploram adequadamente o problema e que acreditam que arquiteturas de referência encontradas por aí a tudo se aplicam. O próprio contexto do pattern &#8220;Layers&#8221; define a natureza do problema no qual ele se aplica.</p>
<p>Muitas vezes, pouco se leva em conta as forças que regem a definição de um arquitetura. Por exemplo, suponhamos a necessidade de um software simples de cadastro sem um contexto de reuso e a ser desenvolvimento por apenas um programador. Possivelmente, o &#8220;Layers&#8221; nessa situação seria um exagero. Usar o padrão (não somente o &#8220;Layers&#8221;, qualquer um) para sem considerar todas as forças envolvidas e, principalmente, o problema que está sendo endereçado é inútil e prejudicial. Nesse caso, seria mais uma bela solução para um problema que não existe.</p>
<p>Boas referências sobre decomposição em camadas e assuntos correlatos podem ser encontradas em:</p>
<ol>
<li><a href="http://www.amazon.com/Pattern-Oriented-Software-Architecture-System-Patterns/dp/0471958697/ref=pd_sim_b_3">&#8220;Pattern-Oriented Software Architecture Volume 1: A System of Patterns&#8221;</a>, Frank Buschmann e outros.</li>
<li><a href="http://www.ibm.com/developerworks/rational/library/4699.html">&#8220;Layering Strategies&#8221;</a>, Peter Eeles</li>
<li><a href="http://martinfowler.com/eaaCatalog/serviceLayer.html">&#8220;Service Layer&#8221;,</a> <a href="http://martinfowler.com/eaaCatalog/domainModel.html">&#8220;Domain Model&#8221;</a> e <a href="http://www.martinfowler.com/bliki/AnemicDomainModel.html">&#8220;Anemic Domain Model&#8221;</a>, Martin Fower</li>
<li><a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612">&#8220;Design Patterns&#8221;</a>, GoF</li>
<li><a href="http://www.informit.com/store/product.aspx?isbn=0201325713">&#8220;Applied Software Architecture&#8221;</a>, Christine Hofmeister, Robert Nord e Dilip Soni</li>
<li><a href="http://msdn.microsoft.com/pt-br/library/aa905336.aspx">&#8220;Arquitetura pragmática: camadas&#8221;</a>, Ted Neward</li>
<li><a href="http://www.ambysoft.com/essays/classTypeArchitecture.html">&#8220;Class Type Architecture: A Strategy for Layering Software Applications&#8221;</a>, Scott Ambler</li>
<li><a href="http://www.javadude.com/articles/layering.html">&#8220;Layering Applications&#8221;</a>, Scott Stanchfield, JavaDude.com</li>
</ol>
<p>Para reflexão: &#8220;Ritual é o começo do caos&#8221;, Philippe Kruchten, em <a title="The Tao of the Software Architect" href="http://www.sei.cmu.edu/architecture/essays.html#tao">&#8220;The Tao of the Software Architect&#8221;</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arkhi.com.br/2008/10/26/desmistificando-a-decomposicao-em-camadas/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

