domingo, 31 de março de 2013

Redes de computadores II


Redes de Computadores II

REDES SEM FIO

LAN´S SEM FIO 802.11

ACESSO CELULAR À INTERNET


Baixar Material para Estudos: Parte 1Parte 2

sábado, 30 de março de 2013

Resumo Sistemas Operacionais (part2)


Definições sobre Sistemas Operacionais.


Há alguns anos um sistema operacional era definido como o software que controla o hardware, o panorama dos sistemas de computador evoluiu significativamente, exigindo uma definição mais rica. Hoje, as aplicações são desenvolvidas para serem executadas simultaneamente. O sistema operacional separa as aplicações do hardware por elas acessado e é primordialmente, um gerenciador de recursos.

Baixe AQUI o Material Completo.

Espaço de Endereço do Processo

Um processo tem seu próprio espaço de endereço, que consiste em:
Região de texto
→ Armazena o código que o processador executa.
Região de dados
→ Armazena variáveis e memória alocada dinamicamente.
Região de pilha
→ Armazena instruções e variáveis locais para chamadas ativas ao procedimento.


Estados de processo: ciclo de vida de um processo

Um processo passa por uma série de estados de processo distinto:
Estado de execução
   ● O processo está sendo executado em um processador.
Estado “de pronto”
   ● O processo poderia ser executado em um processador se houvesse algum disponível.
Estado bloqueado
   ● O processo está aguardando a ocorrência de algum evento para prosseguir.

O sistema operacional mantém uma lista de prontos e uma lista de bloqueados para armazenar referências a processos que não estão sendo executados.


Gerenciamento de processo

Os sistemas operacionais prestam certos serviços fundamentais aos processos. Por exemplo:
■ Criam processos.
■ Destroem processos.
■ Suspendem processos.
■ Retomam processos.
■ Mudam a prioridade de um processo.
■ Bloqueiam processos.
■ Acordam (ativam) processos.
■ Despacham processos.
■ Capacitam os processos à comunicação inter-processos (IPC).


Estados de processo e estados de transição
Estados de processo
■ O ato de designar um processador ao primeiro processo da lista de prontos é denominado despacho.
■ O sistema operacional usam um temporizador de intervalo para permitir que um processo seja executado durante um intervalo de tempo específico ou quantum.
■ A multitarefa cooperativa permite que todo processo seja executado até o fim.

Estados de transição
■ Até agora, existem quatro estados de transição possíveis:
   ● Quando um processo é despachado, ele transita de pronto para em execução.
   ● Quando o quantum de um processo expira, ele transita de em execução para pronto.
   ● Quando um processo é bloqueado, ele transita de em execução para bloqueado.
   ● Quando um evento ocorre, ele transita de bloqueado para pronto.


Blocos de controle de processo (PCBs) /Descritores de processo

Os PCBs mantêm as informações que o sistema operacional precisa para gerenciar o processo.

■ Normalmente, eles incluem as seguintes informações:
   ● Número de identificação de processo (PID).
   ● Estado do processo.
   ● Contador de programa.
   ● Prioridade de escalonamento.
   ● Credenciais.
   ● Um ponteiro para o processo-pai.
   ● Ponteiros para os processos-filho.
   ● Ponteiros para localizar os dados e instruções do processo na memória.
   ● Ponteiros para recursos alocados.


Modelos de thread

Três são os modelos de thread mais conhecidos:
  ■ Threads de usuário
  ■ Threads de núcleo
  ■ Uma combinação de ambos



Os threads de usuário executam operações de suporte a threads no espaço do usuário.
   ■ Isso significa que os threads são criados por bibliotecas em tempo de execução que não podem executar instruções privilegiadas nem acessar as primitivas do núcleo diretamente.


Os threads de núcleo tentam resolver as limitações dos threads de usuário mapeando cada Thread para o seu próprio contexto de execução.
   ■ O thread de núcleo oferece mapeamento de thread um-para um.
      ● Vantagens: maior escalabilidade, interatividade e rendimento.
      ● Desvantagens: sobrecarga decorrente do chaveamento de contexto e menor portabilidade em virtude de as APIs serem específicas ao sistema operacional.

