Você está na página 1de 8

Arquitetura e Desenvolvimento

Nesta seção você encontra artigos voltados para diferentes


abordagens de apoio ao desenvolvimento de projetos de software

Uma introdução aos padrões de projeto


Da arquitetura civil à interação humano-computador

Uma introdução aos padrões de projeto: de projetos anteriores para reuso. Muitas vezes,
O uso de padrões surgiu na arquitetura civil e pos- as interfaces de usuários apresentam arquitetura
teriormente, o mesmo conceito foi utilizado na ruim, interações mal planejadas, inconsistências e
computação, nas áreas de engenharia de software os padrões são vistos como formas de tornar boas
e interação humano-computador. Os padrões, soluções disponíveis para as pessoas que constro-
organizados em coleções ou linguagens, auxiliam em as interfaces. Além disso, os padrões podem
o desenvolvimento de novos projetos, pois docu- ser usados como um insumo para o usuário final
mentam experiências anteriores. em um processo de projeto colaborativo – projeto
A Interação Humano-Computador (IHC) é a área participativo, por exemplo –, uma vez que devem
que estuda, além das interfaces, a interação e os ser descritos em uma linguagem comum e de fácil
Graziele Athanasio Bueno aspectos que a influenciam, não considerando entendimento para o usuário não especialista. O
Colombo somente a tela e os diversos elementos que a uso de padrões permite que os projetistas se pre-
grazielebueno@gmail.com
compõem, mas também se preocupando em de- ocupem com novas soluções e não com problemas
Bacharel e Mestre em Ciência da Com-
putação pela Universidade Estadual de senvolver produtos usáveis, fáceis de aprender, já resolvidos anteriormente; porém, eles não são
Campinas (UNICAMP). Atua na área de efetivos e que tragam satisfação ao usuário. soluções prontas para qualquer situação, precisam
desenvolvimento de software desde Neste artigo vamos apresentar as características ser adaptados a contextos particulares.
2004. Atualmente é Arquiteta de Siste- e os conceitos relacionados aos padrões de pro-
mas no CPqD.
jeto, abordando também o histórico dos padrões Em que situação o tema é útil:
de projeto, desde seu surgimento na arquitetura Este artigo pode ser usado como um ponto de par-
Hans Liesenberg civil até seu uso na área de interação humano- tida para o entendimento dos padrões. Além dis-
hans@liesenberg.biz
Bacharel em Ciência da Computação, IC/ computador (IHC). No final, destacamos algumas so, apresenta referências a coleções de padrões de
Unicamp (1976); Mestrado em Ciência da classificações e coleções de padrões de projeto da interação que podem auxiliar no desenvolvimento
Computação, IC/Unicamp (1980); Douto- interação voltados principalmente para a Web. prático de projetos, sendo útil para os envolvidos
rado em Engenharia Elétrica, University of Na área de IHC, padrões são importantes por priori- no desenvolvimento de projetos, principalmente
Newcastle upon Tyne, Inglaterra (1985),
zarem a usabilidade e documentarem experiências aqueles que trabalham no projeto da interação.
Pós-Doutorado, Université de Genève,
Suíça (1997).

30 Engenharia de Software Magazine - Uma introdução aos padrões de projeto


dESENvoLviMENTo

