Alice é um inovador ambiente 3D de programação, desenvolvido pela Sun, cujo objetivo é introduzir conceitos computacionais à pessoas que ainda não possuem conhecimento na área. O objetivo é conduzir de forma menos frustrante o primeiro contato do usuário com o mundo da programação.
Avaliação
Apesar de apresentar um conceito muito interessante, o software Alice, como todos os outros softwares do mercado, possui alguns problemas em sua interface. Esse documento visa analisar tais problemas de forma crítica e construtiva.
Estrutura
Por esse não ser um documento exclusivamente sobre avaliação heurística, resolvemos abordar os pontos encontrados de forma a privilegiar tanto aqueles que possuem conhecimentos em Interfaces, quanto aqueles que não o possuem. Para isso, criamos a seguinte estrutura:
Inicialmente exibimos algumas telas com problemas de interface e anexamos um texto detalhado sobre o problema encontrado. Aqui não identificamos as heurísticas violadas, apenas apresentamos o problema.
Num segundo momento, usamos os conceitos de heurísticas de avaliação para elucidar as faltas encontradas.
Análise:
Seguem alguns pontos que não obedeceram boas práticas que devem ser seguidas a fim de se chegar em uma interface limpa, intuitiva, funcional e agradável ao usuário:
Esta primeira imagem faz referência a um dos tutoriais disponíveis no sistema Alice, para que o usuário aprenda alguns dos conceitos básicos envolvidos no aplicativo. O tutorial esta explicando que, ao fim da animação, o usuário deve clicar no botão "X". Entretanto, a janela está na frente da instrução, de forma a impedir que o usuário possa lê-la. Assim, o usuário deve clicar no botão "X" para que, depois de fechar a janela, leia a instrução que dizia exatamente os passos que ele acabou de fazer. Outro fator dificultante é que, ao clicar na parte amarela da tela (a instrução), está não passa a ser exibida por completo. A tela "World Running..." continua a ser o destaque.
Além disso, não há nenhuma visibilidade do status do sistema, fica-se em dúvida se a animação chegou ao fim ou não.
Neste segundo caso, temos uma questão que pode até passar despercebida por quem usa, mas deveria ser repensada por quem desenvolveu. O propósito do aplicativo é ser uma ferramenta que introduza o usuário à computação. Logo, podemos concluir que grande parte das pessoas que irão usar o sistema não possuem conhecimento prévio sobre o assunto. Nesta tela, podemos ver dialetos característicos da área (principalmente de linguagens orientadas a objetos) como "propriedades", "métodos", "funções", "lógica booleana", "parâmetros", "variáveis"... Isso certamente deixa os usuários confusos e tende a assustá-los.
Aqui temos um exemplo de falta de informação em uma funcionalidade. O ícone marcado em vermelho serve de "Clipboard". O usuário arrasta qualquer objeto para esse ícone, que funcionará como uma área de transferência. Quando necessário, o usuário pode recuperar o que ele havia arrastado anteriormente, para utilizar da forma que desejar. No entanto, não há meios de descobrir o que está nessa "memória". O usuário é obrigado a lembrar qual foi o último elemento que ele arrastou para essa área. Caso não lembre, ele deve arrastar para algum lugar, para descobrir o que era, e depois desfazer a ação, caso necessário.
As funções de desfazer e refazer não funcionam corretamente com o clipboard, ferindo a heurística de controle do usuário.
Ao desenvolver um software, programadores devem sempre ter a preocupação em manter a interface do sistema o mais limpa e intuitiva possível. Interfaces confusas podem acabar com as chances do sistema ser vastamente utilizado. Neste caso, temos uma tela extremamente complexa, até mesmo para programadores experientes. A heurística de estética e design minimalista claramente é rompida.
Aqui uma questão muito recorrente em sistemas: ausência de "help". É bem verdade que os desenvolvedores pensaram em criar tutoriais e exemplos, para que os usuários pudessem entender melhor como funciona o sistema, entretanto, essas ferramentas não excluem a necessidade de um help. Tutoriais servem para ensinar os usuários nos primeiros passos, "help" serve para ajudá-los quando enfrentam algum problema.
Alterar a resolução da tela e tamanho da janela é sempre visto com maus olhos. Pior ainda é que aparentemente nada foi alterado após essa mensagem.
Tanto "Text Output" quanto "Error Console" levam à mesma funcionalidade.
O console apenas apresenta a mensagem de exceção do Java.
Se a funcionalidade não está implementada, não deveria estar no menu.
É difícil identificar à primeira vista qual a guia ativa.
Abaixo, podemos notar problemas que foram encontrados e as respectivas heurísticas que foram feridas em cada caso.
5ª Heurística: Prevenção de erros
Aqui listamos os problemas encontrados que feriram a heurística de número 5:
5.1 Se o usuário roda um programa no ambiente Alice e este permanece em segundo plano por muito tempo o erro acima é exibido.
Na janela de edição dos objetos, é possível ao usuário manipular o cenário, em objetos muito pequenos fica difícil de manipular os objetos.
7ª Heurística: Flexibilidade e eficiência de uso
Aqui listamos os problemas encontrados que feriram a heurística de número 7:
Quase tudo é feito pelo mouse e menus flutuantes, não há atalhos pelo teclado para inserir, modificar ou remover objetos e rotinas.
A barra de ferramentas rápida tem poucas opções.
O usuário é obrigado a remover uma rotina/objeto de cada vez.
Não se pode manipular aplicação ao se rodar um projeto. Não é possível ver o "Error Console" antes de encerrar a execução, por exemplo.