Geração Automática e Assistida de Interface de Usuário em Tempo

Transcrição

Geração Automática e Assistida de Interface de Usuário em Tempo
Universidade Federal do Rio Grande do Sul – UFRGS
Programa de Pós-Graduação em Computação
Mestrado em Ciência da Computação
Geração Automática e Assistida de Interface de
Usuário em Tempo de Execução
Plano de Estudos e Pesquisa
Aluno: Marcelo Mrack <[email protected]>
Orientador: Álvaro F. Moreira <[email protected]>
Co-orientador: Marcelo Pimenta <[email protected]>
Porto Alegre, 16 de dezembro de 2005.
Resumo
Este trabalho apresenta uma proposta para geração de interfaces de usuário em
tempo de execução e sem código-fonte. Para isso são utilizados metadados
provenientes do próprio modelo de dados do sistema, heurísticas, conhecimento
empírico, inferência de informações e um mecanismo de retroalimentação, o qual
promove melhorias significativas na qualidade das interfaces geradas e a redução
dos custos de construção.
A idéia de utilizar metadados para geração da interface do usuário, mais
precisamente telas de cadastro, não é nova. Trabalhos como
[Gohil, 1999] e
[Shirota, 2005] indicam sucesso na geração do código-fonte para essas interfaces a
partir de informações extraídas da estrutura do modelo de dados do sistema.
Embora essa abordagem seja interessante, uma perspectiva diferente pode ser
dada ao assunto. Ao invés de gerar o código-fonte relativo às interfaces do usuário,
opta-se pela geração direta dessas interfaces durante a própria execução do
sistema.
Nesse paradigma, os metadados são traduzidos nos elementos da interface do
usuário durante a própria execução do sistema por um mecanismo interpretador.
Experiências anteriores [Moreira e Mrack, 2002] e implementações disponíveis na
Internet [Clifton, 2005] exploram essa alternativa.
Entretanto,
mesmo
nessa
abordagem
muitas
características
devem
ser
explicitamente definidas pelo desenvolvedor para que a interface torne-se um
componente funcional.
Com o intuito de reduzir esse esforço, esse trabalho acrescenta quatro outros
conceitos ao processo: o uso de heurísticas sobre o sistema, o conhecimento
empírico da equipe de desenvolviemento, um conjunto de regras de inferência e um
mecanismo de realimentação.
Dessa forma, espera-se obter um mecanismo de geração de alto nível, capaz de
reduzir significativamente o esforço dedicado à construção da interface do usuário.
Visão Geral
Um fator de suma importância para qualquer sistema é a interface do usuário.
De fato, como afirma [Ambler, 1998] “…a realidade fundamental para um desenvolvedor de
1
aplicações é que a interface do usuário é o sistema para o usuário” . Tal posicionamento evidencia
um ponto-chave para os desenvolvedores de sistemas: a construção da interface do
usuário.
Nos últimos anos o advento das interfaces gráficas de usuário modificaram
bastante a forma com que as interfaces de usuário são construídas.
Enquanto as antigas interfaces baseadas em caractere não possuem aparência e
comportamento definido, nem tão pouco um sistema de eventos, as interfaces GUI
apresentam semântica padronizada, elaborados mecanismos para tratamentos de
eventos e uma diversidade de elementos gráficos [Galitz, 2002].
Essas características associadas ao comportamento orientado a ações, o qual
permite ao usuário interagir com praticamente qualquer elemento da tela a
qualquer momento, eleva o nível de complexidade para construção das inferfaces
do usuário.
Com o intuito de reduzir essa complexidade, ou pelo menos, torná-la
gerenciável, existem no mercado as chamadas ferramentas RAD (Rapid Application
Development). Essas ferramentas propõem-se a realizar esse trabalho através do
uso de editores de interfaces gráficas, os quais trabalham com o conceito WYSIWYG
(What You See Is What You Get), ou seja o que você vê (ou o que você desenha no
editor) é o que você tem quando o sistema estiver em execução.
Devido sua relativa facilidade de uso, essas ferramentas tornaram-se bastante
populares e hoje são praticamente indispensáveis para construção de qualquer
sistema com interface gráfica.
No tocante as interfaces de usuário para sistemas de banco de dados, a
realidade não é diferente, ou seja, devido a complexidade inerente do modelo de
dados da aplicação, as interfaces do usuário acabam tornando-se complexas por
conseqüência.
Com
o
advento
da
modelagem
complexidade torna-se cada vez mais presente.
1
Tradução livre
orientada
a
objeto,
essa
Porém, como argumenta [Shirota, 2005], a existência de um modelo de dados
fortemente relacionado a interface do usuário pode traduzir-se em ganhos para sua
construção. Isso decorre do fato que muitas informações que devem estar
presentes na interface do usuário podem ser inferidas do próprio modelo de dados
facilitando o trabalho dos programadores. Trabalhos publicados por [Gohil, 1999],
[Clifton, 2005] e [Aloia et all, 2003] reforçam essa idéia.
Vislumbrando
essa
possibilidade,
disponibilizam assistentes
para
frequentemente
criação dessas
as
ferramentas
interfaces.
RAD
Esses assistentes
recolhem informações sobre o modelo de dados e produzem como saída o código
relativo à interface do usuário. Esse código, com os devidos ajustes, entra em
funcionamento em tempo reduzido.
Embora
essa
desenvolvimento,
abordagem
com
o
apresente
passar
do
ganhos
tempo,
nos
quando
primeiros
o
sistema
ciclos
cresce
de
e
complexidades adicionais devem ser implementadas nas interfaces produzidas, essa
facilidade inicial acaba acarretando problemas como a reformatação da interface
produzida, a adequação do código gerado aos padrões utilizados pela equipe de
desenvolvimento e outras características como estilo, aparência, usabilidade e
comportamento de uso [Moreira e Mrack, 2002].
Uma abordagem diferente, explorada por [Moreira e Mrack, 2002] e [Clifton,
2005] é utilizar o modelo de dados como fonte de informações para construção da
interface do usuário, com o diferencial que nenhum código-fonte é gerado no
processo: informações sobre metadados do modelo de dados são traduzidas em
tempo de execução por um módulo interpretador, de forma que a interface do
usuário seja produzida durante a própria execução do sistema.
As justificativas para essa abordagem incluem problemas relacionados aos
geradores de código, como aderência a padrões de desenvolvimento, dificuldade
para sincronia entre código gerado e código editado pelo programador, oneroso
processo de compilação, empacotamento e distribuição de novas versões e a
própria qualidade do código produzido.
No tocante às vantagens do processo sem código-fonte citam-se agilidade na
disponibilização de novas versões, exatidão do sistema produzido, prototipação
instantânea e padronização no processo [Moreira e Mrack, 2002].
Embora [Gohil, 1999] demonstre que interfaces funcionais possam ser obtidas
apenas com o uso de informações de metadados, a completude dessas somente é
alcançada
através
da
participação
de
um
programador,
o
qual
adiciona
funcionalidades específicas como a dependência de controles, ajustes na aparência
e a adição das regras de negócio, por exemplo.
Quando da publicação de [Moreira e Mrack, 2002], muitas expectativas foram
criadas em torno da abordagem de geração automática do sistema a partir dos
metadados do modelo.
Porém, quando mais estudos foram executados sobre o assunto, complexidades
adicionais mostraram-se presentes, levantando questões sobre como manter o
desacoplamento e a interação das interfaces geradas e as regras de negócio; como
permitir customizações na interface produzida e como interligar todas as partes do
sistema.
Mantendo a proposta original de [Moreira e Mrack, 2002] onde as interfaces do
usuário são geradas durante a execução do sistema e sem código-fonte, esse
trabalho possui um foco específico, onde somente as interfaces de usuário
destinadas à edição dos dados do sistema são geradas. São as chamadas telas de
cadastro.
Ao reduzir o escopo de atuação, muitas características ignoradas nos trabalhos
citados podem ser exploradas mais detalhadamente, tais como a organização dos
elementos na tela, adição de validadores de conteúdo, comportamento, aparência,
usabilidade e outros aspectos visuais, buscando a completude mencionada por
[Gohil, 1999].
Para realizar essa tarefa, é proposto o uso não de uma, mas sim de cinco fontes
de informação para o mecanismo gerador.
A primeira é o uso dos metadados, tal como propõem [Gohil, 1999], [Shirota,
2005], [Moreira e Mrack, 2002] e [Clifton, 2005]. Esses são traduzidoss durante a
execução do sistema e originam as características principais, consideradas básicas
para os elementos da interface gerada, como tipos dos controles na tela, domínios
de valores e estruturas essenciais de ligação entre os elementos produzidos.
A segunda é o uso de heurísticas, que permite a descoberta de propriedades e
comportamentos com base em conceitos simples, porém nem sempre utilizados.
Como exemplo simplista cita-se a escolha da ordem de apresentação dos campos
na interface, o que pode ser feito seguindo a ordem de declaração dos atributos no
objeto de negócio, sua obrigatoriedade ou nível de complexidade.
A terceira é o conhecimento empírico, que permite a reutilização de soluções de
sucesso, obtidas através de experiências anteriores. Esse tipo de informação é
válido, principalmente no tocante à otimização das interfaces. A escolha do
momento em que validadores de conteúdo devem ser aplicados, adição de suporte
a operações de arrastar e soltar e a correta relação entre o tipo de dado e o
controle de tela que o representa são apenas alguns exemplos.
O quarto é o uso da inferência, a qual permite obter novas informações a partir
de um conjunto inicial de valores. Nesse contexto enquadram-se a construção de
mensagens de auxílio para o usuário, nomes para controles de tela e o
preenchimento de valores default.
Finalmente, como artifício para melhoria contínua das interfaces geradas, este
trabalho sugere o uso de retroalimentação. Em outras palavras, um histórico de uso
e configuração é continuamente armazenado. Assim, ao gerar as interfaces do
usuário, o mecanismo interpretador soma às informações disponíveis no momento
os resultados armazenados no histórico, utilizando para isso uma política de pesos
e medidas. Dessa forma argumenta-se a possibilidade de obtenção de resultados
cada vez melhores ao longo do uso.
A motivação
A
experiência
profissional
como
desenvolvedor
de
software
para
área
administrativa e acadêmica na Universidade de Santa Cruz do Sul – UNISC
evidenciou um problema comum a todos os tipos de sistemas produzidos: a demora
na construção na interface do usuário.
Nesse sentido, estudos foram realizados com o objetivo de reduzir o esfoço
empregado na realização dessas tarefas. Como resultado surgiu o chamado projeto
Metagen, um software destinado a geração das interfaces do usuário em tempo de
execução tendo como base os metadados da própria aplicação.
Este software permitiu a escrita do artigo Sistemas Dinâmicos Baseados em
Metamodelos [Moreira e Mrack, 2002] e a disponibilização de um produto funcional.
Como característica principal desse software estava a geração completa de
interfaces de usuário para edição de dados e a não existência de código-fonte para
esses elementos.
Desde então inúmeros protótipos, estudos e implementações foram sendo
desenvolvidos, permitindo avanços nos conhecimentos relacionados.
A fim de continuar nessa área, um grupo de estudos foi reunido entre os colegas
de trabalho com o objetivo de explorar essa idéia, criando uma empresa e tornando
esse software um produto completo.
Trabalhar esses conceitos na área acadêmica mostra-se como uma oportunidade
única de aprofundamento nos aspectos teóricos do assunto, formando a base para
uma implementação de porte comercial.
Objetivos
Este trabalho propõe uma extensão a mecanismos existentes para geração da
interface do usuário, porém sob uma perspectiva diferenciada, onde além da não
existência de código-fonte, informações subjetivas e históricas são utilizadas.
Como objetivos desse trabalho espera-se:
•
Estudar os mecanismos existentes que utilizam metadados para geração
de interfaces de usuário;
•
Estudar conceitos de IHC, como usabilidade, aparência e comportamento
de forma que possam ser corretamente aplicados;
•
Estudar alternativas para o armazenamento e a consulta de informações
históricas;
•
Definir um conjunto de regras heurísticas e de inferência, de forma que
possam ser utilizadas em favor da geração da interface do usuário;
•
Definir mecanismos que permitam à interface gerada ser estendida ou
modificada pelas vias normais de desenvolvimento (codificação) com a
mínima dependência;
•
Definir um conjunto de metadados que possam ser incorporados aos
dados da aplicação, facilitando o trabalho do programador;
•
Criar um protótipo funcional que utilize esses conceitos para gerar as
interfaces de usuário;
De forma geral, o objetivo desse trabalho é produzir interfaces de usuário
funcionais em tempo de execução sem a geração de código-fonte, utilizando para
isso (i) metadados extraídos do próprio modelo de dados do sistema, (ii) regras
heurísticas e empíricas, (iii) inferência de informações e (iv) um mecanismo de
retroalimentação.
Em relação aos estudos anteriores realizados durante o projeto Metagen
[Moreira e Mrack, 2002], esse trabalho acrescenta características importantes, com
evidência para o uso de informações históricas, recurso que deve tornar o sistema
pró-ativo nas mais variadas situações.
Metodologia
Para realização desse trabalho, a seguinte linha de pesquisa deve ser
utilizada:
1. Coleta de materiais relacionados ao assunto: Obtenção da
literatura relacionada, como livros, artigos técnicos e acadêmicos,
congressos, grupos de discussão, contato com autores e
desenvolvedores, produtos, implementações de referência, pesquisas e
periódicos.
2. Revisão e documentação dos tópicos relevantes, no tocante a
exploração e uso de metadados, regras de usabilidade e diversos
conceitos sobre IHC.
3. Implementação contínua de protótipos a fim de validar os
conceitos estudados. Esses devem ficar disponíveis no site
http://merlin.dev.java.net e constituem-se, entre outros, de diagramas
de caso de uso, seqüência, colaboração, pacotes de teste,
documentação de projeto e relatórios.
4. Escrita de dois artigos sobre o tema com a finalidade de obter a
qualificação necessária para aprovação no curso. O primeiro de ser
enviado para o VII Simpósio Brasileiro de Fatores Humanos em
Sistema Computacionais – IHC2006. O outro deve ser enviado para o
Seminário Integrado de Software e Hardware – SEMISH2006.
5. Estudo dos recursos oferecidos pela linguagem de programação
Java2 no que concernem ao assunto; salientando-se o uso de reflexão
(essencial para trabalho com elementos gerados em tempo de
execução),
anotações
(JSR
175
http://www.jcp.org/en/jsr/detail?id=175) e o pacote gráfico Swing, o
qual deve ser utilizado no trabalho.
6. Estudo do framework de mapeamento objeto-relacional EJB3
(JSR220 - http://www.jcp.org/en/jsr/detail?id=220), o qual possui
inúmeros recursos de metadados que podem ser utilizados no
trabalho.
7. Estudo do framework Hibernate Annotations, outro framework de
mapeamento objeto-relacional padrão de mercado que possui recursos
de metadados para definição de validadores de conteúdo para os
dados do modelo.
2
Java é escolhida como linguagem de implementação por sua característica
de multiplataforma, aderência a diversos ambientes (cliente-servidor, web e ncamadas, etc.) e pela familiaridade com a linguagem.
8. Estudo de frameworks de validação de conteúdo para IHC. Esses
validadores visam manter a integridade dos dados editados na
interface do usuário e estendem os recursos contidos no item 7.
9. Estudo de patterns e técnicas que permitam criar um baixo
acoplamento entre os elementos de interface gerados, bem como
agregar recursos como flexibilidade, escalabilidade e manutenabilidade
aos sistemas gerados.
10. Realização de relatórios periódicos sobre o andamento do
trabalho, funcionando como marcos de checagem de progresso e/ou
possível redirecionamento dos estudos. O conteúdo desses relatórios
deve ser definido em conjunto com o professor orientador.
11. Seminário de Andamento, a ser realizado entre 15/05/2006 a
18/05/2006. Nele devem ser exibidos o escopo do trabalho, os
objetivos, estudos realizados, exibição dos resultados alcançados até a
data e prognósticos.
12. Estudo de mecanismos que permitam o armazenamento e a
consulta de informações históricas, de forma que o recurso de
retroalimentação seja viável.
13. Finalização e revisão do trabalho até 20/11/2006.
14. Envio do trabalho à banca examinadora até 30/11/2006.
15. Defesa da dissertação, até 30 dias após o envio para banca
examinadora (conforme resolução para bolsistas).
Cronograma
Para implementação desses itens, o seguinte cronograma é previsto para o ano
de 2006, bem como o já realizado durante 2005:
Item
2006
2005
1
2
3
4
5
6
x
x
x
x
7
8
9
10
11
12
x
x
x
x
x
x
x
13
Ago
x
Set
x
x
Out
x
x
x
x
Nov
x
x
x
x
Dez
x
x
x
x
x
Jan
x
x
x
x
x
Fev
x
x
x
x
x
x
Mar
x
x
x
x
x
x
Abr
x
x
x
x
x
x
Maio
x
x
x
x
x
x
Jun
x
x
x
x
x
Jul
x
x
x
x
x
Ago
x
x
x
x
x
x
x
x
x
x
x
x
x
Set
Out
Nov
Dez
14
x
x
x
x
x
x
Salienta-se que esse cronograma é uma previsão e, portanto, pode ser alterado
devido necessidades ou conforme orientação dos orientadores bem como ajustes de
percurso devido conclusões obtidas durante o seu desenvolvimento.
Referências bibliográficas
[Ambler, 1998] User Interface Design: Tips and Techniques. Ambler, Scott
W..
[white
paper].
1998.
Disponível
em
http://www.ambysoft.com/userInterfaceDesign.pdf no dia [25/08/2005]
[Galitz, 2002] The Essential Guide to User Interface Design - An Introduction
to GUI Design Principles and Techniques, Second Edition. Galitz, Wilbert O..
2002. John Wiley & Sons, Inc.
[Shirota, 2005] Automatic GUI generation from database schema information.
Shirota
,
Yukari;Iizawa,
Atsushi.
Disponível
em
http://www3.interscience.wiley.com/search/allsearch?mode=viewselected&pr
oduct=journal&ID=52072&view_selected.x=47&view_selected.y=2&view_sele
cted=view_selected no dia [31/08/2005].
[Clifton, 2005] A Dynamically Generated XML Data Editor. Clifton, Marc.
Disponível em
http://www.codeproject.com/dotnet/xmldataeditor.asp no dia [30/08/2005].
[Aloia et all, 2003] Automatic GUI Generation for Web Based Information
Systems. Aloia, Nicola; Concordia, Cesare; Paratore, Maria Teresa. 2003.
Disponível em http://bibserv.isti.cnr.it/Dienst/UI/2.0/Describe/cnr.isti/2003A2-105?tiposearch=ercim&langver= no dia [30/08/2005].
[Moreira e Mrack, 2002] Sistemas Dinâmicos Baseados em Metamodelos.
Moreira, Diego; Mrack, Marcelo. II Workshop de Computação e Gestão da
Informação – Univates (artigo). 2003.
[Gohil, 1999] Automatic GUI Generation. Gohil, Bharat. 1999. Dissertação.
Bournemouth
University,
Reino
Unido.
Disponível
em
http://www.geocities.com/aliadams/AutoGUI.htm no dia [30/08/2005].

Documentos relacionados