Os threads de núcleo nem sempre são a solução ideal para as aplicações.











sexta-feira, 29 de março de 2013

Sistemas Operacionais - 5º Período.

By: Ariadne Gomes.


Exercícios fixação Sistemas Operacionais

1.     Defina os seguintes estados de um processo:
Estado de execução: o processo está sendo executado em um processador.
Estado de pronto: o processo poderia ser executado em um processador se houvesse algum disponível.
Estado bloqueado: o processo está aguardando a ocorrência de algum evento para prosseguir.

2.     Liste abaixo serviços fundamentais aos processos prestados pelos Sistemas Operacionais.
Criam processos, destroem processos, retomam processos, mudam a prioridade de um processo, bloqueiam processos, acordam(ativam) processos, despacham processos e capacitam os processos à comunicação interprocessos.

3.     O que significa Estados de um Processo?
Significa que um processo passa por uma série de estados de processo distinto, são eles:
Estado de execução: o processo está sendo executado em um processador.
Estado de pronto: o processo poderia ser executado em um processador se houvesse algum disponível.
Estado bloqueado: o processo está aguardando a ocorrência de algum evento para prosseguir.

4.     O que significa Estados de Transição?
Existem 4 tipos de estados de transição, são eles: quando um processo é despachado ele transita do ponto de pronto para em execução (1), quando o quantum de um processo expira, ele transita de em execução para pronto (2), quando um processo é bloqueado ele transita de em execução para bloqueado (3) e quando um evento ocorre ele transita de bloqueado para pronto (4).

5.     Quais informações são mantidas num PCB?
Número de identificação de processo, estado do processo, contador de programa, prioridade de escalonamento, credenciais, um ponteiro para o processo pai, ponteiros para os processos filhos, ponteiros para localizar os dados e instruções do processo na memória e ponteiros para recursos alocados.

6.     Defina o que é suspensão de um processo.
É quando o processo é retirado indefinidamente da disputa por tempo em um processador, sem ser destruído. É útil para detectar ameaças à segurança e para depuração de software.

7.     O que é chaveamento de contexto?
É a troca do processo em execução por um processo previamente pronto.

8.     Defina Thread.
É às vezes chamado de processo leve. Existem threads de instrução e de controle. Os threads compartilham espaço de endereço e outras informações globais com seu próprio processo. Devem ser gerenciados pelo sistema operacional ou pela aplicação de usuário.

9.     Qual ou quais os principais motivos para a criação de Threads?
Os threads tornaram-se proeminentes por cauda de tendências subsequentes em relação: Ao projeto de software, ao desempenho e à cooperação. Todo thread transita entre uma série de estados, os threads e os processos têm muitas operações em comum.A criação de thread não requer que o sistema operacional inicialize recursos compartilhados entre os processos pai e os respectivos threads.

10.  Quais são os estados de uma Thread?
Estado nascido, estado pronto, estado em execução, estado morto, estado bloqueado, estado de espera, estado adormecido.

11.  Como é o ciclo de vida de uma Thread?

Nascido - > Pronto - > Em execução     -->      em espera
                                                                 -->       adormecido
                                                                 -->       morto                                                                                                                                                                                                                                    
                                                                 -->       bloqueado

12.  Quais são as operações de Threads que são comuns a processos?
Criar, sair, suspender, retomar, dormir, acordar.

13.  Sobre operações com Threads defina as seguintes:
a.     Cancelar : indica que um thread deve ser terminado, mas não garante que será terminado porque os threads podem mascarar o sinal de cancelamento.
b.    Associar: Para que um thread primário aguarde até que todos os outros terminem, ele associa a esses threads. O thread que se associa é bloqueado até que o thread ao qual ele se associou termine.

14.  Quantos e quais são os modelos de Threads?
São três os modelos de Threads: Threads de usuário, de núcleo e uma combinação de ambos.

15.  Defina:
a.       Threads de usuários: executam operações de suporte a threads no espaço do usuário.
b.    Threads de núcleo: tentam resolver as limitações dos threads de usuário mapeando cada thread para o seu próprio contexto de execução.

