Pular para o conteúdo

Entendendo Qualidade de Software

Postado em 3 minutos de leitura

Recentemente estive analisando alguns projetos de softwares open source com o objetivo de colaborar no desenvolvimento. A grande maioria não possui rotinas de testes, comentários em código ou qualquer tipo de documentação útil aos novos desenvolvedores. Assim resolvi falar um pouco sobre qualidade de software do ponto de vista da construção.

Um software tem característica de qualidades internas e externas. As características externas são aquelas que os usuários tem conhecimento e se preocupam, por exemplo, se o software é fácil de usar. As características internas são mais preocupações dos programadores, por exemplo, se o software é fácil de modificar. Os usuários querem saber se o software é fácil de usar e não fácil de modificar. Querem saber se o software funciona corretamente e não se o código é legível.

Características de qualidade externas

  • Adaptabilidade: Capacidade de alterar o ambiente de maneira simples sem necessidade de modificação no software.
  • Confiabilidade: Capacidade do software funcionar corretamente com o mínimo de falhas.
  • Eficiência: Capacidade de funcionar corretamente e fornecer o desempenho adequado com o uso mínimo de recursos disponíveis.
  • Integridade: Garante integridade dos dados acessados e restrição de acessos ao software.
  • Precisão: Grau de precisão das informações geradas pelo software.
  • Robustez: Capacidade do software continuar funcionando na presença de dados inválidos ou condições inesperadas.
  • Usabilidade: Facilidade dos usuários aprenderem a utilizar o software.

Características de qualidade internas

  • Capacidade de Teste: Capacidade com que se pode fazer testes de unidades e de integração para verificar se o software satisfaz os requisitos.
  • Flexibilidade: Facilidade de modificar o software para usos diferentes daquele para o qual foi projetado.
  • Inteligibilidade: Facilidade de compreender a coerência de um software em um nível superior do que a legibilidade proporciona.
  • Legibilidade: Facilidade de entender o código-fonte do software.
  • Manutenibilidade: Facilidade para modificar um software ou corrigir problemas.
  • Portabilidade: Capacidade de modificar o software para uso em ambientes diferentes daquele para o qual foi projetado.
  • Reusabilidade: Facilidade de reutilizar partes do software em outros projetos.

Conclusão

Algumas dessas características têm diferentes variações de significados. As diferenças entre elas não são completamente claras e algumas vezes as características internas afetam as externas. Um software que não é flexível não pode ser aprimorado de acordo com as solicitações dos usuários, o que, por sua vez, afeta a característica externa de usabilidade.

A questão é que algumas características da qualidade de software são acentuadas para ajudar aos usuários enquanto outras tornam a vida do programador mais fácil. O que falta em muitos projetos de código aberto é uma atenção especial às características de qualidade internas. Espero que esse cenário mude em breve.