A
Interação Humano-Computador (IHC) é a área que várias áreas de conhecimento, não havendo uma conside-
estuda, além das interfaces, a interação e os aspectos rada universal.
que a influenciam, não considerando somente a Um padrão não é criado diretamente, ele é descoberto,
tela e os diversos elementos que a compõem, mas também em geral, por observação. Alexander diz que a observação
se preocupando em desenvolver produtos usáveis, fáceis para encontrar um padrão é um processo através do qual se
de aprender, efetivos e que tragam satisfação ao usuário. tenta descobrir uma característica invariante que relaciona
Mais formalmente, podemos definir IHC como sendo uma problema, contexto e solução. Podem existir várias soluções
área multidisciplinar envolvida com o “projeto, avaliação e para um mesmo problema, mas pode ser que todas tenham
implementação de sistemas de computação interativos para uma característica em comum; é a identificação dessa carac-
uso humano e com o estudo dos principais fenômenos ao terística que gera um padrão. Um padrão não tem o objetivo
redor deles” [39]. É uma área que envolve disciplinas com de mapear todas as soluções possíveis de um problema, de
diferentes ênfases como, por exemplo, ciência da computa- forma detalhada, mas, sim, descrever de forma abstrata a
ção, psicologia, sociologia, antropologia, fatores humanos propriedade invariante que “captura todas as possíveis solu-
ou ergonômicos, entre outros. ções para o problema dado naquele conjunto de contextos”.
Como foi dito, IHC inclui questões sobre o projeto da in- Para Alexander, Ishikawa e Silverstein [4], uma pessoa pode
teração entre o ser humano e o computador e é justamente usar o mesmo padrão “um milhão de vezes, sem nunca fazer
neste contexto que os padrões de projeto estão inseridos. do mesmo jeito duas vezes”.
Assim como em outras áreas, o conceito de padrões de Um padrão se torna operacional ao ser enunciado. Assim
projeto também passou a ser utilizado em IHC como uma ele pode ser compartilhado mais facilmente.
forma de documentar a experiência e o conhecimento de Alexander define, também, o conceito de linguagem de
projetos de interfaces de usuário e orientar o projeto de padrões como sendo um sistema finito de regras que pode
novas aplicações. Recentemente, os padrões têm recebido ser usado para gerar uma variedade infinita de construções
uma atenção considerável em IHC pelo seu potencial em diferentes de uma mesma família.
dar suporte a projetos de boa qualidade. Para Alexander, os padrões não são isolados uns dos ou-
Diante do uso crescente dos padrões para melhorar os tros; um padrão contém outros menores e é parte de outros
métodos de projeto, procuramos compilar, ao longo deste maiores. Uma linguagem de padrões é uma coleção de
artigo, um histórico sobre os padrões de projeto, desde a padrões interligados, ou seja, que se referenciam entre si.
arquitetura civil até a área de IHC, além das definições e Uma linguagem de padrões inclui regras e orientações que
características dos padrões e das linguagens de padrões. explicam como e quando aplicar seus padrões para resolver
No final, destacamos algumas classificações e coleções de um problema que exige o uso de vários padrões.
padrões de projeto da interação voltados principalmente Os padrões possuem uma característica atemporal, ou
para a Web. seja, independentemente de época os padrões de projeto
poderiam ser aplicados.
Padrões de Projeto, Coleções e Linguagens de Na computação, o uso de padrões se popularizou na disci-
Padrões plina de Engenharia de Software, no fim da década de 80 e
A identificação e o estudo de padrões iniciaram na ar- início da década de 90. Influenciado pela obra de Alexander,
quitetura civil, com o arquiteto e matemático Christopher o grupo conhecido como Gang of Four (“Gangue dos Quatro”)
Alexander, no final da década de 70. Para ele, sempre lançou o livro Design Patterns: Elements of Reusable Object-
existiu um modo de construir que as pessoas costumavam Oriented Software, que foi um marco sobre padrões de projeto
utilizar de forma recorrente. Foi ainda identificado que as para a Engenharia de Software. Em 1991, Gamma estava tra-
várias obras e construções possuíam algo que não variava, balhando em sua tese de doutorado sobre desenvolvimento
o que o levou a concluir que havia um processo comum que de software orientado a objetos e reconheceu a importância
conduzia estas construções. Esse processo era exatamente do uso de estruturas que acumulassem soluções que se repe-
a aplicação de um conjunto comum de padrões de projetos tiam com frequência, o que acabou sendo a semente inicial
pelas pessoas. para a obra; neste e nos anos seguintes, alguns encontros
A primeira definição de padrão, dada por Alexander, diz foram realizados pela comunidade de orientação a objetos;
que “cada padrão é uma regra de três partes, que expressa através destes encontros, onde o assunto era discutido e dis-
uma relação entre um contexto, um problema e uma solu- seminado, Richard Helm, Ralph Johnson e John Vlissides se
ção”. Em outras palavras, é uma relação entre um contexto juntaram a Gamma e juntos lançaram o catálogo de padrões
(conjunto de situações que se repetem onde o padrão pode apresentado na referência [25]. Apesar de ser considerado
ser aplicado), um conjunto de forças – objetivos e limitações um marco, esta obra não foi a única nem a primeira de
– que ocorre repetidamente neste contexto e uma configu- sua época. Kent Beck e Ward Cunningham, por exemplo,
ração, no caso do Alexander, espacial, que permite estas criaram alguns padrões de interface gráfica para Smalltalk
forças se resolverem. Desde então, muitos autores criaram (linguagem de programação) e os apresentaram em uma
suas próprias variações para a definição de padrão, em conferência em 1987 (ler Notas do DevMan 1 e 2).

Edição 58 - Engenharia de Software Magazine 31


