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 )