sexta-feira, 23 de novembro de 2012

Este documento contém uma série de notas sobre teste de software, incluindo: 

Teste Funcional
  • Critério - Particionamento por Classes de Equivalência
  • Critério - Análise de Valor Limite
  • Critério - Teste Funcional Sistemático
  • Critério - Grafo de Causa-Efeito 
Teste Estrutural
  • Grafo de Fluxo de Controle
  • Grafo de Fluxo de Dados 
(novo) Teste de Mutação
(novo) Teste Baseado em Modelos
As notas podem ser vistas aqui!

terça-feira, 13 de novembro de 2012

 A busca pela melhoria de performance pode ser alcançada por diversas técnicas, cuja a técnica de programação concorrente já é bastante consolidada e utilizada no mercado. Entretanto, adicionar concorrência possui um custo adicional de conhecimento e a escolha da tecnologia pode ser benéfica ou um entrave na utilização dessa estratégia. Diversos estudos reveleram que o OpenMP é um dos frameworks mais fáceis de serem utilizados, porém ainda há dúvidas sobre a sua performance em relação aos outros. Este trabalho apresenta os resultados através da mudança do paradigma sequencial para a programação concorrente, considerando o aumento do número de threads e diferentes formas de balanceamento de carga entre os processadores. Por fim, para conhecer de fato a eficiência do OpenMP, este estudo realizou uma implementação híbrida utlizando três estratégias de melhoria de perfomance: (i) programação concorrente, (ii) vetorização intrísica usando extensões SSE3 do processador Intel e (iii) técnicas de blocagem para medir o speedup e eficiência em comparação aos frameworks Pthreads e Java Threads.



sexta-feira, 2 de novembro de 2012

Dada uma mochila de tamanho M e N itens com peso P ={P1, P2...Pn} e Valores V = {V1, V2...Vn}, encontre um vetor de X elementos contidos e não contidos na mochila, onde P.X <= M e V.X é o valor máximo possível.

Programa Mochila {

//itens possuem o mesmo índice para pesos e valores e possui índices e zeros no início.
Int M = 11; 
Int itens[][2] = {{0,0},{1,0},{ 2,0},{3,0}} ; 
int pesos[] = {1, 2, 4, 8}; 
double valores[] = {10, 30, 41, 80}
;
int itens[][] = ObtemItensdaMochila(M, itens, pesos, valores);
Para i=0 até itens[0].tamanho-1 faça
            Para j=0 até itens[1].tamanho-1 faça
                Imprima itens[i][j]; //Imprime índice  + “0” ou “1”
            Fim-Para
Fim-Para

int[][] ObtemItensdaMochila (int M, int[] itens, int[] pesos, double[] valores);
//Coluna 0 – Peso, Coluna 1 – Valores
double mochila[][] = itens.tamanho, 2;
//Atribui valores iniciais
mochila[0,0] = pesos[pesos.tamanho-1]; mochila[0,1] = valores[valores.tamanho-1];
//Coluna 0 – Peso, Coluna 1 – Valores
double mochilaItens[][] = itens.tamanho, 2;
mochilaItens[0,0] = mochila[0,0]; mochilaItens[0,1] = mochila[0,1];
int elemento = 0; int j = 0;
Para i=itens[0].tamanho-2 <=0 faça {
 Se (pesoAtual(mochila) + pesos[i] <= M)
        elemento  = elemento+1;
                      mochila[elemento,0] = pesos[i];
                      mochila[elemento,1] = valores[i];
                       Se (valorAtual(mochila) > mochilaItens[j,1])
                               j = j+1;
                               mochilaItens[j,0] = mochila[elemento,0] + mochilaItens[j,0];
                               mochilaItens[j,1] = mochila[elemento,1] + mochilaItens[j,1];
itens[i,1] = 1;
                    Fim-Se
               Senão
                     elemento = elemento-1;
                Fim-Se
 Fim-Para
retorne itens;}

//verifica peso atual da mochila
int pesoAtual(double mochila[][]){
int peso = 0;
Para i=0 até mochila[0].tamanho-1 faça
peso = peso + mochila[i,0];
retorne peso; }

//verifica valor atual da mochila
double valorAtual(double mochila[][]){
double valor = 0;
Para i=0 até mochila[1].tamanho-1 faça
                valor = valor + mochila[i,1];
retorne valor;}

Inscreva-se

Creative Commons 3.0. Tecnologia do Blogger.

Teste a Velocidade da Internet

Siga-me

Curta