Aula 2 Gerência de Projeto no Contexto do Modelo de Maturidade e Capacidade de Software - CMM Agradecimentos Ao Prof. Alexandre Vasconcelos por permitir a cópia e utilização das transparências do restante desta aula. © Fabio Silva - DI-UFPE 2 Objetivos Introduzir os principais conceitos sobre o modelo de maturidade e capacidade do processo de software - CMM Situar a Gerência de Projeto de Software no contexto do CMM Conteúdo – conceitos iniciais – descrição do CMM – projeto de software: planejamento e execução © Fabio Silva - DI-UFPE 3 Aplicando TQM (Total Quality Management) ao Software Organização Projeto A Projeto X Projeto B TQM hardware software • Projeto C CMM O processo de melhoria se aplica em todo o contexto do negócio - o CMM se aplica especificamente ao software. © Fabio Silva - DI-UFPE Conceitos Fundamentais Processo Capacidade Performance e Maturidade do Processo de Software © Fabio Silva - DI-UFPE O que é um processo? processo - uma sequência de passos realizados para um determinado propósito. (IEEE) processo de software - um conjunto de atividades, métodos, práticas e tecnologias que as pessoas utilizam para desenvolver e manter software e produtos relacionados. (CMM) © Fabio Silva - DI-UFPE Um Processo imaturo • • • • • • • • Ad hoc: processo improvisado por profissionais e gerências. Não é rigorosamente seguido e o cumprimento não é controlado. Altamente dependente dos profissionais atuais. Baixa visão do progresso e da qualidade. A funcionalidade e a qualidade do produto podem ficar comprometidas para que prazos sejam cumpridos. Arriscado do ponto de vista do uso de novas tecnologias Custos de manutenção muito altos. Qualidade difícil de se prever. © Fabio Silva - DI-UFPE Anatomia do Caos A maioria das organizações de software estão “apagando incêndios” o fogo não está sob controle constantemente reagindo (e não agindo pró-ativamente) não há tempo para melhoria os “ bombeiros” se queimam as cinzas podem voltar a se incendiar mais tarde sua única forma de controle - prevenção de incêndio © Fabio Silva - DI-UFPE Um Processo maduro Coerente com as linhas de ação, o trabalho é efetivamente concluído. Definido, documentado e melhorando constantemente. Com o apoio visível da alta administração e outras gerências. Bem controlado - fidelidade ao processo é objeto de auditoria e de controle. São utilizadas medições do produto e do processo. Uso disciplinado da tecnologia. © Fabio Silva - DI-UFPE Definição Operacional - CMM Nível de Maturidade Indica Capacidade Contém Atinge Áreas-chave de Processos Objetivos Organizadas em Enfatiza Características Comuns Implementação Contêm Descreve Infraestrutura Atividades © Fabio Silva - DI-UFPE Praticas Chave 5 Níveis de Maturidade Processo em otimização Processo predizível Processo standard e consistente Processo disciplinado © Fabio Silva - DI-UFPE Gerenciado Definido Repetitível Inicial Otimizando Processos documentados, standard e integrados Processos estabelecidos por experiências anteriores Processo caótico e ad hoc Medidas de qualidade Evolução do processo Nível 5 Gerenciado 4 Otimizado 3 Definido 2 Inicial 1 Repetível © Fabio Silva - DI-UFPE Características do processo Melhoria do processo é institucionalizada. Produto e processo são controlados quantitativamente. Engenharia de software e gerenciamento de processos definidos e integrados. Sistema de gerenciamento de projetos em vigor; desempenho é repetido. Processo é informal e imprevisível. Áreas-chave de processo (KPA) Nível 5 - OTIMIZADO Nível 4 - GERENCIADO Nível 3 - DEFINIDO Nível 2 - REPETITIVO © Fabio Silva - DI-UFPE Nível 1 - INICIAL Gerência de Evolução de Processos Gerência de Evolução da Tecnologia Prevenção de Defeitos Gerência de Qualidade de Software Gerência Quantitativa de Processos Revisão por Parceiros Coordenação entre grupos Engenharia de Produto de Software Gerência de Software Integrada Programa de Treinamento Definição do Processo da Organização Foco no Processo da Organização Gerência de Configuração de Software Garantia de Qualidade de Software Gerência de Contrato de Software Supervisão e Acompanhamento de Projeto de Software Planejamento de Projeto de Software Gerência de Requisitos 13 Áreas-chave de processo do CMM (KPAs) • Identificam um grupo de atividades correlatas que, quando realizadas coletivamente, alcançam um conjunto de metas consideradas importantes na implementação da competência do processo. • Definidas para serem alocadas em um único nível de maturidade. • Identificam as questões que devem ser abordadas para se alcançar um nível de maturidade. • São definidas 18 KPAs no CMM. © Fabio Silva - DI-UFPE Áreas-chave de processo (KPAs) - Estrutura KPA Common features Metas Compromisso para realizar Medição e análise Atividades realizadas Capacidade de realizar © Fabio Silva - DI-UFPE Verificar implementação Metas • • • • Resume as práticas-chave das áreas-chave de processo. São consideradas importantes para intensificar o processo de competência para aquele nível de maturidade. Podem ser usadas para orientar organizações e equipes de avaliação para realizarem avaliações na implementação das KPAs. Cada prática-chave mapeia uma ou mais metas. © Fabio Silva - DI-UFPE Características comuns Utilizadas para organizar as práticas-chave em cada KPA Características comuns são: • compromisso para realizar • capacidade para realizar • atividades realizadas • medições e análises • verificar a implementação © Fabio Silva - DI-UFPE Práticas-chave • • • • Estabelece as políticas fundamentais, procedimentos e atividades para uma área-chave de processo (KPA). Descreve o “que” deve ser feito, embora elas não devam ser interpretadas enquanto “como” definitivo. São organizadas por característica comum. Existem 316 práticas-chave no CMM . © Fabio Silva - DI-UFPE CMM Nível 2 - Repetível Áreas-chave de processo (KPA) Nível Repetível Repetível (2) Gerenciamento da Configuração de Software Garantia da Qualidade de Software Gerenciamento de Subcontrato de Software Acompanhamento de Projeto de Software Planejamento de Projeto de Software Gerenciamento de Requisitos © Fabio Silva - DI-UFPE Nível 2 - PPS Planejamento do Processo de Software © Fabio Silva - DI-UFPE 21 Objetivos Estabelecer planos exequíveis para desenvolver um determinado software, para gerenciar o projeto de desenvolvimento de software segundo estes planos Definir o plano de realização do trabalho (plano de desenvolvimento/projeto de software) Realizar estimativas de software, estabelecendo compromissos com as partes envolvidas © Fabio Silva - DI-UFPE 22 PPS - Metas Documentar as estimativas de software a serem usadas no planejamento e acompanhamento do projeto de software Planejar e documentar as atividades e compromissos do projeto de desenvolvimento de software Obter a concordância dos grupos e das pessoas envolvidos quanto aos respectivos compromissos relacionados ao projeto de desenvolvimento © Fabio Silva - DI-UFPE 23 PPS - Compromissos Um gerente de projeto de software é responsável pelos compromissos e pelo plano de desenvolvimento de software Seguir uma política organizacional de PPS © Fabio Silva - DI-UFPE 24 PPS - Habilitações Ter uma declaração de trabalhos documentada e aprovada Ter responsáveis pela elaboração do plano de desenvolvimento de software Ter recursos e fundos disponíveis para PPS Ter gerentes de software, engenheiros de software e outros envolvidos treinados em procedimentos de planejamento e estimativa de software © Fabio Silva - DI-UFPE 25 PPS - Atividades Participar da proposição do projeto Iniciar o planejamento do projeto de software Participar do planejamento do projeto Revisar os compromissos externos do projeto de software Identificar ou definir o ciclo de vida de software Elaborar o plano de desenvolvimento de software Documentar o plano de desenvolvimento de software Identificar os artefatos de software © Fabio Silva - DI-UFPE 26 PPS - Atividades Estimar o tamanho dos artefatos de software Estimar esforço e custo do projeto de software Estimar recursos computacionais críticos Estabelecer cronograma de software de projeto Identificar, avaliar e documentar os riscos de software Planejar as facilidades e ferramentas de suporte ao projeto Registrar, gerenciar e controlar dados de planejamento © Fabio Silva - DI-UFPE 27 PPS - Medições & Verificação Medições e Análise – Determinar o estado das atividades do PPS Verificação da Implementação – Revisar atividades de PPS (gerência sênior) – Revisar atividades de PPS (gerente de projeto) – Revisar e/ou auditar atividades e artefatos de PPS (Grupo de GQS) © Fabio Silva - DI-UFPE 28 Nível 2 - SAPS Supervisão e Acompanhamento do Projeto de Software © Fabio Silva - DI-UFPE 29 SAPS - Metas Acompanhar os resultados e desempenhos reais confrontando-os com o plano de desenvolvimento de software Tomar ações corretivas e gerenciá-las até sua conclusão, sempre que houver desvio nos resultados e desempenhos reais do plano de desenvolvimento do software Assegurar que as alterações nos compromissos de software de dêem através de acordo entre grupos e pessoas envolvidas © Fabio Silva - DI-UFPE 30 SAPS - Compromissos Designar um gerente de projeto de desenvolvimento de software Seguir uma política organizacional de SAPS © Fabio Silva - DI-UFPE 31 SAPS - Habilitações Ter um plano de desenvolvimento de software Ter responsabilidades designadas para a execução das atividades de software Ter recursos e fundos disponíveis para SAPS Ter gerentes de software treinados em gerência de projeto Ter gerentes de software de primeira linha orientados em aspectos técnicos do projeto de software © Fabio Silva - DI-UFPE 32 SAPS - Atividades Utilizar o plano de desenvolvimento de software como base para SAPS Revisar o plano de desenvolvimento de software Revisar compromissos e alterações de compromissos Comunicar alterações nos compromissos Acompanhar tamanho dos artefatos de software Acompanhar esforço e custos de software Acompanhar a utilização de recursos computacionais críticos © Fabio Silva - DI-UFPE 33 SAPS - Atividades Acompanhar cronograma de software Acompanhar atividades técnicas de engenharia de software Acompanhar riscos de software Registrar dados de medições e replanejamento Acompanhar o andamento do projeto Conduzir revisões formais nos marcos de acompanhamento de progresso do projeto © Fabio Silva - DI-UFPE 34 SAPS - Medições & Verificação Medições e Análise – Determinar o estado das atividades de SAPS Verificação da Implementação – Revisar atividades de SAPS (gerência sênior) – Revisar atividades de SAPS (gerente de projeto) – Revisar e/ou auditar atividades e artefatos de SAPS (Grupo de GQS) © Fabio Silva - DI-UFPE 35 Conclusões • • • • A melhoria do processo de software oferece um retorno no investimento que pode ser medido quando é medido. O retorno típico no investimento está entre 5:1 e 8:1. Benefícios adicionais não podem ser quantificados facilmente. O CMM é uma ferramenta útil para orientação no processo de melhoria. © Fabio Silva - DI-UFPE