sexta-feira, 24 de abril de 2009

O que é qualidade de software? - Introdução

Esta é a pergunta que não quer calar: O que é qualidade de software?

Eric Braude, em Software Design: From Programming to Architecture, definiu que os princípios de um projeto de software são: correção, robustez, flexibilidade, reusabilidade, eficiência, usabilidade e confiabilidade. Acrescento também a legibilidade, pois como diz Martin Fowler:
Any fool can write code that a computer can understand... But only good programmers write code that humans can understand
Em alguns casos, precisamos degradar um dos princípios em prol de outro, como por exemplo a eficiência pela reusabilidade. Mas correção e robustez são princípios básicos, sendo assim, obrigatórios.

A qualidade do código está diretamente ligada a todos estes princípios. Devem estar presentes na cabeça do desenvolvedor desde a primeira linha escrita, desde a modelagem da primeira classe. Tornar realidade nos primeiros esboços, seria o mundo perfeito. Mas não somos máquinas. Entretanto, isso não exime o desenvolvedor de estar com esses princípios em mente desde o nascimento dos primeiros requisitos.

Normalmente, desenvolvemos pensando apenas na correção e na robustez, preocupados em atender os requisitos e na confiabilidade da aplicação. Nesse momento entra a refatoração e, com ela, o ganho de experiência nas boas práticas. Refatoramos a arquitetura, movemos e criamos atributos e métodos, aplicamos padrões de projeto. Ao ficar inquieto com o que acabei de criar, quero aprender uma forma mais elegante de implementar aquela solução.

Gosto de comparar o desenvolvedor a um artista. Devemos ter tempo para olhar a obra e corrigir as imperfeições. E, infelizmente, tempo é uma peça chave nos processos de negócio. Não podemos menosprezar o problema de prazo do cliente.

Esta questão será peça chave também no blog e espero conseguir mostrar que com um tempo a mais para pensar nas melhores práticas, o cliente ganhará muito mais com o software em produção.

2 comentários:

  1. A legibilidade é importante não apenas para a manutenção mas também para o próprio desenvolvimento, entretanto acredito que existe uma diferença quanto a categoria dos outros atributos pois como poderemos medir a legibilidade ?

    ResponderExcluir
  2. Sim, a legibilidade é subjetiva. Talvez seja um dos motivos de ser, quase sempre, ignorada. Isso é um erro, pois contribui bastante para a perda de qualidade do produto final. Estes atributos (ou princípios) não estão divididos por mensuráveis e não mensuráveis. Coloquei os princípios gerais da qualidade de software. Outros princípios, como a flexibilidade, também são difíceis de mensurar.

    ResponderExcluir