SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
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.
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.
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 
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.

Mais conteúdo relacionado

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

Machine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonMachine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonGabriel Schade Cardoso
 
Guia completo para definição de estatística de modelos e algoritmos de machin...
Guia completo para definição de estatística de modelos e algoritmos de machin...Guia completo para definição de estatística de modelos e algoritmos de machin...
Guia completo para definição de estatística de modelos e algoritmos de machin...Geanderson Lenz
 
Apresentação tcc - Leticia Moretti e Rafael Azevedo
Apresentação tcc - Leticia Moretti e Rafael AzevedoApresentação tcc - Leticia Moretti e Rafael Azevedo
Apresentação tcc - Leticia Moretti e Rafael Azevedolemorettiribeiro
 
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Benchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenhoBenchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenhoIntel Software Brasil
 
Gestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesGestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesRogerio P C do Nascimento
 
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Opencadd Advanced Technology
 
59 algoritmosgeneticos(1)
59 algoritmosgeneticos(1)59 algoritmosgeneticos(1)
59 algoritmosgeneticos(1)arapido
 
Cap 1
Cap 1Cap 1
Cap 1UFRJ
 
Machine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NETMachine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NETRenato Haddad
 
Teste de Desempenho, muito além do JMeter
Teste de Desempenho, muito além do JMeterTeste de Desempenho, muito além do JMeter
Teste de Desempenho, muito além do JMeterJuliano Santos
 
Análise e desenvolvimento de algoritmo para operação em bolsa de valores base...
Análise e desenvolvimento de algoritmo para operação em bolsa de valores base...Análise e desenvolvimento de algoritmo para operação em bolsa de valores base...
Análise e desenvolvimento de algoritmo para operação em bolsa de valores base...Rodrigo Ferreira
 

Semelhante a Algoritmos de Estimação de Distribuição Aplicados à Estimativa de Software (20)

Machine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonMachine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & Python
 
Guia completo para definição de estatística de modelos e algoritmos de machin...
Guia completo para definição de estatística de modelos e algoritmos de machin...Guia completo para definição de estatística de modelos e algoritmos de machin...
Guia completo para definição de estatística de modelos e algoritmos de machin...
 
Computacao
ComputacaoComputacao
Computacao
 
Apresentação tcc - Leticia Moretti e Rafael Azevedo
Apresentação tcc - Leticia Moretti e Rafael AzevedoApresentação tcc - Leticia Moretti e Rafael Azevedo
Apresentação tcc - Leticia Moretti e Rafael Azevedo
 
C# 8 e ML.NET
C# 8 e ML.NETC# 8 e ML.NET
C# 8 e ML.NET
 
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Benchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenhoBenchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenho
 
Artigo
ArtigoArtigo
Artigo
 
Medindo O Desempenho De Processadores
Medindo O Desempenho De ProcessadoresMedindo O Desempenho De Processadores
Medindo O Desempenho De Processadores
 
Gestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesGestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e Planificações
 
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
 
59 algoritmosgeneticos(1)
59 algoritmosgeneticos(1)59 algoritmosgeneticos(1)
59 algoritmosgeneticos(1)
 
Logica Programação. ...
Logica Programação. ...Logica Programação. ...
Logica Programação. ...
 
Sino
SinoSino
Sino
 
Cap 1
Cap 1Cap 1
Cap 1
 
Machine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NETMachine Learning e Artificial Intelligence para desenvolvedores .NET
Machine Learning e Artificial Intelligence para desenvolvedores .NET
 
Teste de Desempenho, muito além do JMeter
Teste de Desempenho, muito além do JMeterTeste de Desempenho, muito além do JMeter
Teste de Desempenho, muito além do JMeter
 
Análise e desenvolvimento de algoritmo para operação em bolsa de valores base...
Análise e desenvolvimento de algoritmo para operação em bolsa de valores base...Análise e desenvolvimento de algoritmo para operação em bolsa de valores base...
Análise e desenvolvimento de algoritmo para operação em bolsa de valores base...
 
Mini aula de teste de software
Mini aula de teste de softwareMini aula de teste de software
Mini aula de teste de software
 
Medição de software
Medição de softwareMedição de software
Medição de software
 

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

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