c.     Thread de usuários/núcleos (combinação):Implementação da combinação de threads de usuário e de núcleo.

16)                  Quais são as três finalidades principais de um sistema operacional?

·                    Oferecer um ambiente para um usuário de computador executar programas no hardware de forma eficiente e conveniente
·                    Alocar os recursos separados do computador de acordo com a necessidade para a solução de determinado problema
·                    Atuar como um programa de controle fazendo a supervisão da execução dos programas do usuário e gerenciando a operação e controle dos dispositivos de E/S.

17)                  Quais são as principais diferenças entre sistemas operacionais para computadores de grande porte (mainframes) e computadores pessoais?
Geralmente os sistemas operacionais para computadores de grande porte (mainframes) possuem requisitos mais simples do que para computadores pessoais e precisam alternar rapidamente entre diferentes tarefas. Eles não precisam se preocupar com a interação comum usuário tanto quanto um computador pessoal. Como resultado, um sistema operacional para computador pessoal, precisa se preocupar com o tempo de resposta para um usuário interativo e com o compartilhamento de tempo.

18)                  Liste as quatro etapas que são necessárias para se executar um programa em uma máquina completamente dedicada.
·         Reservar tempo de máquina.
·         Carregar o programa manualmente para a memória.
·         Carregar o endereço inicial e iniciar a execução.
·         Monitorar e controlar a execução do programa a partir do console. 

4  4) Enfatizamos a necessidade de que um sistema operacional faça uso eficaz do hardware de computação. Quando é apropriado que um sistema operacional deixe de lado esse princípio e “desperdice” recursos? Por que esse sistema não é realmente desperdiçador?
Sistemas monousuários devem maximizar o uso do sistema para o usuário. Uma GUI poderia “desperdiçar” ciclos de CPU, mas otimiza a interação do usuário com o sistema.

19) Qual é a principal dificuldade que um programador precisa contornar na escrita de um sistema operacional para um ambiente de tempo real?
A principal dificuldade é manter o sistema operacional dentro das restrições de tempo fixas de um sistema de tempo real. Se o sistema não completar uma tarefa em certo período de tempo, ele pode causar uma quebra do sistema inteiro que está executando. Portanto, ao escrever um sistema operacional para um sistema de tempo real, o desenvolvedor precisa estar certo de que esses esquemas de escalonamento não permitem que o tempo de resposta ultrapasse a restrição de tempo.

20) Considere as diversas definições do sistema operacional. Considere se o sistema operacional deverá incluir aplicações como navegadores Web e programas de correio. Argumente tanto contra como a favor, e dê suporte à sua resposta.
Aplicações como navegadores Web e ferramentas de e-mail estão realizando um papel cada vez mais importante nos sistemas desktop modernos. Para cumprir esse papel, eles precisam ser incorporados como parte do sistema operacional. Ao fazer isso, eles podem oferecer melhor desempenho e melhor integração com o restante do sistema. Além disso, essas aplicações importantes podem ter o mesmo estilo do software do sistema operacional.

21) Como a distinção entre modo kernel e modo usuário funciona como uma forma rudimentar de sistema de proteção (segurança)?
Estabelecendo um conjunto de instruções privilegiadas que só possam ser executadas quando estiver no modo monitor, o sistema operacional tem garantia de controle do sistema inteiro o tempo todo.
8) Alguns computadores protegiam o sistema operacional colocando – o em uma partic]cão da memória que não poderia ser modificada pelo job do usuário ou pelo próprio sistema operacional. Descreva duas dificuldades que você acredita que poderiam surgir com tal esquema.
Os dados exigidos pelo sistema operacional (senhas, controles de acesso, informações contábeis etc.) teriam de ser armazenados ou passados pela memória desprotegida e, portanto, estariam acessíveis a usuários não autorizados.

22)A internet é uma LAN ou uma WAN?
Wan.

