ALOCAÇÃO DE RECURSOS EM PROJETOS DE SOFTWARE
1
Search-Based Software Engineering Engenharia de Software
Search-Based Software Engineering Otimização
Problema: Como adaptar os problemas às técnicas de
otimização?
Realístico Confiável Eficaz / Eficiente 2
Alocação de Recursos O problema:
Realizar a alocação de recursos em projetos de software Visando otimizar algum(ns) objetivo(s), tais como: minimizar custos e minimizar tempo. Considerando as restrições existentes, como os recursos disponíveis e as interdependência entre tarefas
Enquadra-se no processo “Desenvolvimento do cronograma” do
PMBoK
Contribuições:
Nova formulação Abordagem multi-objetivo Validação com dados reais Comparação com resultados de profissionais Análises de sensibilidade (?) Ferramenta (?) 3
Estado Atual do Trabalho Anteriores:
Fase de pesquisa e estudo Formulação inicial do problema Formulação “definitiva” Implementação (jMetal)
Atual: Aperfeiçoamento em busca de melhores soluções Exportação de dados para programas como MS Project Testes Iniciais com dados sintéticos (sem coleta de resultados)
Próximas Experimentos e análise de resultados
Com dados sintéticos Com dados reais de projetos passados (Synergia – UFMG) Comparação com seres humanos Elaboração da dissertação 4
Formulação Aspectos:
Recursos disponíveis (recursos humanos) Skills (habilidades) Tarefas a serem executadas Interdependências entre tarefas Horas-extra Treinamentos Deadlines Linha de tempo (projeto dividido em espaços de tempo; macros) Planejamento multi-projetos Margens de erro (de estimativa) Importância das tarefas Overhead de comunicação (Brooks’ law) Curva de aprendizado durante execução da tarefa Possibilidade de atualização dinâmica (??) Possibilidade restrições definidas pelo gerente (??) 5
Formulação
Recursos
Tarefas
Dedicação diária (em horas) Disponibilidade (períodos nos quais estará disponível) Salário (empregados) Custo de hora-extra (empregados) Custo de hora trabalhada (contratados) Skills (habilidades individuais e nível de proficiência) Experiência (nível de experiência na execução da tarefa)
Esforço estimado (homens-hora) Nível de importância Deadline (se existir) Interdependência entre tarefas Skills necessários
Recurso i executa tarefa j no tempo t
Espaços de tempo
Os projetos são divididos em espaços de tempo atômicos. Em cada espaço de tempo há equipes (subconjunto dos recursos) para executar as tarefas O tamanho do espaço de tempo é definido pelo gerente (ex: um dia, uma semana, um mês). Cada passagem entre dois espaços de tempo consecutivos pode ser vista com uma macro ou submacro do projeto.
6
Resultado da Alocação:
7
Objetivos
8
Restrições
9
Implementação Framework jMetal NSGA-II
Dificuldade: Qualidade das soluções Restrições desrespeitadas Soluções demasiadamente aleatórias; ruins.
Soluções Heurísticas para melhorias Aplicadas aleatoriamente a cada nova geração Completude, skills, continuidade, hora-extra, inderdependências Modificações no algorítmo População inicial somente com restrições respeitadas Modificação dos operadores de crossover e mutação 10
Próximos Passos Término da implementação Experimentos Dados sintéticos Dados de projetos reais Comparação com resultados humanos
Coleta, análise e apresentação dos resultados Gráficos multi-objetivo Diagramas Gantt Softwares de planejamento (ex: MS Project)
Outros Análises de sensibilidade Abordagem dinâmica Protótipo de ferramenta (GUI, entrada de dados, exibição de resultados) 11
Perguntas?
12