Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 1 Tópicos Especiais em Engenharia de Software Gerenciamento de Projeto de Software Objetivos do curso Introduzir gerenciamento de projeto de software e descrever as principais características Discutir plano de projeto e plano de processo Mostrar como representacoes gráficas de atividades são usadas Discutir e apresentar gerenciamento de riscos em projetos de software Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 2 Agenda Introdução as Atividades de gerenciamento Planejamento de projeto Programação de projeto Gerenciamento de risco Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 3
Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 4 Gerenciamento de Projeto de Software O que é? Organizar, planejar e coordenar projetos de software gerenciamento Planejamento organizar planejar coordenar Estimativa Acompanhamento Cobrança Cumprimento Entrega de um produto com qualidade no tempo e custo estimado Gerenciamento de Projeto de Software O que é? Atividades que envolvem a garantia de entrega de um software dentro do tempo programado e custo estipulado e de acordo com os requisitos préestabelecidos Torna-se necessário porque o desenvolvimento de software está relacionado diretamente a restrições de orçamentos e cronograma definidas pela fábrica O GS diferencia um desenvolvimento profissional de um amador Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 5 Principais desafios Processo de construção de software não é prescritivo, por natureza. O software é um produto intangível. A tecnologia evolui muito rápido. O desenvolvimento de software não é padronizável Pessoas são inconstantes, temperamentais, possuem sentimentos e limitações. Clientes são pessoas que querem um produto real com um padrão de qualidade pré-estabelecido e sob uma tecnologia ativa. Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 6
Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 7 Quem é o gerente? Comunicação verbal Formação (base) Conhecer o contexto (domínio) Regras de negócio (business) Infra-estrutura Conhecimento técnico Poder de persuasão Comunicação escrita Gerenciamento Ferramentas de apoio Optimal Trace (Compuware) http://www.compuware.com/products/optimaltrace/ Gerenciamento de Requisitos Microsoft Office Project 2007 (Microsoft) http://office.microsoft.com/pt-br/project/default.aspx Gerenciamento de Projeto InStep Core Process Edition (microtool) http://www.microtool.de/instep/en/prod_pm_edition.asp Borland Tempo (Borland) http://www.borland.com/br/products/tempo Gerenciamento de Requisitos Gerenciamento de Versões Gerenciamento de Custos e Riscos Suporte aos processos CMMi Gerenciamento e Acompanhamento de Tempo Gerenciamento de Recursos Humanos (baseado em Habilidades) Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 8 Gerenciamento Atividades Básicas Escrita da proposta Planejamento e programação de projetos Custo do projeto Monitoramento e revisões Seleção e avaliação de pessoal Elaboração de apresentações e relatórios Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 9
Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 10 Planejamento de Gerenciamento Plano Guia referencial Estrutura do documento Introdução Maior tempo de atividade de gerenciamento Organização do projeto Análise de risco Evolução ao longo do projeto: da concepção a entrega do software Requisitos necessários de hardware e software Revisado sempre que dados são disponíveis Estrutura analítica Vários tipos de planos podem ajudar o processo de desenvolvimento: sempre voltados a questão de cronograma e custo Programação de projeto Mecanismo de monitoramento e geração de relatórios Planejamento Tipos de Planos Plano Qualidade Validação Descrição Descreve padrões e procedimentos de qualidade usados no projeto Descreve métodos, recursos e cronograma para validações Gerenciamento de Configuração Apresenta procedimento e estrutura para o gerenciamento de configurações Manutenção Prevê requisitos de sistema para manutenção, custos para manutenção e esforço de trabalho. Desenvolvimento de Pessoal Aponta qual o plano para desenvolvimento e evolução de pessoal (recurso) Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 11 Organização das Atividades Atividades deveriam ser organizadas a produzir resultados estratégicos e tangíveis ao julgamento do processo Pontos pertinentes para medição Necessidade de Marcos como base para definição de atividades Produtos ou versões são resultados que podem ser entregues aos clientes resultados finais para os clientes Produtos Milestones são estados finais de atividades de projeto resultados finais internos Dependem do modelo e da gerencia de projeto São definidos a cada processo de software Milestones Exemplo: Marcos nos requisitos Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 12
Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 13 Milestones nos Requisitos ACTIVITIES Feasibility study Requirements analysis Prototype development Design study Requirements specification Feasibility report Requirements definition Evaluation report Architectural design Requirements specification MILESTONES Programação de Projeto Dividir o projeto em tarefas e estimar tempo e recursos necessários para completar cada tarefa A programação esta mais relacionada a atividade prática do gerente. Organizar tarefas concorrentemente fazendo um ótimo aproveitamento da força de trabalho Nesta etapa faz-se maior uso de ferramentas CASE Minimizar dependência entre tarefas procurando evitar atrasos causados por wait-state Sucesso altamente dependente da intuição e experiência do gerente Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 14 Fluxo de Atividade Identify activities Identify activity dependencies Estimate resources for activities Allocate people to activities Create project charts Software requirements Activity charts and bar charts Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 15
Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 16 Gerenciamento de Pessoal Encontrar o pessoal ideal é uma tarefa difícil Orçamento limitado Pessoal com experiência apropriada indisponível Evolução de habilidade como política organizacional Gerentes têm que conviver com este problema especialmente quando existe uma deficiência internacional técnica Principais Dificuldades Estimar a dificuldade de uma tarefa é um trabalho difícil. Conseqüentemente seu custo e esforço também (implicações empíricas) A produtividade não é proporcional ao número de pessoas envolvidas no trabalho Adicionar pessoas no projetos em execução também ocasiona atrasos (communication overheads) O inesperado sempre vai acontecer. Esteja preparado para eventualidades (plano de gerência) Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 17 Diagrama de Barras e Rede de Atividades Notações gráficas para ilustrar os cronogramas do projeto Mostra o projeto decomposto em atividades Tarefas devem ser pequenas. Entre uma ou duas semanas, é o recomendado Rede de Atividade apresenta dependências entre tarefas e caminhos críticos Diagramas de Barra mostra o cronograma combinado com a linha do tempo (calendário) start finish Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 18
Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 19 Dependência e duração de Atividades Tarefa Duração (days) dependência milestone 8 15 15 10 T5 10, M2 T6 5, M3 T7 20 T8 25 M5 15, T6 M4 0 15 T5, T7 M7 1 7 M6 2 10 1 M8 Rede de Atividade 14/7/99 15 days 8 days 15 days 4/7/99 25/7/99 M3 5 days T6 4/8/99 M4 25/8/99 M6 start 15 days 20 days T7 7 days 1 10 days 25/7/99 M2 10 days T5 11/8/99 M7 15 days 5/9/99 M8 18/7/99 M5 0 10 days 2 25 days T8 Finish 19/9/99 Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 20 Diagrama de Barra de Atividade 4/7 11/7 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9 Start T7 M5 T8 M3 M2 T6 T5 M4 M7 0 M6 1 M8 2 Finish Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 21
Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 22 Alocação de Pessoal 4/7 11/7 18/7 25/ 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9 Fred Jane Anne Jim Mary T7 T8 T6 T5 0 1 2 Exemplos de Tarefas Preparação do ambiente (contas, banco e CVS) Definição da arquitetura Projeto do sistema negócio Projeto de interface Projeto de modelo de dados Construção de planos de teste Execução de teste de carga Execução de teste unitário Execução de teste funcional Execução teste integrado Projeto dos módulos (incremental) Desenvolvimento camada lógica Desenvolvimento interface gráfica com usuário Implantação do sistema Detalhamento dos requisitos Geração de versão fechamento de pacote Tópicos Especiais em Engenharia de Software andre@faccamp.br Ian Sommerville 2000 - Software Engineering, 6th edition Slide 23