Auditoria de Sistemas Computacionais Professora Jaciara S. Carosia Importância do software + crescentes exigências dos usuários: ◦ tem-se verificado um notável aumento nos interesses pela qualidade do software. Qualidade do produto de software é um objetivo do processo de desenvolvimento. Ao desenvolver-se um produto, deve-se ter previamente estabelecidas, as características de qualidade que se deseja alcançar. ◦ Qualidade???? Se o processo de desenvolvimento de software considerar as características de qualidade, há uma grande tendência de que o produto final apresente tais características. Processo de software: um conjunto de ferramentas, métodos e práticas usadas para produzir software. “O processo de software é representado por um conjunto seqüencial de atividades, objetivos, transformações e eventos que encapsulam estratégias para cumprimento da evolução de software” (Pressman). As falhas nos processos de desenvolvimento de software foram reconhecidas como inibidoras principais no crescimento da qualidade e produtividade (Lamprech). Justificativa: Um processo de software bem definido e documentado, utilizado para integrar pessoas, tarefas, ferramentas e métodos, pode prover uma base essencial para garantir a qualidade do produto final. Entre os modelos disponíveis os que mais se destacam são: ◦ Norma ISO/IEC 12207 (Processos de Ciclo de Vida de Software). ◦ Norma ISO/IEC 15504. ◦ CMM (Capability Maturity Model) ◦ CMMI (Capability Maturity Model Integration). ◦ MPS.BR (Melhoria do Processo de Software Brasileiro) Origem: ◦ SW-CMM (CMM para Software) ◦ Proposto por Watts S. Humphey (1991). ◦ Criado por SEI (Software Engineering Institute) ligado a CarnegieMellon University. ◦ Financiado pelo DoD: avaliar empresas fornecedoras de software. Premissa: a qualidade de um sistema de software é fortemente influenciado pela qualidade do processo utilizado para desenvolvêlo e mantê-lo. Histórico: ◦ ◦ ◦ ◦ 1987: 1991: 1993: 1997: Ambiente de Maturidade e um questionário CMM v1.0 ou SW-CMM CMM v1.1 CMM v2.0 Processo (IEEE): seqüência de passos para atingir um objetivo. Processo de Software (CMM): conjunto de atividades, métodos, práticas e transformações usadas para desenvolver e manter o software. Capacidade do processo de SW: conjunto de resultados esperados que pode ser atingido seguindo o processo estabelecido. Maturidade do processo de SW: processo é definido, documentado, gerenciado, medido, controlado e efetivo. ◦ Imaturas: Não há metodologia implementada e tudo ocorre de forma desorganizada. ◦ Maduras: Capacidade de produzir softwares com qualidade em prazos e custos previsíveis. Em resumo, a maturidade do processo pode ser traduzida como a possibilidade de entregar sistemas de software dentro dos prazos, utilizando os mesmos recursos, planejando e atendendo requisitos e qualidade desejados. Maturidade (eficiência) mede o potencial de crescimento da capacidade (eficácia). “O CMM baseia-se em um processo gradual, que leva as organizações a se aprimorarem continuamente, na busca de soluções próprias para os problemas existentes no desenvolvimento do software”. Otimizado: Foco na melhoria contínua. 5 4 3 2 1 Gerenciado: Processo medido e controlado. Definido: Processo padronizado, bem definido. Repetível: Repete as tarefas de sucesso. Inicial: Imprevisível e pobremente controlado. KPA’s - Key Process Areas. Para que uma organização atinja um nível de maturidade, ela deve cumprir TODAS as KPAs deste nível (e dos níveis anteriores). Cada nível depende dos níveis anteriores. As KPAs definem o que e não como fazer: o modelo precisa ser estudado, compreendido e adaptado as necessidades de cada empresa. Características: A organização é carente de práticas de gerenciamento. Não há planejamento suficiente. Há dificuldades elevadas em prever custos, programação, funcionalidade e outros objetivos de qualidade. Durante uma crise, ocorrem procedimentos de abandono de projetos. Os sucessos dependem de esforços individuais e heróicos. Não possui KPAs: todas as empresas que buscam melhoria de processo estão no nível 1, os que nem buscam, estão no nível 0 (zero) Características: ◦ A organização apresenta uma disciplina no desenvolvimento de software – o processo não é mais caótico. ◦ Estabelecem-se políticas de gerenciamento de projetos com relação a custos, programação e qualidade do produto. ◦ O planejamento do projeto é estável e sucessos anteriores podem ser repetidos para projetos com aplicações semelhantes. ◦ Os problemas são percebidos e corrigidos conforme surgem. ◦ O sucesso depende das pessoas, com o suporte do sistema de gerenciamento. KPAs Nível 2 - Repetível ◦ Gerenciamento de Requisitos. ◦ Planejamento de Projeto de Software. ◦ Visão Geral e Acompanhamento do Projeto. ◦ Gerenciamento de Subcontratos. ◦ Garantia da Qualidade de Software. ◦ Gerenciamento de Configuração. Características: ◦ Há definição e padronização do processo de software da organização. ◦ As atividades de engenharia de software e gerenciamento são estáveis e repetitivas. ◦ Custos, cronogramas e funcionalidades são controladas e a qualidade é acompanhada. ◦ Há um grupo responsável pelo estabelecimento dos padrões e multiplicação do conhecimento. ◦ Os problemas são antecipados, prevenidos ou minimizados. ◦ O treinamento é planejado. KPAs Nível 3 - Definido Foco do Processo Organizacional. Definição do Processo Organizacional. Programa de Treinamento. Gerenciamento Integrado de Software. Engenharia de Produto de Software. Coordenação Intergrupos. Revisão Conjunta. Características: ◦ Existem mecanismos para definir quantitativamente objetivos de qualidade para o processo de software e para o produto. ◦ Há medição constantemente da produtividade e da qualidade. ◦ A capacidade do processo é previsível e variações na produtividade podem ser medidos. ◦ Quando alguma circunstância excepcional ocorre, as causas podem ser identificadas e combatidas. ◦ A qualidade é alta. ◦ Fontes de problemas individuais são percebidas e eliminadas. KPAs Nível 4 - Gerenciado ◦ Gerenciamento Quantitativo dos Processos. ◦ Gerenciamento da Qualidade de Software. Características: ◦ A capacidade do processo de software é continuamente melhorada. ◦ Dados de avaliações estatísticas são usados para análise de custo/benefício e mudanças de processo. ◦ A equipe do projeto avalia os defeitos e determinam suas causas, para evitar que defeitos conhecidos ocorram novamente. ◦ Novas tecnologias e processos de software são constantemente avaliados, e quando relevantes, transferidos à organização, através de planejamento e gerenciamento. ◦ Um forte sentido de equipe existe em toda a organização KPAs Nível 5 - Otimizado ◦ Prevenção de Defeitos. ◦ Gerenciamento de Mudanças Tecnológicas. ◦ Gerenciamento de Mudanças no Processo. Análise da situação (Avaliação) Comparação com o nível desejado Execução destas ações Planejamento de ações corretivas Conhecimento e uso de modelos para melhoria do processo de software. Fonte: PBQP-SW – Programa Brasileiro de Qualidade e Produtividade em Software. Disponível em: 2001 http://www.mct.gov.br/index.php/content/view/4919.html CMM: método mais conhecido e usado. Embora não seja uma norma por uma instituição internacional (como ISO e IEEE), esta norma tem tido uma grande aceitação mundial (Rezende, 2002). CMM Foi criado para atender a grandes empresas. Processo de Certificação Formal ◦ Realizada por auditores certificados (Lead Assessors). ◦ Não existem entidades certificadoras, apenas pessoas físicas. Melhorias sem certificação ◦ Documentação totalmente disponível no site do Software Engineering Institute. www.sei.cmu.edu ◦ Iniciativa do CPqD (tradução do modelo). www.cpqd.com.br Surgem novos modelos baseados no CMM: ◦ AS-CMM (Aquisição de Software), ◦ SE-CMM (Engenharia de Sistemas), ◦ IPD-CMM (Desenvolvimento de Produto Integrado) e ◦ P-CMM (Pessoas). Surge ISO 15504. Bases para a criação do CMMI PAULK, M. C.; CURTIS, B; CHISSIS, M, e WEBER, C. V. Capability Maturity Model (Versão 1.1) (CMU/SEI-93-TR-24, ADA 263403) Pittsburgh, Pa.: Software Engineering Institute, Carnegie Mellon University, Fevereiro 1993. PAULK, M. C.; CURTIS, B; CHISSIS, M, e WEBER, C. V. A Preview of the Software CMM Versão 2, Pa.: Software Engineering Institute, Carnegie Mellon University [1996]. REZENDE, D. Engenharia de Software e Sistemas de Informação. Rio de Janeiro: Brasport, 2002. “Começar é o passo mais importante e mais difícil de qualquer trabalho” (Frank Herbert)