<?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 Blog em Português &#187; UML</title>
	<atom:link href="http://www.andreanolanusse.com/blogpt/tag/uml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andreanolanusse.com/blogpt</link>
	<description>O propósito do meu blog é compartilhar assuntos relacionados a desenvolvimento de software, assim como belos lugares para que visitei e recomendo, filmes que assisti e gostei, jogos que realmente curto (sou fã do PS3), fotos de lugares legais e muito mais.</description>
	<lastBuildDate>Thu, 09 Sep 2010 12:43:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Auditando seu código Delphi</title>
		<link>http://www.andreanolanusse.com/blogpt/auditando-seu-codigo-delphi/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=auditando-seu-codigo-delphi</link>
		<comments>http://www.andreanolanusse.com/blogpt/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 (Win32)]]></category>
		<category><![CDATA[Embarcadero]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/blogpt/?p=621</guid>
		<description><![CDATA[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ê [...]]]></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/blogpt/wp-content/uploads/2010/01/qaaudits.jpeg"><img class="aligncenter size-full wp-image-622" title="Auditoria" src="http://www.andreanolanusse.com/blogpt/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/blogpt/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/blogpt/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/blogpt/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/blogpt/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/blogpt/utilizando-expressoes-regulares-para-validar-endereco-ip-no-delphi-xe/" title="Utilizando expressões regulares para validar endereço IP no Delphi XE">Utilizando expressões regulares para validar endereço IP no Delphi XE</a></li><li><a href="http://www.andreanolanusse.com/blogpt/ao-comprar-delphi-xe-aka-delphi-2011-voce-recebe-as-versoes-do-delphi-7-2007-2009-e-2010/" title="Ao comprar Delphi XE (aka Delphi 2011) você recebe as versões do Delphi 7, 2007, 2009 e 2010">Ao comprar Delphi XE (aka Delphi 2011) você recebe as versões do Delphi 7, 2007, 2009 e 2010</a></li><li><a href="http://www.andreanolanusse.com/blogpt/teste-nosso-servidor-datasnap-xe-instalado-no-amazon-cloud/" title="Teste nosso servidor DataSnap XE instalado no Amazon Cloud">Teste nosso servidor DataSnap XE instalado no Amazon Cloud</a></li><li><a href="http://www.andreanolanusse.com/blogpt/disponibilizada-nova-versao-do-delphi-xe-cbuilder-xe-delphi-prism-xe-e-radphp-xe/" title="Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE">Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE</a></li><li><a href="http://www.andreanolanusse.com/blogpt/datasnap-xe-e-windows-azure-preview-3/" title="DataSnap XE e Windows Azure &#8211; RAD Studio XE Preview #3">DataSnap XE e Windows Azure &#8211; RAD Studio XE Preview #3</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/blogpt/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/blogpt/melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml</link>
		<comments>http://www.andreanolanusse.com/blogpt/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 (Win32)]]></category>
		<category><![CDATA[Embarcadero]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.andreanolanusse.com/blogpt/?p=605</guid>
		<description><![CDATA[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 [...]]]></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/blogpt/wp-content/uploads/2010/01/UseCase.jpg"><img class="aligncenter size-large wp-image-606" title="Delphi - Use Case" src="http://www.andreanolanusse.com/blogpt/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/blogpt/wp-content/uploads/2010/01/classdiagram.jpeg"><img class="aligncenter size-large wp-image-607" title="Class Diagram" src="http://www.andreanolanusse.com/blogpt/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/blogpt/auditando-seu-codigo-delphi/" title="Auditando seu código Delphi">Auditando seu código Delphi</a></li><li><a href="http://www.andreanolanusse.com/blogpt/utilizando-expressoes-regulares-para-validar-endereco-ip-no-delphi-xe/" title="Utilizando expressões regulares para validar endereço IP no Delphi XE">Utilizando expressões regulares para validar endereço IP no Delphi XE</a></li><li><a href="http://www.andreanolanusse.com/blogpt/ao-comprar-delphi-xe-aka-delphi-2011-voce-recebe-as-versoes-do-delphi-7-2007-2009-e-2010/" title="Ao comprar Delphi XE (aka Delphi 2011) você recebe as versões do Delphi 7, 2007, 2009 e 2010">Ao comprar Delphi XE (aka Delphi 2011) você recebe as versões do Delphi 7, 2007, 2009 e 2010</a></li><li><a href="http://www.andreanolanusse.com/blogpt/teste-nosso-servidor-datasnap-xe-instalado-no-amazon-cloud/" title="Teste nosso servidor DataSnap XE instalado no Amazon Cloud">Teste nosso servidor DataSnap XE instalado no Amazon Cloud</a></li><li><a href="http://www.andreanolanusse.com/blogpt/disponibilizada-nova-versao-do-delphi-xe-cbuilder-xe-delphi-prism-xe-e-radphp-xe/" title="Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE">Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE</a></li><li><a href="http://www.andreanolanusse.com/blogpt/datasnap-xe-e-windows-azure-preview-3/" title="DataSnap XE e Windows Azure &#8211; RAD Studio XE Preview #3">DataSnap XE e Windows Azure &#8211; RAD Studio XE Preview #3</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.andreanolanusse.com/blogpt/melhorando-a-qualidade-do-seu-software-delphi-atraves-da-uml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
