40. Qualidade de Software: Manifestações aos Olhos dos Clientes
Muito se tem falado sobre qualidade de software. Muitos artigos e livros falam sobre ela, sobre a
necessidade de melhorá-la e sugerem planos de ação para produzi-la e avaliá-la. Entretanto,
aparentemente, há muita discussão e discórdia sobre o conceito de qualidade e, por isso, muitos
planos não proporcionam os resultados desejados. As pessoas se defrontam com dificuldades ao
discutirem o tema e como atacar o problema do ponto de vista prático. A pedra de toque para
dirimir as controvérsias é compreender que software (ou sistema), como qualquer produto, é feito
para ser utilizado por alguém que espera que algum valor lhe seja agregado. Entender o conceito
de qualidade sob a abordagem de sua manifestação aos olhos dos clientes e aplicá-lo ao
desenvolvimento pode ser um caminho para aumentar a satisfação das pessoas que usam o
software.
Pela análise dos conceitos emitidos pelos mestres da qualidade, concluímos que, para todos eles,
ela é a capacidade de um artefato, tangível ou não, de atender ou satisfazer um conjunto de
requisitos ou expectativas do cliente (o usuário de um software é cliente). Assim, devemos pensar,
entender e praticar qualidade, sempre com foco no cliente, pautando nossas ações pelos seus
requerimentos. Isso é válido também para o software que é produzido para atender a
necessidades de um cliente ou classe de clientes. É o cliente que determina a qualidade que quer
e que pode pagar. Ele especifica os requisitos e julga os resultados do nosso trabalho. O nosso
cliente, conhecido como usuário e tido por muitos como um mal necessário, quer coisas como
tempo de resposta curto, resultados corretos, facilidade de aprender e usar, manutenção rápida,
preço baixo, prazo curto, facilidades de correção de erros, controle sobre o sistema, ajudas
eficazes e aumento de produtividade no seu trabalho, entre outros requisitos. Nosso cliente quer
ver e sentir tais características ou dimensões nos softwares que nós lhe entregamos.
A qualidade depende dos requisitos dos clientes que o artefato atende e de como os atende.
Assim, um software precisa apresentar adequação ao cliente e às suas tarefas, custo aceitável,
consistência de comportamento, compatibilidade com a experiência e conhecimentos do cliente e
conformidade às especificações. Portanto, qualidade é um conceito relativo e multidimensional e
se manifesta através de características presentes nos produtos.
Os requisitos e expectativas dos clientes podem ser agrupados e analisados sob um nível de
abstração mais elevado, constituindo tais grupos dimensões da qualidade. Garvin (1987), para
quem a qualidade deve ser avaliada segundo suas manifestações aos olhos dos clientes,
identificou, para produtos tangíveis, oito dimensões da qualidade (Tabela 1).
Tabela 1 – Dimensões da qualidade
Desempenho- Características operacionais relacionadas com as funções fundamentais do produto
Atributos- Características que suplementam seu funcionamento básico
Confiabilidade- Probabilidade de um produto funcionar mal ou falhar em um período de tempo
especificado
Conformidade- Grau de aderência do projeto e suas características operacionais aos padrões
estabelecidos
Durabilidade- A quantidade de tempo durante o qual um produto pode ser usado antes de tornar-se
inoperante ou inadequado às necessidades
Atendimento- Velocidade, cortesia, competência e facilidade de manutenção
Estética- Subjetividade quanto à aparência, sons, sabor, odor, impressão, cores, pressentimento,
sensação, etc.
Demonstração Imagem produzida pela reputação do produtor e inferências obtidas de vários
aspectos tangíveis e intangíveis do produto
Com certeza é, do ponto de vista prático, impossível obter alto nível de qualidade em todas as
dimensões. A qualidade pode, então, ser entendida como um compromisso entre as dimensões,
decorrente das restrições tecnológicas, custos e requisitos dos clientes. Cabe ao produtor
averiguar quais dimensões afetam, de modo mais significativo, a percepção do cliente e traduzi-las
(aqui vale a utilização do QFD – Quality Function Deployment) em termos de especificações de
projeto.
O compromisso é sentido na prática, pois tanto produtos tangíveis e intangíveis quanto software
raramente proporcionam satisfação integral. Sempre há, pelo menos, um requisito – total ou
parcialmente – não atendido.
McCall (ver Perry, 1982, e Pressman, 1992), a partir de estudos sobre os requisitos dos clientes,
obtidos em diversas pesquisas, estabeleceu 11 fatores da qualidade para software (Tabela 2).
Tabela 2 – Fatores da qualidade
Manutenibilidade-Esforço requerido para localizar e corrigir defeitos em um programa
Flexibilidade-Esforço requerido para modificar um programa operacional
Testabilidade- Esforço requerido para testar um software a fim de assegurar que ele execute as
funções para as quais foi construído
Portabilidade- Esforço requerido para transferir um software de um ambiente hardware/software
para outro
Reusabilidade- A extensão em que um software ou partes dele podem ser reutilizados –
relacionados ao empacotamento e escopo das funções executadas
Interoperabilidade-Esforço requerido para acoplar um software a outro
Correção-A extensão em que um programa satisfaz as especificações, os objetivos e missão
estabelecidos pelo usuário
Confiabilidade A probabilidade de um software funcionar sem falhas graves por um determinado
período. Eficiência-Quantidade de recursos/código requeridos por um software para executar sua
missão
Integridade - Proteção oferecida quanto a acessos indevidos
Usabilidade -Esforço requerido para aprender a usar o software, operá-lo, preparar as entradas e
interpretar as saídas
Pela definição de cada um, percebe-se que eles guardam estreita relação com as dimensões
identificadas por Garvin para produtos tangíveis.
A HP (Grady & Caswell, 1987), no seu processo de melhoria da qualidade de software,
desenvolveu o modelo FURPS (Functionality, Usability, Reliability, Performance and
Supportability), que representa as dimensões mais relevantes para seus clientes (Tabela 3).
Novamente, temos a necessidade de estabelecer compromissos, pois a melhoria da qualidade em
uma das dimensões significará piora ou estagnação em outra ou outras. Em cada caso, o que o
cliente prioriza? A resposta dará direção aos projetos e planos.
Tabela 3 – FURPS
Funcionalidade -Funções executadas pelo software, segurança do sistema
Usabilidade- Fatores humanos, estética, consistência e documentação
Confiabilidade Freqüência e severidade das falhas, capacidade de recuperação, acurácia dos
resultados, tempo médio entre falhas e previsibilidade
Desempenho -Velocidade de processamento, tempo de resposta, consumo de recursos, eficiência
e desempenho global
Atendimento - Testabilidade, flexibilidade, manutenibilidade, facilidade de instalação
Nielsen (1995) também discute a qualidade sob a abordagem de dimensões, mas enfatiza a
usabilidade. Essa é parte da “usefulness”, que se refere à capacidade do software de atingir o
objetivo desejado. Essa dimensão é subdividida em duas: utility (utilidade – agregação de valor) e
usability (usabilidade). Esta última se refere à possibilidade e facilidade de uso de um sistema. A
propósito, é conveniente lembrar que, conforme Aristóteles, o objetivo final de qualquer coisa é a
função para a qual foi construída.
Essa dimensão merece destaque. Nielsen escreveu um livro a ela dedicado. Os sistemas com que
nos deparamos nos dias atuais são diferentes dos produzidos nas décadas de 70 ou mesmo 80. A
complexidade é maior e, na maioria, são sistemas “interativos”, com foco na comunicação com o
usuário, o que exige maior atenção e esforço para conceber e implementar a interface.
Aproximadamente 80 por cento do código está relacionado à interface, que para muitos usuários é
o sistema, e destinado a implementar características, tais como facilidade de aprender, utilizar e
memorizar, compatibilidade, confiabilidade e utilidade, respeitando, dentro das limitações da
tecnologia, os objetivos, representações e conhecimentos dos clientes a que se destinam.
Essa dimensão, que reputo a mais complexa de se obter, inclui a adequação do software às
tarefas das pessoas, a interface (gráfica ou não) e a forma de usá-la, os procedimentos de
instalação, entre outras características. É através da interface que o cliente sente e percebe o
sistema. Talvez, para muitos deles, ela seja o sistema. O projeto dos elementos da interação e
interface depende do conhecimento e consideração do conteúdo do trabalho e das características
da tarefa. Assim, tratar a usabilidade corresponde a focalizar questões relativas a: conforto mental
e físico do usuário, comportamento e estratégia de resolução de problemas, memorização,
recordação, percepção e modelagem cognitiva, entre outros, tratados pela ergonomia,
especialmente a ergonomia cognitiva.
As dimensões tratadas anteriormente referem-se, na sua maioria, à qualidade in-trínseca dos
produtos e serviços. Entretanto, quem desenvolve software, assim como quem produz bens e
serviços, de uma forma geral, precisa criar vantagens através de seus processos de negócio. Slack
(1993), tratando da vantagem competitiva em manufatura, diz que tal vantagem significa “fazer
melhor”. Fazer melhor é um conceito que traz, no seu bojo, algumas dimensões da qualidade que
são muito apreciadas pelos clientes e se relacionam diretamente a questões crônicas do
desenvolvimento de software, quais sejam, prazo e orçamento dos projetos (Tabela 4). Essas
dimensões devem ser consideradas no estabelecimento ou escolha da metodologia de
desenvolvimento, das técnicas (estruturada, OO, etc.) e do processo de gestão da produção de
software. Especificamente, a dimensão velocidade sugere “reusabilidade”, que não é privilégio da
orientação a objetos.
Tabela 4 – Dimensões para competitividade
Velocidade - Reduzir o espaço de tempo entre o início do processo de desenvolvimento e a
entrega do software
Pontualidade- Manter a promessa de prazo de implantação. Ter condições de estimar prazos de
projeto com acuidade ou condições de aceitar prazos solicitados pelos clientes.
Flexibilidade - Variar e adaptar métodos e técnicas em função da alteração das necessidades dos
clientes
Custo- Utilizar recursos pouco onerosos e ter processos e técnicas eficientes
Competência -Demonstrar, através de aspectos tangíveis, a capacidade de atender às
necessidades dos clientes
Até aqui, vimos as posições de cinco autores, um dos quais é usuário de informática. Podemos
transpor os modelos da qualidade, utilizados na fabricação de produtos tangíveis, para o
desenvolvimento de software? O que viemos discutindo a propósito das variadas visões dos
autores citados sugere que a visão de “dimensões”, empregada para produtos tangíveis, pode ser
aplicada a software. De uma forma geral, somente os termos e a ordenação são diferentes. O
racional por traz de cada dimensão ou fator é basicamente o mesmo. Por outro lado, o software
também deve apresentar características que manifestem a qualidade aos olhos dos clientes.
Assim, criar um software com o nível adequado de qualidade significa criar um produto com as
características que o cliente quer e que as exiba, formalmente, ao mesmo.
Nossa sugestão é, então, que se trabalhe não com base em conceitos genéricos da qualidade,
mas com base nas expectativas do cliente. A qualidade do software deve ser a que o cliente quer.
Abordá-la sob essa óptica permite atuar de forma mais pragmática no desenvolvimento de
sistemas, bem como tomar melhores decisões sobre os projetos e sobre competitividade. Isso nos
leva a considerar válido propor que um software ou sistema com nível adequado de qualidade seja
conceituado como aquele que satisfaz a classe de usuários a que se destina, no que se refere às
dimensões tidas como relevantes pelos representantes daquela classe, consideradas as restrições
tecnológicas, preço, custo e prazo de entrega.
O processo de desenvolvimento deve, então, permitir construir software de tal sorte que o cliente
“veja” as manifestações da qualidade que ele valoriza. O mesmo deve ocorrer em relação ao
processo de desenvolvimento (metodologia), se queremos ser, realmente, competitivos. Uma
justificativa mais pragmática para tanto é que, quando da aquisição ou encomenda de um software,
o cliente, ou usuário, não pergunta qual o nível de qualidade do mesmo, mas questiona diversos
aspectos relacionados com as dimensões, inclusive prazo e preço. Portanto, a abordagem das
dimensões não só pode, como deve ser aplicada ao desenvolvimento de software.
Decidir sobre a qualidade, com base nas dimensões que representam os requisitos e expectativas
dos clientes, permite maior taxa de acertos na escolha de metodologias, técnicas e tecnologias a
serem empregadas no desenvolvimento de sistemas, no estabelecimento de programas de
qualidade e produtividade em software. Permite também, de forma mais pragmática, responder a
questões como: Do que os meus clientes precisam? O que agrega valor para eles? Qual o meu
produto ou serviço? O processo utilizado permite produzir o software que satisfaz os clientes? As
práticas atuais permitem satisfazer os clientes? Os métodos e técnicas de engenharia de software
são suficientes? A usabilidade dos softwares é a que o cliente quer?
Outra vantagem dessa abordagem é eliminar o desperdício de tempo e de outros recursos com
discussões filosóficas e planos baseados em conceitos gerais, pois qualidade é um conceito
relativo, que depende dos interesses e necessidades de quem a conceitua ou define. Além disso,
as necessidades de cada cliente são diferentes e se modificam ao longo do tempo.
Talvez seja necessária alguma “personalização” nas dimensões para cada situação prática.
Entretanto, substituir um par de subdimensões não parece ser algo complexo, uma vez que os
conceitos estão estabelecidos.
Praticar a qualidade através dos processos e segundo suas manifestações aos olhos dos clientes
propicia um melhor encaminhamento das ações e dos planos para melhorar a satisfação do cliente
e para investir recursos financeiros, humanos e tecnológicos, de forma a obter melhor julgamento
dos clientes, aderência aos objetivos e planos das empresas e, talvez, para garantir
“empregabilidade”. Entretanto, resta ainda uma questão em aberto: a mensuração. Como saber se,
realmente, o meu processo está criando, a cada passo, as dimensões que nossos clientes
valorizam? Como medir a minha vantagem em relação ao meu concorrente?
Referências bibliográficas
Competing on the eight dimensions of quality. Harvard Business Review, 65, (6): 101-9, Nov./Dec.,
1987.
GARVIN, D. A. What does “Product Quality” really mean? Sloan Management Review, 25 (1): 2543, 1984.
GRADY, R. B. & CASWELL, D. L. Software metrics: establishing a company-wide program.
Englewood Cliffs, Prentice-Hall, 1987.
NIELSEN, J. Usability engineering. Boston, AP Professional, 1995.
PERRY, W. E. Effective methods of EDP quality assurance. Wellesley, QED, 1982.
PRESSMAN, R. S. Software engineering: a practitioner’s approach. 3 ed. New York, McGraw-Hill,
1992.
SLACK, N. Vantagem competitiva em manufatura. São Paulo, Atlas, 1993.
Autor: Luís Alves da Silva
Biografia: é mestre em Engenharia de Produção pela EP-USP, graduado em Administração de
Empresas e em Ciências Contábeis pela FEAC-USP, Professor de Auditoria de Sistemas na FASP
(Faculdades Associadas de São Paulo) e Analista Consultor da GSI Serviços de Informática Ltda.
(uma empresa IBM).
Download

40. Qualidade de Software: Manifestações aos Olhos dos Clientes