Qualidade de Software Conceitos, estudo, normas Giuliano Prado de Morais Giglio profgiuliano@yahoo.com.br
Objetivos Definir Qualidade Definir Qualidade no contexto de Software Relacionar Qualidade de Processo a Qualidade de Produto Software Citar as principais normas e padrões processo Essa será nossa agenda...
O que é Qualidade? O que um determinado produto apresenta para considerarmos que o mesmo tem qualidade? Ex.: Carro Qualidade é um conceito relativo. Diversos aspectos são levados em conta. No caso de um automóvel, fatores como conforto, segurança, desempenho, beleza e custo têm estreita relação com a qualidade.
Qualidade de Software Software não é um produto físico Segundo Pressman [5], qualidade de software está relacionado a: conformidade com requisitos funcionais e de desempenho explicitamente declarados; Conformidade com características implícitas, que normalmente são esperadas em todo software; Adoção de normas de desenvolvimento explicitamente documentadas. Analisando cada item...
O que é Qualidade? Qualidade está fortemente relacionada à conformidade com os requisitos. O que é conformidade em relação a requisitos? observado x especificado. Pode haver problemas na observação. Pode haver problemas na especificação.
Conformidade com Requisitos Funcionais e Desempenho Estes requisitos formam a base pela qual a qualidade é medida. A falta de conformidade com estes requisitos significa falta de qualidade.
Conformidade com Requisitos Implícitos Um software de qualidade deve ser*: Correto Confiável Eficiente Integro Fácil de Usar Manutenível Flexível Testável Portável Reutilizável Interoperável *definidos na norma ISO/IEC 9126.
O que é Qualidade? Qualidade diz respeito à satisfação do cliente. Requisitos são especificados por pessoas e com o objetivo de satisfazer outras pessoas. Uma especificação depende das escolhas feitas (clientes alvo). Pode haver problemas na especificação.
Breve Histórico da Qualidade Relatos Históricos de 4.000 anos atrás no Egito. Marco Importante: Revolução Industrial 1920: Controle Estatístico da Produção 1940: Surgimento de vários organismos ligados à qualidade ASQC (American Society for Quality Control) ABNT (Associação Brasileira de Normas Técnicas) ISO (International Standardization Organization) Ainda década de 1940: Japão destaca-se. Década de 1970: Qualidade de Software
O que é Qualidade de Software? Conferência da NATO (1968) Crise de Software Problemas detectados: Cronogramas não observados. Projetos abandonados. Módulos que não operam corretamente quando combinados. Programas que não fazem exatamente o que era esperado. Sistemas tão difíceis de usar que são descartados. Sistemas que simplesmente param de funcionar. Passados 40 anos, o que mudou?
O que é Qualidade de Software? Qualidade em geral: é um conceito relativo. está fortemente relacionada à conformidade com requisitos. diz respeito à satisfação do cliente. Como isso se manifesta em software?
Desenvolvimento de Software O aspecto não repetitivo do desenvolvimento de software torna essa atividade difícil e, em boa medida, imprevisível. Delimitar o escopo de um sistema não é trivial. A volatilidade dos requisitos é lugar comum no desenvolvimento de software.
Fatores que afetam o Desenvolvimento de Software e influenciam a Qualidade Tamanho e complexidade do software; Número de pessoas envolvidas no projeto; Métodos, técnicas e ferramentas utilizadas; Custo x benefício do sistema; Custos associados à existência de erros; Custos associados à detecção e remoção de erros; etc.
O que é Processo de Software? Processos de Software devem estabelecer: atividades a serem realizadas durante o processo, sua estrutura e organização (decomposição e precedência), incluindo a definição de um modelo de ciclo de vida quando pertinente (ex.: processo de desenvolvimento); artefatos requeridos e produzidos por cada uma das atividades do processo; procedimentos (métodos, técnicas, roteiros e padrões) a serem adotados na realização das atividades; recursos necessários (humanos, hardware e software) para a realização das atividades.
Qualidade do Processo de Software Um bom processo não garante que os produtos produzidos são de boa qualidade, mas é um indicativo de que a organização é capaz de produzir bons produtos.
Qualidade de Software Logo, sob o ponto vista de qualidade de software, a questão é: Como satisfazer, de forma adequada, os requisitos do usuário? Em outras palavras Como obter produto software de qualidade?
Motivação para a busca da Qualidade do Processo de Software Aumento da qualidade do produto. Diminuição do retrabalho. Maior produtividade. Redução do tempo para atender o mercado (time to market). Maior competitividade. Maior precisão nas estimativas.
Como definir um processo? Apoio de Normas e Modelos de Qualidade de Processos de Software.
Normas e Organismos Normativos Normas internacionais de qualidade são criadas no trabalho voluntário de especialistas do mundo todo. Essas normas tornaram-se a base para especificar produtos, organizar o fornecimento de serviços e até mesmo para a elaboração de legislação em vários países.
Padrões de Facto Muitas vezes padrões surgem espontaneamente, a partir de uma necessidade ou como uma solução amplamente adotada quando comparada a outras alternativas. Padrões de facto são padrões aplicados na prática, mas que não foram formalizados como um regulamento. Podem ser criados involuntariamente ou por razões comerciais.
Padrões de Jure São criados de maneira formal, regulamentada. São escritos seguindo regulamentos e aprovados por instituições reconhecidas publicamente como capacitadas para tal (ex., ISO, IEEE etc).
Uso de Padrões Adequação x Certificação. Adequação: deve preceder a certificação e consiste em colocar em prática, total ou parcialmente, aquilo que é proposto no padrão. Certificação: Envolve a participação de um organismo ou empresa externa que possa atestar que a empresa candidata segue efetivamente o padrão.
Conclusão Qualidade de Produto = Qualidade de Processo A questão chave agora é: COMO GARANTIR A QUALIDADE DO PROCESSO? Através da Grupo de Garantia de Qualidade de Software (SQA).
Grupo de Garantia de Qualidade de Software (SQA) Missão: Auxiliar a equipe de software a conseguir um produto final de alta qualidade. Composição: Engenheiros de Software; Gerentes de Projeto; Clientes; Usuários finais; Usuários indiretos; Líder do grupo de SQA.
Grupo de Garantia de Qualidade de Software (SQA) Principais Atribuições: Preparação de um plano SQA; Participação na escolha do processo; Verificar se o processo está sendo mesmo seguido; Auditar os artefatos gerados durante as fases do processo; Registrar não-conformidades; Acompanhar a resolução das não conformidades. Como isso éfeito?
Dinâmica de Trabalho do Grupo SQA Como é Feita esta Verificação? Fonte: [2] 26/20
Revisões Técnicas Formais (RTF) O que é RTF é uma atividade de garantia de qualidade de software. Objetivo Descobrir erros durante as fases do processo. Benefício Descobrir antecipadamente os erros, de forma que eles não se propaguem para o passo seguinte do processo, aumentando a qualidade do produto final. Como é realizada?
O Processo de RTF [2] sugere a seguinte dinâmica de RTF:
Principais Normas e Padrões de Processo ISO/IEC 12207 Contém um conjunto de processos, atividades e tarefas projetado para ser adaptado de acordo com cada projeto de software. ISO/IEC 15504 Apresenta uma estrutura para Avaliação (e Melhoria) de Processo. ISO/IEC 15504 Usada para demonstrar capacidade de atender aos requisitos do cliente, os regulamentares e os da própria organização. MPS.BR (nível F), CMMI.
Qualidade e Processos Relacionados Documentação Gerência de Configuração de Software Qualidade de Software Verificação e Validação
Qualidade e Processos Relacionados Documentação Gerência de Configuração de Software Qualidade de Software Verificação e Validação
Documentação e Gerência de Configuração Artefatos registram a evolução do software para que sejam criadas as bases para o desenvolvimento, utilização e manutenção efetivos. Artefatos devem retratar fielmente o software, de modo que as atividades de avaliação e modificação possam ser realizadas sem maiores transtornos. Artefatos evidenciam a evolução do projeto. Mas é muito importante registrar modificações que ocorrem nos mesmos, de modo a se ter um histórico da evolução, o que é feito por meio da Gerência de Configuração de Software (GCS).
Gerência de Configuração Permite manter o controle da evolução dos artefatos de software, além de ajudar a cumprir metas de garantia da qualidade. Envolve, dentre outros: a identificação de itens de configuração de software, controle de alterações, registro e apresentação da situação dos itens e das solicitações de alteração, garantia da consistência dos itens alterados, controle de versão, armazenamento, manipulação e distribuição de itens.
Qualidade e Processos Relacionados Documentação Gerência de Configuração de Software Qualidade de Software Verificação e Validação
Verificação e Validação Verificação: assegurar que o software, ou determinada função do mesmo, está sendo desenvolvido corretamente, o que inclui verificar se os métodos e processos estão sendo aplicados adequadamente. Validação: assegurar que o software que está sendo desenvolvido é o software correto.
Análise Estática e Análise Dinâmica Análise Estática: não envolve a execução propriamente dita do produto. Pode e deve ser aplicada em qualquer artefato intermediário. Ex.: Revisões técnicas, inspeção de código. Análise Dinâmica: envolve a execução do produto. Ex.: Testes.
Conclusão Satisfação do cliente está relacionada a qualidade do produto software; Qualidade do produto está relacionada a qualidade do processo; A qualidade do processo é difícil de ser alcançada; Revisões Técnicas Formais ajudam neste aspecto.
Leituras e Referências [1] Falbo, R. Introdução a Qualidade de Software. Tópicos Especiais Qualidade de Software. Notas de Aula, 2007. [2] Filho, W. Engenharia de Software. 2ª Edição. LTC, 2005; [3] LUCENA, F. N. Processo de Desenvolvimento de Software. Notas de Aula, 2003, disponível em http://www.inf.ufg.br/~fabio/. [4] Oliveira, J. Garantia da Qualidade de Software. Notas de Aula. [5] Pressman, R. Engenharia de Software. 6ª Edição. MacGraw-Hill, 2006. [6] Souza, A. Introdução à Qualidade de Software. MBA em Gestão de Software. Notas de Aula, 2008.