De nada adianta investir em testes, desenvolvimento, se o que cliente necessita não foi desenvolvido.
Quando falamos que se fosse investido mais tempo planejando o projeto e validando objetivos, gastar-se-ia menos tempo com manutenções intermináveis e retrabalhos, na verdade defendemos o fato que não adianta investir tempo e dinheiro em requisitos incoerentes com o que o usuário deseja.
Todo o processo de desenvolvimento de um software deve respeitar as expectativas dos usuários, o analista, o desenvolvedor e o testador, devem trabalhar para o usuário, por isso é imprescindível conhecer o negócio, o perfil de quem usa o produto e o ambiente onde o mesmo será inserido.
Identifique seu usuário e então adapte seu produto a ele!
Usabilidade
Usabilidade é um termo bastante falado atualmente.
Ser usual é estar de acordo com as expectativas do usuário, é ser fácil, intuitivo e ter uma interação positiva.
Quem nunca se frustrou ao tentar utilizar um software?

Figura 1: Usuário frustrado.
Vou além, quem nunca se frustrou ao solicitar melhorias no layout de um sistema e esses requisitos serem considerados perfumaria, onde a prioridade é a mínima possível?
Muitas empresas de software cresceram por encontrarem um vértice sem concorrência, com clientes carentes de processos automatizados, hoje o contexto mudou e a indústria de TI perde pela falta de qualidade.
São inúmeros os descontentamentos:
- Aplicação que não funcionando adequadamente;
- Sistema que não atende as expectativas básicas de seus usuários;
- Dúvidas constantes para realizar rotinas fáceis;
- Mensagem de erro que assustam usuários, passando a repudiarem o sistema e solicitarem tudo a equipe de suporte, por insegurança;
- Cores, saturação de textos e efeitos confusos e poluídos;
- Rotinas impossíveis de executar sem o auxilio de manual;
Quando se escuta depoimento de equipes de atendimento e usuários, é constatado que a Crise de software ainda se faz presente, mas infelizmente muitas softhouses não perceberam isso, ou optaram por ignorar o fato.
É fundamental entender que o software é um produto, onde o cliente escolhe a cor, o preço e quando quer receber.
A Engenharia de usabilidade auxilia equipes a tratarem de problemas comuns, utilizando para o desenvolvimento de interfaces até aspectos relacionados à cognição, psicologia, cultura e tantas variações que diferem um usuário do outro.
Para melhorar produtos, utilizando a usabilidade, não é necessário ser uma grande corporação, possuir uma equipe especialista ou investir muito capital, basta definir e institucionalizar ações simples, que fazem toda a diferença.
Métodos de Heurísticas auxiliam na resolução de problemas comuns em software. As regras de Nielsen norteiam esse artigo, sendo repassadas como dicas a equipes que pretendem melhorar seus produtos.
Visibilidade do estado do sistema
O usuário deve estar informado sobre a situação do sistema, por isso é fundamental o fornecimento de feedback constante.

Figura 2: Barra de carregamento.
Um exemplo é a existência de barra de carregamento que traz o percentual da tarefa realizada, a confirmação de ações, como salvo, deletado, impresso, auxiliando o usuário a entender o que esta acontecendo.
Compatibilidade entre sistema e mundo real
A linguagem do usuário deve ser respeitada, padrões estabelecidos do inicio ao fim e conceitos que representem o mundo real.

Figura 3: Exemplo do mundo real.
As informações devem aparecer em ordem lógica e natural para o negócio, destacando que essa ordem nem sempre é a alfabética.
Liberdade e controle do usuário
O usuário deve ter intimidade com o sistema utilizado, gerando confiança, pela certeza que ele esta no controle de suas ações sempre.

Figura 4: Decisão do usuário.
Um exemplo é oportunizar ao usuário saídas de emergência, como, botões de cancelamento e retorno. O usuário deve não ter medo de errar, pois o sistema permite a reversão de suas ações.
Consistência e padrões
Usuários não devem ter que adivinhar que diferentes palavras, situações ou ações significam a mesma coisa.

Figura 5: Duvida.
Siga as convenções de plataforma computacional, obedeça a um padrão comum para o usuário que permita uma decisão intuitiva.
Prevenção de erros
As mensagens de erros são evitadas quando se preocupa com design.

Figura 6: Mensagem de Erro.
O design deve buscar eliminar situações propensas a erros e ações indesejáveis do usuário.
As mensagens costumam ser consideradas negativas pelo usuário, tendo o mesmo a certeza que errou, perdendo segurança em utiliza-lo, por isso as mensagens devem ter objetivo de direcionar, explicando claramente a ação realizada de forma errônea e o que deve ser feito de maneira corretiva.
Ênfase no reconhecimento
O reconhecimento permite ao usuário minimizar a carga de memória, tornando objetos, ações e opções visíveis.

Figura 7: Reconhecimento.
As informações do sistema não devem ser lembradas e sim intuitivas, também visíveis e facilmente recuperáveis.
Flexibilidade e eficiência no uso
Existem níveis de usuários, os novatos e os avançados.

Figura 8: Atalhos.
Para os avançados, a busca por menus muitas vezes torna-se exaustiva, por isso a utilização de aceleradores, como atalhos no teclado, permite maior produtividade dos mais experientes.
Estética e projeto minimalistas
Diálogos não devem conter informação irrelevante ou raramente necessária, deve ser objetivo e claro.

Figura 9: Muita Informação.
As informações extras e excessivas diminuem a visibilidade e poluem a interação.
Auxílio ao reconhecimento, diagnóstico e recuperação de erros
Linguagem de código deve permanecer no código e não aparecerem para o usuário, ele apenas precisa saber o que fez de errado e retornar para corrigir e não sobre o banco de dados ou condições do código.

Figura 10: Informativo.
A mensagem de erro deve indicar o problema com precisão e sugerir uma solução construtiva, não confundir o usuário, para que ele tenha medo de realizar ações no sistema.
Ajuda e documentação
Quando se investe em usabilidade, a documentação e ajuda perdem força, pois o próprio sistema é auto explicativo, porém, esses devem ser criado para apoio a necessidades.

Figura 11: Documentação.
Nos casos onde o usuário optar em acessar informações de pesquisa ou manuais, esses devem estar atualizados, detalhados, ilustrados e objetivos, sempre focando no usuário.
CONCLUSÃO
A usabilidade pode ser definida pela capacidade do usuário em entender um software e interpreta-lo, não estando essa diretamente associada ao banco de dados ou linguagem utilizada no desenvolvimento.
Linguagens de desenvolvimento estão cada vez mais simples, ferramentas mais acessíveis e equipes cada vez menores, desenvolver um software já não é um desafio, mas desenvolver com qualidade, atendendo as expectativas de seus stakeholders ainda é complexo, mas é o que garante o diferencial de um produto no mercado.
As empresas, equipes ou indivíduos que pretendem desenvolver seus produtos em alicerces que possibilitem fácil manutenção e satisfação de todos stakeholders, investir um tempo em usabilidade através de ações simples, mas de grande importância, é fundamental, como defendido nesse post.