23) Quais são as cinco principais atividades de um sistema operacional em relação à gerência de processos?
·         A criação e a exclusão de processos do sistema e do usuário.
·         A suspensão e a retomada de processos.
·         A provisão de mecanismos para o sincronismo de processo.
·         A provisão de mecanismos para a comunicação entre processos.
·         A provisão de mecanismos para o tratamento de deadlock.

24)Qual é a finalidade dos programas do sistema?
Os programas de sistema podem ser considerados como pacotes de chamadas de sistema úteis. Eles oferecem a funcionalidade básica para os usuários, e por isso os usuários não precisam escrever seus próprios programas para solucionar problemas comuns.

25) Liste cinco serviços fornecidos por um sistema operacional. Explique como cada um oferece conveniência aos usuários. Explique também em quais casos seria impossível para os programas em nível de usuário oferecerem esses serviços?
·         Execução de programa. O sistema operacional carrega o conteúdo (ou seções) de um arquivo para a memória e inicia sua execução. Um programa em nível de usuário poderia não ser confiável para alocar devidamente o tempo de CPU.
·         Operações de E/S. Discos, fitas, linhas seriais e outros dispositivos precisam ter comunicação em um nível muito baixo. O usuário só precisa especificar o dispositivo e a operação que atuará sobre ele, enquanto o sistema converte essa requisição em comandos específicos do dispositivo ou controlador. Não se pode confiar que os programas no nível do usuário acessarão apenas os dispositivos aos quais devem ter acesso e que somente os acessarão quando não estiverem sendo usados.
·         Manipulação do sistema de arquivos. Existem muitos detalhes na criação, exclusão, alocação e nomeação de arquivos que os usuários não terão de realizar. Os blocos de espaço no disco são usados por arquivos e precisam ser rastreados. A exclusão de um arquivo exige a remoção das informações do arquivo de nomes e a liberação dos blocos alocados. As proteções também precisam ser verificadas para garantir o acesso apropriado ao arquivo. Os programas do usuário não poderiam garantir a aderência aos métodos de proteção, nem se pode confiar neles para alocar apenas blocos livres e desalocar blocos na exclusão do arquivo.
·         Comunicações. A troca de mensagens entre os sistemas requer que as mensagens sejam transformadas em pacotes de informação, enviadas ao controlador de rede, transmitidas por um meio de comunicação e remontadas pelo sistema de destino. É preciso que haja ordem nos pacotes e correção de dados. Novamente, os programas do usuário não poderiam coordenar o acesso ao dispositivo da rede, ou então poderiam receber pacotes destinados a outros processos.
·         Detecção de erros. A detecção de erros ocorre nos níveis de hardware e de software. No nível de hardware, todas as transferências de dados precisam ser inspecionadas para garantir que os dados não tenham sido adulterados em trânsito. Todos os dados na mídia precisam ser verificados para garantir que não sejam alterados desde que foram gravados na mídia. No nível de software, a mídia precisa ser verificada em busca da consistência dos dados; por exemplo, se a quantidade de blocos de armazenamento alocados e não alocados combina com a quantidade total no dispositivo. Os erros são constantemente independentes do processo (por exemplo, a adulteração dos dados em um disco), de modo que é preciso haver um programa global (o sistema operacional) que trate de todos os tipos de erros. Além disso, processando os erros pelo sistema operacional, os processos não precisam conter código para apanhar e corrigir todos os erros possíveis em um sistema.
   
      Baixar Exercícios de Fixação: Aqui.


domingo, 17 de março de 2013

Resumo Interação Humano Computador - I.H.C.


Interação Humano Computador

A área de IHC tem o objetivo de satisfazer as necessidades de usabilidade, aplicabilidade e comunicabilidade dos usuários. As aplicações devem buscar atingir a usabilidade, aplicabilidade e comunicabilidade, oferecendo ao usuário artefato fáceis de usar, aplicar e comunicar. IHC é uma área multidisciplinar.
No contexto de IHC devemos considerar 4 (quatro) conceitos básicos: o sistema, os usuários, os desenvolvedores e o ambiente de uso, com 5 (cinco) focos:
·         Design e desenvolvimento de hardware e software.

·         Estudo da capacidade e limitação física e cognitiva do usuário.

