Otimizando a Engenharia de Software
Roteiro Introdução Técnicas de Otimização + Engenharia de Software Contextualização Estado da Arte
Planejamento de Releases Contextualização Estado da Arte
Abordagem Proposta Experimentos Perguntas A New Approach to the Software Release Planning
2
Introdução Evolução da Engenharia de Software Disciplina recente Evolução e propagação da tecnologia Automatização de tarefas é uma tendência
Planejamento de Releases Fase de planejamento do desenvolvimento Complexidade, riscos, incertezas Geralmente é feito de forma ad hoc
Técnicas de otimização
Automatização de tarefas Menor margem de erro Desenvolvimento menos dependente de um indivíduo O engenheiro de software fica responsável por guiar a tarefa, em vez de executá-la A New Approach to the Software Release Planning
3
Search-Based Software Engineering
Problema: Como adaptar os problemas às técnicas de otimização? Realístico Confiável Eficaz / Eficiente A New Approach to the Software Release Planning
4
Search-Based Software Engineering
Problemas aos quais SBSE tem sido aplicada:
Testes de Software Estimação de Custos Refatoração de Software Design de Software Linguagens de Programação Planejamento de Releases Qualidade de Software Gerência de Projetos Programa de Simulação de Projetos (PSP) Build-or-Buy Alocação de Recursos A New Approach to the Software Release Planning
5
Search-Based Software Engineering
A New Approach to the Software Release Planning
6
Planejamento de Releases Desenvolvimento iterativo e incremental Planejamento dos Releases (Liberações) Custos Prioridades dos clientes Interdependência de requisitos Alocação de recursos Gerenciamento de riscos Mudança de Requisitos (replanejamento)
A New Approach to the Software Release Planning
7
Planejamento de Releases [Karlsson and Ryan 1997] / [Jung 1998]
Priorização de Requisitos NP-hard
[Bagnall et al. 2001]
“The Next Release Planning” Só faz o planejamento do próximo release
[Greer and Ruhe 2004]
Formulação mais completa e utilizável na prática.
[Zhang et al. 2007]
Versão multi-objetivo Minimizar custos Maximizar benefícios
Desconsidera aspectos básicos A New Approach to the Software Release Planning
8
Abordagem Proposta
Objetivo:
Formular e resolver o problema de Planejamento de Releases utilizando uma abordagem multi-objetivo, que seja aplicรกvel na prรกtica
A New Approach to the Software Release Planning
9
Técnicas de Otimização Objetivos Maximização/minimização de algum fator Ex: Minimizar o custo
Restrições Restrições impostas pelo problema Ex: Respeitar interdependências
Metaheurísticas: Técnicas de otimização genéricas Aplicáveis a problemas de alta complexidade Não garantem a melhor solução, mas geralmente
conseguem uma solução suficientemente boa em tempo hábil A New Approach to the Software Release Planning
10
Abordagens multi-objetivo Problemas de otimização podem ter mais de um objetivo a se otimizar, possivelmente conflitantes Geralmente apresentam mais de uma solução Vantagem: Possibilita maior discernimento acerca das soluções Exemplo: vale a pena melhorar um objetivo em
detrimento de outro(s)? A New Approach to the Software Release Planning
11
Abordagens multi-objetivo Pareto-Front Melhores soluções em relação aos múltiplos
objetivos
A New Approach to the Software Release Planning
12
O Problema Aspectos considerados Satisfação dos Clientes Priorização de Requisitos Interdependência entre Requisitos Recursos Limitados Gerenciamento de Riscos Mudança nos Requisitos e Replanejamentos Participação do Engenheiro de Software
A New Approach to the Software Release Planning
13
O Problema Formulação do problema
Requisitos: R= {r1, r2, ..., r|R|} Clientes: S = {s1, s2,..., s|S|} Releases: K = {k1, k2,..., k|K|} Recursos: P = {p1, p2, ..., p|P|} Cada cliente possui um peso Cada cliente tem uma prioridade para cada requisito Cada requisito tem um custo relativo a cada recurso Há um valor disponível para cada recurso em cada iteração Cada requisito tem um risco associado Quanto mais tarde implementar o requisito, maior o risco
Cada requisito deve ser implementado em um release ou não
implementado A cada iteração, um novo planejamento pode ser realizado A New Approach to the Software Release Planning
14
O Problema Objetivos: Maximizar a satisfação dos clientes Minimizar os riscos do projeto
Sujeito a: Quantidade de recursos disponíveis em cada iteração Interdependência entre requisitos
A New Approach to the Software Release Planning
15
O Problema Maximizar:
Minimizar:
Sujeito a:
A New Approach to the Software Release Planning
16
Abordagem utilizada NSGA-II [Deb et al. 2002]
Non-dominated Sorting Genetic Algorithm II
Algoritmo
População inicial randômica A cada geração, soluções são ordenadas pelo nível de dominância Considera a granularidade (crowding distance) Usa elitismo
[Deb et al. 2002] A New Approach to the Software Release Planning
17
O Experimento 19 requisitos 5 releases 5 clientes
Cada qual com suas prioridades em relação aos requisitos
3 recursos
Cada release com uma quantidade limitada. Total disponível no projeto menor que o custo total de todos os requisitos
Interdependência entre requisitos:
A New Approach to the Software Release Planning
18
Resultados
A New Approach to the Software Release Planning
19
Resultados
A New Approach to the Software Release Planning
20
Resultados Compara莽茫o NSGA-II x Rand么mico Conforme esperado, a abordagem proposta superou o algoritmo
rand么mico
A New Approach to the Software Release Planning
21
Resultados Comparação NSGA-II x ad hoc Resultados obtidos por 5 profissionais experientes
A New Approach to the Software Release Planning
22
Conclusão e Trabalhos Futuros Conclusão Nova formulação para o problema do planejamento de releases
Multi-objetivo Situações práticas do cotidiano Participação do engenheiro de software e replanejamentos Experimentos
Validação com dados artificiais A comparação com resultados de seres-humanos, mostrou evidências que a abordagem pode possibilitar grandes ganhos.
Trabalhos Futuros Aplicação em Projetos Reais Aperfeiçoamento da Formulação Utilização de outras metaheurísticas A New Approach to the Software Release Planning
23
Perguntas?
A New Approach to the Software Release Planning
24