Engenharia de Software II Aula 22 http://www.ic.uff.br/~bianca/engsoft2/ Aula 22-07/07/2006 1
Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software Métricas para software Gestão de projetos de software Conceitos (Cap. 21) Métricas (Cap. 22 Seções 22.1 e 22.2) Estimativas (Cap. 23 Seções 23.1 a 23.7) Cronogramação (Cap. 24) Gestão de risco Gestão de qualidade Gestão de modificações Reengenharia e engenharia reversa Aula 22-07/07/2006 2
Definição de um Conjunto de Tarefas O modelo de processo escolhido é preenchido por um conjunto de tarefas. Tarefas de trabalho de engenharia de software Marcos de referência Produtos de trabalho Para desenvolver um cronograma, o conjunto de tarefas precisa ser distribuído pelo prazo do projeto. Nenhum conjunto de tarefas é apropriado para todos os tipos de projeto. O modelo de processo deve definir uma coleção de conjuntos de tarefas. Aula 22-07/07/2006 3
Definição de um Conjunto de Tarefas Tipos de projeto de software: Desenvolvimento conceitual Exploram uma novo conceito de negócio ou tecnologia. Desenvolvimento de novas aplicações Iniciados a partir de um pedido específico do cliente. Aperfeiçoamento de aplicações Quando um software existente passa por modificações significativas. Manutenção de aplicações Corrigem, adaptam ou ampliam um software existente. Reengenharia Reconstruir um sistema existente no seu todo ou em parte. Outros fatores influenciam o conjunto de tarefas: Tamanho, número de usuários, criticalidade, estabilidade dos requisitos, maturidade da tecnologia, desempenho, etc. Aula 22-07/07/2006 4
Exemplo de Conjunto de Tarefas Tarefas macroscópicas para um projeto de desenvolvimento conceitual: Determinação de escopo conceitual Determina o escopo global do projeto Planejamento conceitual preliminar Estabelece a capacidade de a organização assumir esse trabalho de desenvolvimento. Avaliação do risco da tecnologia Avalia o risco associado à tecnologia a ser implementada. Prova de conceito Demonstra a viabilidade da nova tecnologia Implementação conceitual Implementa a representação conceitual de um modo que possa ser revisado por um cliente e possa ser usado para marketing. Reação do cliente Realimentação sobre o novo conceito. Aula 22-07/07/2006 5
Exemplo de Refinamento de Tarefa Tarefa: Determinação de escopo conceitual. Identificar necessidades, benefícios e clientes em potencial. Definir entrada/saída/controle para a aplicação. Definir o comportamento de cada função principal. Isolar os elementos da tecnologia a ser implementados em software. Pesquisar a disponibilidade de software existente. Definir viabilidade técnica. Fazer estimativa rápida de tamanho. Criar uma Definição de Escopo. Aula 22-07/07/2006 6
Definição de uma Rede de Tarefas Tarefas e subtarefas têm interdependências baseadas na sua seqüência. Quando mais de uma pessoa faz parte do projeto, tarefas devem ser executadas em paralelo. As tarefas devem ser coordenadas para que sejam completadas quando tarefas posteriores precisarem do seu produto de trabalho. Aula 22-07/07/2006 7
Definição de uma Rede de Tarefas Uma rede de tarefas é uma representação gráfica do fluxo de tarefas de um projeto. A rede serve como uma precursora do cronograma. Determinação do escopo conceitual Avaliação do risco tecnológico a Implementação do conceito a Planejamento conceitual Avaliação do risco tecnológico b Prova do conceito Implementação do conceito b Integração a,b,c Avaliação do risco tecnológico c Implementação do conceito c Reação do cliente Aula 22-07/07/2006 8
Cronogramação A cronogramação de um projeto de software não difere muito da cronogramação de qualquer esforço de engenharia. Técnicas gerais de cronogramação podem ser aplicadas. PERT = Program Evaluation and Review Technique. CPM = Critical Path Method. Aula 22-07/07/2006 9
Cronogramação Ambas as técnicas PERT e CPM São guiadas por: Estimativas de esforço Decomposição da função do produto Seleção de modelo de processo e conjunto de tarefas adequado Decomposição de tarefas Fornecem métodos quantitativos para: Determinar o caminho crítico Cadeia de tarefas que determina a duração do projeto. Estabelecer estimativas de tempo mais prováveis para tarefas individuais aplicando modelos estatísticos. Calcular limites de tempo que definem uma janela de tempo para uma tarefa específica. Aula 22-07/07/2006 10
Gráfico de Tempo Gráfico de Tempo = Gráfico de Gantt Permite a visualização da duração de tempo das tarefas. Todas as tarefas são listadas na coluna mais à esquerda Barras horizontais indicam a duração de cada tarefa. Quando várias barras ocorrem ao mesmo tempo, o paralelismo fica implícito. Os losangos indicam marcos de referência. Aula 22-07/07/2006 11
Exemplo: Gráfico de Tempo Aula 22-07/07/2006 12
Tabela de Projeto A maioria das ferramentas de cronogramação de projetos produz tabelas de projeto. Lista tabular de todas as tarefas, de suas datas iniciais e finais, planejadas e reais, além de outras informações. Usadas em conjunto com os gráficos de tempo, as tabelas permitem ao gerente acompanhar o progresso. Aula 22-07/07/2006 13
Acompanhamento do Cronograma O cronograma é um roteiro para o gerente de projeto de software. O acompanhamento do projeto pode ser feito de diversas maneiras: Conduzir reuniões periódicas sobre o estado do projeto. Cada membro da equipe relata o progresso e problemas. Avaliar os resultados de todas as revisões conduzidas. Determinar se os marcos de referência foram atingidos na data prevista. Comparar a data de início real com a data de início prevista pra cada tarefa. Reunir os profissionais para uma avaliação subjetiva do progresso. Usando análise do valor agregadao, avaliar o progresso quantitativamente. Aula 22-07/07/2006 14
Acompanhamento do Cronograma Quando ocorrem problemas, o gerente de projeto deve exercer controle pra resolvê-los o mais cedo possível. Diagnosticar o problema Alocar recursos adicionais Redistribuir o pessoal Redefinir o cronograma Técnica de encaixotamento de tempo Uma caixa de tempo é colocada em volta de cada tarefa. Quando a tarefa passa do tempo máximo, o trabalho é interrompido e a tarefa seguinte começa. O restante da tarefa fica para o próximo incremento Ao invés de ficar empacado, o projeto prossegue em direção à data de entrega. Aula 22-07/07/2006 15
Acompanhamento em Projetos OO O paralelismo de tarefas no projeto OO, torna o acompanhamento do projeto difícil. O gerente pode encontrar dificuldades em definir marcos de referência significativos. Aula 22-07/07/2006 16
Acompanhamento em Projetos OO Os seguintes marcos principais são utilizados: Análise OO completada Todas as classes e sua hierarquia foram definidas e revisadas. Atributos e operações de classe foram definidos e revisados. Relacionamento de classes foram estabelecidos e revisados. Um modelo comportamento for criado e revisado. Classes reusáveis foram anotadas. Projeto OO completado O conjunto de subsistemas foi definido e revisado. Classes foram alocadas a subsistemas e revisadas. A alocação de tarefas foi estabelecida e revisada. Responsabilidades e colaborações foram identificadas. Classes de projeto foram criadas e revisadas. O modelo de comunicação foi criado e revisado Aula 22-07/07/2006 17
Acompanhamento em Projetos OO Programação OO completada Cada nova classe foi implementada em código a partir do modelo de projeto. Classes extraídas de uma biblioteca de reuso foram implementadas. Protótipo ou incremento foi construído. Teste OO completado A correção e completude dos modelos de análise e projeto OO foram revisadas. A rede de responsabilidade-colaboração de classes foi desenvolvida e revisada. Casos de teste foram projetados e os teste intra-classe foram conduzidos para cada classe. Casos de teste foram projetados, o teste de integração foi completado e as classes estão integradas. Testes de sistema foram completados. Aula 22-07/07/2006 18
Análise do Valor Agregado É uma técnica quantitativa para avaliar o progresso do projeto. Fornece uma escala comum de valor para cada tarefa, independentemente do tipo de trabalho que está sendo realizado. Avalia a porcentagem de execução do projeto. Aula 22-07/07/2006 19
Análise do Valor Agregado 1. O custo orçado do trabalho cronogramado (BCWS) é determinado para tarefa. BCWS i é o esforço planejado para a tarefa i em pessoa-mês. BCWS é a soma dos valores BCWS i de todas as tarefas que deveriam ter sido completadas até um dado momento. 2. Os valores BCWS i são somados para derivar o orçamento na conclusão do projeto (BAC). BAC = Σ (BCWS i ) para todas as tarefas i. 3. O valor do custo orçado do trabalho realizado (BCWP) é calculado. Soma dos valores BCWS de todas as tarefas de trabalho que foram efetivamente completadas. Aula 22-07/07/2006 20
Análise do Valor Agregado Índice de desempenho do cronograma SPI = BCWP/BCWS SPI próximo de 1,0 indica execução eficiente do cronograma do projeto. Variância do cronograma SV = BCWP - BCWS Porcentagem programada para conclusão = BCWS/BAC Porcentagem completada = BCWP/BAC Aula 22-07/07/2006 21
Análise do Valor Agregado Custo real do trabalho realizado (ACWP) Soma do esforço realmente despendido nas tarefas que foram completadas. Diferente de BCWP que é o esforço orçado. Índice de desempenho do custo CPI = BCWP/ACWP CPI próximo de 1,0 indica que o projeto está dentro do orçamento definido. Variância do custo CV = BCWP - ACWP. Indicação absoluta das economias ou dos excessos de custo em um estágio específico do projeto. Aula 22-07/07/2006 22