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 Planejamento conceitual Avaliação do risco tecnológico a Avaliação do risco tecnológico b Implementação do conceito a Prova do conceito Avaliação do risco tecnológico c Aula 22 - 07/07/2006 Implementação do conceito b Implementação do conceito c Integração a,b,c Reação do cliente 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. BCWSi é o esforço planejado para a tarefa i em pessoa-mês. BCWS é a soma dos valores BCWSi de todas as tarefas que deveriam ter sido completadas até um dado momento. 2. Os valores BCWSi são somados para derivar o orçamento na conclusão do projeto (BAC). BAC = Σ (BCWSi) 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