algoritmos de estimação de distribuição aplicados à estimativa de software

4
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.

Upload: jose-correa-viana

Post on 05-Jul-2015

419 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Algoritmos de Estimação de Distribuição Aplicados à Estimativa de Software

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.

Page 2: Algoritmos de Estimação de Distribuição Aplicados à Estimativa de Software

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.

Page 3: Algoritmos de Estimação de Distribuição Aplicados à Estimativa de Software

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

Page 4: Algoritmos de Estimação de Distribuição Aplicados à Estimativa de Software

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.