<?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>PauloMotta.pro &#187; UML</title>
	<atom:link href="http://www.paulomotta.pro.br/tag/uml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paulomotta.pro.br</link>
	<description>&#34;Qualquer tecnologia suficientemente avançada é indistinguível da mágica&#34; - Arthur C. Clarke</description>
	<lastBuildDate>Tue, 10 Jan 2012 03:00:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Uma bibliografia JavaEE mais atual</title>
		<link>http://www.paulomotta.pro.br/2011/02/22/uma-bibliografia-javaee-mais-atual/</link>
		<comments>http://www.paulomotta.pro.br/2011/02/22/uma-bibliografia-javaee-mais-atual/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 11:00:00 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Bibliografias]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[ANÁLISE]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[SISTEMA]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=1265</guid>
		<description><![CDATA[Há muito tempo, meu primeiro post foi uma bibliografia sobre Java. Naquela época eu pensava em usar o site mais como apoio aos cursos que ministrava do que como um lugar para expressar meus pensamentos sobre tecnologia. De lá para cá muita coisa mudou, embora algunas daqueles livros continuem válidos. Resolvi então colocar aqui uma [...]]]></description>
			<content:encoded><![CDATA[<p>Há muito tempo, meu primeiro post foi uma bibliografia sobre Java. Naquela época eu pensava em usar o site mais como apoio aos cursos que ministrava do que como um lugar para expressar meus pensamentos sobre tecnologia.</p>
<p>De lá para cá muita coisa mudou, embora algunas daqueles livros continuem válidos. Resolvi então colocar aqui uma lista dos livros que um desevolvedor Java EE da atualidade deve ler para conseguir dominar esse ambiente, pelo menos são os livros básicos <img src='http://www.paulomotta.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<ol>
<li><a href="http://www.submarino.com.br/produto/1/158382/utilizando+uml+e+padroes/franq=268087" target="_blank">Utilizando UML e Padrões do Craig</a> &#8211; livro obrigatório porque discute o que é desenvolver sistemas, fala de padrões de projeto e de como fazer a análise</li>
<li><a href="http://www.submarino.com.br/produto/1/1981750/franq=268087" target="_blank">Java Persistence com Hibernate</a> &#8211; detalha como funciona a API de persistência do Java, mas utiliza muitos detalhes relacionados ao Hibernate. O livro é muito bom porque discute em detalhes todos os problemas relacionados ao uso de bancos de dados relacionais com linguagens de programação orientadas a objetos.</li>
<li><a href="http://www.submarino.com.br/produto/1/1974097/franq=268087" target="_blank">Core Java Server Faces</a> -  apresenta o framework da Sun para o desenvolvimento de aplicações web, desde que comecei a usar o JSF não quero mais saber de Struts <img src='http://www.paulomotta.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  não vou falar mal do Struts porque usei muito no passado, mas o JSF realmente é um modelo mais robusto e interessante. Este livro cobre todos os detalhes de como usar e como escrever uma aplicação completa.</li>
<li><a href="http://www.submarino.com.br/produto/1/21565273/franq=268087" target="_blank">EJB3 em Ação</a> &#8211; Nenhuma aplicação Java EE está completa sem o uso de EJB, que é o modelo de componentes proposto pela Sun para a linguagem Java. Neste livro aprendemos como usar a especificação mais recente e como o uso de anotações facilita a vida do desenvolvedor que fica livre de muitos arquivos XML.<a href="http://www.submarino.com.br/produto/1/21565273/franq=268087" target="_blank"><br />
</a></li>
<li><a href="http://www.submarino.com.br/produto/1/21393669/franq=268087" target="_blank">EJB3 Profissional: Java Persistence API</a> &#8211; Um complemento ao livro de Hibernate, neste livro o leitor vai achar material relacionado apenas a especificação o que é muito bom porque, como costumo trabalhar, pode-se ficar totalmente independente da implementação de persitência.</li>
<li><a href="http://www.submarino.com.br/produto/1/21499577/franq=268087" target="_blank">Desenvolvendo Relatórios Profissionais Com iReport Para Netbeans IDE</a> &#8211; Como toda aplicação precisa de relatórios para estar completa, nada como usar uma ferramenta poderosa e baseada em ambiente gráfico para escrever os seus. Neste livro, aprendemos a usar o plugin para Netbeans de forma gradual e bem detalhada.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2011/02/22/uma-bibliografia-javaee-mais-atual/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Abolindo Diagramas</title>
		<link>http://www.paulomotta.pro.br/2010/09/21/abolindo-diagramas/</link>
		<comments>http://www.paulomotta.pro.br/2010/09/21/abolindo-diagramas/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 12:04:51 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Análise]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[ANÁLISE]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=961</guid>
		<description><![CDATA[Calma! Na verdade eu não estou querendo abolir os diagramas de vez, na verdade a proposta é um pouco mais simples. O que estamos experimentando na minha equipe de desenvolvimento é deixar de fazer os diagramas em uma ferramenta, estamos tentando usar agora algumas práticas ágeis, e como muito do nosso código é gerado no [...]]]></description>
			<content:encoded><![CDATA[<p>Calma! Na verdade eu não estou querendo abolir os diagramas de vez, na verdade a proposta é um pouco mais simples. O que estamos experimentando na minha equipe de desenvolvimento é deixar de fazer os diagramas em uma ferramenta, estamos tentando usar agora algumas práticas ágeis, e como muito do nosso código é gerado no próprio código (e não via modelo como prega o MDD) então o diagrama perde um pouco de sentido. Mas como ferramenta para compreensão do problema é uma ótima alternativa então que fazer?</p>
<p>Optamos (experimentalmente) por fazer os diagramas em um quadro branco, todo mundo participa e discute no final tira-se uma foto digital do quadro e guardamos a foto na documentação do projeto. Então na prática não abolimos o diagrama como ferramenta de entendimento, mas a etapa de migrar do quadro para uma ferramenta de modelagem acabou.</p>
<p>Eu venho usando essa alternativa de fotografar os quadros desde 2008, tanto para palestras quanto para aulas, no final aquele quadro que foi usado para alguma discussão contém muito mais informação do que seria concebida em uma sessão de análise isolada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/09/21/abolindo-diagramas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diagrama de Sequência</title>
		<link>http://www.paulomotta.pro.br/2009/09/23/diagrama-de-sequencia/</link>
		<comments>http://www.paulomotta.pro.br/2009/09/23/diagrama-de-sequencia/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 03:46:37 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Análise]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[ANÁLISE]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/2009/09/23/diagrama-de-sequencia/</guid>
		<description><![CDATA[Entre os diversos diagramas oferecidos pela UML, o de sequência tem um importante papel na concepção das interações entre as classes do sistema. O objetivo deste diagrama é apresentar, em ordem de chamada, as interações entre os métodos das classes. A primeira observação é que não devemos fazer diagramas de sequência para todos os casos [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 20mm } 		P { margin-bottom: 2.12mm } 		A:link { so-language: zxx } -->Entre os diversos diagramas oferecidos pela <a href="../2009/09/21/unified-modeling-language-uml/" target="_blank">UML</a>, o de sequência tem um importante papel na concepção das interações entre as classes do sistema. O objetivo deste diagrama é apresentar, em ordem de chamada, as interações entre os métodos das classes.</p>
<p>A primeira observação é que não devemos fazer diagramas de sequência para todos os casos de uso do sistema. Apenas as partes mais complicadas devem ser exploradas para isso, pois este diagrama pode ser trabalhoso e criá-lo para todas as partes do sistema não seria produtivo nem traria benefícios extra.</p>
<p>Vejamos um caso prático, digamos um cadastro seguindo os moldes do já tradicional CRUD. Este tipo de módulo de sistema é tão bem resolvido que temos padrões de caso de uso, de análise e até de codificação, inclusive o Netbeans é capaz de gerar automaticamente. Neste caso, criar diagramas de sequência geraria uma enorme carga de trabalho, mas não traria nenhuma informação nova.</p>
<p>Uma boa dica para identificar casos de uso que devem gerar diagramas de sequência é buscar pelas quantidades de entidades e passos envolvidos. Isso não é uma regra fixa, mas pode ajudar bastante!</p>
<p>A segunda dica é procurar as ações descritas no caso de uso e podemos fazer isso identificando os verbos nas sentenças. Isto está relacionado ao fato de que os métodos (que são o ponto chave deste diagrama) modelam o comportamento dos objetos de uma classe e portanto o que pode ou não ser feito.</p>
<p>Essa relação entre ações e métodos direciona o analista para pensar em termos de código e é por isso que este diagrama faz parte da fase de projeto. Quando criamos um diagrama de sequência pensamos de forma mais concreta identificando nomes de métodos, dependências, tipos de retorno e listas de parâmetros. Dependendo da ferramenta gráfica utilizada os métodos adicionados nesta etapa já vão popular as classes, quando gerarmos o código esses esqueletos de método serão inseridos. Essa característica favorece até mesmo o uso de técnicas de teste já que com os métodos identificados fica mais fácil de gerar seus testes.</p>
<p>A seguir alguns exemplos de diagramas de sequência.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2009/09/diagramaImportacao.jpg"><img class="aligncenter size-medium wp-image-344" title="diagramaImportacao" src="http://www.paulomotta.pro.br/wp-content/uploads/2009/09/diagramaImportacao-300x181.jpg" alt="" width="300" height="181" /></a></p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2009/09/ProjetoSoftwareDiaSeqVenda.jpg"><img class="aligncenter size-medium wp-image-346" title="ProjetoSoftwareDiaSeqVenda" src="http://www.paulomotta.pro.br/wp-content/uploads/2009/09/ProjetoSoftwareDiaSeqVenda-300x122.jpg" alt="" width="300" height="122" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2009/09/23/diagrama-de-sequencia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Unified Modeling Language &#8211; UML</title>
		<link>http://www.paulomotta.pro.br/2009/09/21/unified-modeling-language-uml/</link>
		<comments>http://www.paulomotta.pro.br/2009/09/21/unified-modeling-language-uml/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 04:37:05 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[ANÁLISE]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/2009/09/21/unified-modeling-language-uml/</guid>
		<description><![CDATA[A linguagem unificada de modelagem (do inglÃªs Unified Modeling Language &#8211; UML) Ã© uma ferramenta poderosa para expressar o conhecimento obtido atravÃ©s das tÃ©cnicas de anÃ¡lise de sistemas. No entanto para ser usada corretamente precisamos entender bem do que se trata. A primeira coisa a entender Ã© que esta ferramenta Ã© visual, no sentido de [...]]]></description>
			<content:encoded><![CDATA[<p>A linguagem unificada de modelagem (do inglÃªs Unified Modeling Language &#8211; UML) Ã© uma ferramenta poderosa para expressar o conhecimento obtido atravÃ©s das tÃ©cnicas de anÃ¡lise de sistemas. No entanto para ser usada corretamente precisamos entender bem do que se trata.</p>
<p>A primeira coisa a entender Ã© que esta ferramenta Ã© visual, no sentido de que define componentes visuais para representar os conceitos identificados em um sistema e as formas como esses conceitos se relacionam. Isto nÃ£o quer dizer que a ferramenta tenha uma plataforma visual, sendo apenas uma especificaÃ§Ã£o que diversos fabricantes usam para definir suas prÃ³prias plataformas (gratuitas ou pagas) para suportar o uso da ferramenta (UML). Isso significa, inclusive, que os fabricantes estÃ£o livres para representar internamente essas estruturas que compÃµe a especificaÃ§Ã£o da forma que acharem mais conveniente. As evoluÃ§Ãµes no sentido de interpretar modelos para gerar cÃ³digo propostas pela <a href="http://www.paulomotta.pro.br/2008/09/10/geracao-de-codigo-e-mdd/" target="_blank">MDA</a> tentam convencer fabricantes para convergir para uma representaÃ§Ã£o unificada (ou pelo menos de fornecer a capacidade de exportar em um modelo comum em XML) a fim de que possa ser possÃ­vel processar a informaÃ§Ã£o, jÃ¡ que a leitura de imagens seria totalmente sem cabimento.</p>
<p>A segunda coisa a ter em mente Ã© que a UML <em>nÃ£o</em> Ã© uma metogologia, tÃ©cnica ou processo para desenvolver sistemas. Simples assim, nÃ£o Ã© e pronto. Usar UML nÃ£o significa ter um sistema orientado a objetos, nÃ£o significa nem mesmo ter um sistema <em>certo</em> (nem certo do ponto de vista de realizar as funÃ§Ãµes esperadas pelo usuÃ¡rio, nem do ponto de vista de estar sem erros.) Possivelmente Ã© nesta segunda etapa que os estudantes e usuÃ¡rios de UML tenham mais problemas.</p>
<p>Atualmente no mercado Ã© praticamente impossÃ­vel achar uma vaga de estÃ¡gio ou emprego para desenvolvimento de sistemas que nÃ£o peÃ§a conhecimentos de modelagem e de UML. Muitas vezes o que os empregadores nÃ£o percebem Ã© que o tanto que Ã© requisitado, principalmente de estagiÃ¡rios, torna praticamente impossÃ­vel contratar alguÃ©m, acabam que as entrevistas passam a ser mecanismos repletos de ficÃ§Ã£o, porque o candidato diz que sabe e o entrevistador tenta avaliar o melhor possÃ­vel se isso Ã© uma verdade. Considerando que os cursos de computaÃ§Ã£o tem duraÃ§Ã£o de 3 a 5 anos dependendo da instituiÃ§Ã£o e do enfoque e que para o aluno entender realmente de anÃ¡lis e e desenvolvimento de sistemas demora atÃ© que tenha completado um ciclo de disciplinas que pode levar de 1 a 2 anos. AlÃ©m disso, para que o aluno entenda <a href="http://www.paulomotta.pro.br/2009/08/14/mas-como-as-disciplinas-se-relacionam/" target="_blank">como as disciplinas se relacionam</a> tambÃ©m existe um tempo prÃ³prio. EntÃ£o atÃ© que o aluno-candidato esteja pronto para fazer uma entrevista ele estarÃ¡ praticamente formado pelo curso e aÃ­ a ideia de um estÃ¡gio jÃ¡ comeÃ§a perder o sentido jÃ¡ que seu princÃ­pio Ã© o de colocar na prÃ¡tica o que se estÃ¡ vendo no curso.</p>
<p>A relaÃ§Ã£o entre esses tempos e o uso correto da UML estÃ¡ no fato de que sÃ£o requisitos para o uso eficiente e correto da UML saber <a href="http://www.paulomotta.pro.br/2009/08/01/como-se-faz-analise/" target="_blank">fazer anÃ¡lise</a> e um processo de desenvolvimento de sistemas. Esses dois requisitos sÃ£o extensos e densos por si sÃ³, e se nÃ£o forem conhecidos corretamente nÃ£o tem sentido usar UML. Vejamos porque:</p>
<ul>
<li>UML serve para documentar a anÃ¡lise &#8211; para documentar alguma coisa precisamos das tÃ©cnicas para identificar essa coisa, em sistemas sÃ£o tÃ©cnicas de entrevista, escrita, itens tecnolÃ³gicos (que vÃ£o fundamentar a infraestrutura do sistema e sua arquitetura,) textos, algoritmos e padrÃµes entre outros. Se o analista nÃ£o conhecer esses fundamentos corretamente nÃ£o conseguirÃ¡ fazer o levantamento de informaÃ§Ãµes necessÃ¡rio para <em>usar</em> a UML.</li>
<li>Diagramas da UML nÃ£o tÃªm uma ordem implÃ­cita &#8211; a UML define um conjunto de diagramas que sÃ£o mais ou menos Ãºteis em cada tipo de situaÃ§Ã£o de desenvolvimento de sistemas, mas esses diagramas na verdade sÃ£o TODOS opcionais, isso mesmo, o analista vai usar os diagramas que julgar mais importantes, que o cliente solicitar (quando o cliente tem um processo prÃ³prio), ou que se adequarem melhor Ã  situaÃ§Ã£o. AlÃ©m disso, nÃ£o tem nada na UML que diga que deve-se fazer primeiro o diagrama X ou Y, entÃ£o por si sÃ³ a UML nÃ£o Ã© capaz de definir o fluxo pelo qual vamos executar nosso trabalho a fim de conceber e desenvolver o sistema para o usuÃ¡rio. O efeito colateral disso Ã© que muitas vezes o sistema Ã© feito de maneira <em>ad-hoc</em> e no final sÃ£o usadas ferramentas para gerar modelos reversos, ou seja, ler o cÃ³digo e gerar os diagramas. EstÃ¡ tÃ©cnica de gerar modelos reversos Ã© muito Ãºtil quando estamos tentando entender um sistema existente e nÃ£o temos documentaÃ§Ã£o nem acesso aos desenvolvedores originais da equipe, mas nÃ£o deveria ser usada como tÃ©cnica de desenvolvimento normal.</li>
</ul>
<p>EntÃ£o as empresas deveriam gastar mais tempo investindo em consolidar seus processos de desenvolvimento e treinar seus contratados do que buscar pessoas jÃ¡ prontas.</p>
<p>AlÃ©m de saber usar a UML como linguagem para representar seus conceitos, o analista precisa dominar tÃ©cnicas de levantamento e escrita das necessidades de seu cliente, a correta identificaÃ§Ã£o dos <a href="http://www.paulomotta.pro.br/2009/08/17/requisitos/" target="_blank">requisitos</a> Ã© fundamental para o desenvolvimento de um sistema que atenda o cliente. E mais uma vez nÃ£o existe representaÃ§Ã£o de requisitos na UML, essa Ã© uma outra parte que precisa ser realizada antes de partirmos para utilizÃ¡-la. AtÃ© mesmo os <a href="http://www.paulomotta.pro.br/2009/09/15/casos-de-uso/" target="_blank">casos de uso</a> que sÃ£o tÃ£o falados nÃ£o fazem parte da UML! O que existe na UML Ã© um <em>diagrama</em> que representa as relaÃ§Ãµes entre casos de usos bem como com seus atores, mas nÃ£o quais os passos de um caso de uso. AtÃ© podemos falar que um diagrama de atividades poderia ser usado para representar os passos de um caso de uso, mas isso seria uma subutilizaÃ§Ã£o deste elemento.</p>
<p>Uma vez que o analista domine todos esses aspectos e essas dimensÃµes chega a hora de usar a UML e nesse momento surge uma outra dÃºvida, qual ferramenta grÃ¡fica usar? Vale a pena mesmo usar uma ferramenta grÃ¡fica diretamente?</p>
<p>Existem vÃ¡rias ferramentas grÃ¡ficas para UML gratuitas e pagas, com diferentes capacidades e recursos, e claro diferentes faixas de preÃ§os. Uma comparaÃ§Ã£o entre as ferramentas precisa de um artigo prÃ³prio, mas uma coisa que pode ser evidenciada as ferramentas gratuitas apresentam realmente muitas limitaÃ§Ãµes em relaÃ§Ã£o as suas versÃµes pagas. Se o custo for um fator determinante para o projeto (e normalmente Ã©) deve-se levar em conta que as ferramentas que sÃ£o integradas ao ambiente de desenvolvimento podem oferecer mais capacidades de geraÃ§Ã£o de cÃ³digo e isso pode ajudar no desenvolvimento do projeto.</p>
<p>Quanto ao aspecto de <em>quando</em> comeÃ§ar a usar uma boa dica vem do pessoal de mÃ©todos agÃ©is, que pregam que devemos fazer a anÃ¡lise em um quadro branco ou mesmo em uma janela, e somente <em>depois</em> de chegarmos a algum acordo bÃ¡sico sobre o que serÃ¡ feito devemos passar aquilo para uma ferramenta. Na verdade essa dica Ã© bem compreensÃ­vel porque a Ã¡rea visÃ­vel que temos em qualquer ferramenta Ã© muito menor do que qualquer quadro branco (ou janela) e como no inÃ­cio vamos fazer muitas modificaÃ§Ãµes atÃ© chegar a uma versÃ£o mais estÃ¡vel entÃ£o Ã© muito incomodo trabalhar direto em uma ferramenta.</p>
<p>EntÃ£o para encadearmos o conhecimento a melhor ideia Ã© seguir:</p>
<ol>
<li>Conhecer as tÃ©cnicas de anÃ¡lise &#8211; permite escrever as necessidades do cliente</li>
<li>Conhecer um processo de desenvolvimento de sistemas &#8211; determina como encadear o que deve ser feito e quando deve ser feito</li>
<li>Conhecer a UML &#8211; contÃ©m os artefatos que sÃ£o necessÃ¡rios para documentar o que foi analisado</li>
<li>Conhecer uma ferramenta grÃ¡fica UML &#8211; permite desenhar os conceitos e possivelmente gerar os cÃ³digos base para o sistema.</li>
</ol>
<p>Seguindo essa ordem a chance de ter sucesso com o desenvolvimento de sistemas aumenta drasticamente porque passa a ser uma atividade coordenada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2009/09/21/unified-modeling-language-uml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Casos de Uso</title>
		<link>http://www.paulomotta.pro.br/2009/09/15/casos-de-uso/</link>
		<comments>http://www.paulomotta.pro.br/2009/09/15/casos-de-uso/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 16:21:33 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Análise]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[ANÁLISE]]></category>
		<category><![CDATA[Casos de Uso]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/2009/09/15/casos-de-uso/</guid>
		<description><![CDATA[O processo de análise de sistemas começa com o levantamento do problema que será trabalhado, o maior erro que pode ser cometido é começar a solucionar um problema que não sabemos qual é. Entretanto, uma vez definido e descrito o problema, identificada a solução que vai ser empregada, a próxima etapa é a listagem dos [...]]]></description>
			<content:encoded><![CDATA[<p><!-- p { margin-bottom: 2.12mm; } -->O processo de análise de sistemas começa com o levantamento do problema que será trabalhado, o maior erro que pode ser cometido é começar a solucionar um problema que não sabemos qual é. Entretanto, uma vez definido e descrito o problema, identificada a solução que vai ser empregada, a próxima etapa é a listagem dos requisitos funcionais e não funcionais. Tendo a lista de requisitos funcionais, precisamos identificar todos os passos para realizar cada um dos requisitos funcionais, e isso é o papel dos casos de uso.</p>
<p>Muitas vezes os casos de uso são confundidos com os diagramas de caso de uso, estes são representações gráficas que permitem visualizar os relacionamentos entre atores e casos de uso além de relações entre casos de uso. No entanto esses diagramas não apresentam quais são os passos necessários para atingir o objetivo do requisito funcional representado. Para que seja possível desenvolver um sistema, precisamos entender qual é a necessidade do usuário, e isso é feito com entrevistas que serão documentadas para nortear a criação ou atualização de módulos no sistema.</p>
<p>Ã‰ importante utilizar o texto de um caso de uso para descrever, de forma clara e objetiva, o que precisa ser feito em cada funcionalidade do sistema. Neste aspecto uma característica interessante é que existem diversos modelos de casos de uso com mais ou menos seções, cada tipo se adéqua melhor a um tipo de situação ou contexto de trabalho, mas são necessárias pelos menos seis seções:</p>
<ol>
<li>Título &#8211; é o nome do caso de uso 	propriamente dito, pode incluir um código para simplificar as 	referências</li>
<li>Descrição &#8211; pequeno texto que 	descreve a que esse caso de uso se refere, ou seja, explica de forma 	<em>resumida</em> o que acontece nesse caso de uso.</li>
<li>Pré-condições &#8211; são todas as 	condições que devem ser verdadeiras para que o caso de uso possa 	executar, então para o desenvolvedor significa que terão que ser 	testadas antes de seguir em frente. Uma pré-condição clássica: 	&#8220;Usuário precisa estar autenticado no sistema,&#8221; indica 	que devemos testar (de alguma forma) se o usuário está autenticado 	(além de ter autorização para acessar o recurso). Em sistemas web 	é muito comum tentar quebrar a segurança digitando o endereço de 	alguma página do sistema diretamente no <em>browser</em>.</li>
<li>Pós-condições &#8211; são todos os 	itens que garantimos como válidos se o caso de uso terminar com 	sucesso. Recibos impressos, dados salvos, e todo tipo de resultado 	obtido a partir da execução desse caso de uso.</li>
<li>Fluxo Principal &#8211; aqui descrevemos 	os passos, em uma lista numerada, para se atingir o objetivo do caso 	de uso. Aqui não devemos incluir referências a tecnologias 	específicas (tais como &#8220;clicar no botão&#8221; ou &#8220;fazer 	um <em>insert</em> no banco&#8221;) e consideramos que não acontecem 	erros, simplesmente porque fica muito mais fácil de entender o que 	deve ser feito se pensarmos de forma isolada em um caso correto.</li>
<li>Fluxos Alternativos &#8211; descrevemos aqui todas as situações 	que podem acontecer em relação ao fluxo principal, situações de 	erro ou de desvio, por exemplo, usuário escolhe outra forma de 	pagamento por não ter dinheiro suficiente para a compra. Aqui fica 	fácil pensar de forma pontual em cada situação de falha ou 	exceção porque o fluxo principal está completo, então cada item 	de fluxo alternativo deve começar com o número do passo que 	referencia no fluxo principal e deve descrever textualmente qual é 	a situação de erro (ou exceção) que aconteceu, em seguida 	apresenta uma lista numerada de passos para contornar a situação.</li>
</ol>
<p>É claro que existem outras seções possíveis, mas muitas vezes trabalhamos com sistemas pequenos/médios nos quais seções extra não agregam muita informação considerando o trabalho necessário para mantê-las. A primeira coisa a ter em mente é que não devemos utilizar associações com tecnologias, não deve ser usada nenhuma instrução de código, referências a tela ou bancos de dados. No entanto podemos ajudar na criação do sistema através do uso de certas palavras-chave para guiar o entendimento, a escrita é uma ferramenta fundamental no desenvolvimento de sistemas. Quando escrevemos que o usuário &#8220;seleciona&#8221; uma opção isso indica para o leitor que vai haver alguma maneira de escolher entre opções existentes e que serão apresentadas para ele, ou seja, ele não vai escrever um valor, apenas a forma de concretizar isso é que depende da tecnologia. Da mesma forma quando escrevemos que o usuário &#8220;informa&#8221; um valor, isso indica que deverá existir uma forma para o usuário inserir um texto livre, o que vai restringir será o tipo de dado, se utilizaremos um número inteiro, um número real ou um texto tal como um nome.</p>
<p>Uma outra característica interessante é o fato de que no Fluxo Principal devemos nos concentrar em apresentar para o usuário um cenário sem erros, isso é importante para que fique claro como atingir o objetivo daquele caso de uso, se misturarmos o tratamento de erro ou de exceção aos passos principais, pode ficar confuso o que é parte da solução e o que é situação de erro. Além disso, facilita muito termos um &#8220;roteiro&#8221; de como atingir o objetivo do caso de uso para então incluir os tratamentos de possíveis erros.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2009/09/15/casos-de-uso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

