250 likes | 394 Views
Como produzir software consumindo menos recursos, em menos tempo e com mais qualidade. Reinaldo Cabral cabral@cos.ufrj.br. Como?. Como?. COMO?. COMO?. Como?. COMO?. Como?. COMO?. Como?. É possível?. COMO?. Como?. COMO?. COMO?. Como?. Como?. COMO?.
E N D
Como produzir software consumindo menos recursos, em menos tempo e com mais qualidade. Reinaldo Cabral cabral@cos.ufrj.br
Como? Como? COMO? COMO? Como? COMO? Como? COMO? Como? É possível? COMO? Como? COMO? COMO? Como? Como? COMO?
Melhoria de Processos de Software Reinaldo Cabral cabral@cos.ufrj.br
Objetivos de Aprendizagem • Ao final, todos devem estar aptos: • Definir processos • Executar processos • Identificar oportunidades de melhorias • Identificar potenciais ações de melhoria • Testar ações de melhorias antes de institucionalizar as mudanças nos processos • Institucionalizar melhorias
O curso: • PARTE I • Definição e Execução de Processos de Software • PARTE II • Execução e Melhoria de Processos de Software • PARTE III • Melhoria Radical em Processos de Software
Roteiro - Parte I 1. Definição de Processos de Software • Notas Introdutórias • Conceitos gerais • Identificando objetivos e motivação • Uso de modelos e normas • Elicitação • Especificação • Verificação, Validação e Testes • Institucionalização 2. Exercícios (Torneio – 1ª etapa) 3. Lições Aprendidas 4. Fatores de Sucesso 5. Referências 6. Verificação do Alcance dos Objetivos de Aprendizagem
1. Definição de Processos de Software • Notas Introdutórias • “O resultado da definição de um processo é uma descrição de um processo”. (SEI, 2002) • “Processo de software também é software”. (Osterweil, 1997) • “A criação de um modelo de processo ajuda a equipe de desenvolvimento a encontrar inconsistências, redundâncias e omissões no processo e em suas partes constituintes.” (Pfleger, 2002)
1. Definição de Processos de Software Saídas Entradas Processo • Conceitos gerais • Processo • “Uma seqüência de passos executadas para um determinado propósito; por exemplo, o processo de desenvolvimento de software.” (IEEE, 1990) • “Conjunto de recursos e atividades inter-relacionadas que transformam insumos (entradas) em produtos (saídas).” (ISO, 1990) • “Conjunto de atividades inter-relacionadas, que transformam entradas em saídas.” (Pfleger, 2002)
1. Definição de Processos de Software • Conceitos Gerais • Atividade: passo de um processo • Método: descreve o que fazer para produzir um artefato em determinada atividade • Técnica: descreve como fazer para que o artefato da atividade seja produzido e dotado de características específicas. • Artefato: produto final do processo ou produto intermediário produzido ou consumido pelas atividades. • Fases, Macro-atividades, Subprocessos
1. Definição de Processos de Software • Identificando objetivos e motivação • Quais os objetivos organizacionais e necessidades do negócio? • Quais as estratégias? • Quais as áreas prioritárias? • Qual a situação atual? • Uso de Modelos e Normas • CMMI, MPS.BR, ... • ISO/IEC 12207, 15504, 90003, ...
Processos Fundamentais Processos Organizacionais Gerência de Projeto Aquisição Adaptação do Processo para Gerência de Projeto Gerência de Requisitos Análise de Decisão e Resolução Desenvolvimento de Requisitos Gerência de Riscos Avaliação e Melhoria do Processo Organizacional Solução Técnica Definição do Processo Organizacional Integração do Produto Desempenho do Processo Organizacional Instalação do Produto Gerência Quantitativa do Projeto Análise e Resolução de Causas Liberação do Produto Inovação e Implantação na Organização Processos de Apoio Garantia da Qualidade Medição Verificação Gerência de Configuração Validação Treinamento MPS.BR
Inovação e Implantação na Organização Análise e Resolução de Causas A Desempenho do Processo Organizacional Gerência Quantitativa do Projeto B Análise de Decisão e Resolução Gerência de Riscos C Desenvolvimento de Requisitos / Solução Técnica / Integração do Produto/ Instalação do Produto / Liberação do Produto / Verificação / Validação D Treinamento / Avaliação e Melhoria do Processo Org. / Definição do Processo Org. / Adaptação do Processo para Gerência de Projeto E Medição / Gerência de Configuração Aquisição / Garantia da Qualidade F Gerência de Requisitos Gerência de Projeto G Níveis de Maturidade no MPS.BR
1. Definição de Processos de Software • Elicitação • Formalizar processo não definido • Conhecimento sobre processos não definidos, geralmente estão dispersos e são inconsistentes • Múltiplas visões do mesmo processo • Principais fontes: • Análise dos artefatos produzidos • Observação do processo sendo executado • Entrevistas com os executores do processo
1. Definição de Processos de Software • Especificação
1. Definição de Processos de Software • Especificação • Modelos dos artefatos a serem gerados • Guia de apoio a execução (exemplo de uso) • Diretrizes para execução • Guia de adaptação do processo • Especificação das técnicas e métodos referenciados • Descrição dos papéis envolvidos
1. Definição de Processos de Software • Verificação, Validação e Testes • O processo está especificado conforme o padrão para especificação de processos da organização? • O processo produz os artefatos adequados de acordo com fim para o qual foi criado? • Há possibilidade de conter alguma informação que possa gerar dúvida ou má interpretação na descrição do processo e suas atividades?
1. Definição de Processos de Software • Verificação, Validação e Testes • Quanto mais cedo os problemas forem identificados menos onerosa será sua correção. • A incapacidade de compreender, executar, gerenciar ou mensurar o processo pode implicar em sérios prejuízos. • Abordagens: • Grau de aderência a modelos de qualidade • Uso de checklists • Simulação dinâmica de processos • Verificação formal • Inspeção de processos • Execução de pilotos
1. Definição de Processos de Software • Institucionalização • Treinar as pessoas • Publicar os modelos de processo • Fornecer apoio ao uso • Problemas típicos na execução • Adequação • Aderência
2. Exercícios (Torneio – 1ª etapa) Definir processos
3. Lições Aprendidas • Definição: • Por onde começaram? • O que foi mais fácil de fazer? • Dificuldades? • Sugestões? • Execução: • Processo ajudou? • Dificuldades? • Sugestões?
4. Fatores de Sucesso • Na definição: • Conhecimento do domínio • A corrente forma de trabalho como ponto de partida • Documentação e disseminação • Comprometimento da gerência • Verificação e validação
4. Fatores de Sucesso • Na gerência/execução: • Gerência de mudanças • Sincronização entre processos • Envolvimento do usuário • Comprometimento da gerência. • Apoio à execução • Monitoramento constante
5.Referências • (Osterweil, 1997) Osterweil, L. “Software Process Are Software Too”, Proceedings in International Conference on Software Engineering, IEEE Computer Society Press, Setembro,1987 • (SEI, 2002) Software Engineering Institute, “Capability Maturity Model Integration (CMMI) Version 1.1 – Staged Representation”, Carnegie Mellon University, 2002. • (Pfleeger, 2004) Pfleeger, S. L., “Engenharia de Software – Teoria e Prática”, 2ª ed., Prentice Hall, 2004. • (DiBasio, 1999) DiBasio, D, “How to Define a Process”, International Conference on Software Quality, Vol. 9, No. 0, p. 199-209, Outubro, 1999. • (IEEE, 1990)IEEE, “IEEE STD 610.12-1990, Standard Glossary of Software Engineering Terminology”, 1990. • (ISO,1990) ISO, “Quality Concepts and Terminology Part One: Generic Terms and Definition”, ISO 8402, 1990. • (Madhavji, 1994) Madhavji, N. H., Höltje, D., Hong, W., Bruckhaus, T., “Elicit: A Method for Eliciting Process Models”. In D. E. Perry, editor, Proceedings of the Third International Conference on the Software Process, pages 111–122. IEEE Computer Society, Press, October 1994. • (Berander e Wohlin, 2003) Berander, P., Wohlin, C., "Identification of Key Factors in Software Process Management - A Case Study", Proceedings of the 2003 International Symposium on Empirical Software Engineering (ISESE’03)
6. Verificação do Alcance dos Objetivos de Aprendizagem • Como definir processos de software? • Como executar processos?
Melhoria de Processos de Software Reinaldo Cabral cabral@cos.ufrj.br