Qualidade de Software: Normas e Processos
Classificado em Tecnologia
Escrito em em português com um tamanho de 10,88 KB.
**Produto x Processo**
- Produto - ISO 9126: Norma para qualidade de produto de software.
- ISO 14598: Guias para avaliação de produtos de software.
- Processo - ISO 12207: Processo de ciclo de vida do software.
- ISO 90003:2004: Diretrizes para aplicação da norma ISO 9001 ao desenvolvimento, fornecimento e manutenção de software.
- ISO 15504 (SPICE): Projeto da ISO/IEC para avaliar processos de desenvolvimento de software.
- CMMI (Capability Maturity Model Integrated): Modelo do SEI que entende o CMM para avaliar os processos de software.
- MPS.BR: Modelo brasileiro de qualidade de processo de software baseado nas ISO 12207 e 15504 e CMMI.
**Qualidade de Software de Produto - ISO 9126 - Características**
**Funcionalidade (Satisfaz as necessidades?)**
- Adequação: Presença das funções especificadas.
- Acurácia: Faz o que foi proposto de forma correta?
- Interoperabilidade: Interage com sistemas especificados?
- Conformidade: Está de acordo com as normas, leis?
- Segurança de acesso: Evita acesso não autorizado aos dados?
**Confiabilidade (É imune a falhas?)**
- Maturidade: Com que frequência apresenta falhas?
- Tolerância a falhas: Ocorrendo falhas, como ele reage?
- Recuperabilidade: É capaz de recuperar dados em caso de falhas?
**Usabilidade (É fácil de usar?)**
- Inteligibilidade: É fácil entender o conceito e a aplicação?
- Apreensibilidade: É fácil aprender a usar?
- Operacionalidade: É fácil controlar e operar?
**Eficiência (É rápido e enxuto?)**
- Tempo: Tempo de resposta, velocidade de execução?
- Recursos: Quantos recursos usa?
**Manutenibilidade (É fácil de modificar?)**
- Analisabilidade: É fácil de encontrar a falha quando ocorre?
- Modificabilidade: É fácil modificar e adaptar?
- Estabilidade: Há grande risco quando se altera?
- Testabilidade: É fácil testar após uma alteração?
**Portabilidade (É fácil de usar em outro ambiente?)**
- Adaptabilidade: É fácil adaptar a outros ambientes?
- Capacidade para ser instalado: É fácil instalar em outros ambientes?
- Conformidade: Está de acordo com padrões de portabilidade?
- Capacidade para substituir: É fácil usar para substituir outro?
**ISO 9126 - Detalhamento**
- ISO 9126-1: Modelo de qualidade de software.
- ISO 9126-2: Métricas externas - efetividade, produtividade, segurança, satisfação.
- ISO 9126-3: Métricas internas - funcionabilidade, confiabilidade, usabilidade, eficiência, manutenibilidade, portabilidade.
- ISO 9126-4: Métricas para qualidade de uso.
**Visões**
- Usuário: Utilização e desempenho. É completo? É fácil?
- Desenvolvedor: Baseado nas expectativas e requisitos?
- Gerente de Desenvolvimento: Medida global de qualidade.
**Usos**
- Definição dos requisitos de qualidade de um produto.
- Avaliação do software desenvolvido antes da entrega.
- Antes da aceitação pelo cliente.
**Formas**
Não apresenta formas, propõe que cada empresa desenvolva a sua.
**Normas Relacionadas à Qualidade de Software**
- ISO 9126: Características e subcaracterísticas da qualidade de software.
- ISO 14598: Processo de avaliação de software - aspecto gerencial.
- ISO 12119: Pacotes de software - requisitos de qualidade e testes.
- ISO 25000 (SQuaRE): Evolução das normas de qualidade de software.
Descrevem um modelo de qualidade e um processo de avaliação do produto de software.
- ISO/IEC 14598-1: Visão Geral.
- ISO/IEC 14598-2: Planejamento e Gestão.
- ISO/IEC 14598-3: Processo para desenvolvedores.
- ISO/IEC 14598-4: Processo para adquirentes.
- ISO/IEC 14598-5: Processo para avaliadores.
- ISO/IEC 14598-6: Documentação de módulos de avaliação.
**ISO 25000 (SQuaRE)**
Conceitos repensados, reformulação das normas, reorganização dos materiais. Norma muito recente.
**Focos da ISO 25000 (SQuaRE)**
- Gerenciamento: Introdução geral sobre a ISO 25000 e definição de termos.
- Modelo de Qualidade: Corresponde à ISO 9126, abordando conceitos de qualidade externa/interna e modelo de características/atores.
- Medição: Define medição, processo de medição e proposta de métricas.
- Requisitos de Qualidade: Herda da ISO 9126 o conceito do objetivo de qualidade para um produto e a relação com os requisitos do software.
- Avaliação.
**ISO 12119**
Norma que estabelece os requisitos de qualidade para pacotes de software e instruções de como testar um pacote de software com relação aos requisitos estabelecidos.
- Descrição do produto: Estabelece as propriedades do produto.
- Documentação do usuário: Conjunto de documentos fornecido como parte integrante do produto para orientar o usuário na aplicação do mesmo.
- Programas e dados: Conjunto completo de programas e dados de computador para a aplicação do produto de software e parte integrante do mesmo.
**Abordagem Ideal para Melhoria de Processos**
Descreve as fases, atividades e recursos para uma melhoria com sucesso.
- Inicialização: Estímulo, contexto e patrocínio, infraestrutura.
- Diagnóstico: Estado atual e desejado, recomendação.
- Diretrizes: Prioridade, abordagem, plano de ação.
- Realização: Solução, teste piloto, refinamento.
- Alavancagem: Implementação, analisar/validar, ações futuras.
**CMM (Modelo de Maturidade da Competência)**
Descreve os elementos chaves de um processo de software eficaz.
Define 5 níveis de maturidade para as empresas mudarem de um processo de software imaturo (ad hoc) para um maduro (disciplinado).
- A maturidade dos processos influencia a atingir metas de custo, qualidade e cronograma.
- A qualidade do processo pode ser analisada através do nível de maturidade do processo.
O CMM foi desenvolvido pela SEI (Software Engineering Institute), com a missão de exercer liderança nos estágios avançados da prática de engenharia de software para melhorar a qualidade de sistemas que dependam de software.
"A qualidade de um produto de software é profundamente determinada pela qualidade do processo de desenvolvimento e de manutenção usado para construí-lo."
**Os 5 Níveis do CMM**
- Inicial: Organizações caóticas.
- Repetível: Organizações disciplinadas.
- Definido: Organizações padronizadas.
- Gerenciado: Organizações previsíveis.
- Otimizado: Organizações com melhoria contínua.
Quanto maior o nível, maior a maturidade. Cada nível prepara para o próximo.
**Nível 1 - Inicial**
Processo ad hoc ou caótico. O sucesso depende de esforço heróico. Os requisitos fluem para dentro e um produto de software é (normalmente) produzido através de algum processo disforme. Espera-se que o produto final funcione.
**Nível 2 - Repetível**
Processos de administração básicos estabelecidos para acompanhar custo, cronograma e funcionalidade. A disciplina está em repetir sucessos anteriores em projetos similares. O processo de construção do software é uma série de caixas pretas com pontos de verificação definidos. Neste nível, não há preocupação com o processo de engenharia de software. Há dependência da experiência de projetos anteriores e novos tipos de produtos geram um desequilíbrio.
**Nível 3 - Definido**
Processos documentados, padronizados e integrados em um processo padrão. Todos os projetos usam uma versão aprovada do processo. Funções e responsabilidades no processo são bem entendidas. A produção do produto de software é visível através do processo. Existe um treinamento do processo e um grupo SEPG (Software Engineering Process Group) facilita a atividade de definição e melhoria do processo.
**Nível 4 - Gerenciado**
São feitas medidas. Os softwares e os produtos são compreendidos e controlados. A gerência tem bases objetivas para tomar a decisão e é capaz de prever o desempenho.
**Nível 5 - Otimizado**
Melhoria contínua do processo. Mudanças disciplinadas como um meio de vida. Mesmo o processo sendo maduro, ele é alvo de contínuas melhorias.
**Considerações sobre os Níveis do CMM**
- Somente no nível 5 é possível alterar os processos com base em informações e dados concretos.
- No nível 2, busca-se repetir um processo que deu certo em outros projetos.
- No nível 3, o processo é definido e padronizado.
- No nível 4, começa-se a medir a qualidade e a quantidade, levantando dados.
- No nível 5, inicia-se a melhoria do processo, avaliando se ele é bom ou ruim.
- No nível 2, detalha-se a entrada e a saída, mas não se analisa o que há nas caixas pretas. Não há comparação com outros processos. O gerenciamento visa a eficiência, mas sem comparação, não é possível saber se o processo é bem ou mal feito. Busca-se estabelecer práticas que deram certo, mas não há gerenciamento.
- No nível 3, existe uma orientação, o processo é visível e todos entendem.
- É necessário ter um grupo de qualidade, vigilantes do processo. Um dos requisitos é ter uma área trabalhando nessa área, com treinamento.
- No nível 4, iniciam-se as métricas e estabelecem-se as medidas.