<?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; metáfora sistêmica</title>
	<atom:link href="http://blog.arkhi.com.br/tag/metafora-sistemica/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>Uma Metáfora Sistêmica</title>
		<link>http://blog.arkhi.com.br/2009/02/02/uma-metafora-sistemica/</link>
		<comments>http://blog.arkhi.com.br/2009/02/02/uma-metafora-sistemica/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 02:00:27 +0000</pubDate>
		<dc:creator>Eros Viggiano</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[ágil]]></category>
		<category><![CDATA[arquitetura de software]]></category>
		<category><![CDATA[metáfora sistêmica]]></category>
		<category><![CDATA[metodologias ágeis]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://dearchitectura.wordpress.com/?p=462</guid>
		<description><![CDATA[Metáfora sistêmica, um &#8220;quebra galho&#8221; arquitetural
Há algum tempo, comentamos em relação a como obter a metáfora sistêmica prescrita pelo XP e deixamos uma questão sobre o quanto ela contribui para a representação da arquitetura. Conforme comentário do Paulo Merson, a metáfora sistêmica, de fato, representa muito pouco da arquitetura, apesar de servir como um esboço [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Metáfora sistêmica, um &#8220;quebra galho&#8221; arquitetural</strong><br />
Há algum tempo, comentamos em relação a <a href="http://dearchitectura.wordpress.com/2008/12/12/existe-arquitetura-de-software-em-projetos-xp/">como obter a </a><strong><a href="http://dearchitectura.wordpress.com/2008/12/12/existe-arquitetura-de-software-em-projetos-xp/">metáfora sistêmica</a> </strong>prescrita pelo XP e deixamos uma questão sobre o quanto ela contribui para a representação da arquitetura. Conforme <a href="http://dearchitectura.wordpress.com/2008/12/12/existe-arquitetura-de-software-em-projetos-xp/#comment-52">comentário</a> do <a href="http://www.sei.cmu.edu/staff/pfm/">Paulo Merson</a>, a metáfora sistêmica, de fato, representa muito pouco da arquitetura, apesar de servir como um esboço inicial.</p>
<p><strong> A experiência</strong><br />
Recentemente tivemos uma experiência com uma metáfora sistêmica que julgamos interessante e gostaríamos de dividi-la.</p>
<p>Em um projeto da área de telecomunicações, estávamos prestes a desenvolver um módulo cuja responsabilidade era verificar se os demais módulos estavam funcionando corretamente e, caso algum estivesse apresentando algum tipo de falhas, alertaria uma ferramenta de monitoração via SNMP. Em outras palavras, o módulo deveria observar a saúde do restante do sistema e comunicar qualquer anormalidade.</p>
<p>Ao usar termos como &#8220;saúde&#8221; e &#8220;batida do coração&#8221; (<em>heartbeat </em>é uma tática comum para detecção de falhas), alguns membros da equipe começaram a brincar que o módulo parecia uma clínica médica de diagnósticos. E da brincadeira surgiu a metáfora sistêmica para o módulo: &#8220;Clínica Médica&#8221;.</p>
<p>A metáfora serviu de diretriz segura para a dupla que iria desenvolver o módulo. Bastou uma sessão de modelagem rápida e coletiva (não passou de meia hora) para que a dupla estivesse pronta para meter a mão na massa. Afinal de contas, mesmo quem nunca ficou internado num hospital, assiste a filmes ou seriados médicos. Todos tinham noção muito precisa de como funcionaria o módulo. Para se ter uma idéia, após o módulo ter sido implementado (em menos de uma semana), estava repleto de classes do tipo DoctorBean, NurseBean, Patient, Heartbeat e por aí vai.</p>
<p>Analisando a experiência:</p>
<ul>
<li>A <strong>concretude</strong> da metáfora foi muito eficaz para a orientação da dupla. Tínhamos um desenho anterior, mas a modelagem estava um tanto abstrata e não estava contribuindo muito para o entendimento.</li>
<li>Os <strong>nomes</strong> das classes e mensagens ficaram muito <strong>mais significativos</strong>. Mesmo um programador novato no sistema terá mais facilidades em entender o que faz o <em>DoctorBean </em>(diagnósticos) e que tipo de informação carrega o <em>Heartbeat </em>(sinal de vida). Inclusive, a ausência do <em>heartbeat </em>significa a morte do componente.</li>
<li>O <strong>trabalho</strong> ficou mais <strong>divertido</strong>! <em>Nurse </em>é bem mais legal que nomes como <em>Template Method</em> (nada contra, mas é meio careta).</li>
</ul>
<p>Obviamente só a metáfora não teria sido suficiente para se chegar ao código. A dupla refinou bastante o desenho do módulo e o provou com código. E o sistema como um todo dificilmente poderia ser representado somente por uma metáfora. Na verdade, o sistema todo exigiu vários meses de trabalho arquitetural intensivo.</p>
<p><strong>Modelagem inicial e funcionamento</strong><br />
Segue uma noção da modelagem inicial (diagrama de objetos &#8211; informal). Peço desculpas por não mostrar a foto original do modelo ágil &#8211; eu a perdi.</p>
<p><a href="http://dearchitectura.files.wordpress.com/2009/01/dnp.png"><img class="aligncenter size-medium wp-image-465" title="dnp" src="http://dearchitectura.files.wordpress.com/2009/01/dnp.png?w=300" alt="dnp" width="300" height="128" /></a></p>
<p>Caso esteja curioso sobre o funcionamento:</p>
<ul>
<li>Os monitores dos pacientes emitem os sinais da saúde (<em>heartbeat </em>é um deles).</li>
<li>Os componentes enfermeiras coletam dados dos pacientes (agentes implantados nos módulos) e informam ao médico remotamente (o sistema é distribuído).</li>
<li>O médico realiza o diagnóstico a partir dos dados coletados e, caso necessário, comunica a morte (ou qualquer possível anormalidade) ao HP OpenView.</li>
</ul>
<p><strong>Agradecimentos</strong><br />
Gostaria de agradecer à Luíza D. e ao Diego S. pelo trabalho inspirador. E claro ao Mr. K., um dos arquitetos do sistema. Não consigo imaginar como o desenho poderia ter ficado melhor.</p>
<p><strong>Algumas referências:</strong></p>
<p><a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1233573323&amp;sr=1-1">Extreme Programming Explained (segunda edição)</a> &#8211; referência clássica do XP</p>
<p><a href="http://www.madetostick.com/">Made to Stick: Why Some Ideas Survive and Others Die</a> &#8211; um excelente livro que aborda aspectos das idéias bem sucedidas, como concretude e simplicidade.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arkhi.com.br/2009/02/02/uma-metafora-sistemica/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