·         Instrumentação teórica e prática para o design e desenvolvimento de sistemas.

·         Modelos de interfaces e do processo de iteração usuário-sistema.

·         Análise do domínio e de aspectos sociais e organizacionais.

Interfaces e iteração.

No processo usuário-sistema a interface é o combinado de software e hardware necessário para viabilizar e facilitar os processos de comunicação entre os usuários e a s aplicações.
Segundo Moran “A interface de usuário deve ser entendida como sendo a parte de um sistema computacional com o qual uma pessoa entra em contato física, perceptiva e conceitualmente”. Dessa forma a interface é um sistema de comunicação, as atividades motoras e perceptivas desenvolvidas pelo usuário utiliza-se de tela, mouse, teclado e vários outros dispositivos.

Affordance é um termo que se refere as propriedades percebidas e reais de um artefato, em particular as propriedades fundamentais que determinam como este artefato pode ser utilizado, por exemplo: o affordance de um botão é que o pressionemos.

Usabilidade

·         Facilidade de aprendizado do sistema:
Tempo e esforço necessários para que os usuários atinjam um nível determinado de desempenho.

·         Facilidade de uso:
Avalia o esforço físico e cognitivo do usuário.

·         Satisfação do usuário:
 Avalia se o usuário gosta e sente prazer em trabalhar com esse sistema

·         Flexibilidade:
Avalia a possibilidade de o usuário modificar e acrescentar as funções e ambientes iniciais do sistema.

·         Produtividade: Se o uso do sistema permite ao usuário ser mais produtivo.

Frequentemente os designers definem a facilidade de uso como sendo um aspecto de usabilidade de maior prioridade. Assim eles denominam desafio de usabilidade o projeto de novas tecnologias que buscam explorar ao máximo as capacidades de os usuários na criação de ambientes de trabalho mais eficazes e produtivos.
Fischer, por sua vez, argumenta que além da usabilidade o Designer deve buscar atingir também Aplicabilidade, ou seja, a sua utilidade de resolução de problemas variados.

Comunicabilidade

Da mesma forma, o objetivo da comunicabilidade é permitir que o usuário, através de sua interação com a aplicação, seja capaz de compreender as premissas, intenções e decisões tomadas pelo projetista durante o processo de design.  Junto com a usabilidade, a comunicabilidade pretende aumentar a aplicabilidade de software.

Perspectivas em IHC

Inicialmente o usuário era considerado uma máquina, que tinha que aprender a falar a linguagem do computador.  Em seguida, com o surgimento da inteligência artificial, tentamos considerar o computador como uma pessoa.  Nessas duas perspectivas, era fundamental dar poder ao sistema.  Mais tarde, surgiu a perspectiva de computador como ferramenta, que o usuário utiliza para obter um resultado ou produto.
Atualmente vemos outra mudança de perspectiva, na qual o computador é um mediador da comunicação entre pessoas, o foco é no usuário, e não mais no sistema.

Ciclo: USUÁRIO COMO MÁQUINA à COMPUTADOR COMO PESSOA  à COMPUTADOR COMO MÍDIA  à COMPUTADOR COMO FERRAMENTA.

Já na engenharia semiótica se aplica às duas últimas perspectivas, que ocorrem nas aplicações de softwares atuais.

Estilos de interação é um termo genérico que inclui todas as formas como os usuários se comunicam ou interagem com sistemas computacionais.  São estilos de iteração: Linguagem natural, linguagens de comando, menus, WIMP, preenchimento de formulários e manipulação direta.
Paradigma de interação também determina como um usuário interage com o sistema.  Um paradigma de interação indica a ordem em que os elementos envolvidos em uma operação são selecionados ou acionados pelo usuário.  Este paradigma pode ser ação+objeto ou objeto+ação.

Linguagem natural: Para permitir que um usuário interaja com aplicações em linguagem natural, podemos oferecer uma interface textual onde ele pode digitar as frases que expressem seus comandos ou questionamentos.  Outra alternativa são as interfaces orientadas por menus, através dos quais ele pode selecionar cada palavra ou expressão até compor a frase desejada.

