Introdução ao Gerenciamento de Qualidade

A qualidade de um software está ligada aos requisitos solicitados pelo cliente e em conformidade as regras de desenvolvimento. Veremos nesse artigo os princípios e práticas do gerenciamento.

A qualidade de um produto hoje tem importância fundamental para disputar a concorrência com as empresas do ramo. A qualidade hoje é um pré-requisito para as empresas que querem estar sempre no mercado de forma ativa. Embora a ideia de qualidade possa parecer um tanto intuitiva e de pouca complexidade, quando estudada com mais atenção, podemos ver que é algo que exige além do que imaginado.

Um software sem qualidade pode ocasionar erros catastróficos e de grande custo de manutenção para as empresas de softwares. A qualidade de hoje é a grande motivadora em todas as áreas, todos querem receber e fornecer produtos com qualidade. Um software de qualidade tem impacto sobre milhares de pessoas, pois ele poderá disponibilizar serviços essenciais, irá gerar competitividade entre empresas e etc.

A qualidade de um software está ligada aos requisitos solicitados pelo cliente e em conformidade as regras de desenvolvimento. Existem inúmeros conceitos que nos auxiliam a manter a qualidade do software. Visando melhorar o entendimento sobre o assunto, esse artigo apresenta o conceito de qualidade de software, tratando a importância dos requisitos.

Princípios da Qualidade de Software

Um dos principais desafios encontrados pelos profissionais é definir o que é qualidade na atualidade. Muitas são as definições de qualidade de software propostas hoje em dia. Qualidade de software pode ser definida como: “Conformidade a requisitos funcionais e de desempenho explicitamente declarados, a padrões de desenvolvimento claramente documentados e a características implícitas que são esperadas de todos software profissionalmente desenvolvido.”(PRESMANN, 2007) Ou seja a qualidade de um software se refere não só a padrões de desenvolvimento, mas também garantir que o produto final satisfaça as expectativas do cliente, dentro daquilo que foi requisitado.

Em todas as fases do processo de desenvolvimento de um software acontecem defeitos e imprevistos, eles são causados geralmente por erros lógicos, de interpretação, desconhecimento de técnicas, falta de atenção, de motivação, falta de requisitos detalhados e outros. Sabendo disso podemos afirmar que a garantia de qualidade não é algo que deve ser pensado no fim do projeto, mas sim durante todo o processo de desenvolvimento do projeto ou produto. Essa atividade irá ajudar a remover os defeitos existentes em cada fase. O fato de ser detectado no começo do desenvolvimento traz benefícios para o projeto, pois quanto mais tarde uma falha for corrigida mais cara será sua correção.

A garantia da qualidade no desenvolvimento de um software tem uma série de prevenções que podem ser tomadas para que os problemas que possam por ventura surgir num projeto, sejam mínimos, ou não existam. E existem técnicas/práticas que podem nos auxiliar na missão de manter a qualidade do software. Entre elas estão a utilização das práticas, CMM, CMMI, norma ISO /IEC 9126 e também os testes.

Práticas

CMM

O CMM (Capability Maturity Model) é uma série de práticas que estão organizadas em cinco níveis crescentes de maturidade. Os níveis são:

CMMI

O CMMI é uma coleção das melhores práticas necessárias, para apoiar o desenvolvimento, serviços aquisições e manutenção de um projeto. O CMMI foi desenvolvido em 1992 pela SEI (Software Engineering Institute), um centro de pesquisas e desenvolvimento que é patrocinado pelo departamento de defesa dos EUA. Possui o foco voltado para a capacidade de maturidade de processos de software, a versão atual possui três modelos:

O CMMI possui duas formas de representação, são elas: representação contínua e representação por estágios. A organização que irá decidir qual representação utilizar para o desenvolvimento do seu projeto.

A representação contínua é caracterizada por níveis de capacidade:

O CMMI proporciona maior confiabilidade no que se refere prazos e custos que são acordados no início do desenvolvimento do sistema. A qualidade dos softwares criados baseados no CMMI é ocasionada por processos bem definidos e controlados e a busca contínua nos processos cotidianos.

O CMMI foi criado para integrar os modelos CMM apresentados nesse artigo, a fim de suprir as limitações desses modelos, com a criação de um método comum, permitindo a representação contínua com áreas de processos independentes dos níveis de maturidade.

ISO /IEC 9126

A norma ISO (Organização Internacional para Normalização) 9126 foi criada para a qualidade de software, que se enquadra no modelo das normas da família ISO 9000, que é composta por uma série de normas internacionais que cuidam da manutenção de um sistema de gestão de qualidade com base nos oito princípios de gestão da qualidade, que são: foco no cliente, liderança, envolvimento das pessoas, abordagem por processos, abordagem sistêmica para a gestão, melhoria contínua, abordagem factual para a tomada de decisão e relações mutuamente benéficas com os fornecedores. Contudo, o detalhamento desses princípios não é o foco desse artigo.

A norma ISO/IEC 9126 estabelece os seguintes componentes:

Essa norma propõe atributos de qualidade, e são distribuídos em seis características e cada características é dividida em sub características, são elas:

Contudo, para que possa existir a melhoria de um software deve ser feito uma definição dos aspectos de qualidade para o projeto que está em foco e antes da projeção dessa qualidade deve ser decidido entre os desenvolvedores do sistema as características que de dentam a qualidade e os termos que vão descrever essas características, já que a norma não apresenta métricas para as seis características da qualidade, deixando a cargo de cada empresa desenvolver suas próprias métricas. Para isso, a empresa deve considerar a classe de aplicação do produto que está desenvolvendo com base na confiabilidade (tendo como missão crítica), o desempenho deve ser menor que o tempo real e a usabilidade deve tomar como base o usuário não especializado para aquele produto.