os requisitos necessários para a estrutura a ser construída.
Nota do DevMan 1 Beck e Cunningham procuraram utilizar o mesmo argumento
para o desenvolvimento de programas para o computador, ou
seja, deixar os usuários construírem seus próprios programas.
Semelhanças entre os padrões da “Gangue dos Quatro” e de Alexander. Porém, em geral, na Engenharia de Software, os padrões de
• Baseiam-se na observação de sistemas reais e busca de padrões; projeto não são para utilização dos usuários e sim dos espe-
• Utilizam templates para a descrição dos padrões; cialistas da área.
• Utilizam linguagem natural, ou seja, não são utilizadas linguagens formais para Para Appleton, o principal foco não é a tecnologia, mas a
descrever os padrões; criação de uma cultura de documentação e suporte para o
• Apresentam exemplos de uso dos padrões; desenvolvimento de projetos.
• Expõem os fundamentos do padrão, explicando por que seu uso é adequado. Na Computação, o uso de padrões não ficou restrito à
Engenharia de Software, mas se estendeu também para a área
de Interação Humano-Computador. Em IHC, este assunto
vem sendo tratado em conferências da área desde 1997, porém
Nota do DevMan 2 o trabalho de Alexander foi citado por autores de IHC vários
anos antes: a primeira menção foi feita em 1986, por Donald
A. Norman e Stephen W. Draper, em User-Centered System
Diferenças entre os padrões da “Gangue dos Quatro” e de Alexander. Design: New Perspectives on Human-Computer Interaction.
• O desenvolvimento de software é mais recente do que a arquitetura, o que faz com Os primeiros padrões de uma linguagem de padrões para
que esta última tenha muitas obras consideradas clássicas, o que não é verdade para projeto de interface centrado no usuário foram publicados
o desenvolvimento de software; em 1996, por Coram e Lee.
• Ao contrário de Alexander, Gamma e seus colegas de trabalho não atribuem uma Pauwels e Hübscher definem um padrão de projeto de
ordem de uso dos padrões; interação como sendo “uma descrição estruturada de uma
• Gamma enfatiza a solução e Alexander enfatiza o problema; solução comprovada para um problema recorrente de projeto
• Para Alexander, seus padrões podem gerar obras completas; para Gamma, seus pa- de interface em um contexto específico”.
drões não irão gerar sistemas completos. Na área de IHC, padrões são importantes por priorizarem
a usabilidade e documentarem experiências de projetos an-
teriores para reuso. Muitas vezes, as interfaces de usuários
A obra de Gamma não se encaixa no conceito de linguagem apresentam arquitetura ruim, interações mal planejadas,
de padrões proposto por Alexander. Ela não é uma linguagem, inconsistências e os padrões são vistos como formas de tornar
mas um catálogo de padrões. boas soluções disponíveis para as pessoas que constroem as
Algumas características importantes dos padrões de interfaces. Além disso, os padrões podem ser usados como um
projeto são: insumo para o usuário final em um processo de projeto cola-
• Facilidade de reuso de projetos de sucesso, tornando as solu- borativo – projeto participativo, por exemplo –, uma vez que
ções mais acessíveis a desenvolvedores de novos sistemas; devem ser descritos em uma linguagem comum e de fácil en-
• Fornecimento de um vocabulário comum para facilitar a tendimento para o usuário não especialista. O uso de padrões
comunicação entre os projetistas e usuários; permite que os projetistas se preocupem com novas soluções e
• Melhoria na documentação e manutenção de sistemas não com problemas já resolvidos anteriormente; apesar disso,
existentes; eles não são soluções prontas para qualquer situação, precisam
• Ajuda na criação de novos sistemas; ser adaptados a contextos particulares.
• Fornecimento de soluções não óbvias para problemas recor- A recorrência é um fator importante para se caracterizar um
rentes, podendo auxiliar inclusive projetistas experientes; padrão; ou seja, para ser um padrão, deve ocorrer em pelo
• Complemento para outros métodos de projeto; menos alguns sistemas. Segundo Appleton, o número mínimo
• Ajuda na diminuição da refatoração; de ocorrências seria três – fato conhecido como regra de três.
• Surgimento a partir da observação da prática no mundo real Um padrão também deve apresentar uma solução comprova-
e não da teoria. damente de sucesso para os problemas recorrentes, não sendo
somente uma teoria ou especulação. Alguns afirmam que um
Apesar dos vários pontos positivos do uso de padrões, Gam- padrão deve ser reconhecido como tal somente após revisões
ma defende que um padrão só captura uma fração do conhe- feitas por terceiros.
cimento do especialista. Ainda assim, outros autores, como Para Seffah, um ponto notável dos padrões de IHC é o fato
Buschmann, defendem que os padrões capturam e tornam de serem concretos e abstratos ao mesmo tempo: concretos o
disponível a experiência de vários anos de muitos especialistas, suficiente para proverem soluções práticas para os problemas
o que é uma característica muito importante. e abstratos por serem aplicáveis em diferentes situações.
Alexander propõe que as construções sejam projetadas Segundo Dearden e Finlay, a noção de tempo talvez seja
por seus próprios ocupantes, pois estes sabem melhor quais uma característica exclusiva dos padrões de interação.

32 Engenharia de Software Magazine - Uma introdução aos padrões de projeto


dESENvoLviMENTo