Linguagem de comando: Os comandos e a sintaxe da linguagem precisam ser relembrados e erros de digitação são comuns mesmo nos mais experientes.  A falta de padronização nos diversos sistemas é um fator importante na dificuldade de utilização deste estilo.  Usuários especialistas, no entanto, conseguem maior controle do sistema e produtividade através de interfaces baseadas em linha de comandos.

Menus: Neste estilo de interação os usuários não precisam lembrar o item que desejam, apenas reconhece-lo.  Para que este estilo de interação eficiente, portanto, os itens de menu devem ser autoexplicativos. A desvantagem de interação por menus, é que eles ocupam muito espaço na tela, sendo necessário agrupar as opções de menu.  A mais comum é a categorização hierárquica da opções. 
Em um menu pull-down por exemplo, o menu surge ao se clicar em seu título, e desaparece assim que se seleciona uma das opções.
Em um menu pop-up por exemplo aparece ao se clicar em uma determinada área da tela ou elemento de interface, e pode permanecer visível até que o usuário selecione um de seus itens ou decida fechá-lo.

Preenchimento de formulários: O layout do formulário se apresenta como se fosse um formulário impresso, facilitando o aprendizado.  Os aspectos principais que vão influenciar na usabilidade do sistema são a produtividade do usuário, a sua satisfação e o esforço físico provocado pelo sistema, uma vez que estes sistemas são projetados para que os usuários forneçam um grande número de dados ao longo de um dia de trabalho.

WIMP (janelas, ícones, menus e ponteiros): este estilo de interação permite a interação através de componentes de interação virtuais denominados widgets. Na interface WIMP é possível encontrar os estilos de menus, manipulação direta, preenchimento de formulários e linguagem de comandos.

Manipulação direta: São aquelas que permitem ao usuário agir diretamente sobre os objetos da aplicação.










Engenharia Cognitiva

É o processo pelo qual se pode adquirir conhecimento, e aplicam suas teorias na compreensão das capacidades e limitações da mente dos usuários.  Como estas abordagens adotam uma perspectiva centrada nos aspectos cognitivos dos usuários, o design feito com base nelas é chamado de design de sistemas centrado no usuário.
A teoria da ação define que a interação usuário-sistema é desempenhada em um ciclo-de-ação com sete etapas e dois golfos a serem atravessados.  Um deles é o golfo da execução e envolve as etapas de formulação da meta, especificação da sequência de ações e atividade física de execução.  O outro é o golfo de avaliação e deve ser atravessado pelas etapas de percepção, interpretação e avaliação da meta.
Em engenharia cognitiva, o processo de design se inicia com o modelo mental que o designer cria do sistema.  No entanto, a Engenharia cognitiva focaliza centralmente a interação usuário-sistema.


Engenharia semiótica

As abordagens semióticas tem como base teórica a semiótica, disciplina que estuda os signos, os sistemas semióticos e de comunicação, bem como os processos envolvidos na produção e interpretação de signos.  Um signo é algo que representa alguma coisa para alguém.
Na engenharia semiótica em particular a interface de um sistema é vista como sendo uma mensagem sendo enviada pelo designer ao usuário.  Assim esta mensagem é unilateral, uma vez que o usuário recebe a mensagem concluída e não pode dar continuidade ao processo de comunicação naquele mesmo contexto de interação.  Além disso, como esta mensagem (a interface) é ela mesma capaz de trocar mensagens com o usuário, ela é um artefato de comunicação sobre comunicação, ou metacomunicação.  Além disso, para que a comunicação entre o designer e o usuário tenha sucesso, o modelo conceitual da aplicação pretendido pelo designer e o modelo da aplicação percebido pelo usuário, embora diferentes, devem ser consistentes entre si.
Na abordagem semiótica, o designer é o autor de uma mensagem ao usuário, que é transmitida pela interação que caracteriza o processo metacomunicativo.  A engenharia semiótica ressalta ainda que a presença do designer no cenário comunicativo deve ser explicitada e tornada sensível aos usuários para que eles tenham maior chance de entender as decisões de design tomadas e a aplicação que estão interagindo, sendo assim capazes de fazer um uso mais criativo e eficiente desta aplicação.


