Converse com o Artista - Especificação do Projeto - IME-USP

Propaganda
Universidade de São Paulo
Instituto de Matemática e Estatística
MAC5715 – Tópicos Avançados de Programação Orientada a Objetos
Converse com o Artista - Especificação do
Projeto
Christian Danniel Paz Trillo
[email protected]
Nro USP: 4812031
15 de Outubro de 2003
1 Descrição geral do Projeto
Converse com o Artista é um projeto baseado em um trabalho do Bruce Bassett, "Conversation with Jacques Lipchitz: A Break-through in Interactivity"[2]. Bassett contava
com mais de trezentas horas de entrevista com o artista já falecido Jacques Lipchitz,
feitas durante seu trabalho na televisão, com o que construiu um programa interativo
que permite ter uma entrevista falada com o Lipchitz, em que o usuário faz perguntas
para ele, e a cada uma delas uma resposta, a mais adequada do banco de dados de
entrevistas, é mostrada em forma de um clip do Lipchitz falando.
O projeto consiste em desenvolver uma aplicação que permita gerar aplicações interativas desse tipo. A aplicação permitirá configurar os clips que formarão parte do banco
de dados de entrevistas, associando a cada um deles (1) palavras chave, que serão os
critérios de busca a usar nas perguntas do usuário e (2) recursos adicionais, que serão
reproduzidos junto aos clips de resposta às perguntas do usuário.
A diferença da aplicação do Bassett, que recebe as perguntas faladas pelo usuário em
linguagem natural, é que esta aplicação receberá as perguntas do usuário por teclado e
através de palavras chave, sendo um trabalho futuro desenvolver suporte para interação
do usuário em linguagem natural.
1
2 Especificação da Funcionalidade requerida
A aplicação deverá constar de dois módulos, um módulo administrativo, que permita
configurar a conversa; e um módulo visualizador, em que o usuário poderá fazer a
conversa, isto é, fazer perguntas e ver as respostas do artista em forma de clips.
As funcionalidades requeridas em cada módulo são:
Administrativo: ver Figura 1, neste módulo o usuário administrador poderá
criar conversas virtuais, onde as conversas poderão ser salvas em arquivos, para
permitir sua edição posterior. Estes arquivos gerados são também a configuração
que o visualizador precisa para interagir com o usuário. O usuário administrador deverá poder selecionar os clips, pedaços da entrevista que serão mostrados
como respostas às perguntas, e associar eles com um ou mais tópicos (palavras
chave), e recursos (imagens ou sons). Os recursos serão relacionados por segmento do clip, por exemplo: a imagem X será mostrada entre os segundos 5 e
25 do clip Y. Os recursos poderão estar associados a uma legenda, a qual será
mostrada junto ao recurso.
O usuário administrador poderá definir o conteúdo das janelas Sobre o Artista,
que terá informações acerca do artista para o qual está se gerando a conversa, e
Sobre o Sistema, que terá créditos associados às pessoas que elaboraram a conversa e recopilaram os clips da entrevista. A distribuição da conversa inclui o
programa visualizador, o arquivo de configurações, os arquivos dos clips e dos
recursos associados à conversa.
Criar Conversa
Virtual
Editar Conversa
Virtual
<<extend>>
Administrador
Associar informação
de clips
Salvar Configuração
Editar Sobre o Sistema
<<extend>>
Gerar Distribuição
Editar Sobre o Artista
Figura 1: Diagrama de Casos de Uso do módulo administrativo.
Visualizador: ver Figura 2. A interface para o usuário fazer a conversa permite
2
visualizar os clips da conversa, assim como os recursos e as legendas associadas
a eles. Deve contar também com um campo para o usuário ingressar a sua consulta, o usuário fará a consulta, e o sistema deverá apresentar uma opção para
mostrar sequencialmente todos os clips que coincidem com a busca, e uma opção separada para reproduzir cada clip, esa lista de opções será ordenada pelo
número de palavras chaves em que o clip coincide com a busca, e pela duração
do clip, de menor a maior. Para cada opção deve se mostrar as palavras chaves do clip. O visualizador deve ter opções de controle de vídeo: retrodecer,
avançar, reproduzir/pausar e deter. Quando o clip estiver sendo mostrado, os recursos associados a ele deverão aparecer, nos lapsos de tempo configurados pelo
administrador, assim como as legendas deles.
O visualizador deverá guardar um log das sessões do usuário, salvando as perguntas que foram feitas e as respostas dadas (em termos de clips mostrados e
palavras chaves de cada. Deverá permitir ver também os enlaces Sobre o Artista
e Sobre o Sistema, como foram configurados pelo administrador.
Consulta
Reproduzir Clip
Usuario
Visualizar recursos
associados
Ver enlace
Sobre o Sistema
Ver enlace
Sobre o Artista
Figura 2: Diagrama de Casos de Uso do módulo visualizador.
Adicionalmente, a aplicação deverá rodar nas plataformas Windows, Linux e MacOS.
3
3 Descrição da Solução
A aplicação será desenvolvida em Java, principalmente porque facilita a portabilidade
entre diversas plataformas, e porque conta com o Java Media Framework, JMF, que é
um arcabouço que permite adicionar áudio, vídeo e outros médios baseados em tempo
a aplicações ou applets Java[3].
A Figura 3 apresenta a arquitetura geral da aplicação, os pacotes que a formam são:
admin, conterá as classes da GUI do módulo administrativo,
modelo, é o modelo da aplicação detalhado na Figura 4,
visualizador, conterá as classes da GUI do módulo visualizador,
serializador, responsável pela serialização do modelo para o arquivo de
configuração,
javax.swing, pacote GUI do Java, será usado pelo visualizador e o admin,
que são os pacotes com interface gráfica da aplicação,
javax.media, pacote que envolve o Java Media Framework, que será usado
no visualizador e no admin,
org.xml.sax, contem a funcionalidade para interagir com arquivos xml, o
qual é o formato do arquivo de configuração da conversa, e é usado pelo serializador.
A Figura 4 apresenta o diagrama de classes do pacote modelo. Os elementos que
formam parte dele são:
Conversa, o objeto central, ele contém toda a informação da conversa. Como só
existe um objeto conversa tanto no visualizador como no módulo administrativo,
a classe é implementada como Singleton [1];
Clip, contém a informação do clip, o nome, o nome do arquivo e a duração dele;
Recurso, Som e Imagem, representam os recursos que podem ser associados a
um clip, atualmente só imagens ou sons, mas para facilitar a criação de novos
recursos, eles estão associados a uma interface comúm;
Tópico e PalavraChave, cada clip está associado a um ou mais tópicos, atualmente a estrutura do tópico é só uma palavra, a palavra chave, mas se poderia
associar estruturas mais complexas, por exemplo conceitos, para dar o suporte à
linguagem natural em um trabalho futuro;
4
admin
<< classLibrary >>
javax.swing
visualizador
<< classLibrary >>
javax.media (jmf)
modelo
serializador
<< classLibrary >>
org.xml.sax
Figura 3: Diagrama de Pacotes da aplicação.
Associação Tópico e Associação Recurso, as associações entre clips e tópicos,
e entre clips e recursos, contêm informações próprias, como o intervalo do clip
no que o recurso vai se mostrar, entre outras, por isso existem classes associação
para cada uma delas;
Mediador, MediadorClipRecursos e MediadorClipTopicos, as relações entre
clips e os seus tópicos e recursos são complexas, um clip pode estar relacionado
a vários recursos, e um recurso pode estar relacionado a vários clips, o equivalente com os tópicos, além disso, essas relações contêm informações próprias.
Pelo fato delas serem complexas, as relações serão implementadas através de um
Mediator [1], que permite encapsular a maneira em que um conjunto de objetos
interagem;
Consulta e ConsultaPalavraChave, representa a consulta, ou pergunta feita
pelo usuário à conversa, devolvendo a lista dos clips que satisfazem à consulta,
ordenadas segundo os critérios estabelecidos na funcionalidade. O padrão Strategy [1] é aplicado para decidir qual tipo de consulta será efetuada, atualmente
5
só existe consulta por palavra chave mas no futuro existirão consultas em linguagem natural, cujo tratamento será diferente, mas a interface será a mesma.
O serializador usa um mesmo procedimento para ler e escrever o arquivo de configuração, em formato xml, mas cada tag é tratado de maneira diferente. O padrão
Template Method [1] é usado para estabelecer o mecanismo geral de processamento, e
cada classe derivada tratará o tag correspondente da maneira adequada. A classe que
processa cada elemento é diferente, mas o esquema geral para processar cada um deles
é o mesmo.
Será usado o arcabouço JMF para obter a informação de duração do clip, assim como
para reproduzi-lo e receber os eventos de tempo, para mostrar os recursos associados
no momento requerido. Os controles para a reprodução são proporcionados também
pelo JMF. As classes Player, Duration e ControllerListener do pacote
javax.media serão usadas para isso.
Referências
[1] R. Johnson E. Gamma, R. Helm and R. Vlissides. Design Patterns: Elements of
Reusable Object-Oriented Software. Adisson Wesley, 1995.
[2] Greg Kline. High-tech sculptor has the answers, 2000.
news-gazette.com/story.cfm?Number=10249.
http://www.
[3] Sun Systems. Java media framework api, 2003. http://java.sun.com/
products/java-media/jmf/.
6
<< classLibrary >>
org.xml.sax
Mediador
(from modelo )
O padrão Template Method é
usado para ler o arquivo de
configuração XML, a leitura é
feita de manera geral, mas para
cada tag um tratamento distinto
é feito.
helpers.DefaultHandler
O padrão Mediator é aplicado
para manter as relações entre
clips e os tópicos e os recursos
a serem relacionados com ele.
−relacoes :Set
+ adicionaAssociacao (map :Map,chave:Object ,valor :Object ):void
+ pegaAssociacao (chave:Object ):Object
Figura 4: Diagrama de7 Pacotes da aplicação.
MediadorClipTopicos
(from modelo )
serializador
MediadorClipRecursos
(from modelo )
LetorConfiguracao
+ associa (clip :Clip ,topico :Topico ):void
+ pegaTopicosAssociados (clip :Clip ):Set
+ pegaClipsAssociados (topico :Topico ):Set
1
EscritorConfiguracao
+ associa (clip :Clip ,recurso :Recurso ,tempo_inicial :,tempo_final :,legenda :String ):void
+ pegaRecursosAssociados (clip :Clip ):Set
+ pegaClipsAssociados (recurso :Recurso ):Set
1
1
1..*
serializa
1
1
O padrão Singleton é usado
para garantir a existência
de só uma instância da
Conversa nas aplicações
Admin e Visualizador.
1
Conversa
(from modelo )
AssociacaoTopico
(from modelo )
1..*
AssociacaoRecurso
(from modelo )
−legenda :String
−tempo_inicial :
−tempo_final :
−personagem :String
−titulo :String
−_instancia :Conversa
O padrão Strategy é aplicado
para selecionar a estratégia
de busca dos vídeos associados
à consulta.
1
+ pegaInstancia ():Conversa
1
1
1
1
Consulta
(from modelo )
consulta
Topico
(from modelo )
−id :Map
ConsultaPorPalavraChave
(from modelo )
1
1
Clip
(from modelo )
−id :Map
−duracao :Map
−nome :String
−nomeArquivo :String
+ consulta (texto :String ):Set
PalavraChave
(from modelo )
−palavra :Map
1
1
1
Recurso
(from modelo )
−id :Map
−legenda :Map
−nome :Map
−nomeArquivo :Map
Som
(from modelo )
Imagem
(from modelo )
Download