Experiências na Definição, Uso e Medição de Processos de Software Ana Regina Rocha COPPE- UFRJ [email protected] Preocupações da Engenharia de Software Qualidade do produto Qualidade do processo de desenvolvimento “Talvez uma das noções mais destrutivas já criadas seja a de que o processo de desenvolvimento de software é uma arte” Munson,J.C. “Software Measurement: problems and practice”; Annals of Software Engineering 1(1995) Processo de Software conjunto de atividades, métodos, práticas e tecnologias que desenvolver e relacionados as manter pessoas utilizam software e para produtos O interesse no processo de software está baseado em duas premissas: a qualidade de um produto de software é fortemente dependente da qualidade do processo pelo qual ele é construído e mantido o processo de software pode ser definido, gerenciado, medido e melhorado O número de defeitos presentes no software quando entregue para testes é função direta da qualidade do processo usado para a construção do software Testes só podem detectar 70% dos defeitos latentes no código Inspeções podem detectar 80 a 90% dos erros antes dos testes Mas, um bom processo evita a presença de defeitos no produto Objetivo da Pesquisa em Processo de Software Métodos e tecnologias usados para avaliar, apoiar e melhorar as atividades de desenvolvimento de software • • • Modelagem do Processo Melhoria do Processo Métricas e Estudos Empíricos Histórico Fuggetta, A. Software Process: a Roadmap; in The Future of Software Engineering; 22nd International Conference on Software Engineering, Limerick, Irlanda, Jun 2000 Início da área de Processo de Software: Anos 80 Eventos: International Software Process Workshop European Workshop on Software Process Technology Revista: Software Process - Improvement and Practice Criação de Institutos: Software Engineering Institute (SEI, Pittsburg, EEUU) European Software Institute (ESI, Bilbao, Espanha) Esforço da ISO: ISO 12207 e ISO 15504 Raiz: Pesquisas realizadas nos Anos 60 e 70 em Modelos de Ciclo de Vida Descrevem o esqueleto e a filosofia com que o processo de software deve ser conduzido Não prescrevem um curso de ação preciso, uma organização, ferramentas e procedimentos operacionais São um ponto de partida importante para se definir como o software deve ser desenvolvido, mas apenas adotar um modelo de ciclo de vida não é suficiente A implantação de um Programa de Qualidade começa pela definição e implantação de um processo de software O processo deve estar documentado, ser compreendido e seguido Processo Imaturo Características • Ad hoc - Improvisado • Fortemente dependente dos profissionais • Indisciplinado Consequências • pouca produtividade • qualidade de difícil previsão • alto custo de manutenção • risco na adoção de novas tecnologias Processo Maduro Características • Processo conhecido por todos • Apoio visível da alta administração • Auditagem da fidelidade ao processo • Medidas do produto e do processo • Adoção disciplinada de tecnologias Consequências • papéis e responsabilidades claramente definidos • acompanhamento da qualidade do produto e da satisfação do cliente • expectativas para custos, cronograma, funcionalidades e qualidade do produto é usualmente alcançada Qualidade do Processo Abordagens ISO 12207 ISO 9000-3 CMM SPICE BOOTSTRAP TRILLIUM Experiências de Definição de Processo Avaliação da Situação das Empresas de Software Brasileiras Desconhecimento sobre ISO 9000-3, CMM e SPICE por gerentes e desenvolvedores Formação não sistemática e desatualizada em Engenharia de Software Ausência de processo definido: desenvolvimento ad-hoc ou gerenciado Dificuldade para introduzir novas tecnologias Dificuldade para o gerenciamento de projetos Gerentes gastam a maior parte do tempo “apagando incêndios” Gerentes e desenvolvedores insatisfeitos Preocupação com qualidade ainda é incipiente nas empresas Experiência tem mostrado que os benefícios investimentos em qualidade são percebidos rapidamente • qualidade do produto • produtividade no desenvolvimento • competitividade • recursos humanos formados de Gerentes começam a perceber a necessidade de um processo de software definido para a empresa e seguido por todos Experiência da Equipe de Engenharia de Software da COPPE na Definição e Implantação de Processos de Software em Empresas • 1988 - CENPES/Petrobrás • 1989 - Geofísica/Petrobrás • 1991 - IBM • 1993 - EMBRATEL/Planejamento • 1994 - EMBRATEL/Satélites • 1994 - Fundação Bahiana de Cardiologia • 1997 - Ministério da Aeronáutica • 1997 - CAC/CEDAE • 1998 - Rio-Sul Linhas Aéreas • 1999 - TecTeam • 1999 - Ministério da Marinha • 1999 - Bennett • 1999 - CCA-Aeronáutica • 2000 - ASBACE Outra Experiência Significativa: 1995: processo de software para o Projeto ATLAS do CERN 1997/1998: definição de um processo de software para equipes geograficamente distribuídas e com diferentes níveis de capacitação Enfoque para Definição e Avaliação de Processos de Software Definição ISO 12207 CMM/ SPICE Práticas E. de Software Cultura Organizacional Processo Padrão Especialização Tipo de Software ... Especialização 1 Particularidades do projeto Especialização n Instanciação Plano do Processo1 ... Plano do Processo n Medição e Avaliação do Processo Aspectos Fundamentais Respeito a cultura organizacional Uso de práticas comprovadas de Engenharia de Software: Engenharia Evidências de Software Baseada em necessidade de pesquisa empírica Definição do Processo Padrão da Organização Definir um processo, usar, medir, avaliar e melhorar continuamente O Caso da Fundação Bahiana de Cardiologia Histórico de desenvolvimento informal, ad-hoc, fracassos 1994: inicio do Projeto SEC (Sistema Especialista para Diagnóstico de Infarto Agudo do Miocárdio) definição do processo de software definição de características e procedimentos para avaliação da qualidade treinamento construção da 1a. Versão em 3 meses 1995/1996: validação e refinamento do sistema teses de mestrado e doutorado grande volume de publicações 2o. Lugar no Concurso de Monografias PBQP 1997: FBC é empresa SOFTEX publicação de artigo na revista “Artificial Intelligence in Medicine” 1998: apresentação do SEC na Cebit98 (Hanover) e na MEDICA (Dusseldorf) 1999: validação com casos reais teses de mestrado e doutorado apresentação no Congresso Mundial de Cardiologia 2000: projeto concluído tradução para inglês e espanhol apresentação à Secretaria de Saúde para implantação Investimento em Qualidade significou Produtividade e Competitividade • Como grupo de pesquisa • Como empresa de software Pesquisas Teses de Mestrado e Doutorado Ferramentas de Apoio à Definição de processos na Estação TABA Processo de Software para Equipes Geograficamente Distribuídas Processo de Software para Desenvolvimento de Sistemas Baseados em Conhecimento Processo para o ADSOD NETUNO Processo para Desenvolvimento de Software na Web Medição e Melhorias no Processo de Software Engenharia de Software Baseada em Evidências Desenvolvimento de Software e Uso do Processo Estudo da literatura Experiência Gerencial Identificação de Métricas de Processo Definição dos Critérios de Julgamento Relatório Histórico do Projeto Planilha de Atividades Valor medido Medição Pontuação Nível de pontuação Julgamento Resultado (Identificação de Problemas eSugestões de Melhorias no Processo) Experiência na TecTeam Informática Definição do Processo Padrão da TecTeam (1999) Especialização do Processo para 2 Empresas Clientes (4/2000) Instanciação para Projeto Específico (4/2000) Definição de Métricas para Medição do Processo (4/2000) Medição Avaliação dos Resultados para Melhoria do Processo Definição e Construção de Ferramenta de Apoio ISO 12207 CMM Práticas E. de Software Definição Processo Padrão Tipo de Software Cultura Organizacional Especialização ... Especialização 1 Particularidades do projeto Especialização n Instanciação Plano do Processo1 ... Plano do Processo n Medição e Avaliação do Processo Métricas Selecionadas Tempo Número de Erros Precisão da Estimativa de Número de Modificações Cronograma Densidade de Defeitos Esforço Rotatividade de Pessoal Precisão da Estimativa de Produtividade Deterioração do Software Experiência da Equipe Esforço Tamanho do Sistema Avaliação do Processo e Sugestão de Melhorias Sistema Baseado em Conhecimento • interpretação dos resultados obtidos nas medições • relação entre os resultados e aspectos do processo • relação entre os resultados e o contexto do projeto • recomendações para melhoria do processo