Engenharia semiótica X Engenharia Cognitiva

Tanto a engenharia semiótica quanto a cognitiva veem o processo de design se iniciando com o designer que cria o seu modelo mental da aplicação, e com base neste, implementa a própria aplicação.  O usuário interage com essa aplicação e através dela cria seu próprio modelo mental da aplicação.  A criação da aplicação pelo designer e a interação do usuário são assíncronas, ou seja, se dão em diferentes momentos no tempo.
A engenharia cognitiva se concentra no processo de interação usuário-sistema, deixando a etapa designer-sistema em segundo plano, assim ela enfatiza o produto desse processo, que é o sistema.
A engenharia semiótica por sua vez, junta estas duas etapas ao transferir seu ponto de vista para um nível mais abstrato, no qual o designer envia ao usuário uma meta-mensagem.  Desta forma, a engenharia semiótica dá um zoom-out no processo de design e inclui a engenharia cognitiva.

As 10 heurísticas de usabilidade de Nielsen

1. Visibilidade de Status do Sistema
Isso significa que você precisa se certificar de que a interface sempre informe ao usuário o que está acontecendo, ou seja, todas as ações precisam de feedback instantâneo para orientá-lo.
copy
2.Relacionamento entre a interface do sistema e o mundo real
Ou não usar palavras de sistema, que não fazem sentido pro usuário. Toda a comunicação do sistema precisa ser contextualizada ao usuário, e ser coerente com o chamado modelo mental do usuário.

3. Liberdade e controle do usuário
Facilite as “saídas de emergência” para o usuário, permitindo desfazer ou refazer a ação no sistema e retornar ao ponto anterior, quando estiver perdido ou em situações inesperadas.

4. Consistência
Fale a mesma língua o tempo todo, e nunca identifique uma mesma ação com ícones ou palavras diferentes. Trate coisas similares, da mesma maneira, facilitando a identificação do usuário.

5. Prevenção de erros
Na tradução livre das palavras do próprio Nielsen “Ainda melhor que uma boa mensagem de erro é um design cuidadoso que possa prevenir esses erros”. Por exemplo, ações definitivas, como deleções ou solicitações podem vir acompanhadas de um checkbox ou uma mensagem de confirmação.

6. Reconhecimento ao invés de lembrança
Evite acionar a memória do usuário o tempo inteiro, fazendo com que cada ação precise ser revista mentalmente antes de ser executada. Permita que a interface ofereça ajuda contextual, e informações capazes de orientar as ações do usuário – ou seja – que o sistema dialogue com o usuário.

7. Flexibilidade e eficiência de uso
O sistema precisa ser fácil para usuários leigos, mas flexível o bastante para se tornar ágil à usuários avançados. Essa flexibilidade pode ser conseguida com a permissão de teclas de atalhos, por exemplo. No caso de websites, uso de máscaras e navegação com tab em formulários são outros exemplos.
8. Estética e design minimalista
Evite que os textos e o design fale mais do que o usuário necessita saber. Os “diálogos” do sistema precisam ser simples, diretos e naturais, presentes nos momentos em que são necessários.

9. Ajude os usuários a reconhecer, diagnosticar e sanar erros
As mensagens de erro do sistema devem possuir uma redação simples e clara que ao invés de intimidar o usuário com o erro, indique uma saída construtiva ou possível solução.

10. Ajuda e documentação 
Um bom design deveria evitar ao máximo à necessidade de ajuda na utilização do sistema. Ainda assim, um bom conjunto de documentação e ajuda deve ser utilizado para orientar o usuário em caso de dúvida. Deve ser visível, facilmente acessada, e com oferecer uma ferramenta de busca na ajuda.



terça-feira, 5 de março de 2013

As 10 heurísticas de usabilidade do Nielsen