Neste caso, o tempo é importante porque as soluções costumam IHC (projeto, desenvolvimento, avaliação ou uso de sistemas
ser dinâmicas. interativos).
Valente defende que, talvez, o diferencial mais importante Os padrões de projeto voltados para a Web procuram resolver
dos padrões de projeto seja “o aspecto atemporal”. Já na refe- os problemas de interação, permitem a criação de novas funcio-
rência [7], vemos que oss padrões de IHC são caracterizados em nalidades a partir de outras já existentes e adaptam os princípios
diferentes níveis de abstração: os de nível mais alto são mais utilizados no desktop. No período recente, a Web tem sido uma
robustos através do tempo, enquanto os de nível mais baixo, das grandes questões no projeto de interfaces de usuário e a
baseados fortemente em um paradigma de interface de usu- maioria dos padrões documentados é voltada para a Web.
ário, mudam com mais rapidez, em sincronia com a evolução Nos últimos anos, o foco em desenvolver repositórios online
tecnológica e dos paradigmas. Também existe a dificuldade cresceu. Devido às características de hipermídia e alta disponibi-
na formação de uma linguagem de padrões para IHC, pois as lidade de dados da Internet, a referência a padrões de diferentes
tecnologias estão em constante mudança. coleções e linguagens e a disseminação deles na comunidade de
Para Duyne, Landay e Hong, os padrões não são efêmeros, IHC se tornaram mais fáceis (ler Nota do DevMan 3).
pois mesmo existindo evolução na aparência dos sites e em
tecnologias como AJAX, XML e CSS, os padrões utilizados
permanecem. Já para Kruschitz e Hitz, as coleções e linguagens Nota do DevMan 3
de padrões requerem uma atualização regular, pois as técnicas
de interação mudam com o passar do tempo devido à invenção Padrões em outras áreas de conhecimento.
de novos hardwares e formas de interação.
Em pesquisa apresentada na referência [14], verificamos Apesar de termos abordado somente os padrões das áreas de Arquitetura e Compu-
tação, cabe ressaltar que podemos encontrar padrões de outras áreas, como padrões
que nem todos os padrões das coleções analisadas subsisti-
pedagógicos (apresentam o conhecimento sobre ensinar e aprender) e organizacio-
ram ao longo do tempo, retirando deles a característica de nais (descrevem a estrutura e práticas de organizações humanas).
atemporalidade.
Uma coleção ou catálogo de padrões é um conjunto de pa-
drões relacionados de alguma forma, em geral, subdivididos Formato dos padrões
em categorias, podendo ter referências cruzadas entre eles. De uma forma geral, padrões podem ser descritos conside-
Linguagens de padrões são metalinguagens que geram rando as informações abaixo:
linguagens de projeto específicas de um dado domínio ou • Nome: nome curto e significativo, importante para compor
induzem uma sequência de decisões de projeto. Este poder de um vocabulário e para facilitar a recuperação dentro de uma
geração é o que diferencia coleções de linguagens. coleção ou linguagem;
Construir uma linguagem para IHC é uma tarefa que exige • Problema: descreve o objetivo que se deseja atingir dentro
ampla colaboração, não podendo ser feita por uma única pes- de um contexto e conjunto de forças;
soa. Além disso, raramente podemos dizer que uma linguagem • Contexto: as condições nas quais o problema e a solução
é completa, pois para isso deveria ser possível descrever todos ocorrem; em outras palavras, onde a solução é aplicável;
os bons projetos através do uso de seus padrões. • Forças: descrevem as condições favoráveis e restrições para
Uma linguagem comum pode ajudar na comunicação entre a aplicação do padrão em questão e como elas interagem umas
os diversos papéis envolvidos no processo de projeto (proje- com as outras e com os objetivos que se deseja atingir;
tistas, engenheiros, pesquisadores, usuários, entre outros). A • Solução: mostra como o problema é resolvido;
linguagem de padrões pode prover esta linguagem comum • Exemplos: exemplos que ilustram a aplicação do padrão;
para auxiliar nesta grande diversidade existente em projetos ajudam a entender o uso e aplicabilidade do padrão;
da interação. • Contexto resultante: a configuração resultante da aplicação
Neste contexto, é importante se ter uma organização da do padrão, incluindo as consequências;
linguagem de padrões que permita: • Justificativa (Rationale): explica as regras contidas no padrão,
• A localização dos padrões desejados; como e por que razão o padrão funciona e a sua aplicação é
• A localização de padrões relacionados; apropriada;
• A avaliação do problema a partir de diferentes pontos de • Padrões relacionados: relação entre o padrão e outros padrões
vista; da linguagem;
• A criação de soluções novas. • Usos conhecidos: ocorrências conhecidas do padrão em
sistemas reais.
Padrões e linguagem de padrões ganharam bastante atenção
nos últimos anos em IHC por seu potencial em registrar e Em IHC, vários outros formatos já foram utilizados. Ocorre-
disseminar conhecimento e dar suporte para o processo de ram também tentativas de unificá-los, reunindo os elementos
projeto, sendo abordados em diversas áreas como, por exemplo, comuns entre os vários formatos. Na pesquisa realizada por
sistemas ubíquos, hipertexto e hipermídia, sistemas interativos Kruschitz e Hitz, eles encontraram um conjunto mínimo
críticos, sistemas multimídia e, também, nas diversas fases da de elementos comuns aos formatos de padrões analisados.

Edição 58 - Engenharia de Software Magazine 33


