Precisamos falar sobre qualidade de software
O que define a qualidade de um software?
Precisamos falar sobre qualidade de software Rosecler Rodrigues
O software é um dos produtos mais importantes na nossa era atual. Ninguém vive sem ele. Temos software em locais e situações as mais variadas: dentro dos computadores, dos celulares, em aparelhos médicos, nos aviões, em qualquer ramo da indústria, dentro de robôs, da televisão… Nos nossos dias, o software é um produto imprescindível. E considerando esta realidade, podemos deduzir que qualquer problema ou defeito pode gerar de um simples transtorno até um problema realmente grande. Portanto, a qualidade do software é primordial. Examinemos algumas situações. Você vai retirar dinheiro em um caixa eletrônico, mas há um defeito e o programa não responde. É um contratempo para o cliente, que não conseguiu o que precisava. Já dentro de um avião, um erro de software pode causar até a perda de vidas humanas. Portanto, o cuidado e a atenção com a qualidade são muito importantes. É aí que entra a discussão a que se propõe este artigo: o que define a qualidade de um software?
Uma das primeiras questões é que o software deve atender as necessidades do cliente e suas expectativas – que dependem diretamente da finalidade do produto, para que ele vai servir. Por exemplo, a minha necessidade no final de semana é levar a família para a chácara. O carro vai bastante carregado – bagagens, pessoas, animais – enfrentar uma estrada de terra. Um veículo esportivo pode me ajudar? Até pode, mas um 4×4 seria muito mais adequado. Ou seja, o carro esportivo não atende essa minha expectativa. Completando a analogia, não adianta um software ter a tela bonita, ser rápido, se ele não atende a expectativa do cliente. E para saber que expectativa é essa, deve-se saber qual o problema que o cliente gostaria de ver resolvido. A qualidade do software tem início, então, no atendimento da expectativa: ele deve cumprir os requisitos do cliente.
Um outro exemplo: vou ao caixa eletrônico para ver o saldo na minha conta e retirar dinheiro. Chego à máquina e vejo o saldo. Neste primeiro momento, o software atendeu minha necessidade. Mas para retirar o dinheiro, levo quase dez minutos na operação. E isso gera um contratempo, a demora. Ou seja, o software atendeu a necessidade (ver saldo e pegar dinheiro), mas houve o transtorno (demora). A lição é que além dos requisitos funcionais (permitir a verificação do saldo em conta corrente e a retirada de dinheiro, neste caso) a equipe de desenvolvimento deve estar atenta também aos requisitos não-funcionais (como estabilidade, segurança, desempenho, velocidade, confiabilidade, etc.), tão importantes quando os funcionais, mas que muitas vezes não são mencionados pelo cliente.
Existem, então, dois pilares para a qualidade do software: atendimento à expectativa do cliente em relação aos requisitos funcionais que ele passa; e atendimento aos requisitos não-funcionais – mesmo que o cliente não fale sobre eles.
Não ter o devido cuidado com esses requisitos não-funcionais é um pecado bastante comum na área de desenvolvimento hoje. Assim, entrega-se uma aplicação mais demorada do que o cliente desejava, ou com a tela difícil de lidar, porque nada disso foi mencionado pelo cliente ou lembrado pela equipe de desenvolvimento.
Para um software ter qualidade, então, é fundamental que o desenvolvimento se dê com pleno conhecimento e transparência tanto dos requisitos funcionais (que problemas do cliente o software deve resolver) quanto dos não-funcionais. Porque, ainda que o cliente não explicite isso ao falar das necessidades que tem e que o software deverá suprir, certamente vai querer segurança, telas claras e intuitivas, estabilidade, rapidez…. Tudo isso se traduz em qualidade. E se não houver, seu cliente vai reclamar, pode ter certeza.