RESENHA DE ARTIGO: QUALIDADE DE SOFTWARE

 Autoria de Joel Guerreiro Borghi Filho

APRESENTAÇÃO


Este trabalho é uma atividade da disciplina de Qualidade de Software do 5º Semestre letivo do curso de Análise e Desenvolvimento de Sistemas do Instituto Federal de Educação Ciência e Tecnologia de São Paulo – Câmpus Bragança Paulista.

Aqui o leitor encontrará alguns tópicos e detalhes técnico-científicos da área de Qualidade de Software, em formato de resenha do artigo científico de título “Qualidade de Software” de autoria de Cassiane de Fátima dos Santos Bueno - cfsb@di.ufpe.br e Gustavo Bueno Campelo – gbc@di.ufpe.br do Departamento de Informática da Universidade Federal de Pernambuco - Recife, PE.



INTRODUÇÃO


A Qualidade de Software se situa dentro do contexto de desenvolvimento profissional de software e se preocupa bastante com métricas de avaliação do produto de software gerado, dado que o conceito de qualidade é algo debatível e complexo e o objeto a ser avaliado é o software. Tal artefato possui em sua natureza aspectos intangíveis e não físicos por pertencer à parte lógica de um sistema, assim definir sua qualidade e o que é de fato qualidade, se torna uma tarefa um tanto abstrata. Portanto o foco maior do texto será em descrever padrões, métodos e métricas de avaliação da qualidade do produto de software.


ESTRUTURA DO TEXTO


Serão apresentados e descritos em tópicos de maneira resumida os pontos chave para o entendimento dos conceitos de qualidade, qualidade de software e do contexto em que são aplicados.


CONCEITOS DE QUALIDADE


Qualidade tende a ser algo que pode ser mensurado, padronizado, reproduzido ou até mesmo uma característica que o distingue dos outros. No que tange o desenvolvimento profissional de software, a qualidade aponta para os requisitos funcionais especificados e se estes atendem ao que se é esperado, o que se espera que faça ao final. Se os padrões de desenvolvimento foram cumpridos conforme suas especificações.


CONTROLE DE QUALIDADE


Defeitos serão produzidos e devem ser minimizados, para isto é comum o uso de testes e revisões para garantir que o que se espera do produto está ligado às suas especificações. O processo de desenvolvimento é iterativo e cada parte do processo deve ser revisado buscando uma melhoria contínua.


GARANTIA DE QUALIDADE


Atividade conhecida como SQA ( Software Quality Assurance ) praticada durante todo o ciclo de desenvolvimento profissional de software. É ela que busca garantir que todas as etapas estão bem documentadas e quais ferramentas métodos e técnicas para projetar serão utilizadas. Seu objetivo é exceder os padrões especificados a nível de excelência aceitáveis.


CUSTO DE QUALIDADE


Esta parte tem como grande preocupação garantir que os recursos financeiros empregados atendem ao nível de qualidade esperado e específicados, como é impossível atingir algo 100% perfeito é necessário definir qual será o padrão de qualidade aceitável e quanto isso custará. Portanto podem ser de vários setores como: testes de equipamentos, inspeções dos processos, retrabalho, bugs.


ATRIBUTOS DE QUALIDADE DE SOFTWARE:


Atributos são uma das maneiras de determinar a qualidade de um software podendo ser:


Fatores externos: podem ser facilmente percebidos pelos usuários do produto.


Fatores internos: somentes são reconhecidos pelos profissionais de computação.


Em suma os fatores internos afetam diretamente os externos, uma boa qualidade interna reflete numa qualidade externa.


Ou podem ser também:


Funcionais: aplicam-se a partes do software.

Não-funcionais: podem ser qualquer parte do produto de software ( documentação, especificação, manuais etc).


MÉTRICAS DE QUALIDADE DE SOFTWARE


Para a engenharia tradicional as técnicas de medição quantitativas são a regra de ouro, mas no contexto de Engenharia de Software as coisas tendem a ser bem diferentes devido à natureza do software. São utilizados portanto indicativos de qualidade do que o software representa.


Exemplos:


Portabilidade, usabilidade, manutenibilidade, confiabilidade, fácil modificação, fácil manutenção etc.


MÉTRICAS PARA SISTEMAS ORIENTADOS À OBJETOS


Sistemas orientados à objetos possuem métodos de desenvolvimento diferentes de sistemas convencionais. Como são muitas, somente algumas métricas serão demonstradas e referem-se às suas especificidades como:


Localização: em que parte as informações estão concentradas


Encapsulamento: capacidade de empacotar informações, “esconder” detalhes das operações.


Herança: capacidade de propagar responsabilidade à outros objetos.


Abstração: focar nos detalhes principais de alto nível.


tricas Orientadas à Classes


No paradigma de orientação à objetos a unidade fundamental são as classes, as classes comumente herdam de outras classes e funcionam como um sistema colaborativo. Alguns autores utilizam este fator como medida de qualidade.


Resumidamente algumas das práticas para este tipo de métrica:


Peso dos Métodos Por Classe: métrica analisa se uma classe é muito especializada o que pode limitar sua capacidade de reuso.

Profundidade da Árvore de Herança (DIT): métrica que analisa o tamanho máximo do nó raiz até a árvore.

Número de filhos: analisa o tamanho das classes filhas, se o número aumenta o número de testes também aumentará.

