Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE ESTADUAL DO CEARÁ
DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
CURSO DE MESTRADO ACADÊMICO EM CIÊNCIA DA COMPUTAÇÃO
RENATO LENZ COSTA LIMA
UM AMBIENTE INTELIGENTE PARA DESENVOLVIMENTO HIPERMÍDIA/WEB
INTERATIVO NAS NUVENS
FORTALEZA
2009
RENATO LENZ COSTA LIMA
Um ambiente inteligente para desenvolvimento hipermídia/web interativo nas nuvens
Dissertação de mestrado submetida à Coor-
denação do Curso de Mestrado Acadêmico
em Ciência da Computação, da Universidade
Estadual do Ceará, como parte dos requisitos
exigidos para obtenção do grau de Mestre em
Ciência da Computação.
Orientador: Prof. Dr. Gustavo Augusto Lima de
Campos
Co-Orientador: Prof. Dr. Cidcley Teixeira de
Souza
FORTALEZA
2009
Aos meus pais,
Rubens e Paula,
porque me fizeram o que sou.
i
ii
Agradecimentos
Primeiramente, Àquele que lutou todas as nossas guerras e possibilitou este trabalho: Deus.
Aos meus orientadores, os professores doutores Cidcley e Gustavo, que me guiaram e
apoiaram durante o desenvolvimento do trabalho. Agradeço principalmente pela confiança e
liberdade que me deram para criar novas idéias e depois pela paciência e ajuda para que en-
tendêssemos, eu e eles, essas idéias inicialmente tão “nebulosas”. Aos membros da banca - os
professores doutores Jerffeson, com quem aprendi a ouvir críticas, e Milton - cujas sugestões
contribuíram para a melhoria deste trabalho.
Ao Emmanuel por participar da idealização do ambiente DIS após um encontro casual no
Dragão do Mar. Aos amigos Amauri e Robson que estavam sempre presentes para ajudar, em-
prestar o computador, discutir idéias e lembrar deadlines. Ao meu primo Ricardo por, além
de diversas sugestões, cunhar a frase que se torna lema de nossa aplicação web para difusão
de conhecimento, o site “Encontro de estudantes”, e ao Breno por colaborar em seu desen-
volvimento. Aos amigos conquistados na PC4 (Adriano, Camila, Cauê, Erika, Felipe, João,
Maurício, Renata e Yuri) que tiveram a paciência e o interesse de discutir algumas das idéias
que deram origem a este trabalho em pleno churrasco. Aos amigos conquistados durante o curso
de mestrado: Alex, Carlos Cidade, Daladier, Fabiano, Gilzamir, Marcelo, Márcia, Mário, Tar-
ciane, Vigno, Viviane e Wallison, sempre dispostos a ajudar em qualquer problema, começando
pelo café. “Queres um cafezinho, Renato?”, “Hoje não. Obrigado, Fabiano!”.
À Karla por seu enorme companheirismo e incentivo, sem a qual eu não seria capaz de
terminar este trabalho. A todos os amigos que não se interessam pelo conteúdo deste trabalho,
mas foram importantes nos momentos de lazer, essenciais para tornar as horas de trabalho mais
produtivas. Para citar alguns: Bárbara, Bruno, Eduardo, Lemi, Levi, Júlio, Ian, Maira, Maryllin,
Melânia, Natália e Virgínia. Aos meus pai, Rubens e Paula, por suas valiosas revisões, pela
atenção, por todo o suporte fisíco e emocional e por tudo que sempre me ensinaram, de raiz
quadrada a diferentes formas de ver o mundo. Enfim, por a vida ser boa.
Finalmente, à FUNCAP (Fundação Cearense de Apoio ao Desenvolvimento Científico e
Tecnológico) pelo suporte financeiro e à UECE (Universidade Estadual do Ceará) por disponi-
bilizar e me acolher neste curso de mestrado.
iii
Resumo
O desenvolvimento hipermídia/web apresenta diversas dificuldades. Ao longo dos anos,
surgiram várias funcionalidades para auxiliar o processo de desenvolvimento, que, de uma
forma ou de outra, são tentantivas de diminuir a distância entre a edição da aplicação e a vi-
sualização de seu resultado, seja através de uma pré-visualização, seja através da automação e
agilização de etapas. Entretanto, nos ambientes disponíveis, a visualização do resultado ainda
requer um número insatisfatório de etapas.
Com o desafio de encontrar novas funcionalidades para diminuir ainda mais a distância en-
tre a edição de documentos hipermídia/web e a visualização do resultado, este trabalho propõe
a abordagem de desenvolvimento interativo DIA, que, assim como a Web 2.0, ao invés de
uma tecnologia nova, é uma nova forma de usar as tecnologias antigas. Procurando por um
modelo de representação de documentos hipermídia de forma distribuída, o modelo Nós foi
idealizado, sugerindo o armazenamento de informações em um cérebro baseado em símbolos
e nós. Obtido sucesso na descrição de documentos de texto e informações genéricas, propôs-
se o modelo cognitivo MAU, baseado no modelo Nós, para escolha de ações de um agente
reativo com aprendizado, denominado AgenteNós. Sua implementação JavaScript, chamada
de agente virtual, na prática, é um objeto JavaScript extensível, instanciado em uma página
web por um browser, que vence as limitações de acesso a memórias persistentes do JavaScript
através de requisições HTTP assíncronas para o webservice Lumen, uma solução nas nuvens
para armazenamento de informações genéricas. A uma instância de agente virtual, batizada de
ce, foram ensinadas funcionalidades para criar uma interface gráfica para usuário dinâmica que,
apoiada pelo webservice Lumen, compõe DIS, um ambiente inteligente para desenvolvimento
hipermídia/web interativo nas nuvens.
Palavras-chave: Desenvolvimento hipermídia/web, Computação nas nuvens, Inteligência
artificial, Representação do conhecimento.
iv
Abstract
The hypermedia/web development has several difficulties. Over the years, several function-
alities emerged to support the development process, that, in one way or another, are attempts to
decrease the distance between the edition of the application and the visualization of its result, by
offering a preview or through automatization of steps. However, in the available environments,
the visualization of results demands an insatisfatory number of steps.
With the challenge of finding new functionalities to decrease even further the distance be-
tween the edition of hypermedia/web documents and the visualization of its result, this thesis
introduces DIA, a script-based interactive approach to hypermedia/web development, which,
like Web 2.0, rather than a new technology, is a new way of using the same old technologies.
Looking for a model to represent hypermedia documents in a distributed way, the Nós model
was idealized, suggesting the storage of information in a brain based on symbols and ties,
which represent any type of association between symbols. Succeeding in the description of text
documents and generic-information storage, this thesis proposes the cognitive model MAU,
based on the Nós model, to choose the actions of a learning reactive agent, called AgenteNós.
Their JavaScript implementations, called virtual agents, are, in practice, JavaScript extensible
objects, created inside a web page by a browser, that overcome JavaScript limitations of persis-
tent memory access through asynchronous HTTP requests to the webservice Lumen, a solution
for generic-information storage in the clouds. Basic functionalities were taught to an instance
of the virtual agent class, called ce, in order to create a dynamic graphical user interface that,
supported by the webservice Lumen, composes DIS, an inteligent environment for interactive
hypermedia/web development in the clouds.
Keywords: Hypermedia/Web development, Cloud computing, Artificial inteligence, Knowl-
edge representation.
v
Lista de Figuras
2.1 Arquitetura de um agente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Arquitetura de um agente reativo simples. . . . . . . . . . . . . . . . . . . . . 18
2.3 Arquitetura de um agente reativo simples com aprendizado. . . . . . . . . . . . 18
3.1 Assistente de criação do Caspio Bridge. . . . . . . . . . . . . . . . . . . . . . 21
3.2 Formulário construído pelo assistente de criação do Caspio Bridge. . . . . . . . 22
3.3 Tela de edição do Google Sites. . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4 Tela de visualização do Google Sites, após persistência. . . . . . . . . . . . . . 23
3.5 Visualização do código e WYSIWYG no Adobe Dreamweaver. . . . . . . . . . 24
3.6 Página inicial do Aptana Studio. . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7 Edição no Aptana Studio feita a partir do código com complementação e destaque
de código. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1 Visualização rápida do resultado com a abordagem DIA. . . . . . . . . . . . . 32
4.2 Teste do componente através da interface gráfica com a abordagem DIA. . . . . 33
4.3 Novo teste da aplicação com a abordagem DIA: apenas um segundo clique. . . 33
5.1 Diagrama de classes do modelo Nós. . . . . . . . . . . . . . . . . . . . . . . . 38
5.2 Diagrama de estados de um AgenteNós. . . . . . . . . . . . . . . . . . . . . . 44
6.1 DIS - Desenvolvimento Inteligente de Sistemas. . . . . . . . . . . . . . . . . . 51
6.2 Diagrama de classes do ambiente DIS. . . . . . . . . . . . . . . . . . . . . . . 52
6.3 Diagrama de estados de um agente virtual. . . . . . . . . . . . . . . . . . . . . 54
7.1 Mostrando o primeiro símbolo ao agente virtual ce. . . . . . . . . . . . . . . . 59
7.2 Ensinando uma regra ao agente virtual ce. . . . . . . . . . . . . . . . . . . . . 60
7.3 Novos símbolos, novas regras. . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Lista de Figuras vi
7.4 Interface inicial do ambiente DIS. . . . . . . . . . . . . . . . . . . . . . . . . 61
7.5 Título do site “Encontro de estudantes” visível após a execução do comando de
sua criação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.6 Protótipo funcionando com componentes de teste. . . . . . . . . . . . . . . . . 63
7.7 Agentes virtuais podem aprender novas funcionalidades a qualquer momento. . 64
7.8 Teste dos componentes através do protótipo da interface gráfica. . . . . . . . . 65
7.9 Refinando o leiuate através de documentos CSS. . . . . . . . . . . . . . . . . . 65
7.10 Primeira versão do site “Encontro de estudantes”. . . . . . . . . . . . . . . . . 66
vii
Lista de Tabelas
1.1 Dificuldades do desenvolvimento hipermídia . . . . . . . . . . . . . . . . . . . 3
1.2 Dificuldades específicas do desenvolvimento web . . . . . . . . . . . . . . . . 4
2.1 Definições de inteligência artificial . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1 Requisitos de HADMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.1 Comparação entre as etapas da abordagem “Editar-salvar-atualizar” e DIA . . . 28
4.2 Comparação entre as etapas da abordagem script e DIA . . . . . . . . . . . . . 29
viii
Lista de Siglas
AHM Amsterdam hypermedia model
AJAX Asynchronous Javascript and XML
API Application programming interface
ASDF AJAX sem dor, fácil!
ASP Active server pages
CORBA Common object request broker architecture
CSS Cascading style sheets
DIA Desenvolvimento interativo de aplicações
DIS Desenvolvimento inteligente de sistemas
DOM Document object model
FTP File transfer protocol
HADMS Hypermedia application development and management system
HTML Hypertext markup language
HTTP Hypertext transfer protocol
IA Inteligência artificial
IDE Integrated development environment
JSP Java server pages
MAU Modelo automático de utilização de um cérebro
MVC Model-view-controller
NCL Nested context language
NCM Nested context model
OOHDM Object-oriented hypermedia design model
PHP PHP hypertext preprocessor
SBTVD Sistema brasileiro de TV digital
SMIL Synchronized multimedia integration language
TAD Tipo abstrato de dados
W3C World wide web consortium
WYSIWYG What you see is what you get
XML Extensible markup language
ix
Sumário
Resumo iii
Abstract iv
Lista de Figuras vi
Lista de Tabelas vii
Lista de Siglas viii
1 Introdução 1
1.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Objetivos específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Estrutura da dissertação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Referencial teórico 7
2.1 Evolução do conteúdo da Internet . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Desenvolvimento Hipermídia . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Desenvolvimento Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Desenvolvimento baseado em script . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 Inteligência Artificial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5.1 Agindo como humano: a abordagem do teste de Turing . . . . . . . . . 14
2.5.2 Pensando como humano: a abordagem de modelo cognitivo . . . . . . 15
Sumário x
2.5.3 Pensando racionalmente: a abordagem das “leis do pensamento” . . . . 16
2.5.4 Agindo racionalmente: a abordagem do agente racional . . . . . . . . . 17
2.6 Resumo do capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3 Trabalhos relacionados 20
3.1 Caspio Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 Google Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Adobe Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4 Aptana Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.5 Resumo do capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4 DIA - Desenvolvimento Interativo de Aplicações 27
4.1 Passos da abordagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Descrição de aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3 Utilização da abordagem DIA . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4 Resumo do capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5 Modelo de representação de conhecimento: Nós 35
5.1 Conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1.1 Símbolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.1.2 Nó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.1.3 Cérebro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.1.4 Interpretador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.2 Utilização do modelo Nós . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2.1 Descrição de TADs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2.2 Descrição de documentos e mídias . . . . . . . . . . . . . . . . . . . . 41
5.3 MAU e AgenteNós . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.4 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Sumário xi
5.4.1 Sobre o modelo Nós . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4.2 Sobre racionalidade e aprendizado . . . . . . . . . . . . . . . . . . . . 46
6 DIS - Desenvolvimento Inteligente de Sistemas 47
6.1 Requisitos obrigatórios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.1.1 Suporte à abordagem DIA . . . . . . . . . . . . . . . . . . . . . . . . 47
6.1.2 Manutenabilidade e extensibilidade dinâmicas . . . . . . . . . . . . . 48
6.1.3 Aplicação como serviço . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.2 Requisitos Desejáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.2.1 Suporte ao desenvolvimento de componentes . . . . . . . . . . . . . . 48
6.2.2 Complementação e destaque de código . . . . . . . . . . . . . . . . . 48
6.2.3 Visualização WYSIWYG . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2.4 Desenvolvimento colaborativo com controle de versões . . . . . . . . . 49
6.2.5 Gerenciamento do espaço nas nuvens . . . . . . . . . . . . . . . . . . 49
6.2.6 Suporte a sincronismo temporal de mídias . . . . . . . . . . . . . . . . 49
6.2.7 Suporte a etapas de conceitualização e modelagem . . . . . . . . . . . 49
6.3 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.4 Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.4.1 Lumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.4.2 Asdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.4.3 Agentes virtuais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.5 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7 Estudo de caso - Encontro de estudantes 56
7.1 Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.1.1 Requisitos obrigatórios . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.1.2 Requisitos desejáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Sumário xii
7.2 Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.2.1 Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.2.2 Visualização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.2.3 Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.3 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.3.1 Instanciando ce pela primeira vez . . . . . . . . . . . . . . . . . . . . 58
7.3.2 Construindo protótipo da interface . . . . . . . . . . . . . . . . . . . . 61
7.3.3 Implementando componentes . . . . . . . . . . . . . . . . . . . . . . 64
7.3.4 Refinando o leiaute . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
7.3.5 Persistindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.4 Resumo do capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8 Conclusões e trabalhos futuros 68
Referências Bibliográficas 71
Apêndice A -- Pensamentos 76
A.1 Nós (20/02/2006) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
A.2 Dar nome aos bois (09/11/2005) . . . . . . . . . . . . . . . . . . . . . . . . . 79
Apêndice B -- Implementação de TADs utilizando Cérebro 81
B.1 Fila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
B.2 Lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
1
1 Introdução
Mídias são ferramentas que nos permitem expressar idéias em forma de textos, imagens,
vídeos, áudios, apresentações, softwares, entre outras. Cada uma delas envolve um tipo dife-
rente de dificuldade em seu desenvolvimento. Enquanto editores de texto precisam, de alguma
forma, capturar as palavras que se quer, editores de vídeos precisam capturar imagens ao longo
do tempo. Dessa forma, diversas ferramentas têm sido desenvolvidas para auxiliar a construção
de cada mídia específica. Por exemplo, existem editores de texto que lêem símbolos emitidos
pelo teclado e outros que utilizam microfone e reconhecedor de voz para capturar o texto.
Cada mídia por si só é capaz de expressar idéias, porém, percebeu-se a oportunidade de
combinar a capacidade de expressão dos diversos tipos de mídia para a construção de uma mí-
dia composta, chamada multimídia (STEWART; KOWALTZKE, 1997). Nesse caso, além das
dificuldades envolvidas para a construção de cada mídia individualmente, também aparecem
novas dificuldades específicas para conseguir unir os diferentes tipos de mídias em um único
documento. Um dos grandes problemas é estabelecer como as mídias compartilham o espaço
e o tempo da apresentação. Duas funcionalidades são de grande ajuda para resolver esse pro-
blema de sincronismo espacial e temporal: a pré-visualização WYSIWYG (“What You See Is
What You Get”1), onde é possível posicionar os elementos no espaço através de uma interface
gráfica com recursos do tipo “arrastar e soltar”; e o timeline, onde os elementos são descritos
como blocos de tamanho proporcional ao espaço que a mídia ocupa na dimensão do tempo,
sendo possível posicioná-los ao longo de uma linha do tempo que indica o tempo da apresen-
tação. Uma terceira funcionalidade, apresentada, por exemplo, no editor multimídia Windows
MovieMaker (MICROSOFT, 2009b), pode ainda contribuir bastante para o sincronismo tem-
poral: a execução de mídias em tempo de edição. No caso do sincronismo de um vídeo com
uma legenda, o timeline permite ver a legenda posicionada como um bloco de 5 segundos a
partir do segundo 10 da apresentação, por exemplo. Contudo, faz-se necessário poder executar
o vídeo no próprio editor. Caso contrário, não será possível identificar qual cena acontece entre
os segundos 10 e 15 e se a legenda está sincronizada no tempo correto.
1Em português, o que se vê é o que se tem.
1 Introdução 2
O surgimento da multimídia trouxe uma revolução na área, mas o mercado ainda reservava
outra surpresa. Observando a crescente popularização da Internet, percebeu-se a oportunidade
de combinar as diferentes mídias não mais em uma sequência única de apresentação, mas de
acordo com o paradigma de hipertexto, onde “hipersaltos” permitem aos usuários escolherem
suas próprias sequências de apresentação. Enquanto as mídias são relacionadas apenas nas
dimensões de espaço e tempo na multimídia, na hipermídia, as mídias podem estar relacionadas
de inúmeras outras formas, em uma dimensão da lógica, muito mais complexa e dinâmica,
que permite não só os “hipersaltos” do hipertexto, mas uma nova árvore de possibilidades que
inclui desde a definição de diferentes níveis de acesso à informação até a geração de conteúdo
por parte dos usuários. Naturalmente que, junto com novas possibilidades, aparecem novas
dificuldades. Nesse caso, a principal dificuldade é como gerenciar esse sincronismo lógico, ou
seja, como descrever todas as novas formas de interações entre as mídias.
Existem diversos modelos, ferramentas e metodologias para tentar expressar os novos con-
ceitos da hipermídia. De acordo com Christodoulou et al. (1998), os modelos devem não só
conseguir expressar os atuais conceitos, como estar preparados para o surgimento de novos con-
ceitos ainda não imaginados. Assim, esses modelos devem tentar abstrair a comunicação entre
as mídias, permitindo que haja comunicação, mesmo com tipos ainda desconhecidos. Não é
possível, portanto, definir um limite para a hipermídia, o que gera dificuldade para entender as
possibilidades, até mesmo para a equipe de desenvolvimento. Como, então, fazer um cliente
entender, por exemplo, o significado de “links ativos animados que estão disponíveis por um
determinado período na apresentação e que trazem resultados baseados em buscas semânticas”
e que esta é apenas uma das inúmeras possibilidades?
Dentre os sistemas hipermídia, os mais populares são a TV Digital e a Internet. Cada
um apresenta suas particuliaridades e dificuldades. A Internet, com a Web 2.0, possibilitou a
geração de conteúdo por parte dos usuários, formando sistemas hipermídia distribuídos com in-
teratividade semelhante a de sistemas desktop, porém acessível através de qualquer browser de
um dispositivo em qualquer lugar do mundo conectado à Internet. Contudo, uma vez encerrada
a conexão com a Internet, perde-se também o acesso aos dados. A revolução se desenvolve com
o paradigma da computação nas nuvens (WEISS, 2007), no qual se pretende oferecer softwares
como serviços apoiados em uma plataforma na Internet com distribuição de armazenamento e
carga de processamento, e culmina no paradigma Dev 2.0 (SHROFF, 2008), onde as próprias
ferramentas de desenvolvimento de aplicações nas nuvens são também aplicações nas nuvens.
Entre as novas dificuldades de desenvolvimento, está a necessidade de envio dos arquivos em
um servidor para então acessá-los através de um web browser. Isso gera um ciclo de desen-
volvimento conhecido como “editar-salvar-atualizar”, ou seja, editar o documento utilizando
1 Introdução 3
um editor qualquer, salvar o arquivo em um servidor e recarregar a visualização no browser.
A computação nas nuvens e Dev 2.0 também têm suas próprias dificuldades, tais como
questões de armazenamento de informações de forma distribuída e distribuição de carga de pro-
cessamento. Surgem, então, funcionalidades para tentar minimizar essas dificuldades, como
integração do ambiente de desenvolvimento com softwares de envio FTP e web browsers e a vi-
sualização dinâmica, como encontrada no Adobe Dreamweaver (ADOBE, 2009a), que permite
rodar scripts de cliente e servidor, após a configuração de um servidor local. Há também frame-
works para lidar com questões de distribuição de carga de processamento e armazenamento,
como o Google App Engine, e inúmeras outras APIs para diversas etapas do desenvolvimento
web, como Prototype (STEPHENSON, 2005), ExtJS (EXT, 2009), Rico (SCOTT et al., 2009)
e as APIs desenvolvidas pelo Google (GOOGLE, 2009a).
A TV Digital, por sua vez, propõe aumentar a interatividade dos programas de televisão,
apresentando dificuldades como edição de programas ao vivo, isto é, documentos que já começaram
a ser executados e precisam ser modificados dinamicamente, além de questões de transmissão,
como a dificuldade de enviar conteúdo privado e personalizado através de uma transmissão
por broadcast, e canal de retorno, que permita que usuários enviem informações de volta para
a emissora de conteúdo. Neste trabalho, foca-se no desenvolvimento web. Contudo, os con-
ceitos, modelos e ferramentas desenvolvidos foram idealizados para abranger sistemas hiper-
mídia genéricos e podem e devem ser estendidos para atender às necessidades específicas do
desenvolvimento de aplicações hipermídia genéricas e para TV Digital.
A Tabela 1.1 resume as principais dificuldades e respectivas funcionalidades de apoio en-
contradas no desenvolvimento hipermídia.
Tabela 1.1: Dificuldades do desenvolvimento hipermídiaDificuldades Funcionalidades de apoio
Específica de mídia
Sincronismo espacial WYSIWYG
Sincronismo temporal Timeline, execução de mídias em tempo de edição
Descrição hipermídia e Modelos, metodologias e ferramentas, como
necessidade de suportar NCM (CASANOVA et al., 1991),
funcionalidades futuras AHM (HARDMAN et al., 1994),
OOHDM (SCHWABE; ROSSI, 1995) e a
estrutura xanalógica (NELSON, 1999b)
Entendimento das possibilidades
1.1 Objetivo 4
Além de todas as características e dificuldades da hipermídia, o desenvolvimento web apre-
senta dificuldades e respectivas funcionalidades de apoio próprias, resumidas na Tabela 1.2.
Tabela 1.2: Dificuldades específicas do desenvolvimento webDificuldades Funcionalidades de apoio
Distância entre edição e visualização da WYSIWYG, suporte a FTP,
abordagem “Editar - Salvar - Atualizar” integração com servidor local,
integração com browsers e
visualização dinâmica
Distribuição de processamento e armazenamento APIs e frameworks de desenvolvimento
1.1 Objetivo
As ferramentas de desenvolvimento hipermídia/web começaram como simples editores de
texto, uma vez que, independente das funcionalidades oferecidas pela ferramenta, o resultado
final é um documento de texto escrito nas mais variadas linguagens. Ao longo dos anos, foram
incorporadas funcionalidades para facilitar a escrita do código, tais como as citadas anterior-
mente, ou seja, complementação e destaque do código, interfaces WYSIWYG, que permitem
que o autor pré-visualize o resultado dentro do ambiente de edição, a execução de mídias em
tempo de edição, a visualização dinâmica e a integração com softwares FTP e browsers, como
tentativa de agilizar o processo de publicação e visualização do resultado final que o usuário
receberá.
Todas essas funcionalidades são uma tentantiva de diminuir a distância entre a edição e
a visualização do resultado, seja através de uma pré-visualização, seja através da automação
e agilização de etapas. Entretanto, a visualização do resultado ainda requer um número in-
satisfatório de etapas. Assim, o desafio deste trabalho é encontrar novas funcionalidades para
diminuir ainda mais a distância entre a edição de documentos hipermídia/web e a visualização
do resultado.
1.1.1 Objetivos específicos
Este trabalho procura funcionalidades para diminuir a distância entre a edição e a visuali-
zação de documentos hipermídia/web buscando principalmente:
• Aumentar o entendimento do processo de desenvolvimento hipermídia/web através da
1.2 Metodologia 5
aproximação entre a codificação e a interação com o resultado.
• Permitir a execução de mídias em tempo de edição a fim de facilitar o sincronismo demídias.
• Desenvolver um software capaz de evoluir para suportar funcionalidades futuras do de-senvolvimento hipermídia.
1.2 Metodologia
Em trabalho de introspecção - que considera 5 anos de experiência no desenvolvimento de
aplicações web; 2 anos de estudo no projeto do SBTVD (Sistema Brasileiro de TV Digital),
focados principalmente no modelo NCM (Nested Context Model)(CASANOVA et al., 1991) e
na linguagem NCL (Nested Context Language)(SOARES; RODRIGUES, 2005); bem como o
período de curso das disciplinas do Mestrado Acadêmico de Ciência da Computação, princi-
palmente as disciplinas de inteligência artificial - foi idealizada uma abordagem de desenvolvi-
mento interativa, à qual denominamos DIA (Desenvolvimento interativo de aplicações). Da
mesma forma, foi idealizado um modelo de representação de conhecimento genérico, chamado
posteriormente Nós, na tentativa de encontrar um modelo para descrever documentos hipermí-
dia/web de forma distribuída. Representando a informação de acordo com o modelo Nós, o
webservice Lumen provê uma solução para armazenamento de informação genérica nas nu-
vens.
Baseado no modelo Nós foi proposto MAU, um modelo cognitivo para escolher as ações
de um agente reativo com aprendizado, chamado AgenteNós. Sua implementação JavaScript,
chamada agente virtual, é na prática um objeto JavaScript extensível, que provê uma interface
para a definição de novos métodos e vence as limitações de persistência do JavaScript através
de requisições HTTP assíncronas para o webservice Lumen. Instanciando, em uma página web,
um agente virtual, batizado de ce, foram ensinados métodos para suportar o desenvolvimento
de aplicações de acordo com a abordagem DIA. O suporte à criação de agentes virtuais e o
mecanismo de persistência, oferecido pelo webservice Lumen, acessados através da interface
gráfica dinâmica, construída, em tempo de execução, pelo agente virtual ce, formam o ambiente
DIS (Desenvolvimento inteligente de sistemas). A partir dessas implementações, iniciou-se,
então, uma pesquisa bibliográfica para validar e amadurecer os conceitos da abordagem DIA e
do modelo Nós.
1.3 Estrutura da dissertação 6
1.3 Estrutura da dissertação
Este trabalho está organizado em oito capítulos. Inicialmente, no Capítulo 2, estão descritas
as principais tecnologias envolvidas. No Capítulo 3, são analisadas outras ferramentas para
desenvolvimento web disponíveis no mercado. A abordagem DIA é explicada no Capítulo 4. O
modelo de representação de conhecimento Nós é introduzido no Capítulo 5. No Capítulo 6, é
apresentado o ambiente DIS. Como estudo de caso, o desenvolvimento de uma aplicação web
para proporcionar um espaço para difusão de conhecimento, o site “Encontro de estudantes”,
é mostrado no Capítulo 7. Finalizando, conclusões e trabalhos futuros são apresentados no
Capítulo 8. Para melhor entendimento, as idéias que deram origem ao modelo Nós são expostas
no Apêndice A e sua utilização é exemplificada no Apêndice B.
7
2 Referencial teórico
2.1 Evolução do conteúdo da Internet
O conteúdo e a utilização da Internet têm mudado desde sua criação. Inicialmente, páginas
web baseadas em HTML exibiam conteúdo estático sem nenhuma interatividade. Procurando
fornecer mais interatividade, foram inseridos applets, pedaços de código Java executados no
computador do usuário. Esses applets, verdadeiros aplicativos carregados por download e exe-
cutados no computador do usuário, têm acesso limitado a recursos de persistência. Uma alter-
nativa encontrada foi executar códigos em servidores da Internet e enviar novamente o HTML
puro para o usuário. Dessa forma, é possível construir páginas dinâmicas que oferecem serviços
interativos com recursos de persistência de dados e código protegido no servidor. Além disso,
conseguem-se outras vantagens, como não ser necessário realizar o download dos códigos e a
possibilidade de processamento distribuído na Internet.
A simples mistura de código de servidor, como ASP ou PHP, com código HTML resolve
muitos problemas, porém, a comunicação com o servidor era, inicialmente, feita através de
requisições síncronas. Nesse caso, é necessário descarregar a memória para enviar e receber
informações para o servidor. O conteúdo das páginas é dinâmico, mas qualquer pequena al-
teração na tela, como uma nova hora ou uma mensagem de boas-vindas para o usuário que
acaba de se identificar, necessita recarregar e renderizar a página inteira com todas as tabelas,
figuras etc. Esses serviços acabam por se tornar lentos, portanto, com interatividade limitada,
uma vez que a troca de informações com o servidor - e, consequentemente, o processamento
- é esporádica. Entretanto, o aumento da velocidade de conexão à Internet e, principalmente,
o melhor aproveitamento da banda, através de técnicas de requisição assíncrona trazidas pela
Web 2.0 (O’REILLY, 2005), permitiram criar serviços web com complexidade e interatividade
semelhantes às de sistemas desktop. A revolução da Web 2.0 é uma nova forma de usar tecnolo-
gias antigas, alterando principalmente a relação entre o usuário e o conteúdo da Internet. Um
melhor aproveitamento dos recursos permitiu maior interatividade, permitindo que usuários
não sejam apenas consumidores, mas também fornecedores de conteúdo. Diferentemente de
2.1 Evolução do conteúdo da Internet 8
serviços P2P (Peer-to-Peer), uma forma de transferência de arquivos entre usuários, a Web 2.0
permite criar verdadeiras bibliotecas de conhecimento, como a Wikipedia (WIKIPEDIA, 2009),
cujo conteúdo é gerado por usuários, ao invés de um gerador de conteúdo centralizado.
Assim como a revolução da Web 2.0, que trouxe uma nova forma de manipulação das tec-
nologias antigas, Weiss (2007) apresenta o paradigma de computação nas nuvens (do inglês,
Cloud computing), que propõe concentrar o poder de processamento em uma nuvem de com-
putadores e acessar seus serviços por meio de interfaces e dispositivos leves. Dessa forma,
não é necessário realizar downloads ou instalações no computador do usuário. Também não
é necessário espaço para armazenamento, pois as aplicações nas nuvens fornecem espaço de
memória para armazenar arquivos em servidores na Internet, acessíveis de qualquer computa-
dor. O objetivo da computação nas nuvens é que o usuário tenha acesso a todos os seus dados
a partir de qualquer dispositivo conectado à Internet e possa manipulá-los através de seus edi-
tores favoritos. O principal problema desse paradigma é a dependência da Internet, uma vez
sem conexão à Internet, perde-se o acesso aos dados. Também existe discusão em torno da pro-
priedade sobre os dados, se pertencem ao usuário que os gera ou ao servidor que os armazena?
O fato é que o atual conteúdo das páginas web é tão dinâmico que Google (2008) as considera
verdadeiras aplicações.
O atual conteúdo da Internet é um excelente exemplo de uma aplicação hipermídia. Apli-
cações web são compostas por diferentes mídias (textos, imagens, vídeos, animações etc) que
se iniciam em diferentes momentos. Além disso, o usuário pode escolher a sequência de apre-
sentação dessas mídias. Para desenvolver essas aplicações web, existem inúmeras tecnologias
disponíveis, cada uma com sua particularidade. Neste trabalho, será analisado o desenvolvi-
mento utilizando HTML/CSS + AJAX + PHP, por ter um funcionamento parecido com outras
linguagens de servidor e seu entendimento ser mais simples que soluções baseadas em Java.
HTML, CSS, AJAX e PHP são essencialmente texto, por isso, podem ser desenvolvidos a
partir de um simples editor de textos. Contudo, visando aumentar a produtividade, ferramentas
de desenvolvimento agregaram funcionalidades como complementação e destaque de código.
A evolução dessas ferramentas trouxe edição gráfica no estilo WYSIWYG e gerenciamento do
sistema de arquivos local e remoto. Seguindo a tendência da computação nas nuvens, Shroff
(2008) propõe como o próximo passo para as ferramentas de desenvolvimento web que, assim
como as demais aplicações, elas também sejam fornecidas como serviços na Internet. Começa,
então, um novo ciclo. As ferramentas, agora na Internet, iniciam como simples editores de
texto e agregam novas funcionalidades para aumentar a produtividade. Como exemplo, pode-
se citar as aplicações web Caspio Bridge (CASPIO, 2009), Coghead (COGHEAD, 2009) e
2.2 Desenvolvimento Hipermídia 9
AppExchange (SALESFORCE, 2009), que fornecem plataformas para o desenvolvimento de
aplicações web orientadas a bancos de dados. Além dessas, o Google Sites (GOOGLE, 2009b)
é uma aplicação web que fornece uma interface amigável para a construção de websites. É pos-
sível adicionar diversos tipos de mídia, como textos, imagens, vídeos, tabelas etc. Entretanto,
não são suportados scripts ou acesso a banco de dados.
2.2 Desenvolvimento Hipermídia
A autoria de um documento hipermídia consiste em descrever como as mídias estão rela-
cionadas entre si. Para isso, o autor deve definir como as mídias estão organizadas logicamente
e como elas estão posicionadas ao longo do tempo e do espaço (SAADE et al., 2003). A descri-
ção de documentos hipermídia pode ser feita através da linguagem HTML (RAGGETT et al.,
1999), que permite estabelecer relações espaciais e algumas relações lógicas entre os elemen-
tos. Relações temporais podem ser definidas através de scripts embarcados no HTML, como
JavaScript. Na tentativa de manter as vantagens das linguagens de marcação no estilo XML,
surgiram linguagens específicas para descrição hipermídia, como SMIL (AYARS et al., 2001),
recomendação do consórcio W3C, e NCL (SOARES; RODRIGUES, 2005), a linguagem para
descrição de aplicações do SBTVD (Sistema Brasileiro de TV Digital).
Diversas ferramentas surgiram para auxiliar o processo de sincronismo de mídias. Entre as
mais conhecidas estão Microsoft Expression Web (MICROSOFT, 2009a) e Adobe Dreamweaver
(ADOBE, 2009a). Essas duas ferramentas, porém, foram criadas para editar um tipo específico
de hipermídia muito utilizado atualmente, os websites ou páginas web. Assim, elas permitem
o sincronismo lógico e espacial, mas não suportam o sincronismo temporal. Contudo, outras
ferramentas permitem a autoria de documentos hipermídia genéricos, disponibilizando funcio-
nalidades para sincronismo lógico, espacial e temporal. Pode-se citar: Cardinal Studio (CAR-
DINAL, 2007), Alti Composer (ALTICAST, 2007), GRiNS (BULTERMAN et al., 1998), Lim-
See2 (WAM, 2007), Adobe Flash (ADOBE, 2009b) e o brasileiro Composer (GUIMARAES,
2007), desenvolvido pelo laboratório de TeleMídia da PUC-Rio.
É comum que editores hipermídia implementem o conceito de WYSIWYG, permitindo que
o autor posicione as mídias através de uma interface gráfica - o que facilita o trabalho de sin-
cronismo espacial. Entretanto, esses editores não costumam permitir a execução de mídias
dinâmicas, como áudio ou vídeo, em tempo de edição. Implementada, por exemplo, pelo editor
multimídia Microsoft MovieMaker (MICROSOFT, 2009b), a falta dessa funcionalidade difi-
culta o trabalho de sincronismo temporal entre as mídias. Um exemplo simples disso é o sin-
2.2 Desenvolvimento Hipermídia 10
cronismo de uma legenda com um vídeo. Nesse caso, o autor precisa conhecer os tempos onde
as falas acontecem, chamados de pontos de sincronismo. Se o editor hipermídia não executar
a mídia em tempo de edição, será necessário algum outro aplicativo que execute a mídia para
descobrir esses pontos de sincronismo. Em seguida, será necessário voltar ao editor e anotá-los
manualmente.
Buscando ferramentas mais adequadas para descrição hipermídia, Bieber et al. (1997a)
apresentam funcionalidades de sistemas hipermídia de terceira e quarta geração, como “links
tipados”, atributos de links, links com consultas baseadas na estrutura ou na semântica, trans-
clusões (NELSON, 1995) etc. Christodoulou et al. (1998) reconhecem a grande contribuição do
maior sistema hipermídia, a Internet, e apontam como questões principais a necessidade de os
designers reutilizarem experiências anteriores, a necessidade de os autores conseguirem alterar
facilmente a estrutura e o conteúdo e a necessidade de os usuários poderem definir suas próprias
formas de visualização e navegação das informações. Assim, um HADMS (“Hypermedia Ap-
plication Development and Management System”1) deve pelo menos:
1. Fornecer um modelo hipermídia abstrato capaz de organizar e estruturar semanticamente
a informação de forma eficiente, suportando as funcionalidades hipermídia de terceira e
quarta geração apresentadas por Bieber et al. (1997a). O modelo deve ser extensível para
integrar futuras funcionalidades.
2. Ser capaz de converter o conteúdo descrito de acordo com o modelo em uma aplicação
hipermídia estática ou dinâmica.
3. Suportar integração ou importação de conteúdo de outras bases de informação e permitir
reutilização de aplicações existentes.
4. Ser capaz de reutilizar facilmente o conteúdo para criar diferentes tipos de aplicações
hipermídias em diferentes sistemas hipermídia, como a Internet, TVDigital etc.
As metodologias para construção de sistemas desktop ou hipertexto foram, inicialmente,
aplicadas ao desenvolvimento hipermídia. Contudo, diversos trabalhos mostram que essas
metodologias não conseguem expressar adequadamente os conceitos hipermídia/web. Assim
são propostas novas metodologias com suas respectivas ferramentas de suporte, como as apre-
sentadas em (STREITZ et al., 1992; BIEBER et al., 1997b; FIELDING et al., 1998; GRIF-
FITHS et al., 2002; DÍAZ et al., 2005; ARMANI, 2005; AVGERIOU; RETALIS, 2005). Ou-
tros trabalhos acreditam que o modelo Dexter (HALASZ; SCHWARTZ, 1990), utilizado para
1Sistema de gerenciamento e desenvolvimento de aplicações hipermídia.
2.3 Desenvolvimento Web 11
descrição de documentos hipertexto, também não é suficiente para descrever sistemas hipermí-
dia/web, por isso, propõem novos modelos como o NCM (CASANOVA et al., 1991), o AHM
(HARDMAN et al., 1994) e o OOHDM (SCHWABE; ROSSI, 1995). Preocupado em descrever
as informações naturalmente distribuídas da hipermídia, Nelson (1999b) propõe uma estrutura
xanalógica que descreve a informação baseada em nós de conteúdo, associados por dois tipos
de links: links de conteúdo e transclusões. O primeiro é o link normal, ao qual estamos acos-
tumados, que indica que determinada informação está do outro lado do link. O segundo serve
para indicar que a informação exibida é a mesma informação apontada pelo link. Dessa forma,
é possível reutilizar o conteúdo sem perder informações sobre o documento original e a autoria.
Caumanns (1998) ressalta que a interconexão estática entre o ambiente de execução, a apli-
cação e as mídias (textos, imagens, vídeos etc) leva a um software monolítico, de forma que para
realizar pequenas alterações na aplicação, pode ser necessário modelar, compilar e publicar no-
vamente a aplicação inteira. Essa lentidão pode ser ainda mais maléfica para o entendimento do
poder da hipermídia. Uma vez que as mídias podem se relacionar de muito mais formas do que
a simples união do hipertexto com a multimídia, torna-se difícil imaginar as possibilidades sem
de fato interagir com o resultado. Para se ter uma idéia a hipermídia tem permitido ao usuário,
não só escolher a forma de apresentação do conteúdo, mas também adicionar e alterar o próprio
conteúdo. A hipermídia é baseada em opções e escolhas.
2.3 Desenvolvimento Web
O sistema hipermídia mais utilizado atualmente é a Internet. Fernandes (2003) explica que
aplicações web, de acordo com o modelo MVC (Model-View-Controller), são divididas em 3
camadas: serviços para o usuário, lógica de negócio e serviço de dados. Os serviços para usuário
oferecem uma interface gráfica que permite ao usuário interagir com a aplicação. Para isso, o
HTML tem sido utilizado para descrever elementos estáticos, enquanto JavaScript, applets Java
ou componentes em Flash acrescentam alguma interatividade no computador do cliente. A
interface gráfica acessa as funcionalidades descritas na lógica de negócio. Esta é responsável
por realizar operações complexas e pode ser desenvolvida com PHP, ASP, JSP, CORBA, Perl
etc. Por fim, o serviço de dados permite persistir dados em bancos de dados, no sistema de
arquivos ou em mídias graváveis. Bancos de dados são mais utilizados devido à praticidade
para armazenar, recuperar e alterar informações de uma forma organizada.
Para Bauer (2005), ferramentas e metodologias para o desenvolvimento web devem levar
em consideração algumas diferenças em relação ao desenvolvimento desktop, como: limites de
2.4 Desenvolvimento baseado em script 12
tempo menores, pouco entendimento por parte do cliente sobre o que é possível ser feito, rápidas
mudanças na tecnologia e o fato de tudo se resumir em uma única interface para o usuário
(o browser). Embora muito esforço tenha sido concentrado nas etapas de conceitualização e
projeto, pouca atenção foi dada ao processo de codificação dos arquivos.
O desenvolvimento de aplicações web no estilo HTML/CSS + AJAX + alguma linguagem
de servidor, como PHP ou ASP, leva a um ciclo conhecido como “editar-salvar-atualizar”, isto
é, depois de editar o documento, é necessário salvá-lo em um servidor web e, através de um
browser, recarregar a página inteira. No caso de a lógica de negócio ser implementada com
Java ou .NET, para que uma pequena alteração em uma das classes seja publicada, é preciso
re-enviar para o servidor a aplicação inteira. Esse ciclo é comparável a ser necessário clicar
em três botões de “ok” cada vez que se desejasse abrir uma pasta ao explorar o sistema de
arquivos. Na prática, para visualizar o documento, é necessário pressionar um botão para salvar
o documento, pressionar outro botão para enviar o documento para o servidor e, terminando
o upload, pressionar um último botão para iniciar o browser e recarregar a aplicação. Mesmo
que cada etapa demore muito pouco (o que nem sempre é verdade), um grande número de
etapas entre a edição e a visualização do resultado pode desmotivar o programador, diminuindo
sua produtividade e desestimulando testes. Apesar disso, esse detalhe tem sido ignorado pela
literatura.
Di Iorio & Vitali (2003) avançaram um pouco nesse sentido ao integrar o browser com
ferramentas de edição, como o MS Word. Em um cenário típico, o usuário está navegando pelo
browser quando decide editar a página. Clicando em um botão, o programa de edição, no caso
o MS Word, é iniciado. Depois que as alterações são feitas, o arquivo é salvo em um servidor,
onde é feito um controle de versões. De volta ao browser, a nova versão pode ser observada
graças a um script que verifica, periodicamente, mudanças nos arquivos visualizados.
2.4 Desenvolvimento baseado em script
Linguagens de script como JavaScript, Tcl e Lua fornecem mecanismos de teste de apli-
cações, como a linha de comando, na qual é possível executar comandos e acompanhar seu
resultado em tempo real. Normalmente, a linha de comando é utilizada para criar protótipos e
rapidamente testá-los, o que, no nosso ponto de vista, traria um benefício também para desen-
volvedores de aplicações hipermídia/web.
Apesar de eficazes, os protótipos criados pela linha de comando não costumam ser aproveita-
dos para a aplicação real. O código precisa ser re-escrito em um editor de textos comum que
2.5 Inteligência Artificial 13
não permite seu teste. Para testar, é preciso armazenar o script em um documento, sair do editor
e executar o arquivo salvo através de um ambiente de execução. A linha de comando não con-
segue agrupar os comandos executados para criar o protótipo e persisti-los em arquivos. Acaba
sendo necessário escrever o código duas vezes, uma para testar e outra para realmente escrever
a aplicação. Isso acontece, principalmente, porque linguagens de script costumam apresentar
limitações em relação a persistência. No caso de documentos web, o JavaScript é executado no
browser do usuário, e, por óbvias medidas de segurança, não tem acesso ao sistema de arquivos
do usuário.
Segundo Ousterhout (1998), linguagens de script foram feitas para unir componentes pré-
existentes, normalmente desenvolvidos em linguagens de sistema. Prechelt (2003) lembra que
linguagens de script costumam não ser tipadas para facilitar o trabalho de conectar diferentes
tipos de componentes. Assim, tornam-se ideais para a descrição hipermídia, onde elementos de
diversos tipos de mídia devem estar interconectados.
2.5 Inteligência Artificial
O homem se autodenomina homo sapiens, homem sábio, devido à grande importância que
dá às capacidades mentais. Há milhares de anos, cientistas e filósofos tentam entender como
pensamos, isto é, como é possível um aglomerado de matéria conseguir perceber, entender,
predizer e manipular um mundo muito maior e mais complicado que ele. A área de inteligência
artificial, IA, vai mais além, com o objetivo não só de entender, mas de construir entidades
inteligentes (RUSSELL et al., 1995).
Definições de inteligência artificial variam em duas dimensões. Como mostra a Tabela
2.1, as definições da primeira linha se preocupam com os processos do pensamento e com
o raciocínio, enquanto que as da segunda linha descrevem comportamentos. As definições
da primeira coluna medem o sucesso em termos de fidelidade com a performance humana,
enquanto que as da segunda coluna comparam com um conceito ideal de inteligência, chamado
racionalidade. Um sistema é racional se ele faz a “coisa certa”, dado o que ele “sabe”.
2.5 Inteligência Artificial 14
Tabela 2.1: Definições de inteligência artificialComo humano Racionalmente
“O excitante novo esforço para fazer
computadores pensarem... máquinas
com mentes, no sentido completo e lit-
eral.’ (HAUGELAND, 1985)
“O estudo das faculdades mentais
através da utilização de modelos
computacionais.” (MCDERMOTT;
CHARNIAK, 1985)
Pensam “[A automação de] atividades que
nós associamos como pensamento hu-
mano, atividades como tomadas de de-
cisão, resolução de problemas e apren-
dizado...” (BELLMAN, 1978)
“O estudo da computação que permite
perceber, raciocinar e agir.” (WIN-
STON, 1992)
“A arte de criar máquinas que real-
izam funções que requerem inteligên-
cia quando realizadas por pessoas.”
(KURZWEIL, 1990)
“Inteligência computacional é o es-
tudo de projetar agentes inteligentes.”
(POOLE et al., 1998)
Agem “O estudo de como fazer computa-
dores realizarem tarefas que, no mo-
mento, as pessoas são melhores.”
(RICH; KNIGHT, 1991)
“IA... está preocupada com o com-
portamento inteligente dos artefatos.”
(NILSSON, 1998)
Historicamente, todas as quatro abordagem de IA foram seguidas. As abordagens centradas
em humanos precisam ser uma ciência empírica, envolvendo hipóteses e confirmação experi-
mental, enquanto que as abordagens racionalistas envolvem uma combinação de matemática e
engenharia.
2.5.1 Agindo como humano: a abordagem do teste de Turing
O teste de Turing (RUSSELL et al., 1995) foi desenvolvido para fornecer uma definição
operacional satisfatória de inteligência. Turing definiu o comportamento inteligente como a
habilidade de alcançar o nível da performance humana em todas as tarefas cognitivas suficiente
para enganar um interrogador. Nesse teste, um computador deve ser interrogado por um hu-
mano através de um terminal remoto. No final, o computador passa no teste se o humano não
conseguir dizer se tem um computador ou um humano do outro lado. Existe controvérsia em re-
lação ao computador ser realmente inteligente pelo simples fato de passar no teste. De qualquer
forma, para que isso seja possível, o computador precisa das seguintes habilidades cognitivas:
2.5 Inteligência Artificial 15
1. Processamento de linguagem natural, para conseguir se comunicar em alguma língua
humana, como o português.
2. Representação do conhecimento, para armazenar informações fornecidas antes e du-
rante o interrogatório.
3. Raciocínio automático, para usar a informação armazenada para responder as questões
e tirar novas conclusões.
4. Aprendizado de máquina, para se adaptar a novas circunstâncias e detectar padrões não
imaginados.
O teste de Turing, deliberadamente, evitou a interação física direta entre o interrogador
e o computador, porque a simulação física de uma pessoa não é necessária para a inteligên-
cia. Contudo, o chamado teste total de Turing inclui um sinal de vídeo e a oportunidade de
o interrogador passar objetos através de uma escotilha, para que o interrogador possa testar as
habilidades perceptuais do computador. Assim, também são necessários:
1. Visão computacional, para perceber os objetos.
2. Robótica, para mover os objetos.
A IA não concentrou muito esforço para tentar passar no teste de Turing. Essa questão
de agir como humano aparece primordialmente quando programas precisam interagir com hu-
manos, como em um sistema especialista explicando como chegou a um diagnóstico ou em um
diálogo de um sistema de processamento de linguagem natural com um usuário. Nesses casos,
os programas precisam seguir algumas convenções de interação humana para se fazerem enten-
didos. A representação interna e o raciocínio de tais sistemas podem ou não ser baseados em
um modelo humano.
2.5.2 Pensando como humano: a abordagem de modelo cognitivo
Para dizer que um programa pensa como um humano é necessário determinar de alguma
forma como os humanos pensam, é necessário descobrir como funcionam os mecanismos in-
ternos da mente humana. Existem duas formas de fazer isso: através de introspecção, tentando
capturar o pensamento enquanto ele acontece; ou através de experimentos psicológicos. Ao
alcançar uma teoria suficientemente precisa, é possível expressá-la como um programa de com-
putador. Se os comportamentos de entrada/saída e tempo nesse programa forem parecidos com
2.5 Inteligência Artificial 16
o comportamento humano, há evidência de que o mecanismo proposto pode ser semelhante
àquele operando na mente humana.
Johnson-Laird (1983) nos lembra que a tecnologia é criada a partir de modelos funcionais
capazes de reproduzir determinadas características da natureza. Para isso, não é necessário que
o modelo construído seja exatamente igual ao real, basta que o resultado seja o mesmo. Assim,
ele propõe sete critérios para validar um possível modelo cognitivo humano, a saber:
1. Uma teoria adequada deve levar em consideração a tirada de conclusões, a relativa dificul-
dade de diferentes inferências e os erros sistemáticos e vieses que ocorrem em conclusões
espontâneas.
2. A teoria deve explicar a diferença das habilidades de inferência entre um indivíduo e
outro.
3. A teoria deve ser extensível de forma natural para ser aplicada em uma variedade de
inferências, ao invés de um tipo específico de deduções.
4. A teoria deve explicar como crianças adquirem a habilidade de fazer inferências válidas.
5. A teoria deve permitir que pessoas sejam capazes de fazer inferências válidas, isto é, elas
são potencialmente racionais.
6. A teoria deve mostrar porque a lógica formal foi inventada e como ela foi desenvolvida.
7. A teoria deve idealmente ter aplicações práticas no ensino de técnicas de raciocínio.
2.5.3 Pensando racionalmente: a abordagem das “leis do pensamento”
O filósofo grego Aristóteles foi um dos primeiros a tentar codificar o “pensamento correto”,
isto é, um processo de raciocínio irrefutável. Seus silogismos permitem estruturas que sempre
chegam a conclusões corretas dadas premissas corretas. Essas “leis do pensamento” suposta-
mente governam as operações da mente e seu estudo gerou a área chamada lógica clássica ou
simplesmente lógica (RUSSELL et al., 1995).
O desenvolvimento da lógica formal permitiu uma notação precisa para criar argumentos
sobre todas as coisas no mundo e as relações entre elas. Dessa forma, foi possível criar progra-
mas de computadores que, dados tempo e espaço suficientes, recebem a descrição do problema
em notação lógica e encontram uma solução. Contudo, existem dois grandes obstáculos para
essa abordagem. Primeiro, não é tão simples descrever o conhecimento informal do mundo
2.5 Inteligência Artificial 17
nos termos formais necessários para a lógica, principalmente quando tratando com informações
incertas ou imprecisas. Segundo, o domínio de soluções pode ser muito grande, mesmo em
problemas com poucos fatos, excedendo os recursos do computador, a não ser que sejam apli-
cadas heurísticas para indicar quais passos do raciocínio tentar primeiro. Mesmo considerando
esses obstáculos, a lógica é muito utilizada por causa de seu poder de representação e pelo fato
de sistemas de raciocínio serem bem definidos e entendidos.
2.5.4 Agindo racionalmente: a abordagem do agente racional
Figura 2.1: Arquitetura de um agente.
Para a IA, um agente é alguma coisa que percebe o ambiente através de seus sensores e
age modificando o ambiente através de seus atuadores, conforme ilustrado na Figura 2.1 (RUS-
SELL et al., 1995). Agir racionalmene significa agir de forma a atingir o objetivo do agente.
Para identificar a realização dos objetivos, o agente tem uma medida de utilidade embutida
implicitamente, através de suas regras, ou explicitamente, através de metas ou funções de uti-
lidade. Nessa abordagem, a IA é vista como o estudo e a construção de agentes racionais.
Na abordagem das “leis do pensamento”, a ênfase está em realizar inferências corretas. Fazer
inferências corretas faz parte de agir racionalmente, porque uma forma de agir racionalmente
é raciocinar logicamente para chegar à conclusão que uma determinada ação irá atingir o ob-
jetivo e então executar a ação encontrada. Entretanto, a racionalidade pode ser atingida não
somente através de inferências corretas, uma vez que existem situações em que provalmente
não há nenhuma ação correta e, mesmo assim, alguma ação precisa ser executada. Em outras
situações, agir racionalmente não envolve necessariamente inferências. No caso de soltar um
objeto quente, uma ação por reflexo é mais efetiva do que uma ação concluída depois de um
lento processo de deliberação.
As habilidades cognitivas necessárias para o teste de Turing também possibilitam ações
racionais. É necessário representar o conhecimento e o raciocínio para poder chegar a boas
decisões em diversas situações. O aprendizado é necessário para ter uma idéia melhor de como
o mundo funciona e assim gerar estratégias mais efetivas para lidar com ele. Percepção visual
2.5 Inteligência Artificial 18
é necessária para entender o resultado que a ação é capaz de alcançar. Assim, trabalhar com
agentes racionais é mais abrangente do que a abordagem das “leis do pensamento”, uma vez
que pensar racionalmente pode ajudar a agir racionalmente, mas isto pode não ser necessário.
Essa abordagem também é mais simples que as abordagens focadas em humanos, já que a
racionalidade é um conceito bem definido, enquanto que o comportamento humano é muito
mais complicado e difícil de entender.
Agentes reativos e agentes reativos com aprendizado
Agentes reativos simples, segundo Russell et al. (1995), percebem o ambiente através de
sensores que interpretam o ambiente em sinais de formato conhecido. Esses sinais ativam regras
pré-definidas que indicam a ação a ser executada por seus atuadores, conforme ilustrado na
Figura 2.2.
Figura 2.2: Arquitetura de um agente reativo simples.
Russell et al. (1995) também mostram a arquitetura de agentes com aprendizado, agentes
que possuem um mecanismo de aprendizado. No caso de agentes reativos com aprendizado, o
mecanismo de aprendizado é responsável pela atualização e criação de regras, como ilustrado
na Figura 2.3.
Figura 2.3: Arquitetura de um agente reativo simples com aprendizado.
2.6 Resumo do capítulo 19
2.6 Resumo do capítulo
Neste capítulo, discutiu-se a evolução do conteúdo da Internet partindo de páginas estáti-
cas, passando por páginas dinâmicas com código no servidor, até chegar ao paradigma de com-
putação nas nuvens, que incentiva a migração das aplicações para servidores na Internet, e
ao conceito de Dev 2.0, que sugere que as ferramentas para desenvolvimento também sejam
aplicações nas nuvens. Foi visto que a evolução de sistemas hipertexto ou multimídia para sis-
temas hipermídia trouxe complexidade e possibilidades muito maiores do que a simples união
do hipertexto com a multimídia, gerando dificuldade para entender o potencial da hipermídia.
Como entender, por exemplo, a criação de links animados, que aparecem apenas durante um
determinado período de um vídeo e que, ao serem selecionados, geram resultados baseados em
buscas semânticas?
Também foi visto que os modelos e metodologias hipertexto/desktop não se adequaram
às necessidades da hipermídia/web. Assim, vários pesquisadores procuram modelos que con-
sigam expressar os conceitos hipermídia e trabalhar com as diferenças do desenvolvimento
web, como limites menores de tempo e menor entendimento sobre as possibilidades. Discutiu-
se o problema da abordagem convencional para codificação dos documentos, sendo necessário
codificar, salvar o documento em um servidor e recarregar a página para finalmente visualizar
o resultado. Esse ciclo, conhecido como “editar-salvar-atualizar”, pode desestimular testes e
diminuir a produtividade do programador.
Em seguida, foram mostradas algumas características das linguagens de script e que elas
se tornam ideais para uma linguagem de descrição hipermídia. Destacou-se a possibilidade
de rápida prototipação através de uma linha comando, porém, com limitações em relação a
persistência. Finalizando, foi introduzido o conceito de inteligência artificial, mostrando as
principais abordagens seguidas ao longo da história.
Na Seção 2.2, foram apresentadas as características que uma ferramenta para desenvolvi-
mento hipermídia deve ter. No próximo capítulo, serão identificadas as características conside-
radas mais importantes para uma ferramenta de desenvolvimento especificamente web, anali-
sando algumas ferramentas encontradas no mercado.
20
3 Trabalhos relacionados
Ferramentas para desenvolvimento hipermídia/web tentam diminuir o esforço do usuário
enquanto aumentam sua capacidade de expressão. Elas são necessárias para fazer a ponte entre
o código que o computador entende e a intenção do usuário. Essa é uma tarefa difícil e se torna
ainda mais difícil se levado em consideração que muitas vezes o usuário nem sabe o que quer,
ou mesmo sabendo, não tem a habilidade de fazer a programação exigida. Dessa forma, as
ferramentas disponibilizam editores gráficos no estilo “arrastar e soltar”, barras de ferramen-
tas, caixa de propriedades etc. Os usuários leigos podem criar aplicações através de assistentes
de criação. Os usuários mais avançados podem visualizar o código gerado automaticamente e
alterá-lo com a ajuda de destaque e complementação de código. Algumas ferramentas utilizam
o conceito de computação nas nuvens, tornando os dados acessíveis de qualquer lugar, e dispen-
sando instalações no computador do usuário. Outras seguem o paradigma desktop, necessitando
de espaço no computador do usuário, mas ainda independente do acesso à Internet.
A seguir, serão apresentadas algumas ferramentas para o desenvolvimento web encontradas
no mercado. As aplicações vistas neste capítulo são focadas no desenvolvimento web, por
isso ignoram as funcionalidades para o desenvolvimento hipermídia propostas por Bieber et al.
(1997a) e Christodoulou et al. (1998), apresentadas no capítulo anterior. Este trabalho con-
sidera importantes para uma ferramenta de desenvolvimento especificamente web as seguintes
características:
• Plataforma da ferramenta: se a ferramenta é desktop e, portanto, depende de instalaçãoe recursos do computador, ou é uma aplicação nas nuvens, portanto, independente de
instalação e acessível a partir de qualquer computador conectado à Internet;
• Pré-visualização WYSIWYG: a aplicação deve disponbilizar uma interface gráfica quepermita posicionar os elementos através do recurso de “arrastar e soltar” com o mouse,
sem necessidade de escrita de código, o que facilita o trabalho para leigos;
• Execução de mídias interna ao editor: no caso de aplicações web, as mídias importantesde serem executadas são os componentes do lado do servidor;
3.1 Caspio Bridge 21
• Tipo de aplicação suportado: se a ferramenta permite a criação de aplicações genéricasou aplicações baseadas em modelos.
3.1 Caspio Bridge
Caspio Bridge (CASPIO, 2009) é uma aplicação web que oferece uma plataforma para criar
e publicar aplicações web baseadas em banco de dados de forma rápida e sem a necessidade de
programação. Sendo fornecida como um serviço na Internet, não é necessário instalar no com-
putador do usuário. A criação de tabelas, formulários e relatórios é feita através de assistentes
de criação, como ilustrado na Figura 3.1. É possível aplicar estilos nos resultados gerados e
incrementá-los com add-ons ou customizá-los com JavaScript.
Figura 3.1: Assistente de criação do Caspio Bridge.
As aplicações são construídas a partir de modelos pré-definidos como mostrado na Figura
3.2. Para criar aplicações customizadas, o ambiente permite a edição do código HTML, mas não
oferece funcionalidades de apoio, como barra de ferramentas ou complementação e destaque
de código.
3.2 Google Sites 22
Figura 3.2: Formulário construído pelo assistente de criação do Caspio Bridge.
3.2 Google Sites
Também baseado no conceito de computação nas nuvens, o Google Sites (GOOGLE, 2009b),
ilustrado na Figura 3.3 permite a criação de sites com conteúdo multimídia. Componentes -
como imagens, vídeos, tabelas, apresentações de slides - podem ser adicionados e modificados
através de menus.
Figura 3.3: Tela de edição do Google Sites.
Para visualizar mídias dinâmicas como vídeos ou apresentações de slides é preciso salvar a
página e parar de editar, como mostrado na Figura 3.4.
3.3 Adobe Dreamweaver 23
Figura 3.4: Tela de visualização do Google Sites, após persistência.
Google Sites provê uma interface amigável para criação de websites com páginas web de
conteúdo genérico, entretanto, o ambiente não oferece suporte à utilização de JavaScript ou
linguagens de servidor, como PHP, ASP, JSP etc. Também não é oferecido acesso a bancos
de dados. Dessa forma, as páginas web construídas apresentam interatividade limitada e não
processam informações provenientes do usuário.
3.3 Adobe Dreamweaver
Uma das ferramentas líder do mercado, o Adobe Dreamweaver (ADOBE, 2009a) traz
grande suporte ao desenvolvimento de websites. É possível editar páginas graficamente ou
visualizando diretamente o código, como ilustrado na Figura 3.5. Entre auxílios oferecidos,
estão pré-visualização WYSIWYG, diversas barras de ferramentas, caixa de propriedades, assis-
tentes de criação e gerenciamento de arquivos locais e remotos. Na visualização do código, é
oferecido destaque e complementação de código para diversas linguagens, como HTML, Cold-
fusion, PHP, ASP, ASP .NET C#, JSP, JavaScript, CSS. O fato de ser uma ferramenta desktop o
torna dependente de instalação e de recursos do computador.
3.4 Aptana Studio 24
Figura 3.5: Visualização do código e WYSIWYG no Adobe Dreamweaver.
O ambiente ainda permite a comunicação com um servidor remoto através de FTP e a
possibilidade de criar templates para reutilização de código. A versão mais nova dá um passo
na direção apontada por este trabalho com a funcionalidade de visualização dinâmica. Esta
permite interagir com os componentes da página como em um browser, executando scripts do
lado do cliente. Nessa plataforma, pode-se configurar um servidor a fim de executar scripts
do lado do servidor, contudo, as requisições assíncronas não suportam envio de parâmetros.
Assim, componentes do lado do servidor que dependem de informações enviadas por usuários
são apenas parcialmente testados.
3.4 Aptana Studio
Assim como o Adobe Dreamweaver, o Aptana Studio (APTANA, 2009) também é uma
aplicação desktop. Exibido na Figura 3.6, ele é focado na construção de aplicações nas nuvens
e provê um mecanismo de gerenciamento de espaço nas nuvens e de utilização do Jaxer, um
servidor AJAX.
3.4 Aptana Studio 25
Figura 3.6: Página inicial do Aptana Studio.
A edição é feita diretamente através de código. Para facilitar essa tarefa, são fornecidos
botões que adicionam blocos comuns de código HTML, JavaScript ou CSS. Também estão
presentes as funcionalidades de complementação e destaque de código, conforme ilustrado na
Figura 3.7.
Figura 3.7: Edição no Aptana Studio feita a partir do código com complementação e destaque de código.
A visualização é feita através da instanciação de browsers disponíveis no computador, como
o Firefox ou o Internet Explorer. O ambiente ainda simula um servidor localmente, permitindo
a execução de componentes de servidor.
3.5 Resumo do capítulo 26
3.5 Resumo do capítulo
Percebendo a dificuldade do cliente de entender as possibilidades da hipermídia e a perda
de produtividade devido à distância entre a edição e a obtenção do resultado, este trabalho visa
diminuir a distância entre a codificação de documentos e a visualização de seu resultado. Dessa
forma, são consideradas importantes as funcionalidades que contribuem para a visualização do
resultado mais cedo no processo de produção, como pré-visualização WYSIWYG e a possibili-
dade de executar mídias dinâmicas, como vídeos, apresentações e componentes de servidor. De
acordo com Weiss (2007) e Shroff (2008), a ferramenta de desenvolvimento deve ser uma apli-
cação nas nuvens, permitindo a edição de documentos a partir de qualquer dispositivo ligado
à Internet, sem necessidade de downloads ou instalações. Também é considerado importante a
capacidade de um HADMS expandir para suportar funcionalidades futuras, além de se adequar
à construção de qualquer tipo de sistema hipermídia, conforme sugerido por Christodoulou et
al. (1998), para evitar a necessidade de várias ferramentas de autoria. Assim, na Tabela 3.1, são
apresentadas as funcionalidades oferecidas pelos ambientes que foram destacadas como mais
importantes para este trabalho, a saber:
• F1: Plataforma da ferramenta;
• F2: Pré-visualização WYSIWYG;
• F3: Execução de mídias interna ao editor;
• F4: Tipo de aplicação suportado.
Tabela 3.1: Requisitos de HADMSCaspio Bridge Google Sites Adobe Dreamweaver Aptana Studio
F1 web web desktop desktop
F2 não sim sim sim1
F3 sim não sim2 sim1
F4 Orientada a banco de dados Genérica2 Genérica Genérica
Neste capítulo foram identicadas as características consideradas mais importantes para uma
ferramenta de desenvolvimento web. No próximo capítulo, será apresentada a abordagem in-
terativa DIA, que, com o objetivo de permitir a execução de mídias em tempo de edição, sugere
criar um ambiente de edição em tempo de execução.1Browser intanciado dentro do editor2Não processa informações enviadas pelo usuário
27
4 DIA - Desenvolvimento Interativo deAplicações
Conforme visto no Capítulo 2, o desenvolvimento de aplicações web no estilo HTML/CSS
+ AJAX + alguma linguagem de servidor, como PHP ou ASP, leva a um ciclo conhecido como
“editar-salvar-atualizar”, que pode desestimular testes e diminuir a produtividade do progra-
mador. Percebendo a dificuldade em identificar e consertar bugs com esse ciclo, Hewitt et al.
(2008) - com o Firebug, um add-on do Firefox que provê, dentre outras funcionalidades, uma
linha de comando JavaScript - propõe um live editing, isto é, a possibilidade de editar scripts,
HTML e CSS da página que o usuário estiver acessando. É possível editar e debugar a página
inteira, ou criá-la do zero. Contudo, o Firebug não oferece nenhum mecanismo de persistência.
Se o usuário quiser publicar as alterações feitas na página, será necessário re-escrever todas as
modificações nos documentos que estão salvos no servidor. A proposta deste trabalho, então, é
simples: superar as limitações das linguagens de script, adicionando persistência ao live editing.
Da mesma forma que Beitner & Goble (1995) apontam a necessidade de “links ativos”, que
mostre, por exemplo, pedaços do vídeo que está do outro lado do link, este trabalho aponta a
necessidade de uma “programação ativa”, que mostre o resultado da aplicação durante a etapa de
desenvolvimento. Com essa motivação, surge DIA (Desenvolvimento interativo de aplicações),
uma abordagem interativa para desenvolvimento hipermídia/web. Levando em consideração as
características das linguagens de scripts, vistas na seção 2.4, DIA sugere unir componentes e
mídias de diferentes linguagens através de uma sequência de comandos de uma linguagem de
script. Após escrever cada linha, o comando é executado, mostrando seu resultado em tempo
real. O teste é feito após cada comando e a visualização do resultado acontece antes de qualquer
etapa de persistência. Dessa forma, são minimizados erros simples, como erros de digitação ou
parênteses e chaves desbalanceados. Ver o resultado de cada comando também pode trazer
maior entendimento da linguagem para o programador. A criação de protótipos também pode
melhorar o entendimento do cliente sobre a própria aplicação e sobre o que é possível ser feito.
A idéia da abordagem DIA é criar e testar protótipos rapidamente e, caso os protótipos fiquem
4 DIA - Desenvolvimento Interativo de Aplicações 28
bons, armazená-los em documentos sem a necessidade de re-escrever todo o código.
A abordagem DIA diminui o número de etapas entre a codificação e a visualização do re-
sultado quando comparada com a abordagem de desenvolvimento web convencional, conhecida
como “editar-salvar-atualizar”. Na abordagem DIA, é necessário iniciar apenas um programa, o
IDE (Integrated development environment1), tornando o resultado disponível após cada ação do
usuário. Na abordagem convencional, inicia-se o IDE e escreve-se o código. Em seguida, o do-
cumento é persistido em um servidor local ou remoto. Para visualizar o resultado, é necessário
iniciar o browser e carregar a página. Para visualizar alguma alteração, é necessário voltar ao
IDE, escrever o código, persistir, voltar ao browser e re-carregar a página. A Tabela 4.1 mostra
uma comparação entre a abordagem “editar-salvar-atualizar” e a abordagem DIA.
Tabela 4.1: Comparação entre as etapas da abordagem “Editar-salvar-atualizar” e DIA“Editar-salvar-atualizar” DIA
Iniciar IDE Iniciar IDE em tempo de execução
Ciclo de desenvolvimento: Ciclo de desenvolvimento:
Descrever Descrever
Persistir Resultado
Iniciar browser Alterar
Carregar página Novo resultado
Resultado Persistir
Voltar ao IDE
Alterar
Persistir
Voltar ao browser
Recarregar página
Novo resultado
A abordagem de desenvolvimento com linguagens de scripts é baseado em rápida pro-
totipação. Através de uma linha de comandos são construídos protótipos disponíveis após a
execução de cada comando. O resultado das alterações é acompanhado em tempo real. Ao
atingir um resultado satisfatório, o código deve ser re-escrito em um editor de textos. A Tabela
4.2 mostra uma comparação da abordagem do desenvolvimento com linguagens de scripts e a
abordagem DIA.
1Ambiente de desenvolvimento integrado.
4.1 Passos da abordagem 29
Tabela 4.2: Comparação entre as etapas da abordagem script e DIADesenvolvimento script DIA
Iniciar linha de comando Iniciar IDE em tempo de execução
Ciclo de desenvolvimento: Ciclo de desenvolvimento:
Descrever Descrever
Resultado do protótipo Resultado
Re-escrever código no editor de texto Persistir
Persistir
Carregar em ambiente real
Resultado real
4.1 Passos da abordagem
Baseada em rápida prototipação, DIA, então, sugere que seja criada, primeiramente, a in-
terface gráfica da aplicação, a partir da qual serão realizados os testes através de chamadas aos
componentes. Essa interface deve ser criada a partir de uma sequência de comandos de uma
linguagem de script. Os elementos essenciais do sistema devem ser adicionados em tempo de
execução. Dessa forma, os componentes e mídias estarão prontos para serem utilizados logo
após a execução de cada comando. A interface gráfica mostra como será possível interagir com
a aplicação. Assim, sua visualização e a possibilidade de, de fato, interagir com ela melhora o
entendimento do sistema.
Nesse ponto, um protótipo da interface gráfica está pronto para interagir com o usuário.
Antes de construir os componentes reais - que são complexos, portanto, mais custosos - podem
ser construídos componentes de testes, que simulem a lógica de negócio com respostas escritas
diretamente no código. Dessa forma, é possível mostrar rapidamente para o cliente um exemplo
da aplicação funcionando.
Idealmente, o protótipo é construído durante a reunião com o cliente, contando com sua
participação. Se a ferramenta de desenvolvimento for uma aplicação nas nuvens, enquanto o
representante faz a reunião na empresa do cliente, uma equipe de suporte pode estar preparada
na sede da empresa de desenvolvimento, acompanhando a evolução do protótipo e desenvol-
vendo alguns componentes que possam potencializar o entendimento do sistema por parte tanto
do cliente, quanto da equipe de desenvolvimento. Com um protótipo da interface gráfica, con-
tendo os elementos essenciais do sistema, a equipe responsável pelo leiaute pode trabalhar
através da definição de estilos para os elementos, criando documentos CSS (Cascading Style
4.1 Passos da abordagem 30
Sheet (LIE; BOS, 1996)) independentes. Enquanto isso, a equipe responsável pelos compo-
nentes pode implementá-los e testá-los através do protótipo, em constante evolução, da interface
gráfica.
A construção da aplicação a partir de uma sequência de comandos torna o resultado disponível
para visualização e interação logo após a execução de cada comando. Os componentes são in-
seridos e configurados no ambiente de execução. Isso quer dizer que mais do que executar as
mídias em tempo de edição, a abordagem DIA cria um ambiente de edição em tempo de execu-
ção. Além do resultado disponível mais cedo no processo de desenvolvimento, uma vez que as
mídias podem ser executadas, é possível definir relacionamentos baseados em comportamentos
dinâmicos das mídias, como definição de relações de sincronismo baseado no tempo. Não só
isso, a abordagem DIA elimina a necessidade de uma pré-visualização, o resultado visualizado
é o resultado real da aplicação. Também não é necessário alternar entre IDE e o ambiente de
execução (o browser, por exemplo), pois o ambiente de edição é criado dentro do ambiente de
execução. Finalizando, a etapa de persistência dos comandos em um documento é opcional e
pode ser executada após a visualização do resultado.
Qualquer metodologia de desenvolvimento hipermídia/web pode ser escolhida para as eta-
pas de modelagem e conceitualização, uma vez que a abordagem DIA se concentra na etapa de
codificação. Seguem-se os passos:
1. Construir um protótipo da interface gráfica através de uma sequência de comandos de
uma linguagem de script: essa etapa consiste em executar comandos de uma linguagem
de script - a partir de uma linha de comando, por exemplo - para adicionar os elementos
essenciais que compõem o sistema. O protótipo inicial deve fazer a chamada a compo-
nentes de teste que exemplifiquem o funcionamento do sistema. Ao final dessa etapa, é
possível testar um exemplo de utilização da aplicação.
2. Implementar e testar os componentes da aplicação: essa etapa consiste em desenvolver
componentes ou mídias, utilizando a tecnologia que melhor atender aos requisitos de cada
componente/mídia. Os componentes podem ser testados através do protótipo da interface
gráfica.
3. Refinar leiaute: essa etapa tem o objetivo de refinar o leiaute através da definição de estilos
para os elementos da interface gráfica. Os estilos devem ser escritos em documentos CSS
referenciados pela aplicação. Essa etapa pode ser realizada concomitantemente à etapa
de implementação dos componentes.
4. Persistir o código da aplicação: uma vez atingido um resultado esperado, é possível ar-
4.2 Descrição de aplicações 31
mazenar o código executado em uma memória persistente.
Uma vez que as aplicações utilizam componentes descritos em linguagem de sistema e
linguagens de script, um ambiente DIA ideal deve dar suporte ao desenvolvimento de qualquer
tipo de componente. Porém, co