Jakob Nielsen é um cara polêmico no mundo da usabilidade, talvez pelo fato de ser o mais conhecido analista de usabilidade do mundo, ou talvez seja o mais conhecido analista de usabilidade do mundo pelo fato de ser polêmico. O fato é que ele fala de usabilidade há muito tempo, e mais do que falar, ele sempre promove testes e pesquisas para embasar suas falas (para quem costuma ler os rodapés das pesquisas, ele é o dono da Norman e Nielsen Group – uma grande empresa de pesquisas e análises de dados do mundo).

Ele também escreve uma coluna em seu site (Useit.com), chamada Alertbox, onde constantemente apresenta os resultados de várias dessas pesquisas, ajudando a implantar certos parâmetros de usabilidade que passam a ser adotados por um grande número de profissionais.
Um desses parâmetros, são suas heurísticas. São 10 itens para a avaliação da usabilidade de um site, com intuito de evitar erros comuns – as heurísticas foram baseadas em 294 tipos de erros de usabilidade que o Nielsen comumente encontrava em suas análises – e que podem prejudicar e muito a experiência do usuário em seu site. Uma avaliação heurística, ao pé da letra, é feita por no mínimo 3 e no máximo 5 profissionais especializados nesse tipo de avaliação.
Mas mesmo que você não seja nenhum analista de usabilidade, checar esses itens com certeza irá tornar a experiência do usuário em sua interface uma experiência menos frustante. Vamos às heurísticas:
1. Visibilidade de Status do Sistema
Isso significa que você precisa se certificar de que a interface sempre informe ao usuário o que está acontecendo, ou seja, todas as ações precisam de feedback instantâneo para orientá-lo. copy
2.Relacionamento entre a interface do sistema e o mundo real
Ou não usar palavras de sistema, que não fazem sentido pro usuário. Toda a comunicação do sistema precisa ser contextualizada ao usuário, e ser coerente com o chamado modelo mental do usuário.
3. Liberdade e controle do usuário
Facilite as “saídas de emergência” para o usuário, permitindo desfazer ou refazer a ação no sistema e retornar ao ponto anterior, quando estiver perdido ou em situações inesperadas.
4. Consistência
Fale a mesma língua o tempo todo, e nunca identifique uma mesma ação com ícones ou palavras diferentes. Trate coisas similares, da mesma maneira, facilitando a identificação do usuário.
5. Prevenção de erros
Na tradução livre das palavras do próprio Nielsen “Ainda melhor que uma boa mensagem de erro é um design cuidadoso que possa prevenir esses erros”. Por exemplo, ações definitivas, como deleções ou solicitações podem vir acompanhadas de um checkbox ou uma mensagem de confirmação.
6. Reconhecimento ao invés de lembrança
Evite acionar a memória do usuário o tempo inteiro, fazendo com que cada ação precise ser revista mentalmente antes de ser executada. Permita que a interface ofereça ajuda contextual, e informações capazes de orientar as ações do usuário – ou seja – que o sistema dialogue com o usuário.
7. Flexibilidade e eficiência de uso
O sistema precisa ser fácil para usuários leigos, mas flexível o bastante para se tornar ágil à usuários avançados. Essa flexibilidade pode ser conseguida com a permissão de teclas de atalhos, por exemplo. No caso de websites, uso de máscaras e navegação com tab em formulários são outros exemplos.
8. Estética e design minimalista
Evite que os textos e o design fale mais do que o usuário necessita saber. Os “diálogos” do sistema precisam ser simples, diretos e naturais, presentes nos momentos em que são necessários.
9. Ajude os usuários a reconhecer, diagnosticar e sanar erros
As mensagens de erro do sistema devem possuir uma redação simples e clara que ao invés de intimidar o usuário com o erro, indique uma saída construtiva ou possível solução.
10. Ajuda e documentação 
Um bom design deveria evitar ao máximo à necessidade de ajuda na utilização do sistema. Ainda assim, um bom conjunto de documentação e ajuda deve ser utilizado para orientar o usuário em caso de dúvida. Deve ser visível, facilmente acessada, e com oferecer uma ferramenta de busca na ajuda.

Ref: http://www.tidbits.com.br/as-10-heuristicas-de-usabilidade-do-nielsen.