<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-31852844</atom:id><lastBuildDate>Fri, 22 Apr 2011 03:44:29 +0000</lastBuildDate><category>puc</category><category>xml</category><category>processo unificado</category><category>concepção</category><category>soap</category><category>rup</category><category>fases</category><category>serviços web</category><category>molularização</category><category>restful</category><category>arquitetura</category><category>dependências</category><category>engenharia de software</category><category>casos de uso</category><category>modelos</category><category>documentação</category><category>processo ágil</category><category>requisitos</category><category>interfaces</category><category>incremental</category><category>teste</category><category>processo espiral</category><category>rest</category><category>transição</category><category>projeto</category><category>especialização</category><category>processo iterativo</category><category>componentes</category><category>disciplinas</category><category>processo cascata</category><category>construção</category><category>elaboração</category><category>iterativo</category><category>msf</category><category>implementação</category><category>cursos</category><category>análise</category><title>eng de software [em foco]</title><description>Artigos, críticas, opiniões e notícias sobre Engenharia de Software e assuntos relacionados, como Engenharia de requisitos, Arquitetura de Software, Modelagem, UML, Orientação a Objetos, Paradigmas, Processos de Desenvolvimento e Padrões de Projeto.

Comentários são sempre bem-vindos!</description><link>http://es-emfoco.blogspot.com/</link><managingEditor>noreply@blogger.com (Otavio Ferreira)</managingEditor><generator>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/es-emfoco" /><feedburner:info uri="es-emfoco" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-6347227798826617760</guid><pubDate>Fri, 16 Jan 2009 20:18:00 +0000</pubDate><atom:updated>2009-01-26T08:21:32.770-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">restful</category><category domain="http://www.blogger.com/atom/ns#">rest</category><category domain="http://www.blogger.com/atom/ns#">soap</category><category domain="http://www.blogger.com/atom/ns#">xml</category><category domain="http://www.blogger.com/atom/ns#">serviços web</category><title>Serviços Web - O Paradigma RESTful</title><description>&lt;p&gt;Existem muitas definições para o termo Serviços Web. Para motivar nossa discussão, vamos nos basear inicialmente na &lt;a href="http://www.w3.org/TR/ws-gloss/"&gt;definição&lt;/a&gt; publicada pelo &lt;a href="http://www.w3.org/"&gt;W3C&lt;/a&gt;, como segue: “&lt;em&gt;Um serviço web é um sistema de software projetado para suportar a interação entre máquinas de forma interoperável em uma rede de computadores. Este serviço possui uma interface descrita em um formato processável por máquina (especificamente o WSDL). Outros sistemas interagem com o serviço web de acordo com esta interface, utilizando mensagens SOAP, tipicamente enviadas via HTTP com uma serialização em XML&lt;/em&gt;”.&lt;/p&gt;  &lt;p&gt;Tal definição é perfeitamente realizável e amplamente adotada. Grandes empresas como Microsoft e IBM participaram ativamente do desenvolvimento desta abordagem através do lançamento de produtos e publicação de &lt;a href="http://www.ibm.com/developerworks/webservices/library/ws-securtrans/"&gt;artigos&lt;/a&gt;. O problema existente nesta definição é que ela trata de um grupo específico de tecnologias, mais precisamente o protocolo &lt;a href="http://www.w3.org/TR/soap/"&gt;SOAP&lt;/a&gt; e as linguagens &lt;a href="http://www.w3.org/TR/wsdl/"&gt;WSDL&lt;/a&gt; e &lt;a href="http://www.w3.org/TR/xml/"&gt;XML&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Segundo &lt;a href="http://www.crummy.com/"&gt;Leonard Richardson&lt;/a&gt; e &lt;a href="http://en.wikipedia.org/wiki/Sam_Ruby"&gt;Sam Ruby&lt;/a&gt; em seu livro “&lt;a href="http://oreilly.com/catalog/9780596529260/"&gt;RESTful Web Services&lt;/a&gt;”, existem na verdade três grupos de serviços web, distintos em termos de arquitetura e tecnologias adotadas. São eles: Serviços RESTful, Serviços RPC, e Serviços REST-RPC. Cada grupo deve responder duas questões relativas à sua arquitetura:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Qual a ação a ser executada? &lt;/li&gt;    &lt;li&gt;Qual o escopo de execução desta ação? &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Serviços RESTful são os mais fiéis ao &lt;a href="http://www.w3.org/Protocols/"&gt;HTTP&lt;/a&gt;, pois utilizam todo o potencial oferecido por este protocolo. A ação a ser executada é definida pelo &lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html"&gt;método HTTP&lt;/a&gt; (também conhecido como verbo HTTP). O protocolo oferece cinco métodos principais: GET, HEAD, POST, PUT, e DELETE. Todos os métodos são aplicados em recursos, ou seja, nos objetos gerenciados pelo serviço. Por este motivo, uma arquitetura RESTful é dita &lt;a href="http://en.wikipedia.org/wiki/Resource_oriented_architecture/"&gt;orientada a recurso&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;O método GET trata da recuperação real de recursos, ao passo que HEAD retorna apenas os cabeçalhos (ou meta-dados) que descrevem os recursos afetados pela requisição HTTP. &lt;/p&gt;  &lt;p&gt;Já os métodos POST e PUT tratam da inserção e atualização de recursos. A especificação HTTP é um tanto abrangente na comparação entre estes dois métodos. Alguns serviços web utilizam PUT para inserção, enquanto outros utilizam POST. A discussão é polêmica realmente. Após rever a especificação oficial, entendo que POST deve ser utilizado para a inserção de recursos aninhados. De acordo com esta interpretação, o método PUT seria usado tanto para a inserção, quanto para a atualização de recursos completos/independentes. Independentemente da sua interpretação, seja coerente na utilização destes métodos quando for criar seus próprios serviços, e documente suas decisões. Caso você esteja apenas consumindo serviços já disponíveis na Internet, tenha o cuidado de verificar qual a interpretação do provedor deste serviço.&lt;/p&gt;  &lt;p&gt;Por fim, o método DELETE deve ser enviado para a remoção do recurso. Alguns serviços preferem executar uma técnica conhecida como &lt;em&gt;soft-delete&lt;/em&gt;, onde o recurso não é efetivamente removido da base, mas apenas inativado. Outros preferem executar o &lt;em&gt;hard-delete&lt;/em&gt;, o que faz com que o recurso nunca mais possa ser acessado, pois já não existe na base. Novamente, a especificação do serviço deve cobrir esta decisão.&lt;/p&gt;  &lt;p&gt;Agora, sobre a definição do escopo de execução do método, o paradigma RESTful defende a utilização da &lt;a href="http://tools.ietf.org/html/rfc3986"&gt;URI&lt;/a&gt; presente na requisição HTTP para este fim. Nesta abordagem, a URI contém não apenas o caminho do serviço em questão, mas também qualquer parâmetro necessário para identificação única do recurso a ser afetado. &lt;/p&gt;  &lt;p&gt;Observe o primeiro exemplo a seguir, onde uma aplicação cliente envia uma mensagem HTTP utilizando o método GET, e uma URI que identifica a foto de número 123. Neste cenário fictício, &lt;em&gt;gallery.com&lt;/em&gt; seria uma aplicação de gerenciamento de fotos, que oferece uma &lt;a href="http://en.wikipedia.org/wiki/API"&gt;API&lt;/a&gt; pública de acordo com os princípios RESTful. Neste momento, a aplicação quer recuperar/obter a foto armazenada em &lt;em&gt;gallery.com&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;GET /photo/123 HTTP /1.1  &lt;br /&gt;Host: gallery.com&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;No segundo exemplo, a requisição HTTP enviada utiliza o método DELETE, o que significa que a foto 123 será removida da base em &lt;em&gt;gallery.com&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DELETE /photo/123 HTTP /1.1    &lt;br /&gt;Host: gallery.com&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Note que apenas o método HTTP foi alterado, enquanto que a URI permaneceu intacta. Esta é uma característica marcante dos serviços RESTful. Aquela URI &lt;u&gt;sempre&lt;/u&gt; identifica o mesmo recurso, ou seja, a foto 123. Este é o escopo de execução. Já o método HTTP apenas diz qual a ação a ser executada (recuperação no primeiro exemplo, e deleção no segundo).&lt;/p&gt;  &lt;p&gt;Portanto, podemos perceber que é tranquilamente possível a criação de serviços web sem a utilização do SOAP, protocolo utilizado na definição publicada pelo W3C. Na realidade, diversas empresas emergentes já oferecem interfaces RESTful para que outras empresas/aplicações possam se conectar a elas. &lt;/p&gt;  &lt;p&gt;Como visto neste post, o paradigma RESTful utiliza apenas o HTTP, protocolo padrão da Web, e sem o qual a Web não existiria como a conhecemos hoje. Na prática, os desenvolvedores rapidamente percebem que o protocolo &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt; é mais leve e portável que o SOAP.&lt;/p&gt;  &lt;p&gt;Nos próximos posts, pretendo tratar das outras duas arquiteturas para serviços web: Serviços RPC (SOAP como principal exemplo) e Serviços REST-RPC. Até lá!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-6347227798826617760?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/7L2p8G78_UA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/7L2p8G78_UA/servios-web-o-paradigma-restful.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>0</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2009/01/servios-web-o-paradigma-restful.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-5558386877743648074</guid><pubDate>Fri, 12 Dec 2008 21:44:00 +0000</pubDate><atom:updated>2009-01-26T08:31:36.580-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cursos</category><category domain="http://www.blogger.com/atom/ns#">engenharia de software</category><category domain="http://www.blogger.com/atom/ns#">processo ágil</category><category domain="http://www.blogger.com/atom/ns#">especialização</category><category domain="http://www.blogger.com/atom/ns#">puc</category><title>Engenharia de Software com Processos Ágeis – Desenvolvimento de Aplicações para a Internet</title><description>Olá pessoal, já faz algum tempo que não escrevo por aqui, e desta vez eu gostaria apenas de divulgar um novo projeto.&lt;br /&gt;&lt;br /&gt;Venho trabalhando com um grupo de professores da PUC - São Paulo, e recentemente criamos um curso de especialização que será oferecido pela própria Universidade. Trata-se de um curso inovador na área de Ciência da Computação, que agrega conceitos de Engenharia de Software, Orientação a Objetos, Internet, e Processos Ágeis.&lt;br /&gt;&lt;br /&gt;O curso acaba de ser lançado sob o nome "&lt;span style="font-style: italic;"&gt;Engenharia de Software com Processos Ágeis – Desenvolvimento de Aplicações para a Internet&lt;/span&gt;". Oito módulos serão oferecidos, sendo que cada um será completamente independente dos demais, não havendo pré-requisito entre eles. Isto fará com que o aluno possa trilhar um caminho de acordo com suas necessidades. Adicionalmente, não será necessário que o aluno se inscreva em todos os módulos, somente nos que julgar adequado ao seu perfil. Este formato é realmente novo e flexível.&lt;br /&gt;&lt;br /&gt;Segue a lista de módulos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Processos Ágeis&lt;/li&gt;&lt;li&gt;Engenharia de Requisitos&lt;/li&gt;&lt;li&gt;Desenho Lógico com Objetos&lt;/li&gt;&lt;li&gt;Implementação de Aplicações para a Internet&lt;/li&gt;&lt;li&gt;Programação com Objetos para Internet&lt;/li&gt;&lt;li&gt;Análise com Objetos&lt;/li&gt;&lt;li&gt;Desenho Físico com Objetos&lt;/li&gt;&lt;li&gt;Teste de Aplicações para Internet&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Uma descrição mais detalhada pode ser encontrada no site da &lt;a href="http://cogeae.pucsp.br/curso.php?cod=181609&amp;amp;uni=SP&amp;amp;tip=RE&amp;amp;le=E&amp;amp;ID=13"&gt;Coordenadoria Geral de Especialização, Aperfeiçoamento e Extensão da PUC-SP&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Atalho: &lt;a href="http://www.tinyurl.com/eng-sw-puc/"&gt;http://tinyurl.com/eng-sw-puc/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Qualquer dúvida, por favor entre em contato, ou escreva um comentário neste post. Forte abraço!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-5558386877743648074?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/NgKn5PiQyj0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/NgKn5PiQyj0/engenharia-de-software-com-processos.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>3</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2008/12/engenharia-de-software-com-processos.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-7623580615945004229</guid><pubDate>Fri, 16 May 2008 21:21:00 +0000</pubDate><atom:updated>2008-05-17T17:28:49.327-03:00</atom:updated><title>Crítica Rápida ao Active Record</title><description>&lt;p&gt;Resumidamente, &lt;a href="http://en.wikipedia.org/wiki/Active_record_pattern"&gt;Active Record&lt;/a&gt; é um padrão encontrado em alguns projetos de software que armazenam dados em bases relacionais. Neste padrão, uma tabela é "encapsulada" por uma classe, portanto cada instância desta classe estará diretamente acoplada à uma linha da tabela.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Crítica: Caso a classe em questão seja um conceito do domínio, obviamente suas instâncias serão objetos de negócio. Ao aplicarmos o padrão Active Record, criamos uma &lt;b&gt;dependência a partir negócio para a tecnologia&lt;/b&gt;!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;No post &lt;a href="http://es-emfoco.blogspot.com/2008/05/inverso-de-dependncias.html"&gt;Inversão de Dependências&lt;/a&gt;, apresento pelo menos &lt;span style="FONT-WEIGHT: bold"&gt;quatro consequências&lt;/span&gt; geradas por esta dependência. Discussão polêmica... ;-) Comentários?&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Abraços!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-7623580615945004229?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/TbTmoDwPm4U" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/TbTmoDwPm4U/crtica-rpida-ao-active-record.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>1</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2008/05/crtica-rpida-ao-active-record.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-7945874621320599692</guid><pubDate>Fri, 02 May 2008 14:40:00 +0000</pubDate><atom:updated>2008-05-12T00:41:09.150-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">interfaces</category><category domain="http://www.blogger.com/atom/ns#">arquitetura</category><category domain="http://www.blogger.com/atom/ns#">dependências</category><category domain="http://www.blogger.com/atom/ns#">componentes</category><title>Inversão de Dependências</title><description>&lt;p&gt;A forte dependência entre classes (ou componentes) é o &lt;b&gt;principal vilão&lt;/b&gt; de uma boa arquitetura de software! Evidentemente, não existe uma arquitetura completamente desacoplada, pois desta forma os objetos não poderíam trocar mensagens uns com os outros. A idéia é minimizar a existência destas dependências, e inserir no modelo apenas dependências bem planejadas. Particularmente, costumo chamar estas dependências bem planejadas de &lt;b&gt;dependências saudáveis&lt;/b&gt;, afinal de contas, trazem muitos benefícios para o sistema como um todo.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;No post &lt;a href="http://es-emfoco.blogspot.com/2006/08/princpios-fundamentais-do-processo.html"&gt;Princípios Fundamentais do Processo Unificado&lt;/a&gt;, apresento o conceito &lt;b&gt;Processo Centrado em Arquitetura&lt;/b&gt;. Resumidamente, o processo de desenvolvimento é guiado pela evolução da arquitetura, e o arquiteto preocupa-se em estabelecer um alto grau de modularidade para facilitar a expansão e a manutenção do sistema. Com módulos bem planejados, e dependências saudáveis entre eles, minimizamos três propriedades internas indesejáveis: Rigidez, Fragilidade, e Imobilidade. Vale a pena dar um pulo naquele post para entender cada uma destas três propriedades.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;OK, vamos ao que realmente interessa: Como modelar apenas dependências saudáveis? Resposta bate-pronto: Utilizando &lt;a href="http://pt.wikipedia.org/wiki/Interface_%28ci%C3%AAncia_da_computa%C3%A7%C3%A3o%29"&gt;interfaces&lt;/a&gt; para a inversão de dependências! Interface é uma definição parcial de algum conceito do domínio tratado por sua arquitetura. Certamente é a maior aliada do arquiteto de software! Vamos apelar para a UML para entender como inverter dependências.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_iwFYhp_ojHQ/SCeQ9Mnl-iI/AAAAAAAAB3s/N-dpgx5b2yE/s1600-h/Inversao-1.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5199283675856239138" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_iwFYhp_ojHQ/SCeQ9Mnl-iI/AAAAAAAAB3s/N-dpgx5b2yE/s320/Inversao-1.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;O esquema acima poderia ser parte integrante da arquitetura de um comércio eletrônico, onde pedidos são armezenados na base de dados. É natural pensar que um objeto da classe Pedido envie mensagens para um objeto da classe MSSQL. Entretando, a dependência existente a partir de Pedido para MSSQL é indesejável. Algumas consequências podem ser observadas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;O negócio passa a depender da tecnologia. Como sabemos, a tecnologia está em constante evolução, e cada mudança tecnológica potencialmente provoca uma mudança nas classes de negócio, como a classe Pedido neste exemplo. Regras de negócio tendem a ser mais estáveis ao longo do tempo.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A arquitetura assume que, invariavelmente, o armazenamento dos dados será realizado por um banco de dados. É importante lembrarmos que o armezenamento baseado no sistema de arquivos vem ganhando algum destaque, e mostra bom desempenho.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Caso a classe de acesso aos dados tenha sido desenvolvida para trabalhar com um banco de dados específico (MSSQL neste exemplo), então a classe de negócio deverá ser constantemente modificada para cobrir eventuais novos provedores de dados (MySQL por exemplo).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Cria um acoplamento que dificulta testes unitários.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Como alternativa, poderíamos fazer com que a classe Pedido dependesse de uma interface que teria por objetivo prímário desacoplar o negócio das questões de armezenamento e recuperação dos dados.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_iwFYhp_ojHQ/SCeUiMnl-kI/AAAAAAAAB38/LAVx-g6xSnA/s1600-h/Inversao-2.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_iwFYhp_ojHQ/SCeUiMnl-kI/AAAAAAAAB38/LAVx-g6xSnA/s320/Inversao-2.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5199287610046282306" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Repare que, neste momento, a dependência é invertida, e todos os pontos negativos citados são removidos da arquitetura! Porém, o objeto de negócio ainda precisa enviar a mensagem para o objeto que manipula a base de dados. Como realizar isso nesta nova arquitetura? Simples! Interfaces não existem em tempo de execução, apenas objetos. Desta forma, o lugar da interface é ocupado pelo objeto de alguma classe que realiza esta interface. Podemos ter uma classe para MSSQL, outra para MySQL, uma terceira para FileSystem, e assim por diante.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Visualizar a inversão de dependência é ainda mais fácil quando tratamos com componentes, e não classes, como segue.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_iwFYhp_ojHQ/SCeVB8nl-lI/AAAAAAAAB4E/h_qiTdG-S7w/s1600-h/Inversao-3.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_iwFYhp_ojHQ/SCeVB8nl-lI/AAAAAAAAB4E/h_qiTdG-S7w/s320/Inversao-3.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5199288155507128914" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;No próximo diagrama a dependência é invertida com o advento da interface.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_iwFYhp_ojHQ/SCeO1cnl-fI/AAAAAAAAB3U/8DSXSNncdLU/s1600-h/Inversao-4.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5199281343688997362" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_iwFYhp_ojHQ/SCeO1cnl-fI/AAAAAAAAB3U/8DSXSNncdLU/s320/Inversao-4.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A notação caixa-preta torna tudo ainda mais evidente, como segue:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_iwFYhp_ojHQ/SCeQScnl-gI/AAAAAAAAB3c/_To5nbHBT-Q/s1600-h/Inversao-5.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5199282941416831490" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_iwFYhp_ojHQ/SCeQScnl-gI/AAAAAAAAB3c/_To5nbHBT-Q/s320/Inversao-5.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;E, novamente, a inversão da dependência:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_iwFYhp_ojHQ/SCeQmcnl-hI/AAAAAAAAB3k/6b7RDAqs80k/s1600-h/Inversao-6.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5199283285014215186" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_iwFYhp_ojHQ/SCeQmcnl-hI/AAAAAAAAB3k/6b7RDAqs80k/s320/Inversao-6.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;É isso aí pessoal, espero ter colaborado com mais essa! Até a próxima, abraços!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-7945874621320599692?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/7gkAz-h_qdg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/7gkAz-h_qdg/inverso-de-dependncias.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_iwFYhp_ojHQ/SCeQ9Mnl-iI/AAAAAAAAB3s/N-dpgx5b2yE/s72-c/Inversao-1.gif" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2008/05/inverso-de-dependncias.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-121502476366859835</guid><pubDate>Tue, 05 Jun 2007 18:46:00 +0000</pubDate><atom:updated>2007-10-23T01:01:09.271-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">fases</category><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">disciplinas</category><title>Pacote de posts sobre o Processo Unificado</title><description>Meu esforço inicial neste canal de comunicação foi apresentar o Processo Unificado, um framework de apoio ao desenvolvimento de software. Foram apresentadas as cinco disciplinas e as quatro fases do processo.&lt;br /&gt;&lt;br /&gt;Na realidade seria possível escrever posts mais detalhados e amplos, mas acredito que não seria o mais adequado para um canal deste tipo. A idéia principal é incentivar a leitura e o debate dos tópicos que formam este processo.&lt;br /&gt;&lt;br /&gt;Pacote de posts:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2006/07/processos-iterativos-de.html"&gt;Processos Iterativos de desenvolvimento de software&lt;/a&gt;&lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2006/08/princpios-fundamentais-do-processo.html"&gt;Princípios Fundamentais do Processo Unificado&lt;/a&gt;&lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2006/08/estrutura-do-processo-unificado.html"&gt;A estrutura do Processo Unificado&lt;/a&gt; &lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2006/08/disciplina-de-requisitos.html"&gt;A disciplina de Requisitos&lt;/a&gt; &lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2006/09/disciplina-de-anlise.html"&gt;A disciplina de Análise&lt;/a&gt; &lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2006/09/disciplina-de-projeto.html"&gt;A disciplina de Projeto&lt;/a&gt; &lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2007/04/disciplina-de-implementao.html"&gt;A disciplina de Implementação&lt;/a&gt; &lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2007/04/disciplina-de-teste.html"&gt;A disciplina de Teste&lt;/a&gt; &lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2007/05/fase-de-concepo.html"&gt;A fase de Concepção&lt;/a&gt; &lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2007/05/fase-de-elaborao.html"&gt;A fase de Elaboração&lt;/a&gt;&lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2007/06/fase-de-construo.html"&gt;A fase de Construção&lt;/a&gt;&lt;br /&gt;&lt;a href="http://es-emfoco.blogspot.com/2007/06/fase-de-transio.html"&gt;A fase de Transição&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;A partir de agora, discutiremos outros temas, como modelagem orientada a objetos! Espero que tenha contribuido, um abraço!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-121502476366859835?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/BYwfrANaXhE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/BYwfrANaXhE/pacote-de-posts-sobre-o-processo.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>4</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2007/06/pacote-de-posts-sobre-o-processo.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-6993704988743571085</guid><pubDate>Tue, 05 Jun 2007 18:43:00 +0000</pubDate><atom:updated>2007-10-23T00:59:54.401-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">fases</category><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">transição</category><title>A fase de Transição</title><description>Consiste basicamente em entregar uma versão operacional do sistema ao cliente.&lt;br /&gt;&lt;br /&gt;Deve-se preparar uma divulgação e uma documentação de usabilidade para o usuário final; ajustar o software no ambiente e, por fim, ministrar treinamentos que sejam necessários.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como as disciplinas atravessam a fase&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As cinco disciplinas podem ocorrer nesta fase, mas o Processo Unificado não se refere especificamente a este tópico. No momento em que o sistema atingir este ponto, ele funcionará comprovadamente.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Avaliação&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A avaliação desta fase consiste basicamente em observar se os clientes não tiveram dificuldades na instalação e na usabilidade básica do sistema.&lt;br /&gt;&lt;br /&gt;Nesta altura, o Plano de Projeto e os seis principais modelos devem estar finalizados. A documentação completa do processo de desenvolvimento deve ser armazenada e utilizada como base caso um novo ciclo seja necessário.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-6993704988743571085?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/sQCZWCvW09g" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/sQCZWCvW09g/fase-de-transio.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>0</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2007/06/fase-de-transio.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-10538334498167897</guid><pubDate>Fri, 01 Jun 2007 20:24:00 +0000</pubDate><atom:updated>2007-10-23T00:57:37.243-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">construção</category><category domain="http://www.blogger.com/atom/ns#">fases</category><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><title>A fase de Construção</title><description>Neste momento do ciclo de vida pode-se dizer que apenas questões técnicas são tratadas. A modelagem, a codificação e os testes dos componentes marcam esta fase.&lt;br /&gt;&lt;br /&gt;É a fase onde o Modelo de Implementação e o Modelo de Teste tendem a ser bastante trabalhados, consequentemente, é o momento onde os desenvolvedores e os testadores mais atuam.&lt;br /&gt;&lt;br /&gt;É comum que o Modelo de Casos de Uso, o Modelo de Análise, o Modelo de Projeto e o Modelo de Instalação estejam concluídos, apesar de ainda serem refinados nesta fase com eventuais detalhes.&lt;br /&gt;&lt;br /&gt;Terá sucesso e poderá ser considerada concluída quando se atinge uma maturidade considerável nos artefatos das disciplinas de Implementação e Teste.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como as disciplinas atravessam a fase&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Os parágrafos a seguir apresentam uma breve descrição de como cada uma das disciplinas atravessa a fase de Construção em termos de tarefas:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Requisitos: Esta disciplina freqüentemente não é trabalhada nesta fase, os requisitos devem estar claros para todos na equipe.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Análise: Esta disciplina também é pouco trabalhada nesta fase, a arquitetura candidata já cedeu espaço para uma mais sólida.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Projeto: Refinar os artefatos relativos à arquitetura e à instalação do sistema.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Implementação: Modelar e codificar os componentes.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Teste: Verificar os componentes através dos diversos tipos de teste.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Avaliação&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Existe apenas uma questão ao final desta fase: O sistema está pronto para ser entregue aos clientes? Caso a resposta seja negativa, será necessário adicionar uma iteração para os ajustes finais.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-10538334498167897?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/5GKfCEnMEE8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/5GKfCEnMEE8/fase-de-construo.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>0</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2007/06/fase-de-construo.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-3352008754794410245</guid><pubDate>Thu, 31 May 2007 20:46:00 +0000</pubDate><atom:updated>2007-10-23T00:54:10.227-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">fases</category><category domain="http://www.blogger.com/atom/ns#">elaboração</category><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">arquitetura</category><title>A fase de Elaboração</title><description>O núcleo desta fase é a busca por uma boa arquitetura. No post "&lt;a href="http://es-emfoco.blogspot.com/2006/08/princpios-fundamentais-do-processo.html"&gt;Princípios Fundamentais do Processo Unificado&lt;/a&gt;" fica clara a preocupação deste processo em prover meios para alcançar altos graus de manutenibilidade, flexibilidade, expansibilidade e reuso.&lt;br /&gt;&lt;br /&gt;Esta fase também é marcada pelo gradativo afastamento dos clientes e, conseqüentemente, pela gradativa aproximação de questões mais técnicas.&lt;br /&gt;&lt;br /&gt;Lembrando que são as disciplinas que possuem artefatos associados e não as fases, é perfeitamente comum que alguns documentos produzidos com bastante intensidade na fase de Concepção sejam refinados nesta fase, como é o caso do documento de Requisitos Não-Funcionais, pertencente à disciplina de Requisitos.&lt;br /&gt;&lt;br /&gt;Porém, de forma mais intensa que a disciplina de Requisitos, as disciplinas de Análise e Projeto são as mais evidentes. Ao longo da fase, espera-se que uma arquitetura candidata seja substituída gradativamente por uma arquitetura mais concreta, ou seja, uma fundação sólida para o sistema.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como as disciplinas atravessam a fase&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Os parágrafos a seguir apresentam uma breve descrição de como cada uma das disciplinas atravessa a fase de Concepção em termos de tarefas.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Requisitos: Refinar os artefatos referentes aos requisitos funcionais e não-funcionais.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Análise: Refinar os artefatos relativos à arquitetura candidata.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Projeto: É a principal disciplina desta fase. As tarefas-chave são criar uma arquitetura sólida, tendo como base os diagramas produzidos na disciplina de Análise, e estruturar o cenário da instalação do sistema em componentes de hardware.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Implementação: Iniciar, ainda que superficialmente, a modelagem de componentização de acordo como o que foi produzido na disciplina de Projeto.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Teste: Necessária somente se algum componente tiver sido implementado, o que é pouco provável.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Avaliação&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Existem algumas questões que auxiliam na avaliação da fase quando se imagina que está concluída:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Todos entendem e concordam com os requisitos detalhados?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Existe uma base arquitetônica sólida que possa evoluir à medida que os requisitos são explorados e mais funcionalidades são adicionadas no sistema?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;As estimativas de tempo e custo foram cumpridas?&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Se as respostas satisfizerem à maioria dos interessados, a fase pode ser considerada concluída com êxito. Caso contrário, talvez o melhor seja acrescentar mais uma iteração a esta fase para aparar arestas e finalizar o que estiver pendente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-3352008754794410245?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/CDqOh5pxjGw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/CDqOh5pxjGw/fase-de-elaborao.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>2</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2007/05/fase-de-elaborao.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-6194619429733952928</guid><pubDate>Wed, 30 May 2007 02:33:00 +0000</pubDate><atom:updated>2007-10-23T00:47:57.289-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">requisitos</category><category domain="http://www.blogger.com/atom/ns#">fases</category><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">concepção</category><title>A fase de Concepção</title><description>Esta fase é caracterizada pela presença do cliente em entrevistas para que a equipe de desenvolvimento compreenda o domínio. Com base nesta compreensão, são identificados e selecionados os requisitos funcionais, em forma de casos de uso, e os requisitos não-funcionais.&lt;br /&gt;&lt;br /&gt;A Concepção deve ser uma fase esclarecedora. Neste momento é fundamental o foco nas metas e nas necessidades dos usuários.&lt;br /&gt;&lt;br /&gt;Terá sucesso e poderá ser considerada concluída quando se atinge uma maturidade considerável nos artefatos da disciplina de Requisitos. Desta forma, espera-se que esteja claro qual o sistema a ser construído.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como as disciplinas atravessam a fase&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Os pontos a seguir apresentam uma breve descrição de como cada uma das disciplinas atravessa a fase de Concepção em termos de tarefas.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Requisitos: É a principal disciplina desta fase. As tarefas-chave são chegar a um acordo entre os interessados sobre o contexto do sistema, conforme expresso no Modelo de Domínio, e identificar os requisitos funcionais e não-funcionais.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Análise: Elaborar, mesmo que de forma breve, uma arquitetura candidata.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Projeto: Iniciar um esforço mental de unificação dos diagramas relativos à arquitetura candidata.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Implementação: Frequentemente, nenhuma tarefa relativa a esta disciplina é realizada, a não ser que seja necessário criar um protótipo para satisfazer eventuais preocupações dos clientes.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Teste: Esta disciplina só será relevante para verificar um possível protótipo que tenha sido criado na disciplina de Implementação.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Avaliação&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Existem algumas questões que auxiliam na avaliação da fase quando se imagina que está concluída:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Está claro o que está dentro e o que está fora do sistema?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Os requisitos foram compreendidos e todos concordam com eles?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Existe um esforço inicial de elaboração de uma arquitetura candidata?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;As estimativas de tempo e custo foram cumpridas?&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Se as respostas satisfizerem à maioria dos interessados, a fase pode ser considerada concluída com êxito. Caso contrário, talvez o melhor seja acrescentar mais uma iteração a esta fase para aparar arestas e finalizar o que estiver pendente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-6194619429733952928?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/TK2pr5WZnPw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/TK2pr5WZnPw/fase-de-concepo.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>0</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2007/05/fase-de-concepo.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-117565111945410159</guid><pubDate>Wed, 04 Apr 2007 01:02:00 +0000</pubDate><atom:updated>2007-10-23T00:43:17.017-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">teste</category><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">modelos</category><category domain="http://www.blogger.com/atom/ns#">documentação</category><category domain="http://www.blogger.com/atom/ns#">disciplinas</category><title>A disciplina de Teste</title><description>O objetivo fundamental é verificar a qualidade do sistema. Esta disciplina ganha intensidade ao longo da fase de Construção e tende a perder esta intensidade apenas no início da fase de Transição. Ou seja, implementação e teste não devem ser atividades serializadas. Equipes de desenvolvimento e teste podem trabalhar de forma paralela. Em geral é isso o que acontece entre as demais disciplinas também, mas está explicitamente descrito neste post para que alguns paradigmas tradicionais, como este que envolve implementação e teste, sejam esquecidos.&lt;br /&gt;&lt;br /&gt;Apenas um artefato é produzido nesta disciplina:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modelo de Teste&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Este modelo define um Plano de Teste, formado por duas fases principais: testes unitários e testes de integração.&lt;br /&gt;&lt;br /&gt;Os teste unitários são fundamentais para garantir que cada um dos componentes integrantes da arquitetura do software esteja se comportando adequandamente. Este tipo de teste consiste na criação de casos de teste.&lt;br /&gt;&lt;br /&gt;Cada caso de teste possui uma responsabilidade bem específica, geralmente a verificação da execução de um método do componente. O caso de teste deve prever a execução de todos os caminhos possíveis a serem percorridos durante a execução. É importante que o caso de teste também preveja variações nos dados recebidos (dados normais, dados limite e dados ruins).&lt;br /&gt;&lt;br /&gt;Vamos supor que um determinado componente da arquitetura do seu sistema seja responsável por cálculos matemáticos complexos. Certa operação deste componente se propõe a calcular o valor fatorial de um número inteiro qualquer. Por se tratar de um cálculo que envolve valores muito altos, a operação possui um tratamento para considerar apenas os valores entre 1 e 100. Neste caso, dados normais são valores como 20, 50, 70. Já os dados limites, compreendem valores como 0, 1, 2, 99, 100, 101. Por fim, os dados ruins seriam números como -10, -1, 110, 200.&lt;br /&gt;&lt;br /&gt;Após validar os componentes, estes devem ser integrados.&lt;br /&gt;Os testes de integração podem ser orientados por casos de teste. Porém, neste caso, procuramos validar comportamentos mais abstratos, de maior granularidade.&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;O Engenheiro de Teste é um profissional especializado em metodologias para este fim. No exterior, esta é uma posição de muito prestígio em uma equipe de desenvolvimento, com plano de carreira bem definido e alta remuneração. É o profissional que efetivamente autoriza a publicação de um determinado sistema.&lt;br /&gt;&lt;br /&gt;Infelizmente, esta realidade não é percebida em nosso país...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-117565111945410159?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/NPzI-GiHy-A" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/NPzI-GiHy-A/disciplina-de-teste.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>0</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2007/04/disciplina-de-teste.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-117556487787248170</guid><pubDate>Tue, 03 Apr 2007 01:33:00 +0000</pubDate><atom:updated>2007-10-23T00:39:51.999-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">modelos</category><category domain="http://www.blogger.com/atom/ns#">implementação</category><category domain="http://www.blogger.com/atom/ns#">documentação</category><category domain="http://www.blogger.com/atom/ns#">disciplinas</category><category domain="http://www.blogger.com/atom/ns#">componentes</category><title>A disciplina de Implementação</title><description>O objetivo fundamental nesta disciplina é construir uma versão operacional do sistema a ser entregue aos clientes. Caso o projeto encontre-se no primeiro ciclo, é comum que esta versão do sistema seja beta, ou seja, será disponibilizada para avaliação.&lt;br /&gt;&lt;br /&gt;Quando esta disciplina aumenta sua intensidade, o projeto provavelmente está na fase de Construção e as discussões passam a ser puramente técnicas. Neste estágio a arquitetura é desenhada em termos de componentes.&lt;br /&gt;&lt;br /&gt;A criação do código-fonte também é uma atividade desta disciplina.&lt;br /&gt;&lt;br /&gt;Dois artefatos são produzidos durante esta disciplina. São eles:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Modelo de Implementação&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Este modelo é formado por pacotes de implementação. Cada pacote representa um agrupamento lógico de diagramas de componentes da UML. Estes diagramas são responsáveis por discriminar os relacionamentos existentes entre os componentes. Predominantemente, são modeladas as dependências e as conexões entre interfaces exigidas e interfaces fornecidas. Cada componente pode compreender mais de uma classe de projeto.&lt;br /&gt;&lt;br /&gt;&lt;palign="center"&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_iwFYhp_ojHQ/Rx1eqmay7YI/AAAAAAAABgo/cl0Oo95Q7_k/s1600-h/Componente.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5124356036977945986" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_iwFYhp_ojHQ/Rx1eqmay7YI/AAAAAAAABgo/cl0Oo95Q7_k/s320/Componente.png" border="0" /&gt;&lt;/a&gt;Figura 1: Principal elemento dos diagramas de componentes da UML: componente.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Este modelo pode ser considerado correto quando contem todos os componentes necessários para realizar as funcionalidades especificadas pelos casos de uso e os requisitos não-funcionais.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Códio-fonte&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;É a realização tecnológica dos modelos na linguagem de programação escolhida.&lt;br /&gt;&lt;br /&gt;É importante que um padrão de codificação seja seguido e o código comentado para facilitar a leitura em futuras manutenções. Os modelos e o código devem sempre estar sincronizados, refletindo as mais recentes atualizações.&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-117556487787248170?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/UfOvd8EPvNE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/UfOvd8EPvNE/disciplina-de-implementao.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp3.blogger.com/_iwFYhp_ojHQ/Rx1eqmay7YI/AAAAAAAABgo/cl0Oo95Q7_k/s72-c/Componente.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2007/04/disciplina-de-implementao.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-115947795884898744</guid><pubDate>Thu, 28 Sep 2006 21:10:00 +0000</pubDate><atom:updated>2007-10-23T00:30:22.524-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">modelos</category><category domain="http://www.blogger.com/atom/ns#">projeto</category><category domain="http://www.blogger.com/atom/ns#">documentação</category><category domain="http://www.blogger.com/atom/ns#">disciplinas</category><title>A disciplina de Projeto</title><description>Esta disciplina é a principal responsável pela elaboração da arquitetura. Ela utiliza-se dos artefatos produzidos na fase de Análise como base para a elaboração de uma arquitetura baseada em classes de projeto, ou classes concretas. Em geral procura-se unificar os diagramas e não mais manter um para cada caso de uso. Neste estágio é preciso ter uma idéia mais ampla da arquitetura como um todo, inclusive no que diz respeito a questões como flexibilidade, expansibilidade, manutenibilidade e reuso.&lt;br /&gt;&lt;br /&gt;A disciplina de Projeto é fundamental em uma metodologia centrada em arquitetura. Realizar bem as tarefas neste momento pode garantir um bom tempo de resposta nas atualizações do software futuramente.&lt;br /&gt;&lt;br /&gt;Questões como distribuição de objetos e utilização de frameworks também são consideradas.&lt;br /&gt;&lt;br /&gt;Esta disciplina possui a mesma curva de intensidade da disciplina de Análise. Realmente, a análise e o projeto orientados a objetos estão altamente relacionados e se complementam.&lt;br /&gt;&lt;br /&gt;Dois artefatos são produzidos durante esta disciplina. São eles:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modelo de Projeto:&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Este modelo é formado por pacotes de projeto. Cada pacote representa um agrupamento lógico de diagramas estáticos, como o diagrama de classes, e dinâmicos, como o diagrama de seqüência e o diagrama de objetos.&lt;br /&gt;&lt;br /&gt;Os diagramas estáticos são responsáveis por discriminar os relacionamentos entre as classes de projeto. Deve-se buscar um baixo acoplamento.&lt;br /&gt;&lt;br /&gt;Já os diagramas dinâmicos exibem como cada uma das classes de projeto se comporta em tempo de execução. Técnicas como a Inversão de Dependência só podem ser visualizadas em diagramas deste tipo.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Modelo de Instalação:&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Define a organização física do sistema em termos de nós computacionais, os quais são peças de hardware que representam um recurso, como um servidor, uma estação de trabalho ou algum outro software.&lt;br /&gt;&lt;br /&gt;Os componentes que formam a arquitetura residem nos nós computacionais. A listagem dos componentes deve ser apresentada no interior de cada nó.&lt;br /&gt;&lt;br /&gt;O principal artefato deste modelo é o diagrama de instalação da UML, que discrimina como os nós se relacionam. Os diagramas podem ser agrupados logicamente em pacotes, denominados pacotes de instalação.&lt;br /&gt;&lt;br /&gt;Outro objetivo deste modelo é apresentar ao cliente qual a infra-estrutura necessária para a correta execução do software. Este tipo de informação, quando entregue ao final da fase de Elaboração, faz que o cliente tenha tempo para preparar o ambiente.&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-115947795884898744?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/Sm8yvmcoXso" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/Sm8yvmcoXso/disciplina-de-projeto.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>4</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2006/09/disciplina-de-projeto.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-115801685241478173</guid><pubDate>Mon, 11 Sep 2006 23:16:00 +0000</pubDate><atom:updated>2007-10-23T00:26:23.739-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">modelos</category><category domain="http://www.blogger.com/atom/ns#">documentação</category><category domain="http://www.blogger.com/atom/ns#">disciplinas</category><category domain="http://www.blogger.com/atom/ns#">análise</category><title>A disciplina de Análise</title><description>É comum dizer que esta disciplina do Processo Unificado tem como foco principal realizar o primeiro “corte” na arquitetura. Em geral, cada caso de uso selecionado é analisado em termos de classes de análise. Ou seja, temos uma primeira representação estática dos casos de uso, uma arquitetura candidata.&lt;br /&gt;&lt;br /&gt;Por ainda não serem classes de projeto (ou concretas), esta estrutura estática sofrerá alterações em iterações futuras. Mas, de certa forma, o processo de desenvolvimento começa a se distanciar dos clientes e a ganhar um foco mais técnico. Este fato está ilustrado na figura 1 do post “&lt;a href="http://es-emfoco.blogspot.com/2006/08/estrutura-do-processo-unificado.html"&gt;A estrutura do Processo Unificado&lt;/a&gt;”. Nela podemos perceber que enquanto a curva da Análise vai se intensificando, a curva dos Requisitos perde intensidade. Neste momento, provavelmente o processo encontra-se no inicio da fase de Elaboração.&lt;br /&gt;&lt;br /&gt;Um artefato principal é produzido durante esta disciplina:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modelo de Análise&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Este modelo é formado por pacotes de análise. Cada pacote representa um agrupamento lógico de diagramas de robustez da UML desenhados com classes de análise (ou objetos de Jacobson – Sim, ele mesmo, um dos criadores da UML!), e relacionamentos.&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/2887/3471/1600/Objetos%20de%20Jacobson.jpg" align="center"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/2887/3471/320/Objetos%20de%20Jacobson.jpg" border="0" /&gt;&lt;/a&gt;Figura 1: Objetos de Jacobson.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Cada classe de análise é classificada como Fronteira, Controle ou Entidade. Fronteira é um tipo de classe que interage com o ator. O Controle detém o conhecimento necessário para a correta execução do caso de uso, possui lógica. Já a Entidade, representa um conceito do domínio, muitas vezes é mapeada em uma tabela de banco de dados.&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-115801685241478173?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/oXGIfwDu1EE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/oXGIfwDu1EE/disciplina-de-anlise.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>2</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2006/09/disciplina-de-anlise.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-115678092215866474</guid><pubDate>Mon, 28 Aug 2006 16:00:00 +0000</pubDate><atom:updated>2007-10-23T00:30:52.426-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">requisitos</category><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">modelos</category><category domain="http://www.blogger.com/atom/ns#">documentação</category><category domain="http://www.blogger.com/atom/ns#">casos de uso</category><category domain="http://www.blogger.com/atom/ns#">disciplinas</category><title>A disciplina de Requisitos</title><description>O foco desta disciplina do Processo Unificado é trabalhar para construir o sistema certo. No inicio do primeiro ciclo de um projeto, ainda não se sabe exatamente qual o sistema a ser construído. O domínio é obscuro e a descrição dos requisitos pelos clientes pode vir acompanhada de ambigüidades, contradições e redundâncias.&lt;br /&gt;&lt;br /&gt;A Engenharia de Requisitos, um dos braços da Engenharia de Software, é uma ciência destinada exclusivamente à compreensão das metas e das necessidades dos clientes em um projeto de desenvolvimento de software. As práticas, técnicas e ferramentas providas por esta ciência são grandes aliadas para um bom trabalho nesta disciplina.&lt;br /&gt;&lt;br /&gt;Grupos como “&lt;a href="http://www.resg.org.uk/"&gt;The Requirements Engineering Specialist Group&lt;/a&gt;”, conferências internacionais e periódicos acadêmicos nos dão idéia da amplitude da Engenharia de Requisitos. Neste artigo vamos nos reter a discutir as atividades básicas executadas na disciplina. Em artigos futuros poderemos nos aprofundar neste tema tão complexo.&lt;br /&gt;&lt;br /&gt;Um ponto interessante é perceber que ciências sociais, ciência cognitiva e relacionamento interpessoal são características importantes em um Engenheiro de Requisitos. Neste momento do processo, existe uma forte interação deste profissional com o cliente e é preciso preparo para identificar as ambigüidades, as contradições e as redundâncias que eventualmente aparecem.&lt;br /&gt;&lt;br /&gt;Quatro artefatos são produzidos durante esta disciplina. São eles:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modelo de Domínio:&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Este modelo é responsável por exibir os conceitos principais do domínio em que o software está inserido e como estes se relacionam.&lt;br /&gt;&lt;br /&gt;É frequentemente representado por diagramas de classes conceituais da UML, ou seja, não são classes de projeto. Alguns conceitos são mantidos e tornam-se classes de projeto na elaboração da arquitetura em iterações futuras, porém, é comum que algumas classes sejam apenas conceituais e não participem do software efetivamente.&lt;br /&gt;&lt;br /&gt;Este modelo nos permite compreender com mais clareza o cenário em que os clientes estão envolvidos. Também é utilizado como fonte de inspiração para a nomenclatura de classes em iterações futuras.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Modelo de Casos de Uso:&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Deve ser visto como uma guia para todo o processo de desenvolvimento, representa a força condutora. A idéia principal é identificar os requisitos funcionais do sistema.&lt;br /&gt;&lt;br /&gt;Uma vez que um dos princípios fundamentais do Processo Unificado é ser dirigido por casos de uso, temos idéia do quão fundamental é este modelo.&lt;br /&gt;&lt;br /&gt;É formado por pacotes de casos de uso, representando, cada um deles, um agrupamento lógico de diagramas de casos de uso da UML. Complementando o modelo, existem descrições textuais estruturadas para cada caso de uso. As descrições devem possuir, pelo menos, as seguintes informações: nome do caso de uso, ator principal, pré-condições, pós-condições, fluxo básico e fluxos alternativos de execução.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Requisitos Não-Funcionais:&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Em 1992, Robert Grady listou cinco grupos de categorização de requisitos. A lista foi denominada FURPS, acrônimo com o seguinte significado, conforme o original em inglês:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Functionality: Requisitos funcionais.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Usability: Requisitos de usabilidade, como recursos de ajuda e acessibilidade.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Reliability: Requisitos de confiabilidade, como capacidade de recuperação após falha.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Performance: Requisitos de desempenho, como tempo de resposta e disponibilidade.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Supportability: Requisitos de suporte, como facilidade de manutenção/configuração e internacionalização.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Como os requisitos funcionais já são cobertos pelo Modelo de Casos de Uso, o documento de requisitos não-funcionais deve conter apenas os quatro grupos restantes, ou seja, uma lista URPS.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Referências:&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Este documento é apenas uma sugestão e pode ser formado por três seções: Glossário, Premissas e Referências bibliográficas e eletrônicas.&lt;br /&gt;&lt;br /&gt;O Glossário descreve os principais termos a serem utilizados no sistema. Cria um padrão de nomenclatura a ser utilizado pela equipe de desenvolvimento nos diálogos e na elaboração dos diversos artefatos durante o projeto. Frequentemente é uma derivação do Modelo de Domínio.&lt;br /&gt;&lt;br /&gt;As Premissas são considerações que justificam algumas características do sistema. A idéia é fornecer um histórico dos pensamentos e das discussões ocorridas durante o desenvolvimento. Esta seção deve auxiliar na manutenção do sistema.&lt;br /&gt;&lt;br /&gt;As Referências biográficas apontam quais os livros que auxiliaram no desenvolvimento pela sua teoria. Analogamente, as Referências eletrônicas apontam as páginas da Internet que foram utilizadas em eventuais pesquisas.&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-115678092215866474?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/Jcao2FGccU0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/Jcao2FGccU0/disciplina-de-requisitos.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>1</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2006/08/disciplina-de-requisitos.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-115568305018488718</guid><pubDate>Tue, 15 Aug 2006 22:06:00 +0000</pubDate><atom:updated>2007-10-23T00:08:17.902-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">fases</category><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">modelos</category><category domain="http://www.blogger.com/atom/ns#">documentação</category><category domain="http://www.blogger.com/atom/ns#">disciplinas</category><title>A estrutura do Processo Unificado</title><description>Em artigos anteriores, apresentei o conceito que define o paradigma do Processo Iterativo e os princípios fundamentais que definem uma de suas realizações mais evidentes, o Processo Unificado.&lt;br /&gt;&lt;br /&gt;Mas como o UP (do original, em inglês, &lt;em&gt;Unified Process&lt;/em&gt;) é estruturado?&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/2887/3471/1600/UP-Ciclo.0.gif"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/2887/3471/320/UP-Ciclo.0.png" border="0" /&gt;&lt;/a&gt;Figura 1: Intensidade de cada uma das disciplinas no decorrer das fases em um ciclo.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Pois bem, a vida de um sistema de software é composta por uma série de ciclos. Ao final de cada ciclo, uma versão operacional do sistema é entregue aos interessados. Conforme ilustrado pela figura 1, um ciclo ainda é dividido em quatro fases: Concepção, Elaboração, Construção e Transição.&lt;br /&gt;&lt;br /&gt;Resumidamente:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A Concepção é a fase onde os objetivos do ciclo de vida são identificados. Esta fase diz &lt;b&gt;o que&lt;/b&gt; deve ser feito. O domínio é analisado e os requisitos (funcionais e não-funcionais) são compreendidos e selecionados.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A Elaboração é responsável pela arquitetura do sistema que será distribuído ao final do clico de vida. Esta fase diz &lt;b&gt;como&lt;/b&gt; deve ser feito. É importante reforçar que a arquitetura deve suportar todos os requisitos selecionados. Lembre-se que um dos princípios fundamentais do UP é o fato deste ser Centrado em Arquitetura, ou seja, a Elaboração tende a ser uma fase crucial, recheada de desafios e questões complexas.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Na Construção, como o próprio nome sugere, o sistema é implementado de acordo com o que foi elaborado na fase anterior. Questões puramente técnicas como o encapsulamento de classes lógicas em componentes físicos marcam a fase. O sistema deve possuir a capacidade operacional adequada.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Por fim, a Transição é marcada pela liberação do produto aos interessados. O projeto deve ser preparado para possíveis ciclos futuros.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Cada fase é composta por uma seqüência de iterações. Tipicamente, a Concepção é composta de uma única iteração e a Transição de no máximo duas. Porém, as fases de Elaboração e de Construção contam com um número maior de iterações.&lt;br /&gt;&lt;br /&gt;Uma característica marcante, também ilustrada na figura 1, é o fato de todas as iterações, e conseqüentemente todas as fases, serem atravessadas por todas as disciplinas, com maior ou menor intensidade.&lt;br /&gt;&lt;br /&gt;São exatamente as disciplinas que possuem artefatos associados. Artefatos são documentos textuais ou diagramas da UML que facilitam a compreensão do sistema e a comunicação entre os envolvidos. Ou seja, é possível que um artefato de compreensão do domínio seja incrementado em mais de uma fase, mesmo sabendo que o entendimento do domínio é um dos principais objetivos da fase de Concepção.&lt;br /&gt;&lt;br /&gt;A maioria dos artefatos produzidos ao longo dos ciclos pertence a um dos seis modelos apresentados na figura 2. Os modelos, contendo todos os seus artefatos, formam a documentação completa do processo de desenvolvimento. Esta documentação deve ser disponibilizada aos envolvidos a cada novo ciclo.&lt;br /&gt;&lt;br /&gt;Um modelo por si só também pode ser considerado um artefato, porém, que possui outros artefatos internos, como diagramas completos e textos estruturados. Podemos qualificar um modelo como um agrupamento lógico semanticamente fechado.&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/2887/3471/1600/UP-Modelos.gif"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/2887/3471/320/UP-Modelos.png" border="0" /&gt;&lt;/a&gt;Figura 2: Os seis modelos básicos do Processo Unificado.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Mesmo tendo mencionado que uma documentação que compreenda estes seis modelos é tida como completa, podemos adicionar outros documentos que sejam considerados relevantes.&lt;br /&gt;&lt;br /&gt;Exemplos de documentos complementares:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modelo de Domínio&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Documento de requisitos não-funcionais&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Referências&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-115568305018488718?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/rc1QfbEqhD0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/rc1QfbEqhD0/estrutura-do-processo-unificado.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>3</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2006/08/estrutura-do-processo-unificado.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-115524155497430579</guid><pubDate>Thu, 10 Aug 2006 20:07:00 +0000</pubDate><atom:updated>2007-10-23T00:00:00.338-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">molularização</category><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">iterativo</category><category domain="http://www.blogger.com/atom/ns#">casos de uso</category><category domain="http://www.blogger.com/atom/ns#">arquitetura</category><category domain="http://www.blogger.com/atom/ns#">incremental</category><title>Princípios Fundamentais do Processo Unificado</title><description>O Processo Unificado, uma realização do Processo Iterativo de Desenvolvimento de Software, possui três princípios fundamentais.&lt;br /&gt;&lt;br /&gt;A estabilização e a consagração deste processo no mercado devem-se, principalmente, a estes princípios. São eles:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dirigido por Casos de Uso&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Para compreender o conceito "Caso de Uso", é importante conhecer o conceito "Ator". Um ator pode ser entendido com uma pessoa ou uma entidade não-humana que interage com o sistema, mas está fora dele. O exemplo mais comum de ator é o próprio usuário, porém, bancos de dados e outros sistemas também podem ser considerados atores.&lt;br /&gt;&lt;br /&gt;Pois bem, um caso de uso é uma seqüência de ações executadas por atores e pelo sistema, a fim de satisfazer metas e necessidades destes atores.&lt;br /&gt;&lt;br /&gt;Os casos de uso compõem a força condutora de todo o processo de desenvolvimento, desde a captação inicial de requisitos até a aceitação do código-fonte, por várias razões:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Primeiramente por serem expressos sob a perspectiva do usuário, em textos descritivos na língua local do cliente. Os textos devem ser intuitivos e óbvios para o leitor.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Outro ponto fundamental é que permitem uma compreensão direta dos requisitos do sistema. Os casos de uso não devem apresentar ambigüidades, redundâncias ou contradições. Devem especificar um contrato a ser aceito e seguido pelos integrantes da equipe de desenvolvimento e pelos clientes.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Permitem também um alto grau de rastreamento de requisitos nos diversos modelos que são desenvolvidos posteriormente. Manter os casos de uso à mão durante todo o processo por ser decisivo para o aceite da solução.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Por fim, os casos de uso facilitam a distribuição de tarefas e a alocação de trabalho.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Centrado em Arquitetura&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A arquitetura é a organização fundamental do sistema como um todo. Possui elementos estáticos e dinâmicos que explicitam exatamente como cada componente é construído e como este se relaciona com os demais.&lt;br /&gt;&lt;br /&gt;Uma boa arquitetura deve prover um alto grau de manutenibilidade. Este fato é fundamental para que a equipe de desenvolvimento possa atender as demandas que surgem em um intervalo de tempo cada vez menor, principalmente após a adoção da Internet como canal de comunicação primário.&lt;br /&gt;&lt;br /&gt;Inúmeras corporações modelam seus negócios de acordo com a tecnologia disponível, inviabilizando a inovação, mutação e, em alguns casos, até o crescimento do negócio. Segundo constatado por Paul Strassmann em 1997, na realidade uma situação inversa deveria ser empregada, onde as seguintes características sustentariam a ideal postura de um departamento de Tecnologia da Informação em uma organização: deveria agregar real valor ao plano de negócios, não deveria resistir às mudanças e deveria combater qualquer tipo de resistência a elas, pois são necessárias.&lt;br /&gt;&lt;br /&gt;Partindo deste ponto de vista, é essencial que o software se adapte ao modelo de negócios estipulado em uma corporação. Porém, como modelos de negócios são mutáveis, a arquitetura do software em questão deve ser &lt;em&gt;flexível&lt;/em&gt; o suficiente para acompanhar tais mudanças e &lt;em&gt;expansível&lt;/em&gt; o suficiente para permitir o crescimento.&lt;br /&gt;&lt;br /&gt;Um alto grau de modularidade pode ser um grande aliado no alcance de altos graus de manutenibilidade, flexibilidade e expansibilidade.&lt;br /&gt;&lt;br /&gt;Um módulo pode ser entendido como uma porção de código encapsulada, coesa e fracamente acoplada. Já o grau de modularidade estima a coerência de utilização de módulos na arquitetura de um sistema, obedecendo cinco critérios e seis princípios, descritos por Bertrand Meyer em 1988, exibidos nas listagens abaixo:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Critérios:&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Decomposição: Capacidade de dividir o problema inicial em subproblemas, ou módulos, isolados.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Composição: Capacidade de reutilização dos módulos na construção de novos sistemas, possivelmente em ambientes ligeiramente diferentes.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Entendimento: Capacidade de compreensão dos módulos de forma individual por um leitor humano.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Continuidade: Capacidade de alteração dos módulos sem impacto nos demais, mantendo a arquitetura e as relações.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Proteção: Capacidade de suporte a condições anormais dos módulos, limitando o escopo de um erro ao próprio módulo e protegendo o restante do sistema.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Princípios:&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Unidade modular sintática: Um módulo deve corresponder a uma unidade sintática da linguagem.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Poucas interfaces: Um módulo deve se comunicar com a menor quantidade de módulos possível, evitando recursão.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Interfaces pequenas: Um módulo deve trocar a menor quantidade de informações possível com outro.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Interfaces explícitas: A comunicação entre dois módulos deve ser explícita e clara.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Informações ocultas: Os dados de um módulo devem ser privados, com raras exceções de dados públicos.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Aberto e fechado: Aberto para pequenas alterações (sem impacto nas interfaces) e fechado, sugerindo sua completude e disponibilidade de uso.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Ainda tendo em vista o grau de modularidade, uma arquitetura deve ser elaborada considerando diversos níveis de abstração. Quanto menor a abstração de um componente, maior será seu potencial de &lt;em&gt;reuso&lt;/em&gt;. Esta característica fundamental pode ser alcançada através da utilização de frameworks, um conjunto de classes abstratas e concretas com alto grau de especialização. &lt;p&gt;&lt;/p&gt;&lt;p&gt;Reunindo todo este conhecimento, somos capazes de minimizar a existência de três propriedades internas indesejáveis na arquitetura:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Rigidez: A manutenção em um determinado ponto do sistema obriga ao desenvolvedor ajustar outras localidades diretamente relacionadas, gerando uma cadeia de manutenção. Suas conseqüências são conhecidas como “efeito dominó”.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fragilidade: A manutenção em um determinado ponto do sistema gera problemas em outro ponto não relacionado, muitas vezes distante do local da alteração. Suas conseqüências são conhecidas como “efeito borboleta-maremoto”, nomenclatura extraída da Teoria do Caos. Esta teoria defende que o simples bater de asas de uma borboleta em um extremo do mundo, pode ser o estopim de um tornado no outro extremo.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Imobilidade: Ao tentar reutilizar um componente já desenvolvido, classes não pertencentes a este impossibilitam a ação, dado o forte acoplamento existente. Suas conseqüências são conhecidas como “efeito banana-gorila”.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Iterativo e Incremental&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Cada projeto é dividido em iterações. Cada iteração pode ser considerada um miniprojeto de curta duração que tem por objetivo oferecer uma melhora incremental ao sistema.&lt;br /&gt;&lt;br /&gt;São benefícios desta forma de organização:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;É um progresso lógico para que uma arquitetura robusta seja alcançada. Durante as iterações iniciais, uma arquitetura candidata é proposta. Sua evolução será uma fundação sólida para o restante do sistema.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Em contraste com metodologias que seguem o paradigma do Processo Cascata, onde todos os requisitos são levantados no inicio e nunca mais revisados, o Processo Unificado prevê a negociação progressiva de requisitos, priorizando aqueles que representam riscos mais significativos ao projeto.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Possibilita maior flexibilidade para que mudanças ocorram no plano de atuação da equipe de desenvolvimento. Uma avaliação ao final de uma iteração permite isolar um eventual problema identificado e lidar com ele em uma escalada reduzida, sem propagar seus efeitos.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Caso o incremento de uma iteração seja um componente ou módulo, este é integrado aos demais existentes. Uma integração muitas vezes representa a conquista de mais um requisito. A evolução do trabalho torna-se mais evidente aos interessados.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Por fim, a natureza iterativa permite que novos integrantes da equipe de desenvolvimento iniciem suas atividades sem que sejam submetidos a treinamentos extensos que cubram todo o projeto.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-115524155497430579?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/jJZSrkfEUJ0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/jJZSrkfEUJ0/princpios-fundamentais-do-processo.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>0</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2006/08/princpios-fundamentais-do-processo.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-115438265664380960</guid><pubDate>Mon, 31 Jul 2006 21:43:00 +0000</pubDate><atom:updated>2007-10-23T00:02:17.467-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">processo iterativo</category><category domain="http://www.blogger.com/atom/ns#">processo espiral</category><category domain="http://www.blogger.com/atom/ns#">processo unificado</category><category domain="http://www.blogger.com/atom/ns#">processo cascata</category><category domain="http://www.blogger.com/atom/ns#">rup</category><category domain="http://www.blogger.com/atom/ns#">msf</category><title>Processos Iterativos de desenvolvimento de software</title><description>&lt;b&gt;Contextualização&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A Crise do Software é realidade desde meados da década de 70. Clientes insatisfeitos, atrasos nos prazos, custo infinito e produto final com baixa qualidade são apenas algumas características que marcam esta crise.&lt;br /&gt;&lt;br /&gt;Apesar da evolução tecnológica e das iniciativas de intelectuais como Barry Boehm na década de 80 e Gustav Karner na década de 90, que propuseram métodos de estimativas, atualmente permanecem raros os exemplos de projetos de software desenvolvidos fora dos padrões da crise descrita.&lt;br /&gt;&lt;br /&gt;No combate ao cenário caótico, tornam-se necessárias a criação e a adoção de metodologias que auxiliem os projetos de desenvolvimento. Desta forma, é possível gerenciar a crise. Algumas tentativas foram propostas.&lt;br /&gt;&lt;br /&gt;Na década de 80 surgiu um tipo de processo conhecido como Processo Cascata (do original, em inglês, Waterfall Process). É constituído basicamente por cinco fases seqüenciais: descoberta de requisitos, desenho, implementação, teste e implantação. Com sua utilização, percebeu-se que o processo não atendia completamente as necessidades dos profissionais. A constante mudança de requisitos, a divisão inflexível das atividades e a rigidez imposta colaboraram para o fracasso do processo.&lt;br /&gt;&lt;br /&gt;Já no início da década de 90, um tipo de processo conhecido como Processo Espiral surgiu como uma boa solução aos problemas identificados no Processo Cascata, pois protótipos são construídos a cada ciclo e refinados nas fases seguintes. Este processo permite que as fases sejam definidas de acordo com objetivos do projeto. Porém, a má adequação ao paradigma de orientação a objetos determinou o fracasso deste processo. O modo procedimental de criação de software já não era suficiente na resolução de problemas complexos ou, pelo menos, extensos.&lt;br /&gt;&lt;br /&gt;A solução definitiva, consolidada no final dos anos 90, foi a criação de um tipo de processo conhecido como Processo Iterativo. Neste, a cada iteração os modelos são refinados e, ao final de cada ciclo, um protótipo é entregue aos &lt;em&gt;stakeholders&lt;/em&gt;, os interessados no projeto.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;O paradigma do Processo Iterativo e suas realizações&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O Processo Iterativo define um paradigma, ou seja, uma forma de pensar. Este não pode ser considerado um processo completo de desenvolvimento de software, pois não discrimina as atividades necessárias para que este objetivo seja alcançado.&lt;br /&gt;&lt;br /&gt;Uma realização desta forma de pensar é o Processo Unificado (UP), que se encaixa na definição geral de um processo completo: um conjunto de atividades executadas para transformar um conjunto de requisitos em um sistema de software. Entretanto o Processo Unificado também é uma estrutura genérica de processo que pode ser customizada adicionando-se ou removendo-se atividades com base nas necessidades específicas e nos recursos disponíveis para um projeto. Também pode sofrer alterações de acordo com a filosofia da empresa que o emprega. O Processo Unificado da Rational (RUP), por exemplo, é uma versão especializada do Processo Unificado que adiciona elementos a sua estrutura genérica. Surgiu dos esforços de Ivar Jacobson, Grady Booch e James Rumbaugh em 1998 na Rational, recentemente adquirida pela IBM.&lt;br /&gt;&lt;br /&gt;O Microsoft Solutions Framework (MSF), que também se encaixa na definição geral de um processo completo, já é uma outra realização do paradigma do Processo Iterativo. Surgiu da vasta experiência em desenvolvimento de software adquirida pela Microsoft ao longo de sua existência. Uma vantagem evidente na utilização desta metodologia é alcançada para as equipes que utilizam ou utilizarão o Visual Studio 2005 Team System, pois esta ferramenta possui dois &lt;em&gt;methodology templates&lt;/em&gt; que podem ser adequados de acordo com as necessidades ou utilizados como fundação na criação de uma versão especializada do processo.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusão&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Apesar de existirem esforços e iniciativas na unificação dos processos completos de desenvolvimento de software, o que realmente aconteceu foi o estabelecimento de um paradigma como sendo o mais correto no gerenciamento da crise do software.&lt;br /&gt;&lt;br /&gt;Note que eu utilizei a palavra “gerenciamento” e não “solução”. Este tipo de crise não pode ser extinta, ela existe toda a vez que uma equipe não se baseia em uma metodologia comprovadamente eficaz (cenário ainda muito comum no mercado brasileiro). O termo “gerenciamento” refere-se à possibilidade de medir, de forma controlada e adaptativa, o tempo e o custo de um projeto.&lt;br /&gt;&lt;br /&gt;Realmente a unificação apenas do paradigma me parece mais correta do que a unificação dos processos completos, dado que cada empresa possui sua filosofia e o processo ocorre internamente. O mesmo não acontece com as linguagens de modelagem, que foram unificadas na UML para que as empresas possam compartilhar modelos e componentes.&lt;br /&gt;&lt;br /&gt;Já que a adoção de uma metodologia é necessária, selecione aquela que se encaixe melhor no projeto e nos recursos disponíveis. Considere também a ferramenta de desenvolvimento utilizada como fator de decisão. Por fim, tenha em mente que a criação de uma metodologia também é bem-vinda, contanto que siga o paradigma iterativo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-115438265664380960?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/CHAsuunUiGE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/CHAsuunUiGE/processos-iterativos-de.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>0</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2006/07/processos-iterativos-de.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-31852844.post-115419372421692067</guid><pubDate>Sat, 29 Jul 2006 17:19:00 +0000</pubDate><atom:updated>2006-08-11T14:12:58.766-03:00</atom:updated><title>Novo canal de discussão para Engenharia de Software!</title><description>A primeira postagem, como não poderia deixar de ser para um Engenheiro de Software, é um típico "Hello, World!". &lt;br /&gt;&lt;br /&gt;A idéia deste canal é promover a democratização, a discussão e a difusão dos conceitos que formam a Engenharia de Software.&lt;br /&gt;&lt;br /&gt;Fiquem à vontade...&lt;br /&gt;&lt;br /&gt;Um abraço a todos, Otávio Ferreira.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31852844-115419372421692067?l=es-emfoco.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/es-emfoco/~4/blo_BGyugpE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/es-emfoco/~3/blo_BGyugpE/novo-canal-de-discusso-para-engenharia.html</link><author>noreply@blogger.com (Otavio Ferreira)</author><thr:total>4</thr:total><feedburner:origLink>http://es-emfoco.blogspot.com/2006/07/novo-canal-de-discusso-para-engenharia.html</feedburner:origLink></item></channel></rss>