Acoplamento entre objetos: esta métrica fornece uma maneira simples de identificação e organização das classes pertinentes aos requisitos do sistema.

Falta de coesão entre métodos (LCOM): quanto maior o valor da LCOM maior a complexidade da classe.


Existem outras métricas orientadas à classes que também são importantes mas não serão descritas aqui.


Motivação para o uso de Métricas de Qualidade


As métricas tem objetivos em comum:

  • aumentar a compreensão acerca da qualidade do produto;

  • provar a eficácia do processo;

  • melhorar o projeto;


GARANTIA DE QUALIDADE DE SOFTWARE (SQA)


Um grande desafio é conseguir que pessoas não experientes consigam revisar o trabalho de pessoas experientes. A SQA busca métodos de garantir que não-desenvolvedores consigam revisar o trabalho de desenvolvedores ou engenheiros de software, para assegurar que estão utilizando seu conhecimento de forma correta. O papel fundamental de uma equipe de Garantia de Qualidade de Software é fazer com que o time de engenheiros de software consiga desenvolver um produto de alta qualidade.


Medidas de Produtividade em Programação


Existem 5 atributos que são utilizados:

  • cumprimento de cronograma

  • adaptação

  • eficiência

  • ausência de erros

Revisões de Software


Revisões são executadas em diversas etapas do processo de desenvolvimento de software e tem a principal função de encontrar erros que podem ser removidos. Vale ressaltar também que a documentação deve também ser revisada.

Tipos básicos de revisão:

  • Revisão de código : encontrar erros e verificar se padrões estão sendo aplicados.

  • Revisão gerencial : visa buscar informações sobre todo o projeto aos gerentes.

  • Revisão de qualidade : equipes ou pessoas são revisadas por gerentes técnicos.


Segundo a IEEE um defeito é considerado “ uma anomalia do produto “. O ponto chave das revisões é encontrar defeitos antes que cheguem ao usuário final.


Confiabilidade


Elemento de enorme importância, a capacidade de um produto de software de operar sem falhas pode ser medido em níveis de confiabilidade utilizando-se de dados de um histórico e probabilidade e estatística.

Uma falha pode ser entendida como requisitos que estão fora das conformidades.Algumas falhas podem ser eliminadas facilmente, ou requerer uma grande intervenção. Em alguns casos eliminar uma falha pode ocasionar em acrescentar outras falhas.

SISTEMAS DE GERENCIAMENTO DE QUALIDADE


Personal Software Process (PSP)


A parte mais importante do PSP é fazer com que os engenheiros de software atentem-se para sua própria performance, nos processos que utilizam e chequem a performance destes processos. O PSP é um método de que busca aumentar a produtividade pessoal.


Alguns princípios do PSP:

  • Padronizar os processos pessoais

  • Acrescentar métricas aos processos pessoais

  • Análise de dados anteriores para aumentar performance futura



Capability Maturity Model (CMM)


CMM ou Modelo de Maturidade de Capacidade de Software apresenta e descreve alguns dos princípios que condizem com o nível de maturidade do processo de software.


Os Cinco Níveis de Maturidade


  • Inicial: o caos é comum com poucos processos definidos, o sucesso depende de um esforço individual muito grande.

  • Reproduzível: os processos básicos são definidos permitindo a reprodutibilidade.

  • Definido: processo padronizado e documentado e feito sob medida para a organização do desenvolvimento à manutenção do software.

  • Gerenciado: detalhamento dos processos de software e qualidade documentadas, são controlados de forma qualitativa.

  • Otimizado: melhoria contínua.




ISO 9001


É um sistema de controle de qualidade que se correlaciona com o CMM, compartilham interesses em comum. A grande diferença é que o CMM busca a melhoria contínua, em contrapartida ISO 9001 determina um um critério mínimo de aceitável para um sistema de software. O CMM foca especificamente no software, já o ISO 9001 é mais abrangente englobando a parte física, materiais e serviços. No Brasil o CMM por ser menos abrangente ainda não é uma realidade nas empresas brasileiras, algumas pessoas discutem ainda qual é o padrão mais adequado.



CONCLUSÃO


A qualidade de software é uma área de grande importância e relevância pois está instrínsecamente ligada à todo o ciclo de desenvolvimento do sistema de software profissional, de ponta-a-ponta e sem sombra de dúvidas algo que deve ser aplicado à todo projeto de sistema que se deseje obter excelentes resultados para os usuários finais e o gerenciamento posterior.


SOBRE O AUTOR


Meu nome é Joel Guerreiro Borghi Filho, e sou acadêmico do 5º período da disciplina de Qualidade de Software do Curso superior tecnólogo em Análise e Desenvolvimento de Sistemas do Instituto Federal de Educação Ciência e Tecnologia de São Paulo – Câmpus Bragança Paulista. (IFSP-BRA).

FONTE:

BUENO, C. F. S. , G. B, CAMPELO. Qualidade de Software. Departamento de Informática Universidade Federal de Pernambuco - Recife, PE, p. 1-27.

Comentários

Postagens mais visitadas deste blog

Resenha de Artigo - Avaliação de Interfaces de Usuário – Conceitos e Métodos

Listagem de Serviços de FTP e Modos de Operação ( passivo e ativo ) - Comparativos

Explicação básica do que é uma API - Interface de Programação da Aplicação ( Application Programming Interface )