﻿<?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>Qualidade de Software Ltda</title>
	<atom:link href="http://www.galeote.com.br/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.galeote.com.br/blog</link>
	<description>Engenharia de Software para Iniciantes &#38; Praticantes</description>
	<lastBuildDate>Sat, 27 Apr 2013 17:48:53 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>3 elementos centrais e 6 princípios do RUP</title>
		<link>http://www.galeote.com.br/blog/2013/04/3-elementos-centrais-e-6-principios-do-rup/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=3-elementos-centrais-e-6-principios-do-rup</link>
		<comments>http://www.galeote.com.br/blog/2013/04/3-elementos-centrais-e-6-principios-do-rup/#comments</comments>
		<pubDate>Sat, 27 Apr 2013 17:40:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Boas práticas]]></category>
		<category><![CDATA[desenvolvimento iterativo]]></category>
		<category><![CDATA[processo de sofware]]></category>
		<category><![CDATA[rup]]></category>

		<guid isPermaLink="false">http://www.galeote.com.br/blog/?p=810</guid>
		<description><![CDATA[Eu sou um fã do velho e bom RUP: acredito que ele é uma excelente base de conhecimento sobre a engenharia de software. Defendo a posição de que todo profissional que deseja trabalhar com o desenvolvimento de software deve conhecer o RUP. Quando se conhece profundamente o RUP, fica muito fácil entender outros processos de [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.galeote.com.br/blog/2013/04/3-elementos-centrais-e-6-principios-do-rup/rup/" rel="attachment wp-att-814"><img class=" wp-image-814 alignleft" style="margin-top: 5px; margin-bottom: 5px;" alt="rup" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/04/rup.png" width="235" height="184" /></a>Eu sou um fã do velho e bom RUP: acredito que ele é uma excelente base de conhecimento sobre a engenharia de software. Defendo a posição de que todo profissional que deseja trabalhar com o desenvolvimento de software deve conhecer o RUP. Quando se conhece profundamente o RUP, fica muito fácil entender outros processos de desenvolvimento, como os de metodologia ágeis.  Visando contribuir para que mais profissionais se interessem pelo RUP, esse artigo é dedicado aos elementos centrais e princípios do RUP</p>
<h2></h2>
<h3><b>3 elementos centrais do RUP</b></h3>
<p>1. desenvolvimento orientado pelo negócio</p>
<p>2. framework com blocos de conteúdo de método e processo reutilizáveis</p>
<p>3. uma linguagem para definição de método e processo</p>
<p>–UMA (Unified Method Architecture )</p>
<p>&nbsp;</p>
<p><b style="font-size: 1.5em;">6 princípios do RUP</b></p>
<p>Como é do nosso conhecimento os americanos adoram usar acrônimos para ajudar a gravar algum tipo de informação, e aqui os seis princípios do RUP são elencados em ordem alfabética de A , B, C, D, E, F, a saber:</p>
<p><span style="text-decoration: underline;"><b>A</b></span><b>daptar o processo</b></p>
<p>O princípio do tamanho único não se aplica ao desenvolvimento de software</p>
<p><span style="text-decoration: underline;">Benefícios</span></p>
<p>–eficiência do ciclo de vida</p>
<p>•o processo adequado, para um determinado tipo de projeto, para uma determinada organização</p>
<p>–comunicação dos riscos</p>
<p>•menor controle e formalidade nas fases iniciais do projeto são essenciais para uma comunicação aberta e honesta, a qual resulta na melhor identificação dos riscos do projeto</p>
<p><span style="text-decoration: underline;">Padrões</span></p>
<p>–tamanho certo do processo</p>
<p>–adaptar cerimonia do processo à fase do ciclo de vida</p>
<p>–melhoria contínua do processo</p>
<p>–planejamento e estimativas orientadas pelas incertezas</p>
<p><span style="text-decoration: underline;">Anti-pradões</span></p>
<p>–baseline de estimativas precoce</p>
<p>–planejamento estático</p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"><b>B</b></span><b>alancear as prioridades dos envolvidos</b></p>
<p>É um dos principais desafios que deve ser gerido durante o desenvolvimento do software</p>
<p><span style="text-decoration: underline;">Benefícios</span></p>
<p>–aumento do alinhamento com o negócio</p>
<p>–redução do custo do desenvolvimento</p>
<p>–otimização do valor ao negócio</p>
<p><span style="text-decoration: underline;">Padrões</span></p>
<p>–definir, entender e priorizar as necessidades do negócio e dos usuários</p>
<p>–priorizar requisitos e casá-los com a capacidade do software</p>
<p>–entender quais ativos podem ser alavancados</p>
<p>–balancear a reutilização com as necessidades dos usuários</p>
<p><span style="text-decoration: underline;">Anti-pradões</span></p>
<p>–documentar precisamente todos os requisitos e obrigar a aceitação pelos usuários</p>
<p>–definir a arquitetura de um sistema para atender as necessidades dos envolvidos mais influentes</p>
<p>&nbsp;</p>
<p><strong><span style="text-decoration: underline;">C</span>olaborar entre os diversos times</strong></p>
<p>Com os sistemas sendo arquitetado em um lado e o código sendo desenvolvido do outro lado do mundo, a dispersão das equipes é um fato. a comunicação efetiva é um fator de sucesso</p>
<p><span style="text-decoration: underline;">Benefícios</span></p>
<p>–aumento da produtividade</p>
<p>–sinergia entre necessidades do negócio, o desenvolvimento e a área de operação</p>
<p><span style="text-decoration: underline;">Padrões</span></p>
<p>–motivar as pessoas para fazerem o seu melhor</p>
<p>–times auto gerenciados</p>
<p>–colaboração entre áreas com diferentes capacidades</p>
<p>–prover ambiente colaborativo</p>
<p>–gestão envolvendo artefatos e tarefas</p>
<p>–integrar os times de negócio, software e operação</p>
<p><span style="text-decoration: underline;">Anti-pradões</span></p>
<p>–desenvolvimento heroico, com horas extras</p>
<p>–pessoas altamente especializadas com baixo nível de colaboração</p>
<p>–assumir que se cada um faz o seu trabalho, o resultado será bom</p>
<p><span style="text-decoration: underline;"><b style="font-size: 1.17em;">D</b></span><b style="font-size: 1.17em;">emonstrar valor iterativamente</b></p>
<h3></h3>
<p>Para um processo de desenvolvimento orientado ao negócio, demanda que o time de projeto demonstre o retorno do investimento em uma abordagem repetitiva ao longo do projeto</p>
<p><span style="text-decoration: underline;">Benefícios</span></p>
<p>–redução precoce do risco</p>
<p>–previsibilidade do projeto</p>
<p>–credibilidade entre os envolvidos</p>
<p><span style="text-decoration: underline;">Padrões</span></p>
<p>–incentivar feedbacks</p>
<p>–assumir que haverá mudanças</p>
<p>–remover os riscos</p>
<p>–adaptar os planos</p>
<p><span style="text-decoration: underline;">Anti-pradões</span></p>
<p>–planejar o projeto inteiro em detalhes</p>
<p>–dedicação em entregáveis diferentes de um código executável</p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"><b>E</b></span><b>levar o nível de abstração</b></p>
<p>Uma abordagem de sucesso para tratar com complexidade é alavancar o uso de padrões e serviços, reutilização de componentes em vez de construir o software do zero.</p>
<p><span style="text-decoration: underline;">Benefícios</span></p>
<p>–aumento da produtividade</p>
<p>–redução da complexidade</p>
<p><span style="text-decoration: underline;">Padrões</span></p>
<p>–reutilização dos ativos existentes</p>
<p>–utilização de padrões (patterns)</p>
<p>–utilização de serviços</p>
<p>–uso de linguagens e ferramentas de alto nível</p>
<p>–foco na arquitetura</p>
<p><span style="text-decoration: underline;">Anti-pradões</span></p>
<p>–ir diretamente dos requisitos de alto nível, para o código</p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"><b>F</b></span><b>ocar continuamente na qualidade</b></p>
<p>A qualidade inicia quando um requisito é documentado. A qualidade do sistema é afetada pela sua arquitetura. A inspeção de código e os testes unitários garantem que o código está aderente aos padrões estabelecidos. Os testadores testam baseados nos cenários de casos de uso, ou com requisitos não funcionais. A responsabilidade de encontrar erros deve ser compartilhada entre todo o time desenvolvimento</p>
<p><span style="text-decoration: underline;">Benefícios</span></p>
<p>–qualidade elevada</p>
<p>–visão antecipada dos progressos obtidos e da sua qualidade</p>
<p><span style="text-decoration: underline;">Padrões</span></p>
<p>–assegurar que e equipe seja a dona da qualidade do produto</p>
<p>–testar o mais cedo possível, e continuamente, demonstrando as capacidades do software em desenvolvimento</p>
<p>–construir a automação de testes incrementalmente</p>
<p><span style="text-decoration: underline;">Anti-pradões</span></p>
<p>–revisões em pares muito aprofundadas</p>
<p>–finalizar os testes unitários antes do teste de integração</p>
<p>&nbsp;</p>
<p>Tenho certeza que se você é um desenvolvedor e leu os 6 princípios do RUP, conseguiu identificar mais de um anti-padrão no seu processo de desenvolvimento atual. Estou certo?</p>
<pre> artigo adaptado do livro : IBM Rational Unified Process Reference and Certification Guide. 
 autores: Ahmad K. Shuja; Jochen Krebs.</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.galeote.com.br/blog/2013/04/3-elementos-centrais-e-6-principios-do-rup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coisas que você precisa saber: Os cinco grupos de processos da gestão de projetos</title>
		<link>http://www.galeote.com.br/blog/2013/03/coisas-que-voce-precisa-saber-os-cinco-grupos-de-processos-da-gestao-de-projetos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=coisas-que-voce-precisa-saber-os-cinco-grupos-de-processos-da-gestao-de-projetos</link>
		<comments>http://www.galeote.com.br/blog/2013/03/coisas-que-voce-precisa-saber-os-cinco-grupos-de-processos-da-gestao-de-projetos/#comments</comments>
		<pubDate>Sun, 31 Mar 2013 12:39:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gerência de Projetos]]></category>
		<category><![CDATA[grupos de processos do pmbok]]></category>
		<category><![CDATA[planejamento]]></category>
		<category><![CDATA[pmbok]]></category>

		<guid isPermaLink="false">http://www.galeote.com.br/blog/?p=799</guid>
		<description><![CDATA[Pode parecer básico, chover no molhado&#8230; mas conhecer os cinco grupos de processos da gestão de projetos nos ajuda a direcionar como organizar nossos projetos. Segue nesse post de forma rápida quais são esses cinco grupos de processos seus objetivos e suas principais atividades. Iniciação Objetivo: Desenvolver e obter a aprovação de uma declaração geral [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.galeote.com.br/blog/2013/03/coisas-que-voce-precisa-saber-os-cinco-grupos-de-processos-da-gestao-de-projetos/5estrelas/" rel="attachment wp-att-802"><img class=" wp-image-802 alignleft" alt="5estrelas" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/03/5estrelas.jpg" width="150" height="80" /></a>Pode parecer básico, chover no molhado&#8230; mas conhecer os cinco grupos de processos da gestão de projetos nos ajuda a direcionar como organizar nossos projetos. Segue nesse post de forma rápida quais são esses cinco grupos de processos seus objetivos e suas principais atividades.</p>
<h2></h2>
<h2><strong>Iniciação</strong></h2>
<p><strong><em>Objetivo:</em></strong> Desenvolver e obter a aprovação de uma declaração geral do objetivo e valor para o negócio do projeto.</p>
<p><em><strong>Atividades:</strong></em></p>
<div>
<ul>
<li>Identificar as verdadeiras necessidades do cliente</li>
<li>Documentar as necessidades do cliente</li>
<li>Negociar com o cliente como essas necessidades serão satisfeitas</li>
<li>Escrever uma descrição de uma página do projeto</li>
<li>Obter a aprovação da gerência sênior para planejar o projeto</li>
</ul>
</div>
<h2>Planejamento</h2>
<div>
<p><em><strong>Objetivo:</strong></em> Identificar o trabalho a ser feito  e estimar tempo, custo e recursos e obter aprovação do planejamento</p>
<p><em><strong>Atividades:</strong></em></p>
<div>
<ul>
<li>Definição de todo o trabalho do projeto</li>
<li>Estimar quanto tempo levará para concluir este trabalho</li>
<li>Estimar os recursos necessários para completar o trabalho</li>
<li>Estimar o custo total do trabalho</li>
<li>Definir a sequenciação do trabalho</li>
<li>Construir o cronograma do projeto inicial</li>
<li>Analisando e ajustar o cronograma do projeto</li>
<li>Escrever um plano de gestão de riscos</li>
<li>Documentar o plano de projeto</li>
<li>Obter a aprovação da gerência sênior para iniciar o projeto</li>
</ul>
</div>
<h2>Execução</h2>
<div><em><strong>Objetivo:</strong></em> Recrutar a equipe e estabelecer regras de funcionamento da equipe.</div>
<p><em><strong>Atividades:</strong></em></p>
<div>
<ul>
<li>Recrutar a equipe do projeto</li>
<li>Escrever o documento Descrição do Projeto</li>
<li>Estabelecer regras de funcionamento da equipe</li>
<li>Estabelecer o escopo do processo de gestão da mudança</li>
<li>Gestão de comunicações da equipe</li>
<li>Finalizar o cronograma do projeto</li>
<li>Escrever pacotes de trabalho</li>
</ul>
</div>
<h2>Monitoração e controle</h2>
<div><em><strong>Objetivo:</strong> </em>Responder às solicitações de mudança e resolver situações-problema para manter o andamento do projeto.</div>
<div>
<p><em><strong>Atividades:</strong></em></p>
<div>
<ul>
<li>Monitoramento do desempenho do projeto</li>
<li>Estabelecer o desempenho do projeto e sistema de relato do projeto</li>
<li>Monitoramento de risco</li>
<li>Relato de progresso do projeto</li>
<li>Processamento de solicitações de mudança de escopo</li>
<li>Descobrir e resolver problemas</li>
</ul>
</div>
<h2>Encerramento</h2>
<div><em><strong>Objetivo</strong></em>: Assegurar a realização de requisitos do cliente e instalar entregas.</div>
<div></div>
<div><em><strong>Atividades:</strong></em></p>
<div>
<ul>
<li>Obter a aprovação do cliente por ter cumprido os requisitos do projeto</li>
<li>Planejamento e instalação de entregas</li>
<li>Escrever o relatório final do projeto</li>
<li>Realização da auditoria pós-implementação</li>
</ul>
</div>
</div>
</div>
</div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.galeote.com.br/blog/2013/03/coisas-que-voce-precisa-saber-os-cinco-grupos-de-processos-da-gestao-de-projetos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como criar um diagrama de classes com Visual Studio 2012 Ultimate?</title>
		<link>http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate</link>
		<comments>http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/#comments</comments>
		<pubDate>Mon, 11 Feb 2013 14:49:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ferramentas de Software]]></category>
		<category><![CDATA[agregação]]></category>
		<category><![CDATA[composição]]></category>
		<category><![CDATA[diagrama de classes]]></category>
		<category><![CDATA[herança]]></category>
		<category><![CDATA[modelagem uml]]></category>
		<category><![CDATA[visual studio 2012 ultimate]]></category>

		<guid isPermaLink="false">http://www.galeote.com.br/blog/?p=770</guid>
		<description><![CDATA[Um diagrama de classes descreve as classes de um software e os relacionamentos existentes entre elas. Diferentes símbolos representam os vários relacionamentos que podem existir, como por exemplo herança ou associação. Essa informação é descrita independentemente de qualquer referência de uma implementação em particular de uma classe. O propósito de um diagrama de classes é [...]]]></description>
				<content:encoded><![CDATA[<p>Um diagrama de classes descreve as classes de um software e os relacionamentos existentes entre elas. Diferentes símbolos representam os vários relacionamentos que podem existir, como por exemplo herança ou associação. Essa informação é descrita independentemente de qualquer referência de uma implementação em particular de uma classe. O propósito de um diagrama de classes é focar nos aspectos lógicos da classe, invés de como ela será implementada.</p>
<p>Classes podem ter atributos definidos. Um atributo é um valor que pode ser associado a uma instância de uma classe. Classes também podem ter operações definidas. Uma operação é um método ou função que pode ser executada por uma instância de uma classe.</p>
<p>Use os seguintes passos para criar um diagrama de classes que descreve os relacionamentos entre as seguintes classes LOJA, LIVRARIA, e LIVROS. Livraria é uma versão mais específica de loja e livraria contém múltiplos livros.<span id="more-770"></span></p>
<ol>
<li>Execute o Visual Studio. Crie um novo projeto de modelagem selecionando FILE =&gt; NEW=&gt;PROJECT para abrir a janela de NOVO PROJETO. Selecione o template MODELING PROJECT, a partir do menu Templates. De um nome ao projeto e o local em que será salvo e clique em OK. Um novo projeto é exibido no SOLUTION EXPLORER</li>
</ol>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img01/" rel="attachment wp-att-772"><img class="alignnone size-full wp-image-772" alt="img01" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img01.png" width="254" height="397" /></a></p>
<p>2. Clique com o botão direito do mouse no SOLUTION EXPLORER e selecione ADD=&gt; New Item a partir do menu de contexto.  Selecione o template para UML Class Diagram e coloque o seu nome de Livros.classdiagram. Clique no botão Add para criar esse diagrama.</p>
<p>&nbsp;</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img02/" rel="attachment wp-att-773"><img class="alignnone size-full wp-image-773" alt="img02" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img02.png" width="424" height="296" /></a></p>
<p>3. Um diagrama de classes em branco nomeado de livro.classdiagram é criado no projeto de modelagem e exibido numa aba do Visual Studio</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img03/" rel="attachment wp-att-774"><img class="alignnone size-full wp-image-774" alt="img03" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img03.png" width="424" height="414" /></a></p>
<p>4. A partir da tab Tolbox clique no elemento Class e então clique em um espaço em branco no diagrama de classes UML. Isso cria um objeto classe no diagrama. No campo properties da classe, altere o nome para Loja. Essa será uma classe genérica para loja, da qual a livraria irá ter uma relação de herança. Defina a propriedade Is Abstract da classe Loja para True, para indicar que ela é uma classe abstrata.</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img04/" rel="attachment wp-att-775"><img class="alignnone size-full wp-image-775" alt="img04" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img04.png" width="419" height="408" /></a></p>
<p>Observação: note que quando definimos a classe como abstrata, a fonte do título da classe muda para itálico.</p>
<p>5. A classe Loja tem um para de atributos genéricos que se aplicam a todas as lojas, como endereço e horário de funcionamento.  Clique com o botão direito do mouse sobre a classe Loja e selecione Add -&gt; Attribute para criar um novo atributo. Coloque o nome do novo atributo de Endereço. Selecione o atributo Endereço, e na janela de Properties, defina a propriedade de Type para ser do tipo String. Adicione um segundo atributo denominado Horário, e define a propriedade de Type para ser do tipo String também.</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img05/" rel="attachment wp-att-776"><img class="alignnone size-full wp-image-776" alt="img05" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img05.png" width="319" height="211" /></a></p>
<p>&nbsp;</p>
<p>6. Crie a classe Livraria. A classe livraria tem um relacionamento de herança com a classe Loja criada anteriormente, já que ela é um tipo especializado de loja. Utilizando a janela do Tolbox adicione outro objeto de classe ao diagrama, abaixo do objeto Loja, e defina o nome de Livraria para esse novo objeto. Selecione o elemento Inheritance na janela do Tolbox. Clique sobre a classe Livraria e então clique sobre a classe Loja. Uma seta sólida aparece e aponta da classe Livraria para a classe Loja, indicando que a Livraria herda da classe Loja. As operações e atributos herdados da classe Loja não são normalmente mostrados na classe Livraria. Entretanto você pode utilizar o “smart tag” na seta de herança para adicionar as operações herdadas para a classe especializada (Livraria). Simplismente clique na “smart tag” e selecione Override Operations. Então selecione quais operações devem ser mostradas na classe especializada.</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img06/" rel="attachment wp-att-777"><img class="alignnone size-full wp-image-777" alt="img06" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img06.png" width="351" height="309" /></a></p>
<p>&nbsp;</p>
<p>7. Agora cria uma classe para livros. Adicione outro objeto classe ao diagrama abaixo da classe livraria e defina seu nome como Livro. Adicione dois atributos para a classe Livro: Preço, do tipo Integer; e Numero de Paginas, do tipo Integer. Selecione o elemento Association na janela Tolbox, clique na classe Livraria e então clique na classe Livro. Um elemento Association é usado para representar qualquer tipo de ligação entre dois elementos, independentemente de como essa ligação será realmente implementada no código propriamente dito.</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img07/" rel="attachment wp-att-778"><img class="alignnone size-full wp-image-778" alt="img07" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img07.png" width="244" height="418" /></a></p>
<p>8. Uma livraria pode ter diversos livros, então você deve modificar a propriedade Multiplicity da classe Livro. Selecione a ligação Association entre as classes Livraria e Livro. Na janela Properties, clique na seta próximo ao Second Role property e expanda a mesma. Mude o valor de Multiplicity para *, indicando que a Livraria pode conter diversos livros.</p>
<p>&nbsp;</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img08/" rel="attachment wp-att-779"><img class="alignnone size-full wp-image-779" alt="img08" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img08.png" width="464" height="292" /></a></p>
<p>9. Adicione uma operação para pedido de livros para a classe Livraria. Clique com o botão direito do mouse na classe Livraria, e selecione Add -&gt; Operation. Defina o nome da operação para PedidoLivro</p>
<p>10. Você deve definir os parâmetros e o tipo de retorno para essa operação selecionando a operação PedidoLivro e indo para a janela de Properties. Nessa janela defina o Return Type para Boolean. Clique a elipse no campo Parameters para abrir a janela de Operation Parameter Collection Editor. Nessa janela clique no botão Add para criar um novo parâmetro. Defina o nome do parâmetro como Item, e o tipo como Livro. Clique o botão Add novamente e crie um segundo parâmetro denominado Quantidade com um Type Integer. Clique no botão OK para fechar a janela do Operation Parameter Collection Editor.</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img09/" rel="attachment wp-att-780"><img class="alignnone size-full wp-image-780" alt="img09" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img09.png" width="392" height="283" /></a></p>
<p>10. A figura abaixo ilustra o resultado final desse diagrama de classes</p>
<p>&nbsp;</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img10/" rel="attachment wp-att-781"><img class="alignnone size-full wp-image-781" alt="img10" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img10.png" width="348" height="318" /></a></p>
<p>&nbsp;</p>
<p><strong>Tolbox para Diagrama de Classes</strong></p>
<p>A figura abaixo ilustra os diferentes elementos e associações disponíveis para os diagramas de classes</p>
<p>&nbsp;</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img11/" rel="attachment wp-att-782"><img class="alignnone size-full wp-image-782" alt="img11" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img11.png" width="247" height="300" /></a></p>
<p>&nbsp;</p>
<p>A tabela abaixo descreve os diferentes elementos e associações disponíveis para os diagramas de classes</p>
<p><a href="http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/img12/" rel="attachment wp-att-783"><img class="alignnone size-full wp-image-783" alt="img12" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/02/img12.png" width="681" height="765" /></a></p>
<p>&nbsp;</p>
<p>*adaptado do livro Professional Application Lifecycle Management with Visual Studio 2012. Mickey Gousset, Brian Keller, Martin Woodward</p>
]]></content:encoded>
			<wfw:commentRss>http://www.galeote.com.br/blog/2013/02/como-criar-um-diagrama-de-classes-com-visual-studio-2012-ultimate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como fazer testes funcionais orientados a riscos ?</title>
		<link>http://www.galeote.com.br/blog/2013/01/como-fazer-testes-funcionais-orientados-a-riscos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-fazer-testes-funcionais-orientados-a-riscos</link>
		<comments>http://www.galeote.com.br/blog/2013/01/como-fazer-testes-funcionais-orientados-a-riscos/#comments</comments>
		<pubDate>Fri, 25 Jan 2013 21:34:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Teste de Software]]></category>
		<category><![CDATA[estratégia de testes]]></category>
		<category><![CDATA[testes funcionais]]></category>
		<category><![CDATA[testes orientados a riscos]]></category>

		<guid isPermaLink="false">http://www.galeote.com.br/blog/?p=754</guid>
		<description><![CDATA[Esse certamente é um dos temas recorrente na área de teste de software - testes orientados a riscos. Aqui vai minha contribuição para o assunto: pretendo de forma prática e simples mostrar uma abordagem para que você possa orientar os seus testes funcionais a riscos. Primeiramente veja aqui uma definição sobre o que é risco . Agora vamos tomar [...]]]></description>
				<content:encoded><![CDATA[<p>Esse certamente é um dos temas recorrente na área de teste de software - <strong>testes orientados a riscos</strong>. Aqui vai minha contribuição para o assunto: pretendo de forma prática e simples mostrar uma abordagem para que você possa orientar os seus testes funcionais a riscos. Primeiramente veja aqui uma definição sobre o que é<a title="Riscos" href="http://pt.wikipedia.org/wiki/Risco_(administra%C3%A7%C3%A3o)" target="_blank"> risco</a> .</p>
<p>Agora vamos tomar como exemplo que iremos testar um site de uma livraria virtual. Para que possamos orientar os testes a riscos precisamos fazer uma análise sobre quais funcionalidades apresentam maiores riscos para o negócio. A tabela abaixo ilustra um exemplo para essa análise:<span id="more-754"></span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="142"><b>Funcionalidade</b></td>
<td valign="top" width="142"><b>Impacto(1-5)</b></td>
<td valign="top" width="151"><b>Probabilidade(1-5)</b></td>
<td valign="top" width="132"><b>Magnitude</b></td>
</tr>
<tr>
<td valign="top" width="142"><b>Inclusão de itens</b></td>
<td valign="top" width="142">5</td>
<td valign="top" width="151">5</td>
<td valign="top" width="132">25</td>
</tr>
<tr>
<td valign="top" width="142"><b>Exclusão de itens</b></td>
<td valign="top" width="142">1</td>
<td valign="top" width="151">3</td>
<td valign="top" width="132">3</td>
</tr>
<tr>
<td valign="top" width="142"><b>Alteração de itens</b></td>
<td valign="top" width="142">1</td>
<td valign="top" width="151">3</td>
<td valign="top" width="132">3</td>
</tr>
<tr>
<td valign="top" width="142"><b>Consultas</b></td>
<td valign="top" width="142">3</td>
<td valign="top" width="151">3</td>
<td valign="top" width="132">9</td>
</tr>
<tr>
<td valign="top" width="142"><b>Pagamento cartão crédito</b></td>
<td valign="top" width="142">5</td>
<td valign="top" width="151">5</td>
<td valign="top" width="132">25</td>
</tr>
<tr>
<td valign="top" width="142"><b>Pagamento boleto bancário</b></td>
<td valign="top" width="142">3</td>
<td valign="top" width="151">3</td>
<td valign="top" width="132">9</td>
</tr>
<tr>
<td valign="top" width="142"><b>Pagamento por transferência eletrônica</b></td>
<td valign="top" width="142">3</td>
<td valign="top" width="151">3</td>
<td valign="top" width="132">9</td>
</tr>
<tr>
<td valign="top" width="142"><b>Carrinho de compras</b></td>
<td valign="top" width="142">5</td>
<td valign="top" width="151">3</td>
<td valign="top" width="132">15</td>
</tr>
<tr>
<td valign="top" width="142"><b>Cadastro de cliente</b></td>
<td valign="top" width="142">5</td>
<td valign="top" width="151">3</td>
<td valign="top" width="132">15</td>
</tr>
<tr>
<td valign="top" width="142"><b>Acompanhamento de pedidos</b></td>
<td valign="top" width="142">1</td>
<td valign="top" width="151">3</td>
<td valign="top" width="132">3</td>
</tr>
</tbody>
</table>
<p>No exemplo da tabela acima para cada funcionalidade estabelecemos um valor de 1 a 5 para o impacto da funcionalidade no negócio (onde 5 é o maior impacto) e também um valor de 1 a 5 para a probabilidade de ocorrência do impacto em questão. A partir disso chegamos a magnitude do risco dada pela multiplicação entre impacto e probabilidade.</p>
<p>Nessa análise estabelecemos o maior impacto (5) para as seguintes funcionalidades:</p>
<ul>
<li>Inclusão de itens</li>
<li>Pagamento cartão de crédito</li>
<li>Carrinho de compras</li>
<li>Cadastro do cliente</li>
</ul>
<p>Ainda nessa análise estabelecemos a maior probabilidade para as seguintes funcionalidades:</p>
<ul>
<li>Inclusão de item no cadastro</li>
<li>Pagamento cartão de crédito</li>
</ul>
<p>Carrinho de compras e cadastro de cliente tiveram probabilidades medias (3) devido a serem funcionalidades já componentizadas e com menos probabilidades de apresentarem defeitos<br />
Assim podemos agora estabelecer uma lista em ordem decrescente de riscos das nossas funcionalidades:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="283">Funcionalidade</td>
<td valign="top" width="95">Magnitude</td>
</tr>
<tr>
<td valign="top" width="283">Inclusão de itens, pagamento cartão de crédito</td>
<td valign="top" width="95">25</td>
</tr>
<tr>
<td valign="top" width="283">Carrinho de compras e cadastro de clientes</td>
<td valign="top" width="95">15</td>
</tr>
<tr>
<td valign="top" width="283">Consultas, pagamento boleto bancário, pagamento por transferência eletrônica</td>
<td valign="top" width="95">9</td>
</tr>
<tr>
<td valign="top" width="283">Exclusão e alteração de itens, acompanhamento de pedidos</td>
<td valign="top" width="95">3</td>
</tr>
</tbody>
</table>
<p>Caso o resultado final não expresse o risco de cada funcionalidade, devemos reavaliar o impacto e a probabilidade de cada funcionalidade, até chegarmos a uma lista adequada sobre riscos. No nosso exemplo definimos os maiores riscos para as funcionalidades de inclusão de itens no cadastro (para que possamos garantir o funcionamento do catalogo de livros) e o pagamento por cartão de credito (por ser o tipo de pagamento mais utilizado).</p>
<p>A partir dessa análise podemos agora direcionar as prioridades para a elaboração dos casos de testes. Para cada funcionalidade devemos criar um conjunto de casos de testes que possuam uma boa cobertura da funcionalidade em questão. Os casos de testes devem ser classificados por prioridade: <b>alta</b> &#8211; casos de teste que se descobrir defeitos impedem o funcionamento do software, <b>média</b> &#8211; aqueles cujo defeito permite ainda o uso do software com alguma ação de contorno, e <b>baixa</b> &#8211; se apresentarem algum defeito será do tipo cosmético ou de melhorias no uso da funcionalidade.</p>
<p>Finalizado a criação dos casos de testes para cada funcionalidade, com suas respectivas categorizações de prioridade teremos insumos para direcionar a execução dos testes por riscos: em função do prazo disponível para a execução dos testes você pode estabelecer diferentes abordagens de execução. Por exemplo:</p>
<p>Executar 1º os casos de testes de alta prioridade das funcionalidades de alto risco, e depois os casos de testes de média prioridade. Em seguida aplicar esse mesmo procedimento para as demais funcionalidades em ordem decrescente do risco de cada uma. Por fim executar os casos de teste de prioridade baixa também em ordem decrescente do risco de cada funcionalidade.</p>
<p>Nessa abordagem o prazo foi gasto priorizando-se as funcionalidades de mais alto risco com os casos de testes de alta e média prioridade, deixando-se para o final (se houver tempo) os casos de testes de baixa prioridade de todas as funcionalidades. Essa abordagem pode ser interessante pois é comum ter situações onde o cronograma de execução de testes é curto e ainda assim ocorrer cortes de prazo para liberação do software para a homologação pelo cliente.</p>
<p>Nesses casos essa abordagem garantirá que o prazo que foi gasto até ocorrer o corte de prazo, priorizou os casos de testes de alta e média prioridade em ordem decrescente dos riscos de cada funcionalidade. Logicamente podem ser construídas outras a abordagens para execução dos testes. O importante é que agora você tem os insumos para definir a melhor abordagem para os testes orientados a riscos da sua próxima implantação de software.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.galeote.com.br/blog/2013/01/como-fazer-testes-funcionais-orientados-a-riscos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como criar um diagrama de atividade utilizando o Visual Studio 2012</title>
		<link>http://www.galeote.com.br/blog/2013/01/como-criar-um-diagrama-de-atividade-utilizando-o-visual-studio-2012/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-criar-um-diagrama-de-atividade-utilizando-o-visual-studio-2012</link>
		<comments>http://www.galeote.com.br/blog/2013/01/como-criar-um-diagrama-de-atividade-utilizando-o-visual-studio-2012/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 17:50:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ferramentas de Software]]></category>
		<category><![CDATA[diagrama atividade]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[visual studio 2012 ultimate]]></category>

		<guid isPermaLink="false">http://www.galeote.com.br/blog/?p=637</guid>
		<description><![CDATA[Um diagrama de atividade é usado para mostrar parte de um negócio ou um processo de software como um workflow através de uma série de ações. Essas ações podem ser realizadas por qualquer objeto, incluindo pessoas, software ou computadores. Diagramas de atividades podem ser usados para modelar a lógica capturada em um caso de uso [...]]]></description>
				<content:encoded><![CDATA[<p align="justify"><a href="http://www.galeote.com.br/blog/2013/01/como-criar-um-diagrama-de-atividade-utilizando-o-visual-studio-2012/diag-atividade/" rel="attachment wp-att-668"><img class=" wp-image-668 alignleft" style="margin: 5px;" alt="diag-atividade" src="http://www.galeote.com.br/blog/wp-content/uploads/2013/01/diag-atividade1.png" width="307" height="269" /></a>Um diagrama de atividade é usado para mostrar parte de um negócio ou um processo de software como um workflow através de uma série de ações. Essas ações podem ser realizadas por qualquer objeto, incluindo pessoas, software ou computadores. Diagramas de atividades podem ser usados para modelar a lógica capturada em um caso de uso em particular ou para modelar uma lógica de negócio detalhada. Uma forma fácil de entender o diagrama de atividade é pensar nele como um fluxograma.</p>
<p><span id="more-637"></span></p>
<p align="justify">Um diagrama de atividade sempre tem um nó de inicio, uma série de atividades e um nó final que indica o fim da atividade.</p>
<p align="justify">Os seguintes passos descrevem o processo de criar um diagrama de atividade que mostra a sequencia de atividade para o pedido de um livro na livraria virtual. Um cliente primeiro escolhe um livro. Depois disso, o cliente toma a decisão se escolhe mais livros ou confirma o pedido. Após o cliente finalizar a escolha dos livros, o cliente confirma o pedido dos livros e paga pelo pedido realizado.</p>
<p align="justify">1. Execute o Visual Studio. Crie um novo projeto de modelagem selecionando FILE =&gt; NEW=&gt;PROJECT para abrir a janela de NOVO PROJETO. Selecione o template MODELING PROJECT, a partir do menu Templates. De um nome ao projeto e o local em que será salvo e clique em OK. Um novo projeto é exibido no SOLUTION EXPLORER</p>
<p align="justify"><a href="http://www.galeote.com.br/blog/wp-content/uploads/2013/01/image.png"><img class="alignnone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; margin: 5px; border: 0px;" title="image" alt="image" src="http://blog.prasabermais.com/wp-content/uploads/2013/01/image_thumb.png" border="0" /></a></p>
<p align="justify">2. Clique com o botão direito do mouse no SOLUTION EXPLORER e selecione ADD=&gt; New Item a partir do menu de contexto.  Selecione o template para UML Activity Diagram e coloque o seu nome de PedidoLivro.activitydiagram.</p>
<p align="justify"><a href="http://www.galeote.com.br/blog/wp-content/uploads/2013/01/image1.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://blog.prasabermais.com/wp-content/uploads/2013/01/image_thumb1.png" border="0" /></a></p>
<p align="justify">3. Clique no botão ADD para criar esse diagrama. Um diagrama de atividade em branco nomeado de PedidoLivro.activitydiagram é criado no projeto de modelagem e exibido numa aba do Visual Studio</p>
<p align="justify"><a href="http://blog.prasabermais.com/wp-content/uploads/2013/01/image2.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://blog.prasabermais.com/wp-content/uploads/2013/01/image_thumb2.png" width="440" height="238" border="0" /></a></p>
<p align="justify">4. A partir do Toolbox, arraste um elemento INITIAL NODE para o lado esquerdo do diagrama. Isso indica o ponto inicial para essa atividade. Todo diagrama de atividade necessita desse elemento.</p>
<p align="justify">5. Arraste três elementos ACTION no diagrama do lado direito (um abaixo do outro) do elemento INITIAL NODE. Usando o campo PROPERTIES NAME dos elementos defina o nome desses itens como ESCOLHER UM LIVRO, CONFIRMAR PEDIDO e PAGAR UM LIVRO. O elemento ACTION representa um passo da atividade que o sistema ou o usuário realiza.</p>
<p align="justify"><a href="http://www.galeote.com.br/blog/wp-content/uploads/2013/01/image3.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://blog.prasabermais.com/wp-content/uploads/2013/01/image_thumb3.png" border="0" /></a></p>
<p align="justify">6. A partir do TOOLBOX, arraste um MERGE NODE acima da ação ESCOLHER UM LIVRO. Esse nó é usado para mesclar múltiplos fluxos, usualmente separados por um nó de decisão. Um MERGE NODE requer duas ou mais entradas e tem uma saída única.</p>
<p align="justify">7. Arraste e solte um DECISION NODE entre ESCOLHER UM LIVRO e CONFIRMAR PEDIDO. Esse nó é utilizado para criar fluxos de ramificação na atividade. Para esse diagrama de atividade, após um livro ser escolhido o cliente tem a escolha de confirmar o pedido ou selecionar mais livros. Um DECISION NODE tem uma entrada única e duas ou mais saídas.</p>
<p align="justify">8. Arraste um ACTIVITY FINAL NODE para a direita da ação PAGAR UM LIVRO. Isso indica o fim da atividade.</p>
<p align="justify"><a href="http://www.galeote.com.br/blog/wp-content/uploads/2013/01/image4.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://blog.prasabermais.com/wp-content/uploads/2013/01/image_thumb4.png" width="464" height="251" border="0" /></a></p>
<p align="justify">A seguir você deve adicionar os conectores para mostrar o fluxo de atividade através desse diagrama de atividade. No toolbox de um duplo clique no elemento CONNECTOR para selecioná-lo. No diagrama de atividade, arraste uma linha entre o INITIAL NODE e o MERGE NODE. Continue conectando os outros elementos do diagrama conforme segue:</p>
<p align="justify">a. Conecte o MERGE NODE com a ação ESCOLHER UM LIVRO</p>
<p align="justify">b. Conecte a ação ESCOLHER UM LIVRO com o DECISION NODE</p>
<p align="justify">c. Conecte o DECISION NODE com a ação CONFIRMAR PEDIDO</p>
<p align="justify">d. Conecte o DECISION NODE com o MERGE NODE</p>
<p align="justify">e. Conecte a ação CONFIRMAR PEDIDO com a ação PAGAR UM LIVRO</p>
<p align="justify">f. Conecte a ação PAGAR UM LIVRO com o ACTIVITY FINAL NODE</p>
<p align="justify">7. Modifique a propriedade GUARD dos elementos CONNECTOR do DECISION NODE para especificar a razão para os diferentes fluxos. No CONNECTOR para a ação CONFIRMAR PEDIDO, adicione o GUARD Finalizar Pedido. No CONNECTOR para o MERGE NODE, adicione o GUARD Continuar Comprando.</p>
<p align="justify">Quando finalizado o diagrama deve ficar como o da figura abaixo:</p>
<p align="justify"><a href="http://blog.prasabermais.com/wp-content/uploads/2013/01/image5.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://blog.prasabermais.com/wp-content/uploads/2013/01/image_thumb5.png" width="444" height="240" border="0" /></a></p>
<p align="justify"> <b><span style="text-decoration: underline;">Fluxo concorrente no diagrama de atividade</span></b></p>
<p align="justify">Diagramas de atividades podem também serem usados para descrever uma sequencia de ações executadas ao mesmo tempo. Essa sequencia de ações são conhecidas como fluxo concorrente. A figura abaixo mostra um exemplo de diagrama de atividade com fluxo concorrente relacionado ao pedido de livro.</p>
<p align="justify"><a href="http://blog.prasabermais.com/wp-content/uploads/2013/01/image6.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://blog.prasabermais.com/wp-content/uploads/2013/01/image_thumb6.png" width="467" height="253" border="0" /></a></p>
<p align="justify">No inicio desse diagrama de atividade, um pedido é criado. Após a criação do pedido duas ramificações diferentes são iniciadas. A barra preta à qual a ação CRIAR PEDIDO LIVRO se conecta é chamada de FORK NODE e é usada para dividir um fluxo simples em um fluxo concorrente. Nesse caso um fluxo vai para a ação DESPACHAR LIVRO. O outro via para o elemento ENVIAR FATURA LIVRO</p>
<p align="justify">O elemento ENVIAR FATURA LIVRO não é um elemento de ação regular. Ele é um elemento SEND SIGNAL ACTION. Isso indica uma ação que envia uma mensagem para outra atividade para que algo aconteça. O RECEBER PAGAMENTO LIVRO é um elemento ACCEPT EVENT ACTION. É uma ação que aguarda por uma mensagem antes do fluxo prosseguir. Nesse caso, uma ordem de pedido de livro será enviada, provavelmente para o sistema de pagamento. O fluxo no diagrama de atividade espera até que uma resposta seja recebida, indicando que o livro foi pago. Ambas as ações DESPACHAR LIVRO e RECEBER PAGAMENTO LIVRO são então mescladas novamente em um processo único, usando um JOIN NODE. A atividade finaliza com FECHAR PEDIDO.</p>
<p align="justify">Nota. Você pode definir o FORK NODE e o JOIN NODE para uma orientação vertical se desejar.</p>
<p align="justify"><strong><span style="text-decoration: underline;">Toolbox do diagrama de atividade</span></strong></p>
<p align="justify">A figura abaixo mostra os diferentes elementos e associações disponíveis para o diagrama de atividade</p>
<p align="justify"><a href="http://blog.prasabermais.com/wp-content/uploads/2013/01/image7.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://blog.prasabermais.com/wp-content/uploads/2013/01/image_thumb7.png" width="160" height="450" border="0" /></a></p>
<p align="justify">A tabela abaixo descreve os diferentes elementos e associações:</p>
<div align="justify">
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="163"><strong>Nome </strong></td>
<td valign="top" width="413"><strong>Descrição</strong></td>
</tr>
<tr>
<td valign="top" width="163">Pointer</td>
<td valign="top" width="413">Transforma o ponteiro do mouse de preto para um ponteiro regular</td>
</tr>
<tr>
<td valign="top" width="163">Initial Node</td>
<td valign="top" width="413">Adiciona o início para a atividade</td>
</tr>
<tr>
<td valign="top" width="163">Activity Final Node</td>
<td valign="top" width="413">Finaliza a atividade</td>
</tr>
<tr>
<td valign="top" width="163">Action</td>
<td valign="top" width="413">Adiciona um passo único que ocorre na atividade</td>
</tr>
<tr>
<td valign="top" width="163">Object Node</td>
<td valign="top" width="413">Adiciona um nó que pode transmitir, armazenar, filtrar ou transformar objetos</td>
</tr>
<tr>
<td valign="top" width="163">Comment</td>
<td valign="top" width="413">Adiciona um comentário para maior detalhamento</td>
</tr>
<tr>
<td valign="top" width="163">Decision Node</td>
<td valign="top" width="413">Divide um fluxo de entrada simples em uma escolha entre fluxo alternativo de saída.</td>
</tr>
<tr>
<td valign="top" width="163">Merge Node</td>
<td valign="top" width="413">Combina fluxos concorrentes em um fluxo simples</td>
</tr>
<tr>
<td valign="top" width="163">Fork Node</td>
<td valign="top" width="413">Divide um fluxo simples de entrada em um fluxo concorrente de saída</td>
</tr>
<tr>
<td valign="top" width="163">Join Node</td>
<td valign="top" width="413">Combina fluxo concorrente de entrada a em um fluxo simples de saída</td>
</tr>
<tr>
<td valign="top" width="163">Send Signal Action</td>
<td valign="top" width="413">Adiciona uma ação que envia um sinal para outro sistema ou atividade</td>
</tr>
<tr>
<td valign="top" width="163">Accepte Event Action</td>
<td valign="top" width="413">Adiciona uma ação que espera por um sinal ou evento</td>
</tr>
<tr>
<td valign="top" width="163">Call Behavior Action</td>
<td valign="top" width="413">Uma ação que é definida em mais detalhes em outro diagrama de atividade</td>
</tr>
<tr>
<td valign="top" width="163">Call Operation Action</td>
<td valign="top" width="413">Uma ação que chama uma operação em uma instancia de uma classe</td>
</tr>
<tr>
<td valign="top" width="163">Input Pin</td>
<td valign="top" width="413">Representa dado que uma ação produz. Ele permite que dados fluam de uma ação</td>
</tr>
<tr>
<td valign="top" width="163">Activity Parameter Node</td>
<td valign="top" width="413">Cria um parâmetro que transmite dado para dentro ou fora da atividade</td>
</tr>
<tr>
<td valign="top" width="163">Connector</td>
<td valign="top" width="413">Adiciona uma conexão ou fluxo entre os elementos do diagrama.</td>
</tr>
</tbody>
</table>
</div>
<p align="justify"><span style="font-size: xx-small;">*adaptado do livro Professional Application Lifecycle Management with Visual Studio 2012. Mickey Gousset, Brian Keller, Martin Woodward</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.galeote.com.br/blog/2013/01/como-criar-um-diagrama-de-atividade-utilizando-o-visual-studio-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Balanço de 2012: Engenharia de Software em 5 artigos e 5 sites</title>
		<link>http://www.galeote.com.br/blog/2012/12/balano-de-2012-engenharia-de-software-em-5-artigos-e-5-sites/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=balano-de-2012-engenharia-de-software-em-5-artigos-e-5-sites</link>
		<comments>http://www.galeote.com.br/blog/2012/12/balano-de-2012-engenharia-de-software-em-5-artigos-e-5-sites/#comments</comments>
		<pubDate>Mon, 31 Dec 2012 11:05:33 +0000</pubDate>
		<dc:creator>Galeote</dc:creator>
				<category><![CDATA[Boas práticas]]></category>
		<category><![CDATA[desenvolvimento agil]]></category>
		<category><![CDATA[modelos prescritivos]]></category>
		<category><![CDATA[requisitos]]></category>

		<guid isPermaLink="false">http://blog.prasabermais.com/2012/12/31/balano-de-2012-engenharia-de-software-em-5-artigos-e-5-sites/</guid>
		<description><![CDATA[Mais algumas horas e lá se vai 2012…o ano que era para o mundo acabar e não acabou. Será que o motivo foi algum bug no software que iria acabar com o mundo? Brincadeiras a parte, deixo registrado aqui os meus agradecimentos aos mais de 23.000 visitantes que passaram pelo nosso blog em 2012, e [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.galeote.com.br/blog/2012/12/balano-de-2012-engenharia-de-software-em-5-artigos-e-5-sites/emotion-2/" rel="attachment wp-att-612"><img class=" wp-image-612 alignleft" style="margin: 5px;" alt="emotion" src="http://www.galeote.com.br/blog/wp-content/uploads/2012/12/emotion1.jpg" width="192" height="189" /></a>Mais algumas horas e lá se vai 2012…o ano que era para o mundo acabar e não acabou. Será que o motivo foi algum bug no software que iria acabar com o mundo?</p>
<p>Brincadeiras a parte, deixo registrado aqui os meus agradecimentos aos mais de 23.000 visitantes que passaram pelo nosso blog em 2012, e geraram mais de 48.000 visualizações de páginas, permitindo um crescimento de 30% em relação a 2011. Novamente o meu muito obrigado! Espero vocês aqui novamente em 2013.</p>
<p>Segue abaixo os 5 artigos publicados em 2012 e que tiveram mais acessos segundo o Google Analytics:</p>
<p>1. <a title="Modelo para gestão de projetos baseado em princípios ágeis" href="http://www.galeote.com.br/blog/2012/01/modelo-para-gesto-de-projetos-baseado-em-princpios-geis/" target="_blank">Modelo para gestão de projetos baseado em princípios ágeis</a></p>
<p>2. <a href="http://www.galeote.com.br/blog/2012/06/modelos-prescritivos-para-o-desenvolvimento-de-software/" target="_blank">Modelos prescritivos para o desenvolvimento de software</a></p>
<p>3. <a href="http://www.galeote.com.br/blog/2012/05/levantamento-e-anlise-de-requisitos-uma-viso-pragmtica-sobre-ferrametas/" target="_blank">Levantamento e análise de requisitos uma visão pragmática sobre ferramentas</a></p>
<p>4. <a href="http://www.galeote.com.br/blog/2012/09/criando-diagrama-de-caso-de-uso-com-visual-studio-ultimate-2012-passo-a-passo/" target="_blank">Criando diagrama de caso de uso com visual studio ultimate 2012 passo a passo</a></p>
<p>5. <a href="http://www.galeote.com.br/blog/2012/01/framework-para-desenvolvimento-gil/" target="_blank">Framework para desenvolvimento ágil</a></p>
<p>Segue também os 5 sites que estiveram no meu bookmark em 2012</p>
<p><a href="http://www.khanacademy.org/" target="_blank">1. Khan Academy</a></p>
<p><a href="http://hbr.org/" target="_blank">2. Havard Business Review</a></p>
<p>3. <a href="http://www.computer.org/portal/web/computingnow/software-engineering" target="_blank">Computing Now</a></p>
<p>4. <a href="http://www.scirp.org/journal/OpenAccess.aspx" target="_blank">Scientific Research</a></p>
<p>5. <a href="http://www.facebook.com/DilmaBolada" target="_blank">Dilma Bolada</a> <span style="font-size: xx-small;">(porque eu não sou de ferro, e a nossa política é uma piada!)</span></p>
<p>Feliz 2013 a todos ! <img src='http://www.galeote.com.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.galeote.com.br/blog/2012/12/balano-de-2012-engenharia-de-software-em-5-artigos-e-5-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ensaio: como remunerar serviços de testes funcionais ?</title>
		<link>http://www.galeote.com.br/blog/2012/12/ensaio-como-remunerar-servios-de-testes-funcionais/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ensaio-como-remunerar-servios-de-testes-funcionais</link>
		<comments>http://www.galeote.com.br/blog/2012/12/ensaio-como-remunerar-servios-de-testes-funcionais/#comments</comments>
		<pubDate>Sun, 09 Dec 2012 22:44:07 +0000</pubDate>
		<dc:creator>Galeote</dc:creator>
				<category><![CDATA[Teste de Software]]></category>
		<category><![CDATA[outsourcing]]></category>
		<category><![CDATA[serviço testes funcionais]]></category>
		<category><![CDATA[terceirização]]></category>
		<category><![CDATA[testes funcionais]]></category>

		<guid isPermaLink="false">http://blog.prasabermais.com/2012/12/09/ensaio-como-remunerar-servios-de-testes-funcionais/</guid>
		<description><![CDATA[Sei que o assunto não é novo, como sei também que está longe de se ter uma unidade de medida padrão de mercado, como temos para os fornecedores de energia elétrica, de telecomunicação ou de aguas e esgotos. Vamos rever os modelos mais comuns para o mercado de testes funcionais de software: 1) Tamanho do [...]]]></description>
				<content:encoded><![CDATA[<p align="justify"><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/12/real.jpg"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px 5px 0px 0px; display: inline; padding-right: 0px; border: 0px;" title="real" alt="real" src="http://blog.prasabermais.com/wp-content/uploads/2012/12/real_thumb.jpg" width="112" height="122" align="left" border="0" /></a>Sei que o assunto não é novo, como sei também que está longe de se ter uma unidade de medida padrão de mercado, como temos para os fornecedores de energia elétrica, de telecomunicação ou de aguas e esgotos.</p>
<p align="justify">Vamos rever os modelos mais comuns para o mercado de testes funcionais de software:</p>
<p align="justify"><strong>1) Tamanho do projeto</strong></p>
<p align="justify">Nesse modelo se estabelece alguma unidade de medida do tamanho do projeto, por exemplo KLOC; quantidade de pontos de função, quantidade de funcionalidades e então se define o esforço necessário para os testes</p>
<p align="justify"><strong>2) Horas x homem</strong></p>
<p align="justify">Nesse modelo estima-se uma quantidade de recursos necessários para os testes (geralmente com dois perfis diferentes, o do testador e o do analista de testes)  e então se calcula o esforço necessário para os testes X o período de tempo gasto para os testes</p>
<p align="justify"><strong>3) Por entregáveis</strong></p>
<p align="justify">Nesse modelo o fornecedor será remunerado pelos artefatos que ele entregar: plano de testes, roteiros de testes, caso de testes executados</p>
<p align="justify"><strong>4) Por bugs encontrados</strong></p>
<p align="justify">Aqui o fornecedor passa a ser remunerado a partir do total de bugs encontrados. Deve-se classificar os tipos de bugs, por exemplo : interface gráfica, erro de ortografia e erros funcionais. A partir dessa classificação se estabelece faixas de valores a serem pagos, onde um erro funcional vale mais que um erro de interface gráfica, por exemplo.</p>
<p align="justify">Mas fora do mundo do software, como pagamos pelos serviços que consumimos?</p>
<p><span id="more-562"></span></p>
<p align="justify"><em><span style="text-decoration: underline;">Energia elétrica</span></em> – o serviço de energia elétrica nos é faturado da seguinte forma (exemplo para São Paulo, excluindo-se os tributos e outros serviços):</p>
<p align="justify">O fornecimento é medido em KWh – Quilo Watt x Hora o qual é multiplicado por um fator Tarifa de Energia (TE), e também multiplicado por um fator de Tarifa do Uso do Sistema de Distribuição (TUSD). Assim se você consumiu no mês 300 KWh, considerando-se o fator de TE = 0,14821 e TUSD = 0,14293, o valor a ser pago seria : (300 * 0,14821) + (300 * 0,14293) = 87,33</p>
<p align="justify"><em><span style="text-decoration: underline;">Telefonia</span></em> – o serviço de telefonia nos é faturado da seguinte forma (exemplo para São Paulo, provedor NET, excluindo-se o ICMS)</p>
<p align="justify">Somatória de minutos gastos em ligações para celulares x  0,88</p>
<p align="justify">Somatória de minutos gastos em ligações para telefones fixos x 0,12</p>
<p align="justify"><em><span style="text-decoration: underline;">Água e Esgotos</span></em> – esse serviço é faturado da seguinte forma (exemplo para São Paulo – Sabesp)</p>
<p align="justify">A medida de consumo é feita em M3 (metros cúbicos) e multiplicado pelos seguintes fatores:</p>
<p align="justify">até 10 m3 = R$ 15,94</p>
<p align="justify">11 a 20 m3 = R$ 2,49</p>
<p align="justify">21 a 30 m3 = R$ 6,22</p>
<p align="justify">31 a 50 m3 = R$ 6,22</p>
<p align="justify">Acima de 50 m3 = R$ 6,86</p>
<p align="justify">Assim se você consumiu 18 m3 o valor a ser pago seria:</p>
<p align="justify">10 m3 @ R$ 15,94</p>
<p align="justify">8 m3 @ R$ 2,49 = R$ 19,92</p>
<p align="justify">Total = R$ 35,86</p>
<p align="justify">Esse valor total será cobrado duas vezes: um para o consumo de água e outro para o consumo de esgoto, totalizando R$ 71,72</p>
<p align="justify">O que esses três modelos de faturamento nos diz ?</p>
<p align="justify">1) Cada um tem a sua unidade de medida de consumo: KWh para energia elétrica; minutos para telefonia, e m3 para água</p>
<p align="justify">2) Cada um tem seus próprios fatores de qualificação do serviço:</p>
<blockquote>
<p align="justify">Tarifa de energia e Tarifa do uso do Sistema de distribuição para energia elétrica</p>
</blockquote>
<blockquote>
<p align="justify">Valor de ligação para celular e valor de ligação para telefone fixo para telefonia</p>
</blockquote>
<blockquote>
<p align="justify">Valor de consumo de água e de consume de esgoto para aguas e esgotos</p>
</blockquote>
<p align="justify">Agora a partir desses três exemplos, vamos fazer uma extrapolação para o modelo de faturamento de serviços de testes funcionais:</p>
<p align="justify">1) Qual a unidade de medida a ser utilizada?</p>
<p align="justify">Dos quatro exemplos citados no início desse artigo, tamanho de projeto, horas x homem, entregáveis, e por bugs encontrados, vou ficar com o de tamanho por projeto. Além disso, vou propor utilizar a unidade de medida de pontos de função, e explico o porque: pontos de função me parece a unidade de medida mais madura para dimensionar o tamanho do sistema que será testado, é uma prática amplamente disseminada no mercado com uma boa quantidade de profissionais certificados no seu processo de contagem</p>
<p align="justify">Pronto: o nosso ponto de função seria equivalente ao kwh, ao minuto, ou ao m3. Mas agora precisamos qualificar o ponto de função, pois precisamos ainda responder: quanto custa testar um ponto de função?</p>
<p align="justify">Segundo Capers Jones, há um forte relacionamento entre ponto de função e caso de testes:</p>
<p align="justify">Para casos de testes de homologação: nº pontos de função x 1,2</p>
<p align="justify">Para casos de testes de sistemas: nº pontos função elevado 1,2</p>
<p align="justify">Assim para um sistema de 100 pontos de função teríamos a seguinte relação:</p>
<p align="justify">120 casos de testes de homologação e</p>
<p align="justify">251 casos de testes de sistemas</p>
<p align="justify">Para chegarmos à resposta final de quanto pagar pelo serviço de testes funcionais, precisamos estabelecer algumas premissas:</p>
<p align="justify">1. Vamos considerar a execução de 3 ciclos completos dos casos de testes</p>
<p align="justify">2. Vamos estabelecer as seguintes produtividades do prestador de serviços:</p>
<p align="justify">a) elaboração: 3 casos de testes x hora</p>
<p align="justify">b) execução : 4 casos de testes x hora</p>
<p align="justify">4) Custo por hora para projetista de casos de testes R$ 70,00</p>
<p align="justify">Custo por hora para executor de casos de testes R$ 45,00</p>
<p align="justify">Agora podemos calcular o custo final:</p>
<p align="justify">a) para elaboração dos casos de testes : nº pf x R$ 58,56</p>
<p align="justify">b) para execução dos casos de testes: nº pf x R$ 28,23</p>
<p align="justify">Simplificando, teríamos nº pf x 143,25 para a elaboração e execução do 3 ciclos completos de testes</p>
<p align="justify">Ajuste os valores de produtividade e de custo do projetista e do executor de testes do seu fornecedor de serviços e descubra o seu fator (no nosso exemplo, 143,25) que deverá ser multiplicado pela unidade de medida padrão: pontos de função para ter o valor a ser pago pelo serviço de testes funcionais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.galeote.com.br/blog/2012/12/ensaio-como-remunerar-servios-de-testes-funcionais/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conceitos e importância da prototipação de requisitos</title>
		<link>http://www.galeote.com.br/blog/2012/11/conceitos-e-importncia-da-prototipao-de-requisitos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=conceitos-e-importncia-da-prototipao-de-requisitos</link>
		<comments>http://www.galeote.com.br/blog/2012/11/conceitos-e-importncia-da-prototipao-de-requisitos/#comments</comments>
		<pubDate>Thu, 15 Nov 2012 17:44:24 +0000</pubDate>
		<dc:creator>Galeote</dc:creator>
				<category><![CDATA[Boas práticas]]></category>
		<category><![CDATA[ciclo da prototipação]]></category>
		<category><![CDATA[interface visual]]></category>
		<category><![CDATA[prototipação]]></category>
		<category><![CDATA[requisitos funcionais]]></category>

		<guid isPermaLink="false">http://blog.prasabermais.com/2012/11/15/conceitos-e-importncia-da-prototipao-de-requisitos/</guid>
		<description><![CDATA[A prototipação ajuda as pessoas enxergarem os seus requisitos, quando um especificação textual não ajuda. Os protótipos podem reduzir a taxa de requisitos tardios entre 10 e 25% O uso de protótipos é particularmente útil quando: o produto é novo e é difícil visualizar suas funcionalidades os envolvidos não tem experiência nem com o tipo [...]]]></description>
				<content:encoded><![CDATA[<p align="justify">A prototipação ajuda as pessoas enxergarem os seus requisitos, quando um especificação textual não ajuda. Os protótipos podem reduzir a taxa de requisitos tardios entre 10 e 25%</p>
<p align="justify">O uso de protótipos é particularmente útil quando:</p>
<ul>
<li>
<div align="justify">o produto é novo e é difícil visualizar suas funcionalidades</div>
</li>
<li>
<div align="justify">os envolvidos não tem experiência nem com o tipo de produto nem com a tecnologia proposta</div>
</li>
<li>
<div align="justify">os envolvidos estão enfrentando problemas em articular os requisitos necessários</div>
</li>
<li>
<div align="justify">o analista tem dificuldades de entender quais requisitos são necessários</div>
</li>
<li>
<div align="justify">há dúvidas sobre o quanto um determinado requisito é realizável</div>
</li>
</ul>
<p align="justify">Dado o tamanho e a complexidade de suas funcionalidades, projetos maiores deveriam explorar mais a técnica de prototipagem para descobrir funcionalidades, conforme ilustra a tabela abaixo:</p>
<p><span style="font-size: medium;"><span style="font-size: medium;"><br />
</span></span></p>
<table style="border-collapse: collapse; line-height: normal; background-color: transparent; mso-yfti-tbllook: 1056; border-style: none;" width="579" border="0" cellspacing="0" cellpadding="0">
<colgroup>
<col style="width: 343pt; mso-width-source: userset;" width="458" /></colgroup>
<tbody>
<tr style="height: 29.2pt; mso-height-source: userset;">
<td class="oa1" style="border-left-width: 1pt; border-right-width: 1pt; border-bottom-width: 3pt; padding-bottom: 3.6pt; padding-top: 3.6pt; padding-left: 7.2pt; padding-right: 7.2pt; border-top-width: 1pt; background-color: #4f81bd; border-color: white;" width="222" height="38">
<p style="margin-bottom: 0pt; unicode-bidi: embed; word-break: normal; direction: ltr; margin-left: 0in; margin-top: 0pt; language: pt-br; mso-line-break-override: none; punctuation-wrap: hanging;" align="left"><span style="font-family: Calibri;"><span style="color: #ffffff;"><strong><span style="font-size: medium;"><span style="language: pt-br; mso-ascii-font-family: calibri; mso-color-index: 14; mso-font-kerning: 12.0pt; mso-style-textfill-type: solid; mso-style-textfill-fill-themecolor: light1; mso-style-textfill-fill-color: white; mso-style-textfill-fill-alpha: 100.0%;">Tamano</span><span style="vertical-align: baseline; language: pt-br; mso-ascii-font-family: calibri; mso-color-index: 14; mso-font-kerning: 12.0pt; mso-style-textfill-type: solid; mso-style-textfill-fill-themecolor: light1; mso-style-textfill-fill-color: white; mso-style-textfill-fill-alpha: 100.0%; mso-text-raise: 0%;"> do projeto</span></span></strong></span></span></p>
</td>
<td class="oa1" style="border-left-width: 1pt; border-right-width: 1pt; border-bottom-width: 3pt; padding-bottom: 3.6pt; padding-top: 3.6pt; padding-left: 7.2pt; padding-right: 7.2pt; border-top-width: 1pt; background-color: #4f81bd; border-color: white;" width="355">
<p style="margin-bottom: 0pt; unicode-bidi: embed; word-break: normal; direction: ltr; margin-left: 0in; margin-top: 0pt; language: pt-br; mso-line-break-override: none; punctuation-wrap: hanging;" align="left"><span style="language: pt-br; mso-ascii-font-family: calibri; mso-color-index: 14; mso-font-kerning: 12.0pt; mso-style-textfill-type: solid; mso-style-textfill-fill-themecolor: light1; mso-style-textfill-fill-color: white; mso-style-textfill-fill-alpha: 100.0%;"><span style="font-family: Calibri;"><span style="color: #ffffff; font-size: medium;"><strong>% de funcionalidades contidas no protótipo em relação a funcionalidades da versão implementada</strong></span></span></span></p>
</td>
</tr>
<tr style="height: 29.2pt; mso-height-source: userset;">
<td class="oa2" style="border-left-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; padding-bottom: 3.6pt; padding-top: 3.6pt; padding-left: 7.2pt; padding-right: 7.2pt; border-top-width: 3pt; background-color: #d0d8e8; border-color: white;" width="222" height="38">
<p style="margin-bottom: 0pt; unicode-bidi: embed; word-break: normal; direction: ltr; margin-left: 0in; margin-top: 0pt; language: pt-br; mso-line-break-override: none; punctuation-wrap: hanging;" align="left"><span style="language: pt-br; mso-ascii-font-family: calibri; mso-color-index: 13; mso-font-kerning: 12.0pt; mso-style-textfill-type: solid; mso-style-textfill-fill-themecolor: dark1; mso-style-textfill-fill-color: black; mso-style-textfill-fill-alpha: 100.0%;"><span style="font-family: Calibri;"><span style="color: #000000; font-size: medium;">1.000 pontos de função </span></span></span></p>
</td>
<td class="oa2" style="border-left-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; padding-bottom: 3.6pt; padding-top: 3.6pt; padding-left: 7.2pt; padding-right: 7.2pt; border-top-width: 3pt; background-color: #d0d8e8; border-color: white;" width="355">
<p style="margin-bottom: 0pt; unicode-bidi: embed; word-break: normal; direction: ltr; margin-left: 0in; margin-top: 0pt; language: pt-br; mso-line-break-override: none; punctuation-wrap: hanging;" align="left"><span style="language: pt-br; mso-ascii-font-family: calibri; mso-color-index: 13; mso-font-kerning: 12.0pt; mso-style-textfill-type: solid; mso-style-textfill-fill-themecolor: dark1; mso-style-textfill-fill-color: black; mso-style-textfill-fill-alpha: 100.0%;"><span style="font-family: Calibri;"><span style="color: #000000; font-size: medium;">10%</span></span></span></p>
</td>
</tr>
<tr style="height: 29.2pt; mso-height-source: userset;">
<td class="oa3" style="padding-bottom: 3.6pt; padding-top: 3.6pt; padding-left: 7.2pt; padding-right: 7.2pt; background-color: #e9edf4; border-width: 1pt; border-color: white;" width="222" height="38">
<p style="margin-bottom: 0pt; unicode-bidi: embed; word-break: normal; direction: ltr; margin-left: 0in; margin-top: 0pt; language: pt-br; mso-line-break-override: none; punctuation-wrap: hanging;" align="left"><span style="language: pt-br; mso-ascii-font-family: calibri; mso-color-index: 13; mso-font-kerning: 12.0pt; mso-style-textfill-type: solid; mso-style-textfill-fill-themecolor: dark1; mso-style-textfill-fill-color: black; mso-style-textfill-fill-alpha: 100.0%;"><span style="font-family: Calibri;"><span style="color: #000000; font-size: medium;">100.000 pontos de função</span></span></span></p>
</td>
<td class="oa3" style="padding-bottom: 3.6pt; padding-top: 3.6pt; padding-left: 7.2pt; padding-right: 7.2pt; background-color: #e9edf4; border-width: 1pt; border-color: white;" width="355">
<p style="margin-bottom: 0pt; unicode-bidi: embed; word-break: normal; direction: ltr; margin-left: 0in; margin-top: 0pt; language: pt-br; mso-line-break-override: none; punctuation-wrap: hanging;" align="left"><span style="language: pt-br; mso-ascii-font-family: calibri; mso-color-index: 13; mso-font-kerning: 12.0pt; mso-style-textfill-type: solid; mso-style-textfill-fill-themecolor: dark1; mso-style-textfill-fill-color: black; mso-style-textfill-fill-alpha: 100.0%;"><span style="font-family: Calibri;"><span style="color: #000000; font-size: medium;">2%</span></span></span></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><span id="more-559"></span></p>
<p align="justify">O protótipo torna o produto real o suficiente para os envolvidos trazerem requisitos, que sem o protótipo não seriam capturados. Ele inspira os envolvidos a lembrar de outros requisitos, que sem o protótipo poderiam aparecer apenas quando o produto já estivesse em uso</p>
<p align="justify">Às vezes surgem requisitos que é defendido por apenas um envolvido, que jura ser o requisito mais importante do produto. Nesses casos o protótipo dá a oportunidade de que todos entendam e discutam o requisito e decidam sobre seus méritos de ser incluído ou não na versão final do produto</p>
<p align="justify">Deve-se sempre tentar técnicas de prototipagem que atendam aos artefatos e experiências que são mais familiares aos envolvidos. Isso significa ajustar o protótipo a cada situação de trabalho</p>
<p align="justify"><strong>Protótipos de baixa fidelidade</strong></p>
<p align="justify">Permitem que os envolvidos se concentrem no assunto principal usando canetas, quadro branco, flip charts, post-it&#8230;</p>
<p align="justify"><strong><span style="text-decoration: underline;">–prós</span></strong></p>
<ul>
<li>
<div align="justify">não haverá confusão entre o protótipo e o produto final</div>
</li>
<li>
<div align="justify">baixo investimento</div>
</li>
<li>
<div align="justify">fica claro que é um desenho que pode mudar facilmente</div>
</li>
<li>
<div align="justify">estimula a interação</div>
</li>
</ul>
<p align="justify"><strong><span style="text-decoration: underline;">–contras</span></strong></p>
<ul>
<li>
<div align="justify">demanda mais esforço dos envolvidos para testá-lo</div>
</li>
<li>
<div align="justify">dificuldade de abstrair alguns desenhos como sendo o futuro produto que o cliente necessita</div>
</li>
</ul>
<p align="justify">Recomenda-se elaboração do protótipo de um caso de uso por vez. Esse tipo de protótipo produz melhores resultados quanto utilizado no início do desenvolvimento, permitindo que os envolvidos forneçam mais  feedbacks quando ainda não estão tão fixados no design ou aparências. Nesse estágio as ideias são mais fluídas e uma experimentação rápida e fácil resultará em um produto melhor.</p>
<p align="justify"><strong>Protótipos de alta fidelidade</strong></p>
<p align="justify">Construído com a utilização de ferramentas de software permite aos envolvidos usar um visual realista do produto a ser desenvolvido, e decidir se o produto exibe os requisitos corretos.</p>
<p align="justify"><strong><span style="text-decoration: underline;">–prós:</span></strong></p>
<ul>
<li>
<div align="justify">interativo e estimula a sua exploração pelos envolvidos</div>
</li>
<li>
<div align="justify">simula o mundo real</div>
</li>
<li>
<div align="justify">eficiente para descobrir requisitos de usabilidade</div>
</li>
</ul>
<p align="justify">–<strong><span style="text-decoration: underline;">contras</span></strong></p>
<ul>
<li>
<div align="justify">envolvidos podem se concentrar na aparência visual e esquecer as funcionalidades</div>
</li>
<li>
<div align="justify">risco dos envolvidos acharem que o protótipo poderá ser a versão final do produto</div>
</li>
<li>
<div align="justify">além de se considerar os feedbacks dos envolvidos, considere a contribuição de um designer, que certamente poderá agregar com suas ideias</div>
</li>
<li>
<div align="justify">é um tipo de protótipo indicado para produtos destinados ao mercado em massa</div>
</li>
<li>
<div align="justify">serve com o um veículo para colher feedbacks de grupos representativos dos clientes</div>
</li>
</ul>
<p align="justify"><strong>Ciclo da prototipação</strong></p>
<p align="justify"><strong><span style="text-decoration: underline;"><em>Projeto e construção</em></span></strong></p>
<p align="justify">–qual o objetivo do protótipo?</p>
<ul>
<li>
<div align="justify">requisitos funcionais, não funcionais?</div>
</li>
<li>
<div align="justify">explora um caso de uso desconhecido, ou explorará um funcionalidade conhecida apenas para validação?</div>
</li>
</ul>
<p align="justify">–identificar envolvidos que darão feedback sobre o protótipo</p>
<p align="justify">–planejar como será executada cada sessão do protótipo</p>
<p align="justify">–procure construir o protótipo junto com os envolvidos e gaste mais tempo testando o protótipo junto com os envolvidos</p>
<p align="justify"><em><strong><span style="text-decoration: underline;">Testes no ambiente do usuário</span></strong></em></p>
<p align="justify">–onde os usuários e outros envolvidos usam o protótipo como uma simulação do seu trabalho, e o analista objetivamente registra os seus feedbacks</p>
<p align="justify">–deve haver participação dos especialistas em usabilidade nos testes</p>
<ul>
<li>
<div align="justify">usabilidade é parte integral do produto e não um acessório opcional que pode ser adicionada a qualquer momento</div>
</li>
</ul>
<p align="justify"><strong><span style="text-decoration: underline;">Analisar os resultados</span></strong></p>
<p align="justify">- verificar se os envolvidos descobriram novos requisitos</p>
<p align="justify">- verificar se é necessário alterar o protótipo e executar mais testes</p>
<p align="justify">- protótipo não é uma especificação de requisitos, é uma simulação de especificação.</p>
<p align="justify">- os requisitos reais necessitarão ainda ser extraídos</p>
<p align="justify">- o ciclo do protótipo pode ser repetido várias vezes</p>
<p align="justify">-os objetivos e os resultados devem ser revisitados a cada ciclo</p>
]]></content:encoded>
			<wfw:commentRss>http://www.galeote.com.br/blog/2012/11/conceitos-e-importncia-da-prototipao-de-requisitos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dez problemas na elicitação de requisitos</title>
		<link>http://www.galeote.com.br/blog/2012/10/dez-problemas-na-elicitao-de-requisitos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dez-problemas-na-elicitao-de-requisitos</link>
		<comments>http://www.galeote.com.br/blog/2012/10/dez-problemas-na-elicitao-de-requisitos/#comments</comments>
		<pubDate>Sun, 14 Oct 2012 16:36:40 +0000</pubDate>
		<dc:creator>Galeote</dc:creator>
				<category><![CDATA[Boas práticas]]></category>
		<category><![CDATA[elicitação requisisitos]]></category>
		<category><![CDATA[gerencia de requisitos]]></category>
		<category><![CDATA[requisitos]]></category>
		<category><![CDATA[requisitos funcionais]]></category>
		<category><![CDATA[requisitos não funcionais]]></category>

		<guid isPermaLink="false">http://blog.prasabermais.com/2012/10/14/dez-problemas-na-elicitao-de-requisitos/</guid>
		<description><![CDATA[A elicitação de requisitos pode algumas vezes se tornar uma tarefa dolorosa, prolongada e ingrata e pode ser vista como uma questão secundária e atribuída aos analistas juniores da equipe. Pode ainda não se ter nenhum documento de requisitos quando o projeto está próximo de ser finalizado, e então se descobre a sua necessidade para [...]]]></description>
				<content:encoded><![CDATA[<p align="justify"><a href="http://www.galeote.com.br/blog/2012/10/dez-problemas-na-elicitao-de-requisitos/duvidas-2/" rel="attachment wp-att-623"><img class="wp-image-623 alignleft" style="margin: 5px;" alt="dúvidas" src="http://www.galeote.com.br/blog/wp-content/uploads/2012/10/dúvidas.jpg" width="360" height="360" /></a>A elicitação de requisitos pode algumas vezes se tornar uma tarefa dolorosa, prolongada e ingrata e pode ser vista como uma questão secundária e atribuída aos analistas juniores da equipe. Pode ainda não se ter nenhum documento de requisitos quando o projeto está próximo de ser finalizado, e então se descobre a sua necessidade para a criação de testes e para a aceitação do software pelo cliente.</p>
<p align="justify">A partir disso, vamos elencar os principais problemas na elicitação de requisitos:</p>
<div align="justify"><span id="more-556"></span></div>
<p align="justify"><strong><span style="text-decoration: underline;">o ignorante perdido</span></strong></p>
<p align="justify">A elicitação deve ser conduzida pelas pessoas seniores da equipe, adequadamente treinadas. Uma mistura de pessoas mais e menos experientes é desejável para o desenvolvimento do time. É aconselhável ter também alguém que não possua conhecimento do domínio do problema: aqueles que não têm medo de perguntar:  o que isso significa? Além disso, ele ajudará na coleta suficiente de informações e para evitar que seja usado diferentes termos para o mesmo significado</p>
<p align="justify"><strong><span style="text-decoration: underline;">envolvidos errados</span></strong></p>
<p align="justify">envolvidos ou especialistas no assunto podem não responder por toda a organização. é importante identificar os seus relacionamentos com o projeto:</p>
<p align="justify">- ele está falando por toda a organização?</p>
<p align="justify">- existem opiniões diferentes sobre funcionalidades ou demandas não resolvidas?</p>
<p align="justify">- os envolvidos são conhecedores sobre o domínio em discussão?</p>
<p align="justify"><strong><span style="text-decoration: underline;">analistas não treinados</span></strong></p>
<p align="justify">O papel do analista é capturar as necessidades da organização, do projeto ou do produto, e não se enveredar em ilusões com decisões de soluções. Pessoas não treinadas terão dificuldades em separar necessidades da solução do problema:</p>
<p align="justify"><em>analista de banco de dados: </em>“devemos ter uma tabela para armazenamento dos nomes dos clientes e seus endereços” em vez de: “o novo sistema deverá armazenar os nomes e endereço dos clientes”.</p>
<p align="justify"><em>programador: “</em>o nome do cliente deve utilizar cache para garantir uma recuperação rápida” em vez de: “o novo sistema deverá ser capaz de recuperar o nome e endereço do cliente em menos de 1 s”.</p>
<p align="justify"><strong><span style="text-decoration: underline;">falha na identificação precisa dos envolvidos</span></strong></p>
<p align="justify">Imagine uma situação com uma reunião com 15 representantes de hospitais, onde um representante sugere uma funcionalidade x e outro representante sugere uma funcionalidade y. Durante a reunião de priorização é determinado que ambas solicitações (x, y) não podem ser atendidas na 1ª versão do sistema de agendamento do hospital.</p>
<p align="justify">Infelizmente os nomes e a representatividade de cada solicitante das funcionalidades x, y não foram registradas na reunião:</p>
<p align="justify">– funcionalidade x e y oriundas de um representante de uma rede de hospitais com 10.000 e 100 leitos respectivamente.</p>
<p align="justify">Dessa forma a informação necessária para a priorização foi perdida.</p>
<p align="justify"><strong><span style="text-decoration: underline;">falha em coletar informações suficientes</span></strong></p>
<p align="justify">É importante coletar a maior quantidade de informações durante as sessões de elicitação de requisitos. Uma forma de fazer isso é garantir a participação de representantes da análise, do projeto e do time de testes, onde poderão endereçar suas necessidades quanto aos requisitos.</p>
<p align="justify">Alguns envolvidos ou especialistas no domínio do problema possuem pouca disponibilidade para se reunir com o analista de requisitos. Após a finalização da fase de elicitação pode ser ainda mais difícil endereçar questões abertas com os envolvidos ou especialistas.</p>
<p align="justify"><strong><span style="text-decoration: underline;">volatilidade dos requisitos</span></strong></p>
<p align="justify">Se as necessidades estão mudando rapidamente, definir um conjunto estável de requisitos pode não ser possível. É necessário esperar até se obter algum nivel de estabilidade antes de se finalizar um baseline de requisitos para um produto de software.</p>
<p align="justify"><strong><span style="text-decoration: underline;">entendimento incompleto das necessidades do produto</span></strong></p>
<p align="justify">Ocorre quando os envolvidos estão indecisos quanto as suas necessidades e quanto aos objetivos de seu negócio. Existem várias técnicas, como a prototipagem para ajudar nesse ponto. Criar uma breve especificação do produto também pode ajudar</p>
<p align="justify">- é isso que o cliente quer e precisa?</p>
<p align="justify">- é factível de construção, com a tecnologia, tempo e orçamento disponível?</p>
<p align="justify">- as funcionalidades do produto estão descritas adequadamente?</p>
<p align="justify">- está claro porque o cliente iria comprar esse produto de software?</p>
<p align="justify"><strong><span style="text-decoration: underline;">o engenheiro de requisitos tem um profundo conhecimento do dominio</span></strong></p>
<p align="justify">Quando isso ocorre, existe uma tendência de minimizar a comunicação com os envolvidos. A falha na comunicação com os envolvidos pode ser perigosa num domínio onde a tecnologia está mudando rapidamente (telefones celulares, por exemplo)</p>
<p align="justify"><strong><span style="text-decoration: underline;">envolvidos falam idiomas diferentes </span></strong></p>
<p align="justify">Nesse caso a comunicação pode ser ainda mais difícil e os problemas podem aparecerem em diferentes áreas:</p>
<p align="justify">- realização de sessões de elicitação sem problemas</p>
<p align="justify">- entendimento de necessidades complexas, processos ou algorítmos</p>
<p align="justify">- garantir uma boa qualidade na revisão dos requisitos</p>
<p align="justify">Dado essas dificuldades, o uso de técnicas visuais como modelos, diagramas e tabelas para a comunicação de conceitos importantes podem ajudar na comunicação.</p>
<p align="justify"><strong><span style="text-decoration: underline;">envolvidos tem visões conflitantes</span></strong></p>
<p align="justify">Quando isso ocorre uma discussão acalorada pode acontecer. O conflito deve ser resolvido fora da sessão de elicitação de requisitos, a menos que gaste um ou dois minutos. Deve-se evitar discussões complexas e longas na sessão de elicitação visando não perder a produtividade.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.galeote.com.br/blog/2012/10/dez-problemas-na-elicitao-de-requisitos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando diagrama de caso de uso com Visual Studio Ultimate 2012 passo a passo</title>
		<link>http://www.galeote.com.br/blog/2012/09/criando-diagrama-de-caso-de-uso-com-visual-studio-ultimate-2012-passo-a-passo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=criando-diagrama-de-caso-de-uso-com-visual-studio-ultimate-2012-passo-a-passo</link>
		<comments>http://www.galeote.com.br/blog/2012/09/criando-diagrama-de-caso-de-uso-com-visual-studio-ultimate-2012-passo-a-passo/#comments</comments>
		<pubDate>Sat, 22 Sep 2012 23:13:44 +0000</pubDate>
		<dc:creator>Galeote</dc:creator>
				<category><![CDATA[Boas práticas]]></category>
		<category><![CDATA[Ferramentas de Software]]></category>
		<category><![CDATA[caso de uso]]></category>
		<category><![CDATA[diagrama de caso de uso]]></category>
		<category><![CDATA[mdd]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[visual studio 2012 ultimate]]></category>

		<guid isPermaLink="false">http://blog.prasabermais.com/2012/09/22/criando-diagrama-de-caso-de-uso-com-visual-studio-ultimate-2012-passo-a-passo/</guid>
		<description><![CDATA[A elaboração de bons diagramas de caso de uso é sempre um bom início para um projeto de desenvolvimento de software. O Visual Studio 2012 permite a elaboração de diagrama de casos de uso integrados a IDE de desenvolvimento, permitindo assim uma visão integrada do código e dos diagramas de análise e arquitetura do software. [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/09/image1.png"><img style="background-image: none; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" alt="image" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/image_thumb1.png" width="122" height="88" align="left" border="0" /></a></p>
<p>A elaboração de bons diagramas de caso de uso é sempre um bom início para um projeto de desenvolvimento de software. O Visual Studio 2012 permite a elaboração de diagrama de casos de uso integrados a IDE de desenvolvimento, permitindo assim uma visão integrada do código e dos diagramas de análise e arquitetura do software.</p>
<p>Veja a seguir o passo a passo para a criação de diagramas de caso de uso com o Visual Studio 2012.</p>
<p><span id="more-551"></span></p>
<p align="justify">1. Execute o Visual Studio. Crie um novo projeto de modelagem selecionando FILE =&gt; NEW=&gt;PROJECT para abrir a janela de NOVO PROJETO. Selecione o template MODELING PROJECT, de um nome ao projeto e o local em que será salvo e clique em OK. Um novo projeto é exibido no SOLUTION EXPLORER</p>
<p><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/09/clip_image001.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image001" alt="clip_image001" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/clip_image001_thumb.png" width="232" height="421" border="0" /></a></p>
<p align="justify">2. Clique com o botão direito sobre o nome do projeto no SOLUTION EXPLORER e selecione ADD=&gt;NEW ITEM no menu de contexto.</p>
<p align="justify">3. Selecione o template UML USE CASE DIAGRAM e coloque o nome OrderBook.usecasediagram.</p>
<p><a href="http:/www.galeote.com.br/blog/wp-content/uploads/2012/09/clip_image003.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image003" alt="clip_image003" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/clip_image003_thumb.jpg" width="431" height="299" border="0" /></a></p>
<p align="justify">Clique no botão ADD para criar esse diagrama. Um diagrama em branco nomeado de OrderBook.usecasediagram é criado no projeto de modelagem e aberto em uma aba no Visual Studio</p>
<p><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/09/clip_image005.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image005" alt="clip_image005" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/clip_image005_thumb.jpg" width="427" height="351" border="0" /></a></p>
<p align="justify">4. A partir da TOOLBOX do lado esquerdo do Visual Studio, arraste um elemento de SUBSYSTEM BOUNDARY no diagrama de caso de uso.</p>
<p><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/09/clip_image006.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image006" alt="clip_image006" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/clip_image006_thumb.png" width="266" height="412" border="0" /></a></p>
<p align="justify">5. Na janela uc OrderBook no elemento SUBSYSTEM mude o nome para OnlineBookstore. Esse subsistema pode ser usado para representar tanto um sistema quanto os seus principais componentes. Qualquer caso de uso que o sistema suporta é desenhado dentro de um subsistema</p>
<p align="justify">6. Adicione atores para o diagrama de caso de uso.</p>
<p><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/09/clip_image007.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image007" alt="clip_image007" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/clip_image007_thumb.png" width="248" height="390" border="0" /></a></p>
<p align="justify">Os atores representam classes de usuários, organizações, e sistemas externos que interagem com o sistema que se está construindo. Por padrão o objeto ator é representado como o ícone de uma pessoa. Coloque dois atores no diagrama de caso de uso, um de cada lado do subsistema OnlineBookstore.</p>
<p align="justify">7. Na janela de PROPERTIES nomeie o ator da esquerda de customer e o ator da direita de bookstore.</p>
<p><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/09/clip_image009.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image009" alt="clip_image009" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/clip_image009_thumb.jpg" width="404" height="264" border="0" /></a></p>
<p align="justify"><strong><span style="text-decoration: underline;">Obs.:</span></strong> Para adicionar múltiplos objetos do mesmo tipo da Toolbox, de um duplo clique no objeto na Tollbox. Então, clique múltiplas vezes no diagrama para adicionar os objetos. Ao finalizar, pressione ESC para retornar o cursor a sua funcionalidade regular.</p>
<p align="justify">8. Quando os atores estão no lugar, coloque os casos de uso apropriados no diagrama. Os casos de uso representam as atividades que os atores podem realizar, e são exibidos como elipses no diagrama. Coloque dois casos de uso dentro do subsistema OnlineBookstore, e os renomeie para Provide Book List e Order Book. Adicione um caso de uso do lado de fora e abaixo do subistema e nomeie ele como Deliver Book. Os casos de uso Provide Book List e Order Book são parte da aplicação OnlineBookstore, então eles são desenhados dentro do subsistema. O caso de uso Deliver Book está fora do escopo da aplicação, então ele é desenhado externamente ao subistema.</p>
<p><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/09/clip_image011.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image011" alt="clip_image011" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/clip_image011_thumb.jpg" width="378" height="291" border="0" /></a></p>
<p>9. Finalmente para finalizar, use o objeto ASSOCIATION para mostrar como cada ator se relaciona com cada caso de uso. Uma associação indica que um ator pode participar em um caso de uso particular. Por exemplo o ator Customer pode visualizar uma lista de livro no site da livraria virtual. De um duplo clique no objeto ASSOCIATION no Toolbox para selecioná-lo. Clique e segure o ator Customer e arraste uma linha para o caso de uso Provide Book List. Uma associação é criada entre o ator e o caso de uso. Faça o mesmo para os casos de uso Order Book e Deliver Book. Crie associações da mesma forma entre o ator Bookstore e os casos de uso Provide Book List e Deliver Book.</p>
<p><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/09/clip_image013.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image013" alt="clip_image013" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/clip_image013_thumb.jpg" width="373" height="292" border="0" /></a></p>
<p align="justify">Embora esse seja um diagrama de caso de uso muito simples, ele é muito informativo. Você pode ter diagramas de caso de uso mais complexos, com múltiplos subsistemas, atores e casos de uso. Uma boa prática é começar descrever o sistema com os seus principais diagramas de caos de uso. Cada um desses diagramas devem definir um objetivo principal do sistema. Após esses objetivos terem sido definidos, você inicia um detalhamento dos casos de uso utilizando outros objetos disponíveis na toolbox de diagrama de casos de uso.</p>
<p align="justify">Vamos então detalhar o caso de uso Order Book. A figura abaixo mostra um diagrama de caso de uso que faz isso usando o relacionamento de INCLUDE</p>
<p align="justify">Esse relacionamento mostra que um caso de uso usa todo o comportamento do caso de uso incluído. Para diferenciá-lo de uma associação regular, o relacionamento INCLUDE é representado por uma linha pontilhada com uma seta no final (segundo a especificação da UML 2.1.2, a seta deve sempre aponta para o caso de uso mais detalhado. O relacionamento include é também rotulado com a palavra-chave &lt;&lt;include&gt;&gt;. Cada um dos casos de uso incluídos é um passo que o ator deve realizar para completar o caso de uso principal. Nesse exemplo, para que o cliente efetue o pedido de um livro na livraria virtual, o cliente deve escolher um livro e então efetuar o pagamento do livro.</p>
<p align="justify">Um diagrama de caso de uso não especifica em que ordem um caso de uso particular deve ocorrer, ou quando um caso de uso em particular é necessário. Para ter essa informação de forma mais clara, anexe um objeto ARTIFACT para o caso de uso principal, arrastando o objeto ARTIFACT para o diagrama de caso de uso e então estabeleça um relacionamento de dependência entre o objeto ARTIFACT e o caso de uso principal. Um objeto ARTIFACT permite anexar um documento separado ao caso de uso (por exemplo, um arquivo texto que descreva os passos necessários) ou referenciar outro diagrama.</p>
<p><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/09/clip_image015.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image015" alt="clip_image015" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/clip_image015_thumb.jpg" width="378" height="308" border="0" /></a></p>
<p><strong><span style="text-decoration: underline;">Toolbox do diagrama de caso de uso</span></strong></p>
<p>A figura abaixo mostra os diferentes elementos e associações disponíveis para o diagrama de casos de uso</p>
<p><a href="http://www.galeote.com.br/blog/wp-content/uploads/2012/09/clip_image016.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image016" alt="clip_image016" src="http://blog.prasabermais.com/wp-content/uploads/2012/09/clip_image016_thumb.png" width="377" height="426" border="0" /></a></p>
<p>A tabela abaixo descreve os diferentes elementos e associações</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="288"><b>Nome </b></td>
<td valign="top" width="288"><b>Descrição</b></td>
</tr>
<tr>
<td valign="top" width="288"><b>Pointer</b></td>
<td valign="top" width="288">Retorna o mouse a um ponteiro regular</td>
</tr>
<tr>
<td valign="top" width="288"><b>Actor</b></td>
<td valign="top" width="288">Adiciona um usuário ou sistema externo que interage com o sistema</td>
</tr>
<tr>
<td valign="top" width="288"><b>Use Case</b></td>
<td valign="top" width="288">Adiciona uma especificação de ações que são realizadas para se atingir um objetivo específico</td>
</tr>
<tr>
<td valign="top" width="288"><b>Comment</b></td>
<td valign="top" width="288">Adiciona um comentário para mais detalhes</td>
</tr>
<tr>
<td valign="top" width="288"><b>Subsystem</b></td>
<td valign="top" width="288">Adiciona um objeto de sistema. Coloque os casos de uso dentro do sistema que os suportam</td>
</tr>
<tr>
<td valign="top" width="288"><b>Artifact</b></td>
<td valign="top" width="288">Adiciona uma referencia para um diagrama ou documento</td>
</tr>
<tr>
<td valign="top" width="288"><b>Association</b></td>
<td valign="top" width="288">Liga um ator com um caso de uso</td>
</tr>
<tr>
<td valign="top" width="288"><b>Dependencia</b></td>
<td valign="top" width="288">Especifica que a definição de um elemento depende da definição de outro</td>
</tr>
<tr>
<td valign="top" width="288"><b>Include</b></td>
<td valign="top" width="288">Especifica que um caso de uso invoca outro caso de uso</td>
</tr>
<tr>
<td valign="top" width="288"><b>Extend</b></td>
<td valign="top" width="288">Especifica um caso de uso estende a definição de outro em condições especificas</td>
</tr>
<tr>
<td valign="top" width="288"><b>Generalização</b></td>
<td valign="top" width="288">Especifica que um elemento é um versão especializada de outro, herdando suas características e restrições</td>
</tr>
<tr>
<td valign="top" width="288"><b>Comment Link</b></td>
<td valign="top" width="288">Conecta um comentário para um elemento do diagrama</td>
</tr>
</tbody>
</table>
<p>* <span style="font-size: xx-small;">adaptado do livro Professional Application Lifecycle Management with Visual Studio 2012. Mickey Gousset, Brian Keller, Martin Woodward</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.galeote.com.br/blog/2012/09/criando-diagrama-de-caso-de-uso-com-visual-studio-ultimate-2012-passo-a-passo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