Este conjunto comum poderia ser a base para um formato - Manipulação: entrar com informações na interface ou
padrão para IHC: manipular algum tipo de dado da aplicação;
• Cabeçalho: introdução para o padrão com os seguintes - Navegação: realizar a navegação geral no sistema;
elementos: • Dimensão física: padrões que resolvem problemas relacionados a:
- Nome: nome do padrão; - Espaço: como dispor os elementos do sistema no espaço
- Imagem: imagem que ilustra a solução proposta pelo da área de visualização do sistema;
padrão; - Tempo: como tratar o tempo contínuo, por exemplo, em
- Descrição resumida do problema; técnicas de animações;
• Corpo: contém informações mais detalhadas sobre o padrão - Sequência: como tratar uma série discreta de eventos.
e o problema que ele resolve. Inclui os seguintes itens:
- Contexto: define a situação em que o problema ocorre e a Tem-se também uma terceira classificação diferente das anterio-
aplicabilidade da solução proposta pelo padrão; res, utilizando apenas duas categorias mais abrangentes [5]:
- Forças: discute as condições favoráveis e restrições envol- • Padrões de interação humano-computador: relacionados com
vidas na aplicação do padrão; questões de alto nível, abrangendo desde diretrizes de projeto
- Solução: explica como solucionar o problema através do até questões arquiteturais;
reuso de práticas de projeto; • Padrões de interface com o usuário: relacionados a problemas
- Exemplo: links ou imagens de sistemas que utilizam o específicos de interação e a componentes de interface.
padrão;
• Referências: informações adicionais sobre o padrão, com o Welie e Veer [51] identificam camadas de padrões, seguindo
item: uma metodologia top-down onde problemas de alto nível são
- Padrões relacionados. decompostos em problemas de nível menor:
• Padrões de postura: os que definem o propósito ou gênero
Como se pode ver, a maioria destes itens aparece no formato do site;
apresentado anteriormente. • Padrões de experiência: relacionados aos principais objetivos
e tarefas do usuário que precisam ser apoiadas;
Classificação de padrões • Padrões de tarefa: descrevem uma série de interações com
A seguir, apresentamos algumas formas para classificar os um ou mais objetos para resolver um problema;
padrões, mas é importante ressaltar que não há uma que se • Padrões de ação: relacionados aos componentes da interface.
destaque como sendo a mais usada ou a mais eficiente.
Um primeiro agrupamento de padrões em IHC considera as Welie e Veer [51] também expõem outra forma de organização
seguintes categorias [30]: de padrões. Segundo tais autores, eles podem ser classificados
• Padrões de tarefas: sugerem, em alto nível, uma forma lógica de acordo com:
para realização de tarefas; • Aspectos funcionais: padrões de navegação, pesquisa, layout,
• Padrões de usuários: atendem os diferentes perfis de usuá- entre outros;
rios, de acordo com sua frequência de uso, experiência geral • Aspectos de usabilidade: padrões que melhoram alguma
com computadores e conhecimento do domínio; característica relacionada à usabilidade;
• Padrões de elementos de interface: relacionados com o uso • Tarefas do usuário: padrões para atividades como selecionar
apropriado de componentes de interface; objetos, encontrar objetos, ordenar, entre outras;
• Padrões para sistemas inteiros: tratam de questões relacio- • Tipos de usuário: padrões para atender usuários novatos,
nadas ao sistema como um todo e possuem um alto nível de intermediários ou avançados.
abstração.
Carlsson [16] argumenta que desenvolvedores e especialis-
Outra classificação para padrões de interação considera ca- tas de IHC e usuários possuem conhecimentos e objetivos
tegorias dentro de três dimensões principais [10]: diferentes ao pesquisar padrões, por isso ele sugere duas
• Nível de abstração: os padrões podem estar relacionados a categorizações distintas:
um dos níveis abaixo: • Categorização de padrões para desenvolvedores: focada em
- Tarefa: questões de alto nível que podem compreender como melhorar o uso do sistema. Pode ser dividida em duas
uma tarefa completa do usuário; partes, cada uma com seus atributos:
- Estilo: questões que descrevem o estilo de uma parte da - Usabilidade: é caracterizada pelos atributos de visibili-
interação; dade, restrições, affordance, mapeamentos e feedback, e um
- Objeto: questões de baixo nível relacionadas a objetos padrão deve melhorar pelo menos um destes quesitos (ler
individuais da interface do usuário; Nota do DevMan 4);
• Função: os padrões podem tratar questões relacionadas a: - Efetividade: leva em consideração o tempo de aprendiza-
- Percepção: perceber a resposta da interface seja ela visual, gem, desempenho, taxa de erros dos usuários, retenção do
sonora ou de algum outro tipo; conhecimento através do tempo, satisfação subjetiva;

34 Engenharia de Software Magazine - Uma introdução aos padrões de projeto


dESENvoLviMENTo

