sexta-feira, 28 de junho de 2013

Qualidade de software




A qualidade de software é uma área de conhecimento da engenharia de software que objetiva garantir a qualidade do software através da definição e normatização de processos de desenvolvimento. Apesar dos modelos aplicados na garantia da qualidade de software atuarem principalmente no processo, o principal objetivo é garantir um produto final que satisfaça às expectativas do cliente, dentro daquilo que foi acordado inicialmente.

Segundo a norma ISO 9000 (versão 2000), a qualidade é o grau em que um conjunto de características inerentes a um produto, processo ou sistema cumpre os requisitos inicialmente estipulados para estes.

No desenvolvimento de software, a qualidade do produto está diretamente relacionada à qualidade do processo de desenvolvimento1 , desta forma, é comum que a busca por um software de maior qualidade passe necessariamente por uma melhoria no processo de desenvolvimento.

Rodney Brooks, diretor do Laboratório de Inteligência Artificial e Ciência da Computação do MIT, define qualidade como a conformidade aos requisitos. Essa definição exige determinar dois pontos: I) o que se entende por conformidade; e II) como são especificados - e por quem - os requisitos.

Índice

1 Principais tópicos
2 Requisitos de qualidade
3 O processo de software Cabeça de martelo
3.1 Garantia de qualidade de software
3.2 Modelos de qualidade


Principais tópicos

Para um melhor entendimento e estudo, o SWEBOK divide a qualidade de software em três tópicos, e cada tópico é subdividido em atividades, da seguinte forma:

Fundamentos de qualidade de software
Cultura e ética de engenharia de software
Valores e custos de qualidade
Modelos e características de qualidade
Melhoria da qualidade
Gerência do processo de qualidade de software
Garantia de qualidade de software
Verificação e validação
Revisões e auditorias
Considerações práticas
Requisitos de qualidade para aplicações
Caracterização de defeitos
Técnicas de gerência de qualidade de software
Medidas de qualidade de software
Ainda segundo o SWEBOK, a qualidade de software é um tema tão importante que é encontrado, de forma ubíqua, em todas as outras áreas de conhecimento envolvidas em um projeto. Além disso, ele deixa claro que essa área, como nele definida, trata do aspectos estáticos, ou seja, daqueles que não exigem a execução do software para avaliá-lo, em contraposição á área de conhecimento teste de software.

Porém, é normal que se encontrem autores e empresas que afirmam serem os testes de software uma etapa da qualidade de software.

Muita coisa pode ser encontrada no site http://www.ibqts.com.br O IBQTS, Instituto Brasileiro de Qualidade em Testes de Software.
Podem ser encontradas mais informações no site http://www.bstqb.com.br o BSTQB, Brazilian Software Testing Quality Board

Requisitos de qualidade

Requisitos de qualidade é um tópico por si dentro do assunto qualidade. Dentro da ótica desta última, espera-se que os requisitos sejam definidos de maneira a caracterizar completamente o produto a ser construído. Nesse aspecto - e em relação à definição de Brooks - é evidente que as zonas de sombra dentro de uma especificação abrem margem a todo tipo de problemas de avaliação de produtos.

Sommerville2 distingue requisitos funcionais e não funcionais. O modelo internacional mais recente Square, estabelecido pela norma ISO 25000, adota uma classificação um pouco diferente e utiliza uma descrição hierárquica. Dentro dessa descrição, "funcionalidade" é uma das seis divisões iniciais em que se classificam os requisitos de um produto de software.

Idealmente, a especificação de requisitos deve permitir que o processo de fabricação do software seja controlado. Isso significa que idealmente a qualidade de produtos intermediários deve poder ser mensurada e que os dados obtidos devem trazer informação que possa levar ao controle de desvios, localização de defeitos e outras ocorrências negativas.

O processo de software Cabeça de martelo

Nas últimas décadas foram propostas dezenas de metodologias e processos adaptados a diferentes cenários e produtos. Embora se possa justificar essa multiplicidade por outra lei de Brooks - a ausência de "balas de prata", é um fato que a situação se mostra confusa.

Há dezenas de trabalhos propostos para casos particulares. Exemplos das diversas iniciativas para tratar o assunto são metodologias como XP e Scrum; o modelo CMM, seguido de toda uma série de adaptações (como SW-CMM, people-CMM, etc.), mais tarde substituído pelo modelo CMMI; e dezenas de artigos e teses de mestrado e doutorado, abordando tópicos particulares em um ou mais de tais métodos, ou propondo ainda novas adaptações a casos particulares.

