Engenharia de Software I Processo Sala Limpa Mirian Ellen de Freitas Sandro Danilo Gatti Set/2004 Roteiro Introdução Diferenças entre métodos convencionais Por não ganhou ampla utilização Fases do processo Gerenciamento do projeto Controle de qualidade Manutenção Conclusões Introdução Proposto nos anos 1980 por Mill, Dyer e Linger Baseado em matemática Orientado a equipes Voltado ao desenvolvimento e certificação de software de alta confiabilidade Introdução (cont.) Especificação Formal. Ciclo de vida incremental de desenvolvimento. Programação estruturada. Verificação de qualidade de produto através de testes estatísticos independentes. Construção de um sistema de software que exiba zero falhas durante seu uso. Introdução (cont.) Usado em desenvolvimento de software na indústria e em organizações como NASA e DoD, com os seguintes resultados [SEI]: Aumento da qualidade Aumento de produtividade desenvolvimento Alto ROI (return-on-investment) de Principais diferenças em relação a outros métodos Segundo Pressman [PRE], o que torna o Sala Limpa diferente de outros métodos é: Uso explícito de controle estatístico de qualidade; Verificação de especificação de projeto usando provas baseadas em matemática; Uso enfático de testes estatísticos para descobrir erros de alto impacto. Porque ainda não ganhou ampla utilização Crença de que é uma metodologia muito teórica, matemática e radical para o desenvolvimento de software; A substituição de testes unitários por verificação de correção e controle estatístico de qualidade é muito diferente do método costumeiramente empregado pelos desenvolvedores de software; A indústria de software ainda não possui um nível de maturidade ideal para aplicar o processo Sala Limpa. Fases do Processo O processo Sala Limpa é composto por 4 grandes processos (funções), cada qual com suas fases: Cleanroom Cleanroom Cleanroom Cleanroom Management Processes Specification Processes Development Processes Certification Processes Cleanroom Management Processes Processo Project Planning Process Produtos Cleanroom Engineering Guide Software Development Plan Project Management Process Project Record Performance Improvement Process Performance Improvement Plan Engineering Change Process Engineering Change Log Cleanroom Specification Processes Processo Produtos Requirements Analysis Process Function Specification Process Software Requirements Usage Specification Process Architecture Specification Process Usage Specification Increment Planning Process Increment Construction Plan Function Specification Software Architecture Cleanroom Development Processes Processo Software Reengineering Process Increment Design Process Correctness Verification Process Produtos Reengineering Plan Reengineered Software Increment Design Increment Verification Report Cleanroom Certification Processes Processo Produtos Usage Modeling and Test Usage Models Planning Process Increment Test Plan Statistical Test Cases Executable System Statistical Testing and Certification Process Statistical Testing Report Increment Certification Report Fluxo entre os processos [SEI] Modelo de Processo Sala Limpa Incremento 1 BSS FD CV CG CI SUT RG C TP Incremento 2 SE BSS FD CV CG CI SUT RG C TP Incremento 3 BSS FD CV CG CI SUT RG C TP •CG (geração de código) •CI (inspeção de código) •SUT (teste estatístico de uso) •C(certificação) •TP (planejamento de Teste) •SE (engenharia de sistemas) •RG (coleta de requisitos) •BSS (especificação de estrutura de blocos) •FD (projeto formal) •CV (verificação de correção) Diretrizes para o gerenciamento do projeto Baseado em equipes (de especificação, de desenvolvimento e de certificação), compostas de seis a oito pessoas, trabalhando e forma disciplinada. Em projetos pequenos, os indivíduos podem trabalhar em várias equipes. Em projetos grandes, pode-se obter equipes de equipes. Diretrizes para o gerenciamento do projeto (cont) Cada equipe é composta elementos com papéis de especificação, desenvolvimento, gerenciamento e certificação. O gerente de projeto de software é o responsável pelo processo em geral. Há ainda os papéis engenheiro chefe de especificação (Specification Process) engenheiro chefe de projeto/desenvolvimento Development Process (design) engenheiro chefe de certificação (Certification Process). Atividades de controle de qualidade do Processo - CMM Segundo exposto em [SEI2], CMM e Sala Limpa são tecnologias complementares. Podem ser utilizados outros modelos de qualidade, porém não se consegue aplicar o processo com processo de desenvolvimento empírico. Atividades de controle de configuração A configuração segue os preceitos do cliclo de desenvolvimento incremental. Especificação Congelada Estabelecer requisitos Formalizar a especificação Desenvolver incremento Pedido de mudança de requisitos Entregar o software Atividades de controle de qualidade do Produto - Certificação T e s t e s certificação Envolve 5 passos: Cenários de uso devem ser criados; Um perfil de uso é especificado; Casos de teste são gerados a partir do perfil; Testes são executados e dados de falhas são registrados e analisados; A confiabilidade é calculada e certificada. Atividades de controle de qualidade do Produto - Testes Modelos de uso + probabilidades de ocorrência Casos de teste são gerados aleatoriamente a partir dos modelos de uso. Medidas estatísticas da confiabilidade /fidedignidade (reliability) são computadas baseadas no resultados dos testes. Se uma longa seqüência de testes é conduzida sem falha, o tempo médio de falhas (MTTF) é baixo e a confiabilidade do software pode ser considerada alta. Atividades de controle de qualidade do Produto - Testes Estímulo do Programa Armar/Desarmar (AD) Ativar zona (ZS) Consulta (Q) Teste (T) Alarme de pânico Probabilidade 50% 15% 15% 15% 5% Intervalo 1-49 50-63 64-78 79-94 95-99 13-94-22-24-45-56 AD-T-AD-AD-AD-ZS 81-19-31-69-45-9 T-AD-AD-Q-AD-AD 38-21-52-84-86-4 AD-AD-ZS-T-T-AD [PRE] Atividades de controle de qualidade - Certificação Ao final do teste estatístico de uso os registros produzidos são combinados com esses modelos de amostragem, de componentes e de certificação para permitir o cálculo matemático da confiabilidade projetada para o componente de software. Atividade de manutenção Manutenção da especificação do sistema; Correções realizadas a partir de feeedbak do cliente para equipe de desenvolvimento que solicita nova versão do incremento. Combinação de novos incrementos com os já existentes. Teste de todos os incremento integrado Teste de regressão do incrementos anteriores. Conclusões Abordagem diferentes das convencionais Software com baixo índice de erros Testes estatísticos Diferentes domínios de aplicação Orientado a equipes Metodologia complementar a CMM Referências [PRE] R.S.Pressman. “Software Engineering. A Practitiner’s Approach”. 5ª edição, 2002, cap. 26. [SOM] I. Sommerville. “Software Engineering”. 6ª ed, 2003, cap 19.4 [SEI] Relatório de Referência. http://www.sei.cmu.edu/pub/documents/96.reports/pdf/tr022.96.pdf. Acessado em 10/09/2004 [SEI2] http://www.sei.cmu.edu/str/descriptions/cleanroom_body.html. Acessado em 10/09/2004. Sítios visitados http://www.cleansoft.com. Sítio com vários artigos interessantes . Acessado em 10/09/2004 http://www.rspa.com/spi/-- SITE COM REFERÊNCIAS - Acessado em 12/09/2004. http://www.rspa.com/spi/cleanroom.html -- SITE COM TUTORIAIS http://www.cc.gatech.edu/classes/cs3302_99_summ er/slides/cleanroom/ - tutoriais - Acessado em 12/09/2004. http://www.uta.edu/cse/levine/fall99/cse5324/cr/clea n/page.html - tutoriais - Acessado em 12/09/2004.