• Categorização de padrões para usuários: focada no usuário como sendo de feedback, interação simplificada ou direciona-
final, em contextos e tarefas. Pode ser dividida em três partes, mento de atenção;
cada uma com seus atributos: • Contexto de projeto: sites especializados em algum
- Experiência: considera o tipo do usuário final, podendo ser tema, sites voltados para experiência do usuário, tipos de
novatos, com conhecimento intermediário ou avançado; páginas.
- Estilo de interação: relacionado a fornecer ou recuperar
dados através da interface no estilo de manipulação direta, Coleções de padrões
seleção através de menu, preenchimento de formulários, Destacamos a seguir algumas coleções e linguagens de pa-
linguagem de comando, linguagem natural; drões, que podem servir como referência para o leitor:
- Nível da interface: relacionado à aplicação, containers ou • Common Ground, linguagem de padrões proposta por Jenifer
componentes individuais da interface. Tidwell, cuja versão mais recente possui 94 padrões, abrangen-
do aplicações desktop, Web e dispositivos móveis;
• Coleção de padrões para melhorar a usabilidade de aplica-

Nota do DevMan 4 ções Web, criada por Kimberly Perzel e David Kane na confe-
rência de linguagens de programação PLoP 99; neste trabalho
eles apresentam cinco padrões de forma detalhada e outros 13
Definição de Affordance. padrões candidatos com uma breve descrição;
O conceito de affordance está relacionado com as “propriedades percebidas e reais • Coleção com 20 padrões de interação apresentados por
de um objeto, principalmente aquelas propriedades fundamentais que determinam Van Welie e Trætteberg em 2000 na conferência PLoP 2000;
como o objeto poderia ser usado” [32]. os padrões são voltados para problemas que o usuário final
enfrenta ao interagir com um sistema, havendo, portanto,
uma preocupação com a usabilidade. Nesta época, os autores
consideraram esta coleção como um ponto de partida para a
Por fim, Welie [48] agrupa os padrões em categorias dentro construção de uma linguagem de padrões de interação;
de dimensões principais: • Linguagem de padrões de interação humano-computador
• Necessidades do usuário: padrões que endereçam uma proposta por Jan Borchers em 2001; composta por 17 padrões
necessidade direta do usuário, tais como, navegação, busca, que procuram melhorar a usabilidade em sistemas usados em
compra, interações básicas, manipulação de dados, persona- espaços públicos, como museus;
lização, decisões, entrada de dados; • Patterns in Interaction Design, coleção desenvolvida por Martijn
• Necessidades da aplicação: auxiliam a aplicação a se comuni- van Welie; possui 131 padrões documentados, sendo voltada
car melhor com o usuário. Os padrões podem ser classificados unicamente para aplicações Web;

Edição 58 - Engenharia de Software Magazine 35


• Linguagem de padrões de projeto para a Web, proposta Conclusão
por Duyne, Landay e Hong, com foco no projeto centrado no Este artigo abordou a história, características e conceitos
usuário e em suas necessidades. Abrange Ajax, Web móvel e relacionados aos padrões de projeto, focando principalmente
comunidades online e possui 107 padrões; nos padrões de projeto da interação.
• WU Pattern Language, linguagem de padrões voltada para Os padrões de projeto da interação são relevantes por darem
a usabilidade na Web, proposta por Ian Graham, em 2003, e suporte ao desenvolvimento de projetos de boa qualidade.
composta de 79 padrões; Portanto, saber o que são os padrões e onde eles podem ser
• Biblioteca de Padrões de Interação do Yahoo! que teve seu encontrados, pode fazer a diferença no projeto da interação
início em 2006; atualmente contém 59 padrões divididos em entre o ser humano e o computador.
grupos sobre layout, navegação, seleção, interação rica e as- Este artigo pode ser usado como um ponto de partida para
pectos sociais; o entendimento dos padrões. Além disso, há referências a
• UI Patterns, coleção de padrões de projeto de interfaces coleções de padrões que podem auxiliar no desenvolvimento
de usuário criada por Anders Toxboe, em 2007. Contém 54 prático de projetos.
padrões divididos em categorias relacionadas à entrada de
dados, pesquisa e apresentação de informação, navegação e Dê seu feedback sobre esta edição! Feedback
eu

s
aspectos sociais;


A Engenharia de Software Magazine tem que ser feita ao seu gosto.

sobre e
• Ajax Design Patterns, linguagem de padrões criada por
Para isso, precisamos saber o que você, leitor, acha da revista!
Michael Mahemoff em 2005, composta por 70 padrões e voltada

s
ta
edição
Dê seu voto sobre este artigo, através do link:
para a tecnologia Ajax.
www.devmedia.com.br/esmag/feedback

Referências
[1] Ajax Patterns. 2005. [10] Borchers, Jan O. CHI Meets PLoP: An Interaction Patterns Workshop. SIGCHI
http://wayback.archive.org/web/20050701000000*/http://ajaxpatterns.org Bulletin. Jan. 2000. v. 32, n. 1, p. 9-12.

