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.

Introdução

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.

Porque Interfaces são Importantes

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.

Porque Interfaces são Difíceis de ser Projetadas

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Porque Interfaces são Difíceis de Implementar

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.]

  8. 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.

  9. 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.

Conclusões

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.

Bibliografia

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