<?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; rup</title>
	<atom:link href="http://blog.arkhi.com.br/tag/rup/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>Diretrizes do RUP para Arquitetura de Software</title>
		<link>http://blog.arkhi.com.br/2008/11/11/diretrizes-do-rup-para-arquitetura-de-software-2/</link>
		<comments>http://blog.arkhi.com.br/2008/11/11/diretrizes-do-rup-para-arquitetura-de-software-2/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 10:00:34 +0000</pubDate>
		<dc:creator>Eros Viggiano</dc:creator>
				<category><![CDATA[arquitetura de software]]></category>
		<category><![CDATA[diretrizes]]></category>
		<category><![CDATA[processo]]></category>
		<category><![CDATA[rup]]></category>
		<category><![CDATA[UP]]></category>

		<guid isPermaLink="false">http://dearchitectura.wordpress.com/?p=348</guid>
		<description><![CDATA[
O RUP oferece uma fonte razoável de informações voltadas para a arquitetura de software como fluxo de trabalho (incluindo atividades e tarefas), conceitos, diretrizes, etc. Ao definir o ciclo de vida de desenvolvimento do software, constitui guia fundamental para arquitetos de software. Neste texto, citaremos algumas dessas diretrizes.

Descoberta, Análise e Controle Arquitetural: descreve como realizar descoberta, análise [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>O RUP oferece uma fonte razoável de informações voltadas para a arquitetura de software como fluxo de trabalho (incluindo <a title="As Atividades de Arquitetura do Processo Unificado da Rational (RUP)" href="http://dearchitectura.wordpress.com/2008/10/30/as-atividades-de-arquitetura-do-processo-unificado/">atividades</a> e tarefas), conceitos, diretrizes, etc. Ao definir o ciclo de vida de desenvolvimento do software, constitui guia fundamental para arquitetos de software. Neste texto, citaremos algumas dessas diretrizes.</p>
<ul>
<li><strong>Descoberta, Análise e Controle Arquitetural</strong>: descreve como realizar descoberta, análise e controle arquitetural com o <a title="RSA" href="http://www.ibm.com/software/awdtools/architect/swarchitect/">Rational Software Architect (RSA)</a>. </li>
<li><strong>Integrando os Aplicativos Legados às Arquiteturas Modernas:</strong> orienta sobre a modernização de sistemas legados e sua integração com novos sistemas.  </li>
<li><strong>Dependência de Manifestação: </strong>orienta como realizar o mapeamento entre elementos de desenho e os  artefatos fisicos de implementacão (DLLs, executáveis e códigos).</li>
<li><strong>Dependência de Importação na Implementação: </strong>orienta a organização das dependências do modelo de implementação.</li>
<li><strong>Diagrama de Componentes: </strong>aponta utilidades de aplicação de um diagrama de componentes na descrição do modelo de implementação.</li>
<li><strong>Análise Arquitetural para os Aplicativos J2EE: </strong>fornece uma noção geral dos mecanimos de design e tecnologias de J2EE.</li>
</ul>
</div>
<p>As seguintes diretrizes indicam técnicas para modelar sistemas J2EE. Relacionam mecanismos de desenho com as tecnologias, bem como seu melhor uso.</p>
<div>
<ul>
<li>Aplicativo J2EE</li>
<li>Projetando o Estado para Aplicativos J2EE</li>
<li>Descrevendo a Distribuição para Aplicativos J2EE</li>
<li>Descrevendo a Arquitetura de Tempo de Execução para Aplicativos J2EE</li>
<li>JMS (Java Messaging Service)</li>
</ul>
<div class="moz-text-html" lang="x-western">A maior parte das diretrizes se refere a J2EE (infelizmente o RUP ainda não contempla informações especializadas para .NET). Apesar da quantidade modesta de diretrizes e estas não apresentarem uma abordagem muito profunda, podem ser um válido ponto de partida para o assunto pesquisado. As diretrizes do RUP para arquitetura de software não são tão abrangentes e úteis quanto para seu fluxo de trabalho.  </p>
<p>Observe que apontamos somente diretrizes diretamente relacionadas com atividades nas quais o arquiteto é o principal responsável.</p>
<p>Para mais informações:</p>
<ul>
<li><a href="http://erosviggiano.com/2008/11/02/diretrizes-do-rup-para-arquitetura-de-software/">Versão mais completa do artigo</a> (nível avançado)</li>
<li><a href="http://www.ibm.com/developerworks/edu/i-dw-r-rsacodereview.html">Exposing design flaws in your code, Part 1: Code review</a></li>
<li><a href="http://www.ibm.com/developerworks/edu/i-dw-r-archdiscover.html">Exposing design flaws in your code: Part 2, Architectural discovery </a></li>
<li><a href="http://www.ibm.com/developerworks/rational/library/dec04/bell/">UML basics: The component diagram</a></li>
</ul>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.arkhi.com.br/2008/11/11/diretrizes-do-rup-para-arquitetura-de-software-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenUP &#8211; Agilidade, Controle de Riscos e Disciplina Arquitetural</title>
		<link>http://blog.arkhi.com.br/2008/11/09/openup-agilidade-controle-de-riscos-e-disciplina-arquitetural/</link>
		<comments>http://blog.arkhi.com.br/2008/11/09/openup-agilidade-controle-de-riscos-e-disciplina-arquitetural/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 10:42:14 +0000</pubDate>
		<dc:creator>Marco Mendes</dc:creator>
				<category><![CDATA[arquitetura de software]]></category>
		<category><![CDATA[atividades]]></category>
		<category><![CDATA[metodologias ágeis]]></category>
		<category><![CDATA[OpenUP]]></category>
		<category><![CDATA[rup]]></category>
		<category><![CDATA[UP]]></category>

		<guid isPermaLink="false">http://dearchitectura.wordpress.com/?p=329</guid>
		<description><![CDATA[Métodos ágeis são, sem dúvida, excelentes paradigmas para o desenvolvimento de software. Eles possuem excelentes premissas tais como: foco na comunicação, geração de valor para os clientes e desenho orientado à mudanças; entre outros. Por outro lado, métodos mais robustos como o RUP trazem uma forte orientação por riscos através da decomposição do processo em [...]]]></description>
			<content:encoded><![CDATA[<p>Métodos ágeis são, sem dúvida, excelentes paradigmas para o desenvolvimento de software. Eles possuem excelentes premissas tais como: foco na comunicação, geração de valor para os clientes e desenho orientado à mudanças; entre outros. Por outro lado, métodos mais robustos como o RUP trazem uma forte orientação por riscos através da decomposição do processo em fases temporais, onde os requisitos mais prioritários e complexos são identificados, detalhados e implementados nas fases iniciais (concepção e elaboração).</p>
<p>O Open-UP, que detalhamos <a title="OpenUP" href="http://dearchitectura.wordpress.com/2008/11/09/as-atividades-de-arquitetura-do-openup/" target="_blank">em um artigo anterior</a>, é um processo de domínio público e aberto para extensões que mescla a escola de agilidade de métodos ágeis como o <a href="http://www.extremeprogramming.org/" target="_self">XP </a>com o rigor do ataque aos riscos do <a title="RUP" href="http://dearchitectura.wordpress.com/2008/10/30/as-atividades-de-arquitetura-do-processo-unificado/" target="_blank">RUP</a>.</p>
<p>O OpenUP é baseado em quatro princípios básicos:</p>
<ul>
<li>Balanço: Balanceamento entre as prioridades conflitantes do projeto (custo, tempo, qualidade, escopo) de forma a maximizar o valor para os clientes.</li>
<li>Colaboração: Colaboração para alinhar os interesses e fomentar o entendimento comum da missão e prioridades do projeto.</li>
<li>Foco: Desde o início, foco na arquitetura para mitigar riscos e organizar o desenvolvimento de software.</li>
<li>Evolução: Evoluir através de feedbacks contínuos dos stakeholders e através da demonstração de valor agregado regularmente.</li>
</ul>
<p>O gráfico abaixo com a espinha dorsal do Open-UP mostra o rigor do ataque a riscos neste processo ágil.</p>
<div id="attachment_330" class="wp-caption aligncenter" style="width: 514px"><a href="http://dearchitectura.files.wordpress.com/2008/11/riscosopenup.png"><img class="size-full wp-image-330" title="riscosopenup" src="http://dearchitectura.files.wordpress.com/2008/11/riscosopenup.png" alt="Perfil de Riscos do OpenUP" width="504" height="159" /></a><p class="wp-caption-text">Perfil de Riscos do OpenUP</p></div>
<p style="text-align:center;"><em>Fonte: </em><a href="http://epf.eclipse.org/wikis/openup/"><em>OpenUP</em></a><em> &#8211; Licença </em><a href="http://www.eclipse.org/legal/epl-v10.html"><em>EPL</em></a></p>
<p>A fase de elaboração é normalmente finalizada por volta do 3/10 temporal de um projeto e deve apresentar um perfil de riscos muito baixos para que seja dada como encerrada. Para que os riscos estejam mitigados, é fundamental um foco permanente em atividades arquiteturais.</p>
<p>No OpenUP, diferentemente do RUP, a arquitetura é enfatizada como um produto coletivo e não como um produto do arquiteto. A arquitetura não deve ser arremessada para a equipe pelo <a href="http://www.agilemodeling.com/essays/agileArchitecture.htm" target="_blank">arquiteto da torre de marfim</a>. Além disso, a arquitetura é considerada evolutiva, embora ela tenha suas linhas de base salvas dentro do ciclo de vida do projeto (prática da Arquitetura Evolutiva).</p>
<p>O OpenUP produz apenas um único e ligeiro documento para a &#8220;disciplina&#8221; de arquitetura, chamado de Caderno Arquitetural (Architectural Notebook). Este documento compila as decisões realizadas pelo time, liderado pelo arquiteto de software, e formaliza as decisões técnicas tomadas para facilitar comunicações futuras.</p>
<p>A disciplina arquitetural do OpenUP pode ser observada também na lista de verificação do Caderno Arquitetural, colocada abaixo, e também na lista de atividades que documentamos <a href="http://dearchitectura.wordpress.com/2008/11/09/as-atividades-de-arquitetura-do-openup/" target="_blank">anteriormente</a>.</p>
<p><strong>Lista de Verificação de Arquitetura do OpenUP</strong></p>
<ul>
<li>A arquitetura está totalmente compreensível para todos os envolvidos do projeto?</li>
<li>Os objetivos da arquitetura, restrições de desenho e implementação e os requisitos foram descritos e endereçados?</li>
<li>Os mecanismos arquiteturais foram identificados e descritos?</li>
<li>As <a href="http://dearchitectura.wordpress.com/2008/10/26/desmistificando-a-decomposicao-em-camadas/" target="_blank">partições do sistema</a> foram suficientes definidas?</li>
<li>Os elementos chave da arquitetura foram definidos adequadamente?</li>
<li>As interfaces com sistemas externos foram representadas?</li>
<li>Os pontos de reuso foram identificados?</li>
<li>A arquitetura foi feita para evoluir?</li>
<li>A arquitetura conseguirá ser entregue pelo time nas restrições de tempo e custo do projeto?</li>
<li>O software foi mapeado adequadamente para o hardware?</li>
</ul>
<div style="display:none;">
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr valign="top">
<td>
<ul>
<li> Is it clear when each <a class="elementLink" href="http://epf.eclipse.org/wikis/openup/core.tech.common.extend_supp/guidances/concepts/arch_mechanism_2932DFB6.html">Architectural Mechanisms</a> should be applied?</li>
<li> Is there a clearly defined design pattern in place to support each mechanism?</li>
<li> Does each mechanism adequately address the requirements it is intended to meet?</li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div style="display:none;">
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr valign="top">
<td>
<ul class="noindent">
<li> Is partitioning approach clearly described and applied consistently?</li>
<li> Does the partitioning approach reduce complexity and improve understanding?</li>
<li> Have the partitions been defined to be highly cohesive within the partition, while the partitions themselves are         loosely coupled?</li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div style="display:none;">
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr valign="top">
<td>
<ul>
<li> Have the <a class="elementLink" href="http://epf.eclipse.org/wikis/openup/core.tech.common.extend_supp/guidances/concepts/key_abstractions_1474DBF2.html">Key Abstractions</a> adequately defined?</li>
<li> Have the the key design elements (i.e., <a class="elementLink" href="http://epf.eclipse.org/wikis/openup/core.tech.common.extend_supp/guidances/concepts/component_CB167D48.html">Component</a>s) adequately defined?</li>
<li>
<ul>
<li> Do the components have well-defined interfaces?</li>
<li> Have the system’s responsibilities been allocated to the components?</li>
<li> Are the number and types of components reasonable?</li>
</ul>
</li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div style="display:none;">
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr valign="top">
<td>See <a class="elementLinkWithType" href="http://epf.eclipse.org/wikis/openup/core.tech.common.extend_supp/guidances/guidelines/repres_interfaces_to_ext_systems_51A34F6E.html">Guideline: Representing Interfaces to External Systems</a></td>
</tr>
</tbody>
</table>
</div>
</div>
<p>O OpenUP foi originalmente desenhado para times pequenos (&lt; 10 pessoas), embora acreditemos na sua escala até mesmo para projetos maiores. De toda forma, por ser um processo público, ágil e com forte ênfase em controle de riscos através de atividades arquiteturais, este processo é sem dúvida uma excelente escolha para desenvolvimento de software na realidade brasileira.</p>
<p>Um artigo bem interessante sobre o OpenUP, inspirou o método de trabalho usado para criar o Eclipse, pode ser encontrado <a href="http://www.ibm.com/developerworks/rational/library/edge/08/jul08/vanVelzen/index.html" target="_blank">na Rational Edge</a>.<em><br />
</em></p>
<p><em>Curiosidade do Dia: O criador do OpenUP é o <a href="http://www.eclipsecon.org/2006/Presenters.do?id=all#289" target="_blank">Ricardo Balduíno</a>, um brasileiro que trabalha como Engenheiro de Software Sênior pela IBM Rational.</em></p>
<p><em><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arkhi.com.br/2008/11/09/openup-agilidade-controle-de-riscos-e-disciplina-arquitetural/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>As Atividades de Arquitetura do OpenUP</title>
		<link>http://blog.arkhi.com.br/2008/11/09/as-atividades-de-arquitetura-do-openup/</link>
		<comments>http://blog.arkhi.com.br/2008/11/09/as-atividades-de-arquitetura-do-openup/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 00:44:41 +0000</pubDate>
		<dc:creator>Eros Viggiano</dc:creator>
				<category><![CDATA[arquitetura de software]]></category>
		<category><![CDATA[atividades]]></category>
		<category><![CDATA[metodologias ágeis]]></category>
		<category><![CDATA[OpenUP]]></category>
		<category><![CDATA[rup]]></category>
		<category><![CDATA[UP]]></category>

		<guid isPermaLink="false">http://dearchitectura.wordpress.com/?p=324</guid>
		<description><![CDATA[Conforme abordamos anteriormente, o OpenUP é uma derivação do Processo Unificado e, assim como este, é centrado na arquitetura de software. Ao mesmo tempo que aplica os princípios do ciclo de vida do RUP, o OpenUP adota uma &#8220;filosofia pragmática e ágil que foca no colaboração natural&#8221; para o desenvolvimento do software.
Diferentemente das outras abordagens [...]]]></description>
			<content:encoded><![CDATA[<p>Conforme abordamos <a href="http://dearchitectura.wordpress.com/2008/10/30/as-atividades-de-arquitetura-do-processo-unificado/">anteriormente</a>, o <a href="http://epf.eclipse.org/wikis/openup/">OpenUP</a> é uma derivação do Processo Unificado e, assim como este, é centrado na arquitetura de software. Ao mesmo tempo que aplica os princípios do ciclo de vida do RUP, o OpenUP adota uma &#8220;filosofia pragmática e ágil que foca no colaboração natural&#8221; para o desenvolvimento do software.</p>
<p>Diferentemente das outras <a href="http://agilemanifesto.org/">abordagens ágeis</a>, como o <a href="http://www.extremeprogramming.org/">XP</a>, a forte orientação à mitigação de riscos do OpenUP (premissa do UP, claro) enfatiza o trabalho arquitetural no início do ciclo de desenvolvimento. Ao balancear o ataque aos riscos técnicos com as práticas ágeis, o OpenUP adota a Arquitetura Evolucionária (Evolutionary Architecture), uma influência da Arquitetura Ágil (<a href="http://www.agilemodeling.com/essays/agileArchitecture.htm">Agile Architecture</a>) de Ambler. A Arquitetura Evolucionária se baseia em: realizar o trabalho arquitetural &#8220;just in time&#8221;, isto é, na medida que é necessário; documentar principais premissas arquiteturais; implementar e testar capacidades-chave através de protótipos.</p>
<p>As tarefas cujo principalmente responsável é do arquiteto são &#8220;Esboçar a Arquitetura&#8221; (Outline the Architecture) e &#8220;Refinar a Arquitetura&#8221; (Refine the Architecture). Basicamente, a tarefa de &#8220;Refinar a Arquitetura&#8221; complementa com maiores detalhes as informações identificadas em &#8220;Esboçar a Arquitetura&#8221;.</p>
<div id="attachment_325" class="wp-caption aligncenter" style="width: 399px"><a href="http://dearchitectura.files.wordpress.com/2008/11/architect_performs.jpg"><img class="size-full wp-image-325" title="architect_performs" src="http://dearchitectura.files.wordpress.com/2008/11/architect_performs.jpg" alt="Relacionamentos do Arquiteto de Software (OpenUP)" width="389" height="159" /></a><p class="wp-caption-text">Relacionamentos do Arquiteto de Software (OpenUP)</p></div>
<p style="text-align:center;"><em>Fonte: </em><a href="http://epf.eclipse.org/wikis/openup/"><em>OpenUP</em></a><em> &#8211; Licença </em><a href="http://www.eclipse.org/legal/epl-v10.htm"><em>EPL</em></a></p>
<p style="text-align:left;">Abaixo apresentamos uma correlação entre os passos das tarefas arquiteturais:<br />
<strong><br />
</strong></p>
<table border="1" cellspacing="2" cellpadding="2" width="100%">
<tbody>
<tr>
<td valign="top"><strong>Passos de &#8220;Esboçar Arquitetura&#8221;<br />
</strong></td>
<td valign="top"><strong>Passos de &#8220;Refinar Arquitetura&#8221;</strong></td>
</tr>
<tr>
<td valign="top">Identificar objetivos arquiteturais.</td>
<td rowspan="2" valign="top">Refinar os objetivos arquiteturais e os requisitos arquiteturalmente significativos.</td>
</tr>
<tr>
<td valign="top">Identificar requisitos arquiteturalmente significativos.</td>
</tr>
<tr>
<td valign="top">Identificar restrições sobre a arquitetura.</td>
<td rowspan="4" valign="top">Identificar elementos de design arquiteturalmente significativos.</td>
</tr>
<tr>
<td valign="top">Identificar mecanismos arquiteturais.</td>
</tr>
<tr>
<td valign="top">Identificar interfaces com sistemas externos.</td>
</tr>
<tr>
<td valign="top">Identificar abstrações-chave.</td>
</tr>
<tr>
<td valign="top">Identificar oportunidades de reuso.</td>
<td valign="top">Identificar oportunidades adicionais de reuso.</td>
</tr>
<tr>
<td valign="top">Definir abordagem para particionamento do sistema.</td>
<td rowspan="2" valign="top">Mapear o software ao hardware.</td>
</tr>
<tr>
<td valign="top">Definir abordagem para implantação do sistema.</td>
</tr>
<tr>
<td valign="top">Verificar a consistência arquitetural.</td>
<td valign="top">Validar a arquitetura.</td>
</tr>
<tr>
<td valign="top">Capturar e comunicar decisões arquiteturais.</td>
<td valign="top">Comunicar decisões.</td>
</tr>
<tr>
<td valign="top">N.A.</td>
<td valign="top">Definir arquitetura de desenvolvimento e arquitetura de testes.</td>
</tr>
</tbody>
</table>
<p>Apesar de ser um processo minimalista, as tarefas arquiteturais indicadas pelo OpenUP são suficientes para suprir as necessidades de modelagem da arquitetura de grande parte dos projetos de software. Ambas tarefas fornecem insumos para o preenchimento do &#8220;Caderno de Arquitetura&#8221; (&#8220;Architecture Notebook&#8221;, também traduzido por &#8220;Descrição Arquitetural&#8221; no OpenUP 0.9 em português). O Caderno de Arquitetura, único artefato da disciplina, registra todos os apontamentos relevantes do time de arquitetura. Não é pretensão do OpenUP documentar toda a atividade de arquitetura &#8211; para isto, conta com o valor ágil de &#8220;Comunicação&#8221;.</p>
<p>Para maiores informações aos interessados, seguem referências.</p>
<ol>
<li><a href="http://dearchitectura.wordpress.com/2008/10/30/as-atividades-de-arquitetura-do-processo-unificado/">As Atividades de Arquitetura do Processo Unificado</a> </li>
<li><a href="http://epf.eclipse.org/wikis/openup/">OpenUP</a></li>
<li><a href="http://agilemanifesto.org/">Agile Manifesto</a></li>
<li><a href="http://www.agilemodeling.com/essays/agileArchitecture.htm">Agile Architecture: Strategies for Scaling Agile Development</a></li>
<li><a href="http://www.agilemodeling.com/essays/initialArchitectureModeling.htm">Architecture Envisioning: An Agile Best Practice</a></li>
<li><a href="http://www.agiledata.org/essays/enterpriseArchitecture.html">Agile Enterprise Architecture</a></li>
<li><a href="http://www.sei.cmu.edu/architecture/essays.html#paradox">Architecture Paradox</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.arkhi.com.br/2008/11/09/as-atividades-de-arquitetura-do-openup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Combinando QAW com RUP e XP</title>
		<link>http://blog.arkhi.com.br/2008/11/04/combinando-qaw-com-rup-e-xp/</link>
		<comments>http://blog.arkhi.com.br/2008/11/04/combinando-qaw-com-rup-e-xp/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 00:03:48 +0000</pubDate>
		<dc:creator>Eros Viggiano</dc:creator>
				<category><![CDATA[arquitetura de software]]></category>
		<category><![CDATA[métodos]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[qaw]]></category>
		<category><![CDATA[rup]]></category>
		<category><![CDATA[SEI]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://dearchitectura.wordpress.com/?p=311</guid>
		<description><![CDATA[Em um post anterior, introduzimos a aplicação do QAW (Quality Attribute Workshop), um dos métodos do SEI centrados em arquitetura. Relembrando rapidamente: QAW se destina a sistematizar a identificação de requisitos de qualidade com o engajamento dos stakeholders.
Na maioria das vezes, não faz muito sentido identificar requisitos fora do contexto de um projeto. Sendo assim, [...]]]></description>
			<content:encoded><![CDATA[<p>Em um <a title="QAW" href="http://dearchitectura.wordpress.com/2008/11/01/qaw/">post anterior, introduzimos a aplicação do QAW</a> (Quality Attribute Workshop), <a href="http://dearchitectura.wordpress.com/2008/10/24/metodos-centrados-em-arquitetura-para-desenvolvimento-de-projetos/">um dos métodos do SEI centrados em arquitetura</a>. Relembrando rapidamente: QAW se destina a sistematizar a identificação de requisitos de qualidade com o engajamento dos <a href="http://epf.eclipse.org/wikis/openuppt/openup_basic/roles/stakeholder,_dTa6gMAYEdqX-s4mWhkyqQ.html">stakeholders</a>.</p>
<p>Na maioria das vezes, não faz muito sentido identificar requisitos fora do contexto de um projeto. Sendo assim, geralmente o QAW é empregado como uma atividade (ou conjunto de atividades) de um processo responsável por todo o ciclo de vida de desenvolvimento do software como o <a title="RUP" href="http://www.ibm.com/developerworks/rational/library/content/RationalEdge/jan01/WhatIstheRationalUnifiedProcessJan01.pdf">RUP</a> (Rational Unified Process) ou o <a title="XP" href="http://www.extremeprogramming.org/">XP</a> (eXtreme Programming). Neste texto, descrevemos uma possível combinação do QAW com esses processos.</p>
<p><strong>QAW e o ciclo de vida do RUP</strong><br />
O QAW deve ser empregado antes de se modelar a arquitetura. A <a href="http://dearchitectura.wordpress.com/2008/10/30/as-atividades-de-arquitetura-do-processo-unificado/">atividade de arquitetura do RUP</a> mais relacionada ao contexto do QAW é &#8220;Desenvolver Especificações Suplementares&#8221; (Develop Supplementary Specifications) que deve ser realizada no início do desenvolvimento, isto é, nas fases de Iniciação (ou Concepção) e Elaboração. Conforme o gabarito do RUP, os requisitos não-funcionais podem ser enquadrados como especificações suplementares nos casos de uso.</p>
<p style="text-align:center;"><span style="color:#0000ee;text-decoration:underline;"><a href="http://dearchitectura.files.wordpress.com/2008/11/humpchart.jpg"></a><a href="http://dearchitectura.files.wordpress.com/2008/11/humpchart.jpg"><img class="size-medium wp-image-303  aligncenter" title="humpchart" src="http://dearchitectura.files.wordpress.com/2008/11/humpchart.jpg?w=300" alt="" width="300" height="203" /></a></span></p>
<p>Algumas tarefas do RUP que também podem ser influenciadas pelo método do QAW são a &#8220;Análise Arquitetural&#8221; (Architectural Analysis) e &#8220;Priorizar Casos de Uso&#8221; (Prioritize Use Cases), respectivamente associadas às disciplinas de &#8220;Análise e Desenho&#8221; e &#8220;Requisitos&#8221;.</p>
<p>Maiores informações podem ser encontradas no relatório técnico <a href="http://www.sei.cmu.edu/publications/documents/04.reports/04tr011.html">&#8220;Integrating Software-Architecture-Centric Methods into the Rational Unified Process&#8221;</a>. <strong>Ponto de atenção</strong>: neste post, adaptei a nomenclatura para ficar coerente com o <strong>RUP 7</strong>.</p>
<p><strong>QAW e o ciclo de vida do XP</strong><br />
Apesar do XP dar muito pouca ênfase à arquitetura de software (por confiar no valor da &#8220;coragem&#8221; para uma possível refatoração arquitetural, se necessário), geralmente a arquitetura é capturada na &#8220;Metáfora do Sistema&#8221; (System Metaphor).</p>
<p style="text-align:center;"><a href="http://dearchitectura.files.wordpress.com/2008/11/project.gif"><img class="size-medium wp-image-304  aligncenter" title="project" src="http://dearchitectura.files.wordpress.com/2008/11/project.gif?w=300" alt="" width="300" height="129" /></a></p>
<p>Ao contrário do RUP, o XP originalmente não contempla um gabarito formal que inclua requisitos suplementares. Mas sugere-se suplementar as &#8220;Estórias de Usuário&#8221; (User Stories) com os requisitos de qualidade (representados com os <a href="http://www.sei.cmu.edu/architecture/products_services/sap_book.html">seis tradicionais atributos</a>). A primeira iteração do projeto é o momento perfeito para o evento de QAW, quando seriam capturados os requisitos de qualidade que devem nortear a metáfora sistêmica. A prática &#8220;Cliente presente&#8221; facilita o acontecimento do evento.</p>
<p>Outra prática que também contribui para o emprego do QAW é &#8220;Jogo de Planejamento&#8221; (Planning Game), pois a priorização dos requisitos de qualidade pode auxiliar na escolha das estórias de cada iteração.</p>
<p>Além disto, a prática &#8220;Desenvolvimento Guiado por Testes&#8221; (Test Driven Development) que potencialmente é favorecida pela identificação dos cenários no evento de QAW. Neste caso, os cenários podem ser usados posteriormente para avaliar o desenho e fornecer insumos para análise dos testes.</p>
<p>Maiores informações podem ser encontradas no relatório técnico <a href="http://www.sei.cmu.edu/publications/documents/04.reports/04tn036.html">&#8220;Integrating Software-Architecture-Centric Methods into Extreme Programming&#8221;</a>.</p>
<p><strong>QAW e outros processos de desenvolvimento de software</strong><br />
Mesmo que você não use diretamente o RUP ou o XP, possivelmente emprega alguma variante do RUP (ex: EUP, EssUP, OpenUP, etc) ou alguma metodologia ágil (ex: SCRUM, FDD, Crystal Clear). Ou ainda uma combinação de ambos como o AUP e a &#8220;dobradinha&#8221; RUP + Scrum. Assim poderá aplicar facilamente os fundamentos aqui expostos em qualquer método.</p>
<p>Outras referências:</p>
<ol>
<li><a class="l" href="http://www.sei.cmu.edu/publications/documents/03.reports/03tr016.html">Quality Attribute Workshops (QAWs), Third Edition</a></li>
<li><a href="http://www.ibm.com/software/awdtools/rup/">IBM Rational Unified Process</a></li>
<li><a href="http://www.sei.cmu.edu/news-at-sei/columns/the_architect/2005/1/architect-2005-1.htm">Integrating Architecture Methods: The Case of Extreme Programming</a></li>
<li><a href="http://www-128.ibm.com/developerworks/rational/library/feb05/krebs/">RUP in the dialogue with Scrum</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.arkhi.com.br/2008/11/04/combinando-qaw-com-rup-e-xp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>As Atividades de Arquitetura do Processo Unificado da Rational (RUP)</title>
		<link>http://blog.arkhi.com.br/2008/10/30/as-atividades-de-arquitetura-do-processo-unificado/</link>
		<comments>http://blog.arkhi.com.br/2008/10/30/as-atividades-de-arquitetura-do-processo-unificado/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 01:40:19 +0000</pubDate>
		<dc:creator>Marco Mendes</dc:creator>
				<category><![CDATA[arquitetura de software]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[rup]]></category>

		<guid isPermaLink="false">http://dearchitectura.wordpress.com/?p=250</guid>
		<description><![CDATA[O processo unificado e suas derivações (RUP, EUP, AUP e o Open-UP) são dirigidos por arquitetura, i.e., enfatizam fortemente as atividades arquiteturais ao longo de um projeto de TI. Resumo aqui as principais tarefas arquiteturais que devem ser realizadas dentro de um projeto.

Coletar Requisitos Suplementares. O RUP enfatiza através de um método chamado FURPS+ criado [...]]]></description>
			<content:encoded><![CDATA[<p>O processo unificado e suas derivações (RUP, EUP, AUP e o Open-UP) são dirigidos por arquitetura, i.e., enfatizam fortemente as atividades arquiteturais ao longo de um projeto de TI. Resumo aqui as principais tarefas arquiteturais que devem ser realizadas dentro de um projeto.</p>
<ol>
<li>Coletar Requisitos Suplementares. O RUP enfatiza através de um método chamado FURPS+ criado por Robert Grady e disponibilizado no livro <em>Practical Software Metrics for Project Management and Process Improvement</em>. Prentice-Hall, 1992. Este método enfatiza a captura de requisitos como usabilidade, confiabilidade, desempenho, suportabilidade, entre diversos outros. Um artigo chave para o entendimento do método FURPS+ é o artigo <a href="http://www.ibm.com/developerworks/rational/library/4706.html#footnotes" target="_blank">Capturing Architectural Requirements</a>, de Peter Eeles. Um versão em formato de questionário pode ser encontrado <a href="http://blog.marcomendes.com/2006/06/19/como-e-por-que-criar-uma-arquitetura-executavel-em-sistemas-de-informacao/" target="_blank">aqui</a>.</li>
<li>Identificar os casos de uso significativos para análise arquitetural. Em um sistema, apenas um sub-conjunto dos casos de uso são críticos para o negócio e complexos tecnicamente. Este sub-conjunto deve ser exercitado e provado através de uma arquitetura.</li>
<li>Realizar a análise arquitetural. A análise arquitetural visa produzir uma arquitetura candidata e refiná-la sucessivamente ao longo do projeto. Esta é uma atividades claramente iterativa e incremental e compreende as definições dos mecanismos (Soluções) que irão realizar os requisitos do projeto.  Um aspecto endereçado aqui é a <a href="http://dearchitectura.wordpress.com/2008/10/26/desmistificando-a-decomposicao-em-camadas/" target="_blank">decomposição em camadas</a>.  A série de artigos referenciados ao final deste blog fornece, também, mais informações sobre este processo.</li>
<li>Construir Provas de Conceito Arquiteturais. Durante o processo da análise arquitetural, aspectos de risco do projeto podem merecer uma investigação mais detalhada. Uma prova de conceito no processo unificado pode tomar as seguintes formas: <em>Modelagem conceitual; Protótipo &#8216;Rápido; Simulação; Conversão automática de especificações em código; Especificações &#8216;executáveis&#8217;ou a Construção de  &#8216;picos invertidos&#8217; como protótipos &#8211; fatias verticais através de camadas</em>.</li>
<li> Avaliar Viabilidade das Provas de Conceito Arquiteturais. Toda prova de conceito deve ser avaliada contra os objetivos e requisitos que ela pretende realizar de forma que os riscos associados sejam mitigados.</li>
<li>Identificar os mecanismos de design. Esta tarefa lida com o processo de seleção e escolha das tecnologias que irão realizar uma arquitetura.</li>
<li>Identificar e incorporar elementos de design. Dado que uma tecnologia esteja escolhida, é necessário refinar os elementos da arquitetura em elementos de design e também melhorá-lo através de soluções como <em>design patterns</em>.</li>
<li>Estrutura o modelo de implementação. Esta tarefa estabelece a estrutura dos elementos de implementação baseados nas responsabilidades designadas para subsistemas de implementação e seu conteúdo.</li>
</ol>
<p>Os principais artefatos produzidos pelo time de arquitetura (arquiteto de software, analistas de sistemas,  analista de requisitos e projetistas) são:</p>
<ul>
<li>Requisitos Suplementares</li>
<li>Documento de Arquitetura de Software</li>
<li>Provas de Conceito</li>
<li>Modelo de Design</li>
<li>Modelo de Implementação</li>
</ul>
<p>Um outro aspecto importante no RUP é o momento temporal onde estas tarefas se concentram &#8211; até 3/10 do tempo do projeto. Por exemplo, se tivéssemos executando um projeto de 4 meses (18 semanas), teríamos o seguinte padrão:</p>
<ul>
<li>Até duas semanas (1/10 do tempo) para identificar os requisitos suplementares.</li>
<li>Até duas semanas para gerar uma primeira proposta de arquitetura candidata e mais quatro semanas (+ 2/10 do tempo) para refinamentos desta arquitetura.</li>
<li>Até seis semanas (3/10 do tempo) para a execução de provas de conceito e verificação da viabilidade destas provas de conceito.</li>
<li> Até seis semanas (3/10 do tempo) para o detalhamento de uma arquitetura com os elementos de desenho instalados e um modelo de implementação definido.</li>
</ul>
<p>Temporalmente do RUP, portanto, o alvo a ser atingido até o 3/10 do tempo de um projeto  com as tarefas acima é produzir um artefato chave chamado <strong>arquitetura executável. </strong>Esta arquitetura executável acomoda entre 5 e 20% dos casos de uso de um sistema (que foram implementados em paralelo as atividades acima por um pequeno time de projetistas e desenvolvedores) e cria a fundação para acomodar o restante dos casos de uso. É o fim da fase de elaboração no RUP!</p>
<p>Para mais informações a respeito, coloco abaixo algumas referências interessantes sobre atividades de arquitetura no RUP</p>
<ul>
<li><a href="http://www.ibm.com/developerworks/wireless/library/wi-arch13.html" target="_blank">Architectural Manifesto &#8211; The Benefits of The Software Architecture</a></li>
<li><a href="http://www.ibm.com/developerworks/rational/library/05/0816_Louis/" target="_blank">Developing a J2EE Architecture with Rational Software Architect Using the Rational Unified Process</a></li>
<li><a href="http://www.ibm.com/developerworks/wireless/library/wi-arch12/" target="_blank">Architectural manifesto: Evaluating architectures</a></li>
<li>Designing Software Architectures &#8211; <a href="http://www.ibm.com/developerworks/wireless/library/wi-arch7/" target="_blank">Parte 1</a></li>
<li>Designing Software Architectures &#8211; <a href="http://www.ibm.com/developerworks/wireless/library/wi-arch8.html" target="_blank">Parte 2</a></li>
<li>Designing Software Architectures &#8211; <a href="http://www.ibm.com/developerworks/wireless/library/wi-arch9/" target="_blank">Parte 3</a></li>
<li>Designing Software Architectures &#8211; <a href="http://www.ibm.com/developerworks/wireless/library/wi-arch10.html" target="_blank">Parte 4 </a></li>
<li>Designing Software Architectures &#8211; <a href="http://www.ibm.com/developerworks/wireless/library/wi-arch11/" target="_blank">Parte 5</a></li>
<li><a href="http://www.ibm.com/developerworks/rational/library/5335.html" target="_blank">Planejamento de Iterações no RUP</a> (Descreve o fluxo de arquitetura do RUP e principais artefatos associados).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.arkhi.com.br/2008/10/30/as-atividades-de-arquitetura-do-processo-unificado/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