[2] Ajax Patterns. 2011. [11] Borchers, Jan O. A Pattern Approach to Interaction Design. DIS ‘00, ACM.
http://ajaxpatterns.org New York. 2000.

[3] Alexander, Christopher. The Timeless Way of Building. New York: Oxford University [12] Borchers, Jan O. A Pattern Approach to Interaction Design. 2001.
Press, 1979. [13] Borchers, Jan O.; Thomas, John C. What’s In It For HCI?CHI 2001, ACM, 31 mar.-5
[4] Alexander, Christopher; Ishikawa, Sara; Silverstein, Murray. A Pattern Language – abr., 2001.
Towns – Buildings – Construction.New York: OxfordUniversity Press, 1977. [14] Bueno, Graziele A. O Impacto das Tecnologias nos Padrões de Projeto da
[5] Alpert, Sherman. R. Getting Organized: Some Outstanding Questions and Issues Interação para a Web. Dissertação de Mestrado. Instituto de Computação, UNICAMP,
Regarding Interaction Design Patterns. Workshop “Perspectives on HCI Patterns”, no Campinas, SP. 2011.
CHI, 2003. Flórida, EUA: ACM Press, 2003. [15] Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal,
http://www.research.ibm.com/people/a/alpert/GettingOrganized.pdf Michael. Pattern-Oriented Software Architecture – A System of Patterns. 1. ed. John
[6] Appleton, Brad. Patterns and Software: Essential Concepts and Terminology. 14 Wiley & Sons, 1996.
fev. 2000. [16] Carlsson, David. A Categorization of HCI Patterns. Department of Computing
[7]Bayle, Elisabeth; Bellamy, Rachel; Casaday, George; Erickson, Thomas; Fincher, Science, Umeå University, Suécia, 2004.
Sally; Grinter, Beki; Gross, Ben; Lehder, Diane; Marmolin, Hans; Moore, Brian; Potts, http://www8.cs.umu.se/education/examina/Rapporter/DavidCarlsson.pdf
Colin; Skousen, Grant; Thomas, John. Putting it all together: Towards a pattern [17] Coplien, James O. Software Patterns. Bell Laboratories, Naperville, Illinois.
language for interaction design. Summary Report of the CHI ‘97 Workshop.
http://www.visi.com/~snowfall/Patterns.WrkShpRep.html [18] Dearden, Andy; Finlay, Janet. Pattern Languages in HCI: A critical review.Human-
Computer Interaction 2006, v.21, n.1, p.49-102.
[8] Beck, Kent; Cunningham, Ward. Using Pattern Languages for Object-Oriented http://cscl.ist.psu.edu/public/projects/sod/597Fall2004/readings/712Dearden.pdf
Programs. Technical Report No. CR-87-43. Submitted to the OOPSLA-87 workshop on
the Specification and Design for Object-Oriented Programming, 1987. [19] Duyne, Douglas K. van. Integrating Web 2.0 Design Patterns into Sites. Naviscent
http://c2.com/doc/oopsla87.html LLC, 2007.

[9] Borchers, Jan O. Pattern Languages in Human-Computer Interaction (Suite [20] Duyne, Douglas K. van; Landay, James A.; Hong, Jason A. The Design of Sites:
Overview). CHI’99, ACM, 1999. Patterns for creating winning web sites. 2. ed. Prentice Hall. 2007.
http://www.hcipatterns.org/tiki-download_file.php?fileId=10

36 Engenharia de Software Magazine - Uma introdução aos padrões de projeto


dESENvoLviMENTo

