quinta-feira, 25 de setembro de 2014

Desenvolvimento e Otimização de um Projeto Baseados em Testes

Desenvolvimento e Otimização de um Projeto Baseados em Testes

O desenvolvimento baseado por testes deve seguir 3 regras simples:

  1. Não escrever o código de produção até que voce tenha escrito um teste de unidade que falhe.
  2. Não escrever mais um teste de unidade do que suficiente para falhar ou não compile.
  3. Não escrever mais que qualquer código de produção para passar no teste falho.

O objetivo é construir ciclos curtos, alternando as etapas de desenvolvimento. O conjunto de testes geram um impedimento para o desenvolvimento. Indica onde o programa apresenta falhas, nos permitindo criarmos funções para corrigir o programa ou para melhorarmos a sua eficiência.

Ao desenvolver um software baseado por testes ele deve ser desacoplado do seu ambiente para ser testado. Isso gera uma documentação importante para a empresa contratante e desenvolvedora.

Testes de Aceitação, além de necessários são fundamentais para que se verifique se os requisitos do cliente estão sendo cumpridos, mas são insuficientes como ferramentas de verificação do software.

Arquitetura do Projeto

Para desenvolver um projeto de software, é necessário ter uma equipe definida, com o modelo a seguir. Usando o modelo por testes pois como o programa de software a ser desenvolvido é de funções matemáticas, pode-se testa-lo desacoplado do seu ambiente e buscá-lo otimizá-lo.

A programação por pares pode ser uma excelente escolha, pois um programador desenvolve e o outro pode corrigir os erros e otimizar as funções do software.


                        +-------------+
                        | Matemática  |
                     1  | Aplicada    |
                        +-------------+             
         
     +-----------+      +-------------+    +-------------+
     | Algebra   |      | Geometria   |    | Estatística |
     +-----------+      +-------------+    +-------------+
  1A | Funções   |   1B |Trigonometria| 1C | Matemática  |
     | Calculos  |      |             |    | Financeira  |
     +-----------+      +-------------+    +-------------+
     
     
                        +-------------+
                        | Interface   |
                      2 | Usuário     |
                        +-------------+

Um exemplo de teste apresenta abaixo. Desenvolver funções matemáticas: O código mostra o código de números n primos, podendo ser implementados em linguagem Java, C ou C++.

Esse código quando o programador olha ele não sabe as funções de cada parâmetro e variável do código e tem que testa-lo, não sendo uma boa prática de programação.

 while(p>0)
 { 
  d=2;
  while((n%d)!=0)
  {
   d+=1;
  }
  if(d==n)
  { printf("n: %d ", n); 
   p--;
  }
  n++;
      
 }
 if (n==p)
 printf("n: %d ", n);

O código ao ser Testado mostra n números primos, em uma função desacoplada do projeto, mas pode ser refatorado e otimizado.

public int numeroPrimo() {
 for(primo=2; (numero>0);primo++)
 { for(quantidade=2;((p%quantidade)!=0);quantidade++)
  { if(d==p)
   { printf("primo: %quantidade ", primo); 
    numero--;
   }
  }
  if (quantidade == numero)
  printf("numero: %primo ", numero);
 }
 return numeroPrimo()
 }

O código refatorado apresenta uma maior otimização, o programador, ou equipe de desenvolvimento após testar o programa deve otimizar seu códigos usando refatoração ou outros métodos necessários conforme a plataforma utilizada ou a exigência da empresa, os nomes dos métodos e variáveis devem ser descritos na forma que qualquer outro programador, desenvolvedor veja o código fonte e entenda o programa. Sendo que implantado através de métodos permite a utilização através da chamada de métodos, sem repetir códigos e utilizá-lo em partes posteriores do projeto.

Obedecendo o novo paradigma que é a orientação orientada a objetos.

MARTIN. Micah, MARTIN Robert C.; Princípios, Padrões e Práticas Ágeis em C#. Editora Bookman,2011.

Nenhum comentário:

Postar um comentário