Embora seja elevado o custo para a utilização de sistemas de gerenciamento de qualidade, é importante que utilizem para que a empresa possa passar por um longo sem precisar de retrabalho, custos fora de escopo e prazos extrapolados e que o software continue com qualidade.

A norma brasileira NBR 13596 foi substituída pela ISO/IEC 9126-1, se tornando NBR ISO/IEC 9126-1.

Testes de software

Os testes de software têm a finalidade de fornecer informações sobre o comportamento do seu software. Mesmo realizando testes é impossível garantir que sua aplicação fique isenta de erros, porém eles lhe dão uma margem de segurança maior. As falhas podem surgir por diversos motivos, à especificação do projeto/atividade pode está incompleta ou errada, deve ser levado em conta também as limitações que o software pode possuir, o tamanho do projeto pode ser extenso e muitas pessoas trabalharem no mesmo, podendo gerar assim inúmeros conflitos no desenvolvimento. Os testes de software identificam apenas as falhas em um produto. Com base nelas é que são tomadas atitudes para resolver os defeitos e erros.

Existem vários tipos de teste, dentre os quais podemos citar: teste de configuração, de instalação, de integridade, de segurança, funcional, de unidade, de integração, de volume, de performance, de usabilidade, de caixa branca e preta (uns dos mais usados), de regressão e de manutenção.

Custos de Qualidade

É utópico conseguir alcançar a perfeição em um software, então é importante definir o nível de qualidade que é suficiente para o seu cliente em questão e quais os custos que estão associados. Todas as atividades no desenvolvimento de um software possui um custo, no controle de qualidade devem ser considerados três elementos: custo da falha, custo da prevenção e custo da avaliação.

O custo de falha está associado aos defeitos entregue ao cliente, eles são divididos em falhas internas que inclui: retrabalho, análise de falhas e consertos de bugs e falhas externas que inclui: resolução de queixas, devolução do produto, suporte e trabalhos de segurança.

Custo de prevenção pode ser considerado um investimento para que seja evitado erros na tentativa de realizar o trabalho certo de primeira vez. É um custo que acontece antes da criação do produto. É criado treinamento, realizado definição de métodos e procedimentos, planejamento da qualidade, testes de equipamentos e revisões técnicas formais.

No custo de avaliação nos referimos a todos os gastos em procedimentos de verificação e em testes para a identificação dos erros do software após sua construção e antes que seja disponibilizado para uso. Podemos incluir nele manutenção dos equipamentos, tempo gasto na automação e inspeções.

Controle de Qualidade

O controle de qualidade envolve uma série de inspeções, revisões e teste com os propósitos de assegurar que todos os procedimentos e padrões sejam seguidos. Controle de qualidade referente a softwares procura identificar inconformidades dentro dos requisitos dados pelos usuários.

O processo de qualidade tem seus próprios procedimentos a serem seguidos no desenvolvimento de um software, estes procedimentos devem ser fáceis de compreensão pelos engenheiros que estão desenvolvendo. Existem duas abordagens para o controle de qualidade, são elas: revisões de qualidade e avaliação automática de software.

Nas revisões de qualidade, a documentação e os processos utilizados são revisados por um grupo de pessoas, responsável por conferir se os padrões dos projetos foram seguidos e se a documentação está em conformidade com os padrões. O que não estiver conforme os padrões, são anotados e submetidos à atenção da gerência do projeto. Já a Avaliação automática de software envolve medição quantitativa de alguns atributos de software.

O foco do controle de qualidade é nas revisões e remoção dos erros antes mesmo da entrega final do produto. Um exemplo clássico de controle de qualidade são as inspeções de software feitas com base em critérios de entrada e saída bem definidos.

Revisões de Qualidade

O método de revisão envolve um grupo de pessoas que verificam parte ou todo o processo de desenvolvimento, com o objetivo de descobrir possíveis problemas. As conclusões da revisão são registradas formalmente e transferidas para o autor ou responsável sobre os problemas verificados. Existem três tipos de revisão:

O objetivo da equipe de revisões é detectar erros e mostrá-los ao projetista do documento. Elas são baseadas em documentos, porém não se limitam as especificações, projeto ou código.

O benefício das revisões técnicas é a descoberta precoce dos defeitos de software, desta forma os defeitos podem ser corrigidos antes do próximo passo. As técnicas de revisão têm se mostrado até 75% efetivas na descoberta de falhas. No momento que é detectado o erro, o processo de revisão reduz os custos dos próximos passos na fase de desenvolvimento e na manutenção.


Saiu na DevMedia!


Saiba mais sobre Gerência de Projeto ;)

  • MVC e Regras de negócio:
    Em uma arquitetura MVC, temos três camadas com diferentes responsabilidades. Em qual destas camadas deveria estar a regra de negócio da aplicação? Saiba isso e muito mais nesta série.
  • Gestão de Projeto:
    Neste guia você encontrará o conteúdo que precisa para saber como gerenciar projetos de software. Confira abaixo a sequência de posts que te guiarão do básico ao avançado em Gestão de Projetos.
Referências:
  • SOMMERVILLE, I an. Engenharia de Software; tradução André Maurício de Andrade Ribeiro; revisão técnica Kechi Hirama - São Paulo: Pearson Addison Wesley, 2003.
  • PRESSMAN, Roger S. Engenharia de software; tradução José Carlos Barbosa dos Santos; revisão técnica José Carlos Maldonado, Paulo Cesar Masieiro, Rosley Sanches. – São Paulo: Makron Books,1995.
  • PAULA FILHO, Wilson de Pádua. Engenharia de software: fundamentos, métodos e padrões. - 3.ed. – Rio de Janeiro: LTC,2009. – Rio de Janeiro: LTC,2009.

Artigos relacionados