Professional Documents
Culture Documents
Computador
Padrões de Interação para Projetos
Web
Prof.ª Dr.ª Junia Coutinho Anacleto
Johana Rosas Villena
2009
Roteiro
Introdução e Histórico
Conceito de Padrões
Padrões em IHC – Estado da Arte
Apresentação de um conjunto de Padrões para
projetos Web
Exercício – Identificação dos padrões
apresentados em um site
Introdução e Histórico
Padrões na Arquitetura
Padrões na Engenharia de Software
Padrões na Interação Humano-Computador
Padrões – Histórico
Arquitetura
Início na Arquitetura com o trabalho de
Christopher Alexander
♦ “A Pattern Language”, 1977
● Apresenta 253 padrões para arquitetura e urbanismo
1994
♦ Primeira Conferência Pattern Languages of Programming (PloP)
♦ Apresentar, trocar e refinar os padrões e as linguagens de padrões para
programas de computador.
1995
♦ Publicação do livro “Design Patterns: Elements of Reusable Object-
Oriented Software” de Gamma, Helm, Johnson e Vlissides(GoF)
♦ Livro contendo uma coleção de padrões para o projeto de software
Orientado a Objetos
♦ Fornece aos engenheiros de software uma forma mais prática de
transferir sua experiência adquirida em projetos anteriores
Padrões – Histórico
Engenharia de Software (2/2)
1995
♦ Publicação do primeiro livro da série
Pattern Languages of Program Design,
reunindo padrões publicados no PLoP
1995 1996
1996 1997 1999
♦ Publicação do livro Pattern-Oriented Software Architecture,
Volume 1: A System of Patterns, de Buschmann, Meunier,
Rohnert, Sommerlad e Stal
2004
♦ Publicação do livro Organizational Patterns of Agile
Software Development de Coplien e Harrison
Padrões – Histórico
Interação Humano-Computador
1999
♦ Common Ground: a Pattern Language for Human-Computer
Interface Design, de Jennifer Tidwell
2001
♦ A Pattern Approach to Interaction Design de Jan Borchers
♦ Padrões para interfaces GUI (Grafical User Interface) de
Welie e Troetteberg
2003
♦ Welie divulga mais padrões para interfaces GUI, e padrões para
interfaces Web e para interfaces de sistemas móveis
♦ User Interface Patterns And Techniques de Jennifer Tidwell
Padrões – Conceito (1/4)
Conceitos nos diversos domínios de
aplicação
Formato de Apresentação dos padrões
Linguagens de padrões
Características e benefícios dos padrões
Padrões – Conceito (2/4)
Solução (Experiência, Comprovada) para um
Problema (Recorrente, Reuso) em um determinado
Contexto (Instâncias)
Resumo do
Problema
Problema
Detalhado
Formato de Apresentação de Alexander
Solução
Diagrama
Referências
Formato de Apresentação de Gamma et al.
Name: Memento Nome
Intent: Without violating encapsulation, capture and externalize an object's
internal state so that the object can be restored to this state later.
Intenção
Also Known As: Token Conhecido como
Motivation: Sometimes it's necessary to record the internal state of an object.
This is required when implementing checkpoints and undo mechanisms …
Motivação
Applicability: Use the Memento pattern when:
a snapshot of (some portion of) an object's state must be saved so that it can be
restored to that state later, and ….
Structure: Aplicabilidade
Estrutura
17
Formato de Apresentação de Gamma et al.
Participants:
Memento (SolverState) Participantes
Originator (ConstraintSolver)
Caretaker (undo mechanism) Colaborações
Collaborations:
A caretaker requests a memento from an originator, holds it for a time, and passes
it back to the originator, as the following interaction diagram illustrates:
Consequences: Consequências
The Memento pattern has several consequences
Preserving encapsulation boundaries. Memento avoids exposing information that
only an originator should manage but that must be stored nevertheless outside the
originator...
18
Formato de Apresentação de Gamma et al.
Implementation: Here are two issues to consider when implementing the
Memento pattern:
Implementação
class State;
class Originator {
public:
Memento* CreateMemento();
void SetMemento(const Memento*);
// ...
private:
State* _state; // internal data structures
// ...
};
class Memento {
public: Note a natureza técnica
// narrow public interface
virtual ~Memento(); destes tipos de padrões.
private:
// private members accessible only to Originator
friend class Originator;
Não existe entendimento pelo
Memento(); usuário final leigo
void SetState(State*);
em computação.
State* GetState();
private:
State* _state;
};
19
Formato de Apresentação de Gamma et al.
Sample Code:
class MoveCommand {
Código Exemplo
public:
MoveCommand(Graphic* target, const Point& delta);
void Execute();
void Unexecute();
private:
ConstraintSolverMemento* _state;
Point _delta;
Graphic* _target;
};
Usos conhecidos
Known Uses:
The preceding sample code is based on Unidraw's support for connectivity
through its CSolver class [VL90].
Padrões
Related Patterns: Relacionados
Command (233): Commands can use mementos to maintain state for undoable
operations.
Iterator (257): Mementos can be used for iteration as described earlier.
20
Formato de Apresentação de Welie
Formato de Apresentação de Welie
Nome Autor Problema
Princípio
Contexto
Influências/
Motivação
Solução
Raciocínio
22
Formato de Apresentação de Welie
Exemplos
Usos
Conhecidos
Padrões
Relacionados Implementação
23
Linguagem de Padrões - Conceito
“Uma Linguagem de Padrões nada mais
é do que uma maneira precisa de
descrever a experiência de alguém... é a
representação de um principio repetitivo
em um bom projeto de interação através
de um conjunto de padrões
hierarquicamente estruturados e inter-
relacionados que são criados para guiar
o projetista pelos vários níveis de
abstração através do processo...”
(Alexander, 1977)
Linguagem de Padrões - Conceito
“A linguagem de padrões não captura somente as peças
de projeto (padrões), mas também a forma como estas
peças se encaixam”
(Fincher, 1999)
“É uma hierarquia de padrões de projeto ordenadas por
escopo. Padrões de alto nível endereçam questões de
larga escala no projeto e referencia padrões de mais
baixo nível para descrever sua solução”
(Borchers, 2000)
“Padrões estão relacionados uns com os outros, e
conseqüentemente uma rede de padrões constituem uma
linguagem de padrões”
(Welie, 2000)
Linguagem de Padrões – Exemplo
Inclusive o usuário
do sistema
Por quê uma linguagem de padrões?
Problemas podem ser muito complexos
♦ difíceis de descrever em um único padrão
♦ Não óbvio
● Possuir experiência e pesquisa intensa no domínio
♦ Insight
● Um padrão faz mais do que identificar uma solução,
ele explica a necessidade dessa solução
♦ Poder comunicativo
● Facilitar sua divulgação e aceitação
Captura de experiência
● Transferência de conhecimentos entre pessoas
com níveis de experiência diferentes
Padrões em IHC – Estado da Arte
Conceitos de Padrões em IHC
Principais Trabalhos em IHC
♦ Comparação dos Trabalhos
Padrões de IHC
“Uma linguagem de padrões de interação gera
projetos de interação de espaço/tempo que cria
uma imagem do sistema próxima ao modelo
mental do usuário da tarefa a ser realizada,
fazendo com que a interface humano-
computador seja a mais transparente possível.”
ChiliPLoP’98
Padrões de IHC - Categorias
relacionados com
Padrões para Interação preocupações de alto
Humano-Computador nível, e algumas vezes
com guidelines,
envolvendo a psicologia
do usuário
Ex.: Linguagem de
padrões para avaliação de
Padrões para Avaliação de usabilidade de Gellner e
Usabilidade Forbrig
Principais Trabalhos
Linguagem de Padrões da Tidwell (1998)
Good Defaults
Nome Exemplos
Examples:
•A PC login screen with the last user's name still in the "User name:" field
•A phone menu which, if you don't press any number, puts you through to a human
operator who can help you
•Refrigerator controls which give you a "medium coldness" setting by default
Context: The user should fill in information on a Form (or change settings via a
Control Panel), and some of the data fields can be given reasonable default
values. This can happen within many different subpatterns: Choice from a Small
Set, Choice from a Large Set, Sliding Scale, Forgiving Text Entry, etc.
Contexto
Problem: How does the artifact indicate what kind of information should be
supplied?
Problema
Linguagem de Padrões Common Ground - Exemplo
Forces: Influências/
•Filling out forms isMotivação
not inherently a fun activity; don't prolong the agony by making
the user do unnecessary work.
•The user may have no clue what kind of value to supply, from the given context.
•The user may be perfectly happy with the default behavior or values, with no desire
to change it; but they may want to know what the default values are.
•"Correct" values for some unfilled fields may be difficult or impossible for the
artifact itself to figure out.
Solução
Solution: Supply reasonable default values for the fields in question. Show
these defaults to the user, so that they know they aren't required to fill them
in. Indicate clearly that the value can be changed by the user, if they so desire.
Resulting Context: You need to choose the correct default value. The actual value
you use will depend entirely upon the particulars of the artifact, of course, but keep
in mind such principles as minimal work (pick a default value that most of your
users will be OK with), adaptability (change a default value to be consistent with
information the user has already supplied), and Contexto
representativeness (make it a good
example of "correct" input). Resultante
Linguagem de Padrões Common Ground - Exemplo
Forces:
•Filling out forms is not inherently a fun activity; don't prolong the agony by making
the user do unnecessary work.
•The user may have no clue what kind of value to supply, from the given context.
•The user may be perfectly happy with the default behavior or values, with no desire
to change it; but they may want to know what the default values are.
•"Correct" values for some unfilled fields may be difficult or impossible
Foco nos for the
artifact itself to figure out. interesses do
usuário
Solution: Supply reasonable default values for the fields in question. Show
these defaults to the user, so that they know they aren't required to fill them
in. Indicate clearly that the value can be changed by the user, if they so desire.
Resulting Context: You need to choose the correct default value. The actual value
you use will depend entirely upon the particulars of the artifact, of course, but keep
in mind such principles as minimal work (pick a default value that most of your
users will be OK with), adaptability (change a default value to be consistent with
information the user has already supplied), and representativeness (make it a good
example of "correct" input).
Linguagem de Padrões Common Ground
*Visão
Parcial dos
Relacionamentos
47
Coleção UI Patterns and Techniques
Autora: Tidwell
Web: http://time-tripper.com/uipatterns
desenvolvimento de interfaces com o usuário
40 Padrões
Divisão dos padrões em categorias
Formato do Padrão:
♦ Nome
♦ Exemplo
♦ Usando quando (Used When)
♦ Porquê (Why)
♦ Como (How)
♦ Exemplos
Exemplos
Usado
Quando
Porquê
Como
Coleção UI Patterns and Techniques - Exemplo
Exemplos
Coleção UI Patterns and Techniques
Coleção de Padrões (parte 1/2)
Organizing the Page
Organizing the Getting Around
Visual Framework
Content Clear Entry Points
Center Stage
Overview Plus Detail Toplevel Navigation
Titled Sections
Hub and Spoke Color-Coded Divisions
Card Stack
Extras On Demand Animated Transition
Closable Panels
Step-by-Step Detail View Navigation
Movable Pieces
Instructions Getting Input From Users Progressive Disclosure
One-Window Good Defaults Progressive Enabling
Drilldown Forgiving Format Property Sheet
Intriguing Branches Fill-in-the-Blanks Diagonal Balance
Multi-Level Help Input Hints Liquid Layout
Input Prompt
Dropdown Chooser
Remembered Choices
Illustrated Choices
Coleção UI Patterns and Techniques
Coleção de Padrões (parte 2/2)
Direct Manipulation Stylistic Elements
Commands and Actions
Smart Selection Deep Background
Multi-Level Undo
Edit-in-Place Few Hues, Many Values
Smart Menu Items
One-Off Mode Contrasting Font Weights
Prominent Done
Spring-Loaded Mode Corner Treatments
Prominent Cancel
Constrained Resize One-Pixel Lines
Action Groups
Composite Selection Skins
Rollover Effects
Simultaneous Views
Progress Indicator
Command History
Showing Complex Data Macros
Sortable Table
Tree-Table
Alternating Row Colors
Cascading Lists
Jump to Item
New-Item Row
A Linguagem de Padrões de Borchers
♦ Autor: Borchers
♦ Livro: A Pattern Approach to Interaction Design
● Contendo padrões de ES, IHC e de música (domínio de
aplicação)
♦ Web: http://www.hcipatterns.org/patterns/borchers/patternindex.html
● Apenas os padrões de IHC
Nome Ranking
Ilustração
Contexto
Descrição Simples
do Problema
Descrição Detalhada
do Problema
A Linguagem de Padrões de Borchers – Exemplo
Solução
Diagrama
Referências
A Linguagem de Padrões de Borchers – Exemplo
A Coleção de Welie
♦ Autores: Welie e Trætteberg
♦ Welie e Trætteberg. Interaction Patterns in User Interfaces,
PLoP 2000.
♦ Web: http://www.welie.com
Exemplo
Problema
Usado
Quando
Solução
A Coleção de Welie - Exemplo
Porquê
Mais
Exemplos
Usos
Conhecidos
A Coleção de Welie
Coleção de Padrões para Web (parte 1/3)
Princípio
Contexto
Influências/
Motivação
Solução
Raciocínio
A Coleção de Welie - Exemplo
Exemplos
Usos
Conhecidos
Padrões
Relacionados
Implementação
A Coleção de Welie
Coleção de Padrões para GUI
Modes Selection Guidance/Feedback
· Automatic Mode Switching · Magnetism · Shield
· Helping Hands · Continuous Filter · Hinting
· Mode Cursor · Contextual Menu · Warning
· Focus! · Progress
· Unambiguous Format · Undo
Navigation · Preview
· Wizard · Setting Attributes
· Softkeys · Command Area
· Navigating Spaces · Managing Favourites
· Container Navigation · Preferences
· List browser Physical Interaction
Presentation · Like in the real world...
· Grid layout · Media Slot
A Coleção de Welie
Coleção de Padrões para móveis
♦ Formato do Padrão:
● Nome
● Problema
● Contexto
● Solução
● Raciocínio
● Exemplos
● Usos Conhecidos
● Padrões Relacionados (Opcional)
A Coleção de Welie - Exemplo
Nome
Problema
Contexto
Solução
Raciocínio
A Coleção de Welie - Exemplo
Exemplos
Usos
Conhecidos
Padrões
Relacionados
A Coleção de Welie
Coleção de Padrões para Móveis
WAP/WML
· Typed Links
· Prefixed Links
· Selection
· Paging
· Footer Navigation
· Image Browsing
· Search
A Linguagem de Padrões de Montero et al.
Linguagem de Padrões
♦ Montero, Lozano, Gonzáles, Ramos. A First Approach To
Design Web Sites By Using Patterns, VikingPLoP 2002.
Linguagem de Padrões
♦ Formato do Padrão:
● Nome
● Motivação
● Problema
● Influências (Forces)
● Solução
● Conseqüências
● Exemplo e Detalhes de Implementação
♦ Estrutura uniforme
A Linguagem de Padrões de Montero et al.
Web Sites Páginas Web Ornamentais
Welcome
Welcome
Contexto: Usuário necessita saber onde ele está, o que pode fazer e o que
ele necessita para visitar o lugar
Problema: Como os usuários podem saber onde podem ir e o que eles acharão
lá?
Solução: Forneça o mecanismo necessário (links significantes) que
permitam qualquer usuário mover de um lugar para outros lugares
Forneça informações de feedback sobre sua localização
Possibilite o retorno (Second Chance) para um lugar seguro
(Homepage)
Links importantes podem ser colocados no alto da página
Etiquetas de Links descritivas poderiam ser utilizados (Polite)
Se utilizar Frames, coloque um título em cada um
79
Polyglot
Polyglot
Contexto: Permitir o acesso a todos
Problema: Como o usuário sabe que ele pode visitar um web site sem
problemas?
Solução: Forneça ferramentas ou informações necessárias para visitar o
web site de modo adequado
O site pode detectar se o usuário possui tudo o que é necessário
e fornecer links para download
O usuário não necessita saber de aspectos técnicos (Polite)
Garante que as páginas são usáveis mesmo quando scritps,
applets, ou objetos programáticos estão desligados ou não são
suportados
Forneça informações em uma página alternativa acessível
(Polyglot)
A Linguagem de Padrões de Montero et al.
Web Sites Páginas Web Ornamentais
Homepage
87
Homepage
Contexto: Uma página é acessa de várias maneiras, entretanto deve haver um ponto
de referência, que responda questões como quem? O que? Quando?
Onde?
Problema: Como o usuário sabe onde ele está?
89
Polite
Contexto: As pessoas se diferem amplamente nos termos que utilizam para
descrever conceitos
91
Busy
92
Second Chance
93
Second Chance
Contexto: O usuário quer sentir que está no controle de suas operações
94
Form
95
Form
Contexto: O usuário tem que fornecer informações
97
Danger
Contexto: Existe um excesso de plug-ins. Mas não se pode assumir que qualquer
um irá tê-los ou usar uma particular configuração do computador
Problema: Como o usuário visita um web site sem ficar confuso, ser
interrompido ou ficar desorientado?
100
Tag Line
102
Print
Contexto: Os usuários não querem visitar o website a todo momento. Eles desejam
saber quando novos produtos ou novidades aparecem.
Problema: Como o usuário sabe onde está ou qual é a sessão que ele está?
118
Size
121
Secret
122
Secret
Problema: Como o usuário pode ter certeza que a informação que ele fornece
é protegida?
123
Comparação dos Trabalhos
Linguagem Linguagem
Coleção Linguagem Coleções de
Common de Motero et
UI Patterns de Borchers Welie
Ground al.
Número de
Padrões 60 40 17 122 23
Introdução
♦ O facilitador introduz
● o que são os padrões
● Para que servem
● Como podem auxiliar o trabalho
● Formato
Leitura dos Padrões
♦ O facilitador solicita que o usuário leia um padrão de
cada vez
♦ Facilitador pergunta se o usuário entendeu todos os
termos
♦ Facilitador pergunta ao usuário sobre o que ele
entendeu sobre o padrão
♦ Facilitador tira as dúvidas do usuário
(Dearden, 2002)
Modelo de Processo do Projeto da Interação (2/2)
Desenvolvimento da interface
♦ Facilitador guia o usuário no desenvolvimento da
interface
♦ Foque uma tela por vez
♦ Permita ao usuário manipular os padrões
♦ Ao terminar uma tela, facilitador verifica se a tela
satisfaz as diretivas dos padrões utilizados
Desenvolvimento iterativo começando com
protótipos de papel, chegando em mock-ups e
utilização de ferramentas de autoria em direção
a um produto completo.
(Dearden, 2002)