Algoritmo de estimação de distribuição
aplicado à estimativa de software
José Corrêa Viana
Análise de Pontos de Função
A A...
Muitos algoritmos de inteligência computacional e meta-heurísticas podem ser
considerados probabilísticos, embora a difere...
Estratégia
O objetivo de processamento de informação do algoritmo PBIL é reduzir a memória
necessária para o algoritmo gen...
que define a velocidade de convergência do algoritmo. O papel da mutação é evitar que o vetor
tenha convergência rápida pa...
Próximos SlideShares
Carregando em…5
×

Algoritmos de Estimação de Distribuição Aplicados à Estimativa de Software

842 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
842
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
14
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Algoritmos de Estimação de Distribuição Aplicados à Estimativa de Software

  1. 1. Algoritmo de estimação de distribuição aplicado à estimativa de software José Corrêa Viana Análise de Pontos de Função A APF (Análise de Pontos de Função) é utilizada para medir a funcionalidade de um software, do ponto de vista do usuário, tendo foco no que o software faz e não como ele foi construído. Através dessa medição, é gerado o tamanho funcional do software, quando, juntamente com outras variáveis ou fórmulas, é possível estimar o esforço, o prazo e o custo envolvido no processo de desenvolvimento de um software [2]. Os requisitos funcionais serão a base para a contagem dos pontos de função não ajustados e os requisitos não funcionais serão utilizados para determinar o fator de ajuste que será aplicado nesses pontos de função não ajustados. O fator de ajuste é a aplicação de valores em relação às características gerais do sistema. O confronto dos pontos de função não ajustados e do fator de ajuste resulta nos pontos de função ajustados que expressam o tamanho do software [3]. A partir dos pontos de função não ajustados, deve-se determinar o peso do ambiente de desenvolvimento para se determinar os pontos de função ajustados. Esse peso é calculado a partir de características gerais do sistema, aplicando valores de zero a cinco para cada característica. O resultado desse processo são os pontos de função ajustados, levando em consideração as funções que serão medidas analisando a influência do ambiente para o desenvolvimento dessas funções. Essa medida pode ser armazenada e comparada posteriormente com projetos aparentemente idênticos, utilizando de experiências passadas para comparação e até agilizando uma nova contagem que possa vir a ser realizada [4]. Algoritmos Probabilísticos Algoritmos probabilísticos são os algoritmos que para realizar buscas em um espaço candidato, utilizam um modelo com base probabilística para encontrar soluções candidatas.
  2. 2. Muitos algoritmos de inteligência computacional e meta-heurísticas podem ser considerados probabilísticos, embora a diferença com algoritmos seja a utilização (em vez de implícita) explícita de ferramentas de probabilidade para resolução de um problema [5]. A imagem demonstra a modificação entre os Algoritmos Genéticos (à esquerda) e um EDA. Um dos ganhos observados em relação ao Algoritmo Genético é a realização de operações para manter a diversidade dos indivíduos. Algoritmos de Estimação de Distribuição – EDA Algoritmos de estimação de distribuição (EDA), também conhecidos como Algoritmos genéticos baseados na construção de modelos probabilísticos (PMBGA) são uma extensão do campo da Computação Evolucionária, onde soluções candidatas são geradas a partir de um modelo probabilístico. O critério para seleção de soluções candidatas à ótima basicamente são definidas a partir da base probabilística. Population-Based Incremental Learning – PBIL Inspiração Population-Based Incremental Learning é uma técnica de base populacional que está relacionada com o algoritmo genético e outros algoritmos evolucionários, que são inspirados pela teoria da evolução biológica por meio da seleção natural.
  3. 3. Estratégia O objetivo de processamento de informação do algoritmo PBIL é reduzir a memória necessária para o algoritmo genético. Isto é feito através da redução da população de soluções de um candidato a um vector único com um protótipo de atributos, a partir do qual soluções candidatas podem ser geradas e avaliadas. Atualizações e operadores de mutação também são realizados para o vector de protótipos, em vez do que as soluções de candidatos gerados. Pseudocódigo O Algoritmo 1 representa o pseudocódigo do algoritmo PBIL [1]. 1. P  inicializar vetor de probabilidade (cada posição = 0.5) 2. enquanto (gerações++ < limite) 3. para cada vetor i faça 4. para cada posição j faça 5. gerar Vi(j) a partir de P(j) 6. fim-para 7. avaliar f(Vi) 8. fim-faça 9. Vmax = max(f(Vi)) 10. atualizar P a partir de Vmax 11. se random(0,1] < Pmutate 12. efetuar mutação P 13. fim-se 14. fim-enquanto O algoritmo utiliza dois tipos de probabilidade. Uma probabilidade para atualização do percentual de seleção dos indivíduos e outra para a probabilidade de mutação do indivíduo [1]. A regra de atualização é dada por: Onde α é a taxa de aprendizagem e Vmax é o vetor com a maior avaliação. A regra de mutação é dada por Onde β é O valor que a mutação pode afetar no vetor de probabilidades. Durante a leitura do artigo, não foi possível encontrar valores pré-definidos para as variáveis, como a taxa de aprendizagem. O que [1] esclarece é que a taxa de aprendizagem é  *)()0.1(*)()( max jVjPjP ii   *]0.10.0[)0.1(*)()( randjPjP ii 
  4. 4. que define a velocidade de convergência do algoritmo. O papel da mutação é evitar que o vetor tenha convergência rápida para os extremos (0,0 ou 1,0). Conclusão O Algoritmo de estimação de distribuição é um novo algoritmo que busca reduzir os gastos computacionais realizados pelos Algoritmos Genéticos. Os EDA’s são aplicados em problemas NP-Difíceis, como o Problema do caixeiro viajante e o Bin packing, que são problemas estudados já por outros algoritmos. Um estudo relevante seria a busca de relações de dependência entre variáveis, o que determinaria qual variação do algoritmo pode ser aplicada ao problema. Uma dificuldade seria a representação do indivíduo no contexto do algoritmo. Como o mesmo não foi implementado aplicado ao problema proposto, não pode ser visível a compatibilidade do EDA ao problema de estimativa de software. A partir desse estudo inicial, é interessante aprofundar mais nas aplicações e na real capacidade de aplicação do EDA na área de estimativa de software, provendo uma ferramenta eficiente para criar prospecções e simulações para a equipe de desenvolvimento de software. Referências [1] S. BALUJA. Population-based incremental learning: A method for integrating genetic search based function optimization and competitive learning. Technical Report CMU-CS-94- 163, School of Computer Science, Carnegie Mellon University, Pittsburgh, Pennsylvania 15213, June 1994. [2] C. E. VAZQUEZ. Análise de Pontos de Função: medição, estimativas e gerenciamento de projetos de software. 8. ed. rev. São Paulo: Érica, 2008. [3] H. C. A. B. TAVARES; A. E. S. CARVALHO; J. F. B. CASTRO. Medição de Pontos por Função a Partir da Especificação de Requisitos, 1998. Disponível em: < http://www.inf.puc- rio.br/wer02/zip/Medicion_puntos%2820%29.pdf >. Acesso em: 06 de Maio de 2010. [4] C.A. DEKKERS. Desmistificando Pontos de Função: Entendendo a Terminologia.1998. Disponível em: <http://www.bfpug.com.br/Artigos/Desmistificando%20Pontos%20de%20Fun%C3%A7%C3%A 3o.pdf >. Acesso em: 13 de Maio de 2010. [5] J. BROWNLEE. Clever Algorithms. Nature-Inspired Programming Recipes. Revisão 2. 16 Jun. 2012. Cover Image, 2011.

×