<?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>Andreano Lanusse &#124; Tecnologia e Desenvolvimento de Software &#187; UML</title>
	<atom:link href="http://www.andreanolanusse.com/pt/tag/uml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andreanolanusse.com/pt</link>
	<description>Andreano Lanusse blog - acesse artigos, tutoriais e vídeos sobre tecnologia, desenvolvimento de software, técnicas de programação, banco de dados, jogos e mais.</description>
	<lastBuildDate>Thu, 17 May 2012 19:34:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Seu código Delphi está bem escrito?</title>
		<link>http://www.andreanolanusse.com/pt/seu-codigo-delphi-esta-bem-escrito/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=seu-codigo-delphi-esta-bem-escrito</link>
		<comments>http://www.andreanolanusse.com/pt/seu-codigo-delphi-esta-bem-escrito/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 01:06:57 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=675</guid>
		<description><![CDATA[<p>A métrica nos ajuda a padronizar código. Quem nunca teve acesso a um código em que o desenvolvedor cria 10 construtores para uma classe, 10 ifs um dentro do outro, métodos com 20 parâmetros e outras práticas que só prejudicam a leitura do código? Pois então, com as métricas podemos definir quais os limites que [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>A métrica nos ajuda a padronizar código. Quem nunca teve acesso a um código em que o desenvolvedor cria 10 construtores para uma classe, 10 ifs um dentro do outro, métodos com 20 parâmetros e outras práticas que só prejudicam a leitura do código? Pois então, com as métricas podemos definir quais os limites que a empresa utilizará, por exemplo: uma classe não poderá ter mais do que 4 construtores, poderá ter no máximo 400 linhas de código e os nomes dos métodos devem ser escritos conforme a convenção Pascal, que diz que o nome de um método deve ter a primeira letra maiúscula.</p>
<p>Cada métrica tem os seus limites e estes poderão ser customizados, conforme figura abaixo:</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/qametric.jpg"><img class="aligncenter size-full wp-image-676" title="Métricas" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/qametric.jpg" alt="" width="436" height="360" /></a></p>
<p>Após executar as métricas os resultados serão analisados através do gráfico de Kiviat, onde o circulo vermelho é o limite definido anteriormente e todos os pontos foram deste círculo mostram que parte do código está rompendo as métricas.</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/kaviat.jpg"><img class="aligncenter size-full wp-image-677" title="Kaviat" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/kaviat.jpg" alt="" width="504" height="378" /></a></p>
<p>Cada classe poderá ser analisada separadamente. Desta forma, será mais fácil identificar as violações de métricas. Com a auditoria e métrica, o desenvolvedor poderá entregar um código e uma aplicação com mais qualidade tanto interna quanto externa. Tudo isso você pode executar no seu código em qualquer versão a partir do 2006.</p>
<p>Recomendo como leitura adicional outros dois posts:</p>
<ul>
<li>Auditanto seu código Delphi &#8211; <a href="http://www.andreanolanusse.com/pt/auditando-seu-codigo-delphi/">http://www.andreanolanusse.com/pt/auditando-seu-codigo-delphi/</a></li>
<li>Melhorando a qualidade do seu software Delphi através da UML &#8211; <a href="http://www.andreanolanusse.com/pt/melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml/">http://www.andreanolanusse.com/pt/melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml/</a></li>
</ul>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/auditando-seu-codigo-delphi/" title="Auditando seu código Delphi">Auditando seu código Delphi</a></li><li><a href="http://www.andreanolanusse.com/pt/melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml/" title="Melhorando a qualidade do seu software Delphi através da UML">Melhorando a qualidade do seu software Delphi através da UML</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/" title="Vídeo: Desenvolvimento para iOS com FireMonkey">Vídeo: Desenvolvimento para iOS com FireMonkey</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/seu-codigo-delphi-esta-bem-escrito/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auditando seu código Delphi</title>
		<link>http://www.andreanolanusse.com/pt/auditando-seu-codigo-delphi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=auditando-seu-codigo-delphi</link>
		<comments>http://www.andreanolanusse.com/pt/auditando-seu-codigo-delphi/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 18:30:32 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=621</guid>
		<description><![CDATA[<p>Quando falamos em qualidade, sempre nos preocupamos em apresentar ao cliente um software de alto desempenho. Muitos nos dizem que não importa como o software está escrito, mas sim que funcione e atenda às suas necessidades. Na verdade, quem pensa assim está cometendo um grande erro, que pode trazer impacto lá na frente. Se você [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>Quando falamos em qualidade, sempre nos preocupamos em apresentar ao cliente um software de alto desempenho. Muitos nos dizem que não importa como o software está escrito, mas sim que funcione e atenda às suas necessidades. Na verdade, quem pensa assim está cometendo um grande erro, que pode trazer impacto lá na frente. Se você não escreve um código estruturado e depois precisa crescer a aplicação, pode acontecer de você não conseguir, pois muitos remendos foram feitos e sua aplicação não cresceu de forma estruturada. O Delphi irá contribuir, através de auditoria e métricas, para encontrar erros na sua aplicação enquanto estiver em produção e ajudarão a disciplinar os desenvolvedores a escrever códigos padronizados.</p>
<p>Quantas vezes você já definiu um guia de melhores práticas de codificação que evitasse que sua equipe de programadores cometesse aquelas gafes de codificação que podem tornar o código tão ineficiente quanto incompreensível?</p>
<p>Suponhamos que sua equipe tenha um guia de melhores práticas, a segunda pergunta fatalmente seria: Como podemos garantir que o guia está sendo seguido?</p>
<p>A resposta novamente seria: revisão de código (code review) e, se encaixarmos tal prática no contexto de um projeto com milhares de linhas de código, sabemos que o resultado pode ser catastrófico no que diz respeito a tempo.</p>
<p>Através do recurso de auditoria de código (QA Audits) do Delphi você poderá finalmente definir um conjunto de boas práticas de codificação e garantir que estas práticas estão sendo seguidas em seus projetos. Traduzindo para o dia-a-dia, você irá detectar erros que podem ocorrer na aplicação antes de ela ser executada.</p>
<p>A auditoria verifica se o código está em conformidade com as regras e parâmetros estabelecidos pela organização. Os resultados apresentam apenas as violações detectadas e de forma categorizada, são elas:</p>
<ul>
<li>Arrays e Referências</li>
<li>Código duplicado</li>
<li>Conteúdo supérfluo</li>
<li>Desempenho</li>
<li>Desvios e laços</li>
<li>Estilo de codificação</li>
<li>Estilo de nomenclatura</li>
<li>Expressões</li>
<li>Falhas de projeto (design)</li>
<li>Possíveis erros</li>
</ul>
<p><a href="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/qaaudits.jpeg"><img class="aligncenter size-full wp-image-622" title="Auditoria" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/qaaudits.jpeg" alt="" width="673" height="353" /></a></p>
<p>Cada item da auditoria tem uma nota explicativa representando o modo correto e o incorreto para utilização da mesma, tornando mais fácil o entendimento por parte do desenvolvedor naquele item da auditoria. Cada um desses itens pode ter seu nível de severidade alterado entre: Info, Warning e Error. Ficando a critério do desenvolvedor definir a importância do item.</p>
<h3><strong>Loop Body is Never Executed (LBNE)</strong></h3>
<p>Em muitos casos, temos rotinas de execução que envolve vários loops e é necessário depurar para ter certeza que os loops serão executados. Com a auditoria LBNE, isso pode ser detectado. O código abaixo é um exemplo simples que podemos detectar. Exemplos complexos, com diversas condições, também são detectados facilmente.</p>
<pre class="brush: pascal">var
   x: Boolean;
begin
  x := false;
  while s do
  begin
     ....
  end;</pre>
<p><strong>INDEX OUT OF BOUNDS (IOB)</strong></p>
<p>Esta mensagem é comum quando se tenta acessar uma posição de array inexistente. Veja abaixo um exemplo de um código que irá gerar este aviso.</p>
<pre class="brush: pascal">var
  nloops,
  i,
  j :integer;
  matriz : array of integer;
  somatorio : double;
begin
  for i := 0 to nloops do
  begin
      somatorio := 0;
      for j := 0 to High(matriz) do
          somatorio := somatorio + matriz[i];

  end;</pre>
<p><a href="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/Auditresults.jpeg"><img class="aligncenter size-full wp-image-624" title="Resultado da Auditória" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/Auditresults.jpeg" alt="" width="647" height="234" /></a></p>
<p>A auditoria apontou o erro e informa que na linha 25 existe a tentativa de acesso a uma variável que não faz do 2º loop, vamos explicar melhor.<br />
No for da variável J, estou tentando acesso a uma posição do array ARR, apontando para a posição I do loop anterior, sendo que no for da variável J é onde está sendo percorrido o array ARR.</p>
<p>São mais de 200 auditórias disponíveis no Delphi, que tal executar o processo de auditória no seu código, não se assuste com o resultado <img src='http://www.andreanolanusse.com/pt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , a idéia é lhe ajudar a melhorar a qualidade do seu produto final.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/seu-codigo-delphi-esta-bem-escrito/" title="Seu código Delphi está bem escrito?">Seu código Delphi está bem escrito?</a></li><li><a href="http://www.andreanolanusse.com/pt/melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml/" title="Melhorando a qualidade do seu software Delphi através da UML">Melhorando a qualidade do seu software Delphi através da UML</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/" title="Vídeo: Desenvolvimento para iOS com FireMonkey">Vídeo: Desenvolvimento para iOS com FireMonkey</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/auditando-seu-codigo-delphi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Melhorando a qualidade do seu software Delphi através da UML</title>
		<link>http://www.andreanolanusse.com/pt/melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml</link>
		<comments>http://www.andreanolanusse.com/pt/melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 12:57:14 +0000</pubDate>
		<dc:creator>Andreano Lanusse</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/pt/?p=605</guid>
		<description><![CDATA[<p>A qualidade que é sempre solicitada no produto final, é também requisito fundamental para o software, já que é através dele que as estratégias de crescimento da empresa são sustentadas. Se você entrega um software que não tem qualidade pode comprometer o sucesso do seu cliente. Desde o Delphi 2006 podemos utilizar a UML com [...]</p><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></description>
			<content:encoded><![CDATA[<p>A qualidade que é sempre solicitada no produto final, é também requisito fundamental para o software, já que é através dele que as estratégias de crescimento da empresa são sustentadas. Se você entrega um software que não tem qualidade pode comprometer o sucesso do seu cliente.</p>
<p>Desde o Delphi 2006 podemos utilizar a UML com todos os seus diagramas e, além disso, a utilização do LiveSource, que permite sincronização entre diagrama de classe e código.</p>
<p>Cada diagrama na UML tem a sua representatividade, alguns representam modelos de negócios e, portanto, não faz sentido gerar código a partir dele. Outros a representação fiel do código, por exemplo, o diagrama de classe. Abaixo, alguns dos diagramas disponíveis e suas funcionalidades.</p>
<ul>
<li>Use Case &#8211; é uma forma de descrever a interação entre um      sistema e o mundo real, sendo que os atores que podem ser pessoas ou sistemas,      representam o mundo real.</li>
<li>Class Diagram &#8211; representa as classes do sistema e seus relacionamentos.</li>
<li>Collaboration &#8211; utilizado para modelagem de aspectos dinâmicos de um sistema ou      subsistema.</li>
<li>Activity &#8211; permite representar situações dinâmicas através      de um fluxo, por meio dele será possível representar o fluxo entre      objetos.</li>
<li>Component &#8211; utilizada para modelagem de mais alto nível, onde existam      estruturas complexas. Este diagrama ilustra pedaços de sistemas, controles embutidos etc.</li>
<li>State &#8211; Especifica a seqüência de eventos de um determinado objeto.</li>
</ul>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/UseCase.jpg"><img class="aligncenter size-large wp-image-606" title="Delphi - Use Case" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/UseCase-1024x819.jpg" alt="" width="583" height="466" /></a>Diagrama de caso de uso</p>
<p>Visualizar um diagrama de classes torna muito mais fácil o entendimento sobre as classes nele existentes do que utilizar código. Vejamos um exemplo do próprio Delphi: a unit Buttons.pas tem diversos componentes dentro dela como TBitBtn, TSpeedButton e outros. Imaginem entender 1946 linhas de código para saber quais componentes e relacionamento existem entre eles. Através da engenharia reversa, fica muito fácil de entender, veja a figura abaixo.</p>
<p style="text-align: center;"><a href="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/classdiagram.jpeg"><img class="aligncenter size-large wp-image-607" title="Class Diagram" src="http://www.andreanolanusse.com/pt/wp-content/uploads/2010/01/classdiagram-1024x819.jpg" alt="" width="547" height="436" /></a>Diagrama de Classe</p>
<p style="text-align: left;">A engenharia reversa pode ser feita a qualquer momento a partir do código Delphi, desta forma vemos que este recurso do Delphi auxilia e muito na evolução e entendimento do código, seja atual ou legado.</p>
<h2  class="related_post_title">Posts relacionados</h2><ul class="related_post"><li><a href="http://www.andreanolanusse.com/pt/seu-codigo-delphi-esta-bem-escrito/" title="Seu código Delphi está bem escrito?">Seu código Delphi está bem escrito?</a></li><li><a href="http://www.andreanolanusse.com/pt/auditando-seu-codigo-delphi/" title="Auditando seu código Delphi">Auditando seu código Delphi</a></li><li><a href="http://www.andreanolanusse.com/pt/bye-bye-embarcadero/" title="Bye Bye Embarcadero">Bye Bye Embarcadero</a></li><li><a href="http://www.andreanolanusse.com/pt/video-aprenda-como-utilizar-datasnap-connectors-na-pratica/" title="Video: Aprenda como utilizar DataSnap Connectors na prática">Video: Aprenda como utilizar DataSnap Connectors na prática</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvendo-para-ios-com-firemonkey-e-delphi-xe2/" title="Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2">Vídeo: Desenvolvendo para iOS com FireMonkey e Delphi XE2</a></li><li><a href="http://www.andreanolanusse.com/pt/video-desenvolvimento-para-ios-com-firemonkey/" title="Vídeo: Desenvolvimento para iOS com FireMonkey">Vídeo: Desenvolvimento para iOS com FireMonkey</a></li></ul><p><a href="http://www.andreanolanusse.com/pt">Andreano Lanusse | Tecnologia e Desenvolvimento de Software</a><br/>
Follow me on Twitter: <a href="http://twitter.com/andreanolanusse.com">@andreanolanusse</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/pt/melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

