Resumo:
Por que Interfaces Homem-Máquina são difíceis de Projetar e
Implementar?
Why are Human-Computer Interfaces Difficult to Design and
Implement?
Brad A. Myers
Grupo 5
Christian Reis
Pedro M. S. Eleutério
Ricardo J. M. Ribeiro
Wagner S. Bila
Ramon Chiara
Resumo:
Este artigo [
1] afirma que a dificuldade de
projetar e implementar de interfaces entre o Homem e o Computador é
inerente a estas tarefas, e que tecnologias novas dificilmente
causarão mudanças quânticas na rapidez ou facilidade com que são
executadas.
A maior parte dos artigos sobre projeto de Interfaces Homem-Máquina
(IHM) não discute os motivos que levam à dificuldade de se executar a
tarefa. O autor do artigo defende que, assim como para o desenvolvimento
de software em geral, existem muitas dificuldades relacionadas ao
desenvolvimento de interfaces, e que não existe uma solução trivial para
resolvê-las.
Cada vez mais, a vida humana está ligada ao uso de computadores e
dispositivos eletrônicos; isto ocorre tanto nas atividades pessoais
quanto no trabalho. A facilidade de uso destes dispositivos é
crescentemente uma parte essencial do seu projeto, pelo simples fato de
que dispositivos de interface difícil não são utilizados como deveriam,
e que incorrem em desperdício de tempo e aumento da necessidade de
treinamento. Muito se investe em tecnologia da informação atualmente,
e os ganhos associados esperados não tem sido alcançados. A dificuldade
de uso dos produtos gerados é citada como um dos motivos para esta
defasagem.
Há fundamentação empírica que quantifica a redução de custo e aumento de
produtividade com a melhora da usabilidade de uma interface. Diversos
estudos citados no artigo descrevem economias na escala de milhões de
dólares atribuídas a melhoras decorrentes de investimento em
desenvolvimento e aprimoramento de interfaces. A existência de
especialistas em IHM em um projeto é apontada como um fator muito
importante na melhora de usabilidade do produto resultante. Com base
nestas provas importantes, a indústria e as organizações acadêmicas e
estatais com atividades ligadas à computação têm voltado crescentemente
seu interesse para esta área.
Embora os benefícios da melhora da usabilidade de uma interface sejam
indiscutíveis, não estão resolvidos os problemas que levam à dificuldade
do projeto de uma Interface. Discute-se algumas dificuldades abaixo:
- A dificuldade em entender as tarefas e os usuários
A necessidade da interface estar diretamente ligada ao modo com que
será usado requer compreensão profunda dos usuários e de suas
habilidades e expectativas. Levantar este tipo de informação é difícil,
sobretudo porque programadores têm dificuldade de se imaginarem
efetivamente na condição de usuários comuns.
- A complexidade inerente às tarefas e aplicações
Em geral, o domínio da aplicação a ser criado envolve situações de
difícil modelamento -- seja porque a tarefa em si é complicada, seja
porque a aplicação se propõe a resolver problemas de gama extensa.
- A variedade de aspectos e requisitos diferentes
Além das limitações inerentes a qualquer projeto, interfaces com o
usuário envolvem questões como padrões, design gráfico,
documentação, internacionalização, e performance, entre outras. Estas
questões associadas contribuem para aumentar a complexidade do
desenvolvimento da interface.
- Teoria e métodos não são suficientes para resolver o
problema
Embora existam muitas metodologias para a criação de uma
interface boa, a maior parte dos estudos feitos a seu respeito revela
que a habilidade dos projetistas é o fator primário para a qualidade das
interfaces geradas. O fato de existir grande proporção de casos que
sejam exceções às regras propostas nos métodos contribui para a
dificuldade de se criar um método abrangente.
- Dificuldade de se fazer um projeto iterativo
Embora se veja como ideal o processo de se refinar ciclicamente uma
interface, este processo em si já é difícil de ser executado -- muitas
vezes, as modificações trazem uma piora de usabilidade, e é difícil
saber quando a interface está realmente bem-elaborada. Além disso, é
difícil obter resultados do uso da interface diretamente dos usuários
primários, que muitas vezes não são os seus compradores e nem
responsáveis.
Além de ser difíceis de projetar, interfaces com o usuário também são
difíceis de se implementar. Há estudos que quantificam em 50% o tempo e
a quantidade de código relacionado diretamente à interface. Há razões
importantes que explicam porque software relacionado à interface estará
entre os mais difíceis de se implementar.
- A necessidade de se fazer um projeto iterativo
Implementar a interface iterativamente significa entrelaçar as etapas de
projeto e implementação e teste; o impacto direto disto é que o processo
de software tradicional se torna inadequado, e o processo utilizado em
si, mais difícil se administrar e documentar.
- Programação reativa
Uma das diferenças principais entre a implementação de software para a
interface e software de outros tipos é que o software deve ser escrito
contemplando seu controle pelo usuário, e não pela aplicação. Esta
diferença tem mostrado resultar em uma maior dificuldade na
modularização e organização do código.
- Multiprocessamento
Além de existirem diversas tarefas simultâneas que necessitem responder
à atenção do usuário, o tempo de execução destas tarefas varia, e é
importante manter o sistema respondendo instantaneamente. Por este
motivo, os mesmos problemas relacionados ao multiprocessamento --
sincronização, controle de concorrência e consistência das informações
-- existem no desenvolvimento de interfaces.
- Programação em tempo real
Há limitações importantes do tempo de resposta e do redesenho das
informações exibidas pela interface; esta característica embute
preocupações que a maior parte dos sistemas não contempla a fundo.
- Necessidade de robustez
Toda entrada do usuário deve ser atendida satisfatóriamente; isto difere
em muito da robustez costumeira que se deseja em um software. As
entradas dos usuários podem ser de qualquer natureza, e muitas vezes é
difícil prever todos os tipos diferentes de interação que ocorrerão. A
necessidade de cancelar e desfazer as operações que o usuário executa
acrescenta a esta dificuldade.
- Dificuldade de sistematizar testes
Sistemas de manipulação direta à interface são em geral pouco úteis para
efetuar seu teste, porque não simulam bem a atividade caótica do
usuário, e porque alterações na interface implicam em se ter de fazer
mudanças nos testes. Além disso, grande parte da qualidade da interface
é não-avaliável por um sistema, por ser resultado de apreciações
essencialmente humanas.
- Falta de suporte por linguagens de programação
As linguagens de programação populares não contém primitivas internas
para comunicação com interfaces mais complexas do que o console. Além
disso, as necessidades de multiprogramação e a reatividade do software
requerem suporte pela linguagem de programação. [Neste ponto discordamos
do autor, em 2000; Visual Basic e Delphi suportam efetivamente a
programação de interfaces -- não estando em discussão a qualidade destas
linguagens.]
- Complexidade das ferramentas
Como a linguagem de programação muitas vezes não suporta completamente
as necessidades da interface, cria-se uma necessidade por ferramentas que
endereçem esta questão. No entanto, estas ferramentas em geral são
incompatíveis e requerem longo treinamento por parte dos
desenvolvedores.
- Dificuldade de modularização
Uma das maiores dificuldades relacionadas à criação de interfaces é a
dificuldade de se separar a forma da interface com o conteúdo a ser
apresentado -- muitas vezes, mudanças na interface implicam em
mudanças na funcionalidade da aplicação. Além disso, o uso extensivo de
funções call-back nas ferramentas tornam o problema ainda maior,
porque cada interação com uma parte da interface (um widget)
requer uma função correspondente.
O desenvolvimento de interfaces acrescenta complexidade significativa à
implementação de qualquer software. Embora pesquisa no campo da IHM
possa produzir melhora nas teorias, métodos e ferramentas, muitos dos
problemas citados no artigo não serão resolvidos. Além disso, novas formas
de interação aparecem constantemente; o esforço dirigido ao projeto e
implementação da interface com o usuário só tende, portanto, a crescer.
- 1
- Brad A. Myers
"Why are Human-Computer Interfaces Difficult to Design and
Implement?", Carnegie Mellon University School of Computer Science
Technical Report CMU-CS-93-183, Julho 1993.
Christian Reis
2000-08-15