A situação deixa evidente que há um vácuo a ser preenchido - atacar a raiz do problema e identificar uma estrutura suficientemente geral, capaz de explicar o problema de qualidade e ser adaptada a todos os cenários diferentes. Se tal objetivo é possível resta a ser provado - assunto para novos artigos e teses.

Garantia de qualidade de software

A Garantia da Qualidade de Software (GQS) é a área-chave de processo do CMM cujo objetivo é fornecer aos vários níveis de gerência a adequada visibilidade dos projetos, dos processos de desenvolvimento e dos produtos gerados. A GQS atua como "guardiã", fornecendo um retrato do uso do Processo e não é responsável por executar testes de software ou inspeção em artefatos.

Obtendo a visibilidade desejada, a gerência pode atuar de forma pontual no sentido de atingir os quatro grandes objetivos de um projeto de desenvolvimento de software, quais sejam, desenvolver software de alta qualidade, ter alta produtividade da equipe de desenvolvimento, cumprir o cronograma estabelecido junto ao cliente e não necessitar de recursos adicionais não previstos.

Para conseguir esses objetivos a área-chave de processo GQS estimula a atuação das equipes responsáveis pelo desenvolvimento de software em diversas frentes objetivando internalizar comportamentos e ações, podendo-se destacar:

o planejamento do projeto e o acompanhamento de resultados;
o uso dos métodos e ferramentas padronizadas na organização;
a adoção de Revisões Técnicas Formais;
o estabelecimento e a monitoração de estratégias de testes;
a revisão dos artefatos produzidos pelo processo de desenvolvimento;
a busca de conformidade com os padrões de desenvolvimento de software;
a implantação de medições associadas a projeto, processo e produto;
a utilização de mecanismos adequados de armazenamento e recuperação de dados relativos a projetos, processos e produtos; e
a busca de uma melhoria contínua no processo de desenvolvimento de software.
Para facilitar o trabalho dos desenvolvedores e evitar geração de metodologias diversas, o Serpro desenvolveu o Processo Serpro de Desenvolvimento de Soluções (PSDS).

O PSDS foi construído por pessoas das unidades da empresa que procuraram aproveitar as melhores práticas existentes e consagradas.

O "CMM - Capability Maturity Model for Software /SEI" é uma estrutura-"framework", que descreve os principais elementos de um processo de desenvolvimento de software efetivo. O CMM descreve os estágios de maturidade através dos quais Organizações de software evoluem o seu ciclo de desenvolvimento de software através de sua avaliação contínua, identificação e ações corretivas dentro de uma estratégia de melhoria dos processos. Este caminho de melhoria é definido por cinco níveis de maturidade: inicial, repetitivo, definido, gerenciado e otimizado.

O Modelo CMM (CMM- Capability Maturity Model) fornece às organizações uma direção sobre como ganhar controle de seu processo de desenvolvimento de software e como evoluir para uma cultura de excelência na gestão de software. O objetivo principal nas transações destes níveis de maturidade é a realização de um processo controlado e mensurado como a fundação para melhoria contínua. Cada nível de maturidade possui um conjunto de práticas de software e gestão específicas, denominado áreas-chave do processo. Estas devem ser implantadas para a organização atingir o nível de maturidade em qualidade de software..

Modelos de qualidade

CMMI
MPS.BR
ISO 9126
ISO 15504
ISO 12207

Referências

↑ Qualidade de Software: Visões de Produto e Processo de Software
↑ Sommerville, I. Engenharia de Software. [S.l.]: Pearson/Prentice Hall, 2007. 568 p. 9788588639287
Bibliografia

AROUCK, O. Avaliação de sistemas de informação: revisão da literatura. Transinformação, v. 13, n. 1, jan./jun., 2001. p. 7-21.
BROOKS, F. P. No Silver Bullet: Essence and Accidents of Software Engineering". Computer, Vol. 20, N. 4, pp 10–19. April, 1987.
KOSCIANSKI, A., Soares, M. S.. Qualidade de Software. Editora Novatec, Segunda Edição, 2007.
MOLINARI, Leonardo. Gerência de Configuração - Técnicas e Práticas no Desenvolvimento do Software, Editora Visual Books, 2007, Florianópolis, 85-7502-210-5.
MOLINARI, Leonardo. Testes de Software - Produzindo Sistemas Melhores e Mais Confiáveis, Editora Èrica, 2006, 3a Edição, São Paulo, 85-7194-959X.
PRESSMAN, R. S. Engenharia de Software. McGraw Hill, 2002.

Nenhum comentário:

Postar um comentário