Continuação: Referências
[21] Duyne, Douglas K. van; Landay, James A.; Hong, Jason A. The Design of Sites – [36] Preece, Jennifer; Rogers, Yvonne; Sharp, Helen. Interaction Design: beyond
Patterns for creating winning web sites. 2010. human-computer interaction. John Wiley & Sons, Inc. 2002.
http://www.designofsites.com
[37] Preece, Jenny; Rogers, Yvonne; Sharp, Helen; Benyon, David; Holland, Simon;
[22] Erickson, Thomas.Lingua Francas for Design: Sacred Places and Pattern Lnaguages. Carey, Tom.Human-Computer Interaction. Addison-Wesley. 1994.
IBM T. J. Watson Research Center. The Proceedings of DIS 2000(Brooklyn, NY, August 17-
[38] Seffah, Ahmed. The Evolution of Design Patterns in HCI: From Pattern Languages
19, 2000). New York: ACM Press, 2000.
to Pattern-Oriented Design. Proceedings of the 1st International Workshop on
http://www.visi.com/~snowfall/LinguaFranca_DIS2000.html
Pattern-Driven Engineering of Interactive Computing Systems, PEICS’10, 2010. Berlim,
[23] Fincher, Sally; Windsor, Peter. Why patterns are not enough: some suggestions Alemanha, p. 4-9.
concerning an organising principle for patterns of UI design. CHI’2000 Workshop on
[39] SIGCHI. ACM SIGCHI Curricula for Human-Computer Interaction. 1992.
Pattern Languages for Interaction Design: Building Momentum. 2000.
http://sigchi.org/cdg/index.html
http://www.cs.kent.ac.uk/people/staff/saf/patterns/chi00.pdf
[40] Silva, André Constantino da. Aplicabilidade de Padrões de Interação Humano-
[24] Frantz, Rafael Zancan. Introdução a Design Patterns para o desenvolvimento de
Computador e de Engenharia de Software no Processo de Desenvolvimento de
software.
Sistemas Interativos. Dissertação de Mestrado. Universidade Federal de São
[25] Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John. Design Patterns Carlos. 2005.
- Elements of Reusable Object-Oriented Software. Addison-Wesley Professional
[41] Sinnig, Daniel; Gaffar, Ashraf; Seffah, Ahmed; Forbrig, Peter. Patterns, Tools and
Computing Series, 1994.
Models for Interaction Design. 2003.
[26] Graham, Ian. A Pattern Language for Web Usability.Addison-Wesley. 2003
[42] Thomas, John C. A Pattern Language. 2004.
[27] Junqueira, Alvaro R. B.; Costa, André Fernandes; Lira, Édson Carlos. Design http://www.truthtable.com/patterns.html
Patterns: Conceitos e Aplicações. Instituto de Matemática/Departamento de Ciência
[43] Tidwell, Jenifer. Interfaces – Patterns for Effective Interaction Design. 1. ed.
da Computação - Universidade Federal do Rio de Janeiro. 1998.
O’reilly, 2005.
http://www.dcc.ufrj.br/~schneide/PSI_981/gp_6/design_patterns.html
[44] Tidwell, Jenifer. Designing Interfaces – Patterns for Effective Interaction Design.
[28] Kruschitz, Christian; Hitz, Martin. Analyzing the HCI Design Pattern Variety.
2. ed. O’reilly, 2010.
AsianPLoP 2010: 1st Asian Conference on Pattern Languages of Programs. Mar. 2010,
Tokyo, Japan. [45] UI Patterns. UI Patterns – User Interface Design Patterns. 2010.
http://patterns-wg.fuka.info.waseda.ac.jp/asianplop/proceedings2010/7-kruschitz_ http://ui-patterns.com
asiaplop2010_analyzing_the_HCI_design_patterns_variety.pdf
[46] Valente, Eduardo César. Padrões de Interação e Usabilidade. Trabalho Final de
[29] Mahemoff, Michael. Ajax Design Patterns – Creating Web 2.0 Sites with Mestrado Profissional, Instituto de Computação, UNICAMP. 2004.
Programming and Usability Patterns. O’Reilly, 2006.
[47] Web Usability. Web Usability - WU website and virtual patterns workshop. 2010.
[30] Mahemoff, Michael J.; Johnston, Lorraine J. Pattern Languages for Usability: http://www.trireme.com/WU
An Investigation of Alternative Approaches. In: Computer Human Interaction, 1998.
[48] Welie, Martijn van. Patterns in Interaction Design. 2010.
Proceedings. 3rd Asia Pacific, p. 25-31.
http://www.welie.com
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.40.146
[49] Welie, Martijn van; Mullet, Kevin; Mcinerney, Paul. Patterns in Practice: A Workshop
[31] Mullet, Kevin. Structuringpattern languages to facilitate design. CHI2002 Patterns
for UI Designers. CHI 2002, ACM. Minneapolis, Minnesota, USA. 20-25 abr. 2002.
in Practice: A Workshop for UI Designers. 2002.
[50] Welie, Martijn van; Trætteberg, Hallvard. Interaction Patterns in User Interfaces.
[32] Norman, Donald A. The Psychology of Everyday Things. Basic Books, New
7th. Pattern Languages of Programs Conference. Allerton Park Monticello, Illinois,
York.1988.
USA. 13-16 ago. 2000.
[33] Pattern Language. 2009.
http://www.patternlanguage.com [51] Welie, Martijn van; Veer, Gerrit van der. Pattern Languages in Interaction
Design: Structure and Organization. Proceedings of Interact ‘03, Zürich, Switserland.
[34] Pauwels, Stefan; Hübscher, Christian. Interaction Design Patterns.Software
Set. 2003.
Ergonomics Event. Fev. 2009.
http://www.welie.com/papers/Welie-Interact2003.pdf
http://www.chuebscher.ch/papers/pdf/2009-02_SwissCHI-Theorie.pdf
[52] WU. WU Website.2010
[35] Perzel, Kimberly; Kane, David. Usability Patterns for Applications on the World
http://www.wupatterns.com
Wide Web. 1999.
http://hillside.net/plop/plop99/proceedings/Kane/perzel_kane.pdf [53] Yahoo!. Yahoo! Design Pattern Library. 2010
http://developer.yahoo.com/ypatterns

Edição 58 - Engenharia de Software Magazine 37

Você também pode gostar