Trabalho de Formatura Supervisionado

MAC 499

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

preSotaq

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Nome: Julio Shnaider Gejer – shnaider@linux.ime.usp.br

Orientador: Arnaldo Mandel – am@ime.usp.br

 


Índice

 

1.        Introdução.. 3

2.        O que é o preSotaq?. 3

3.        Planejamento.. 3

1.     Definição sobre o desenvolvimento.. 3

2.     Entrada e saída de dados. 3

3.     Funcionalidades do preSotaq.. 4

4.        Cronograma. 4

5.        Situação Atual e Planejamento Futuro.. 5

6.        Bibliografia. 7

7.        Relação com o curso do BCC. 7

 


1.    Introdução

 

Vamos apresentar aqui o sistema preSotaq e o ambiente que nos levou a desenvolvê-lo. Temos uma breve descrição funcional do sistema Sotaq para entendermos o contexto envolvido e a importância desse novo sistema. Após isto temos uma descrição funcional do sistema e por fim, uma análise subjetiva do relacionamento entre este projeto e o curso de Ciência da Computação do IME.

 

 

2.    O que é o preSotaq?

 

O preSotaq é um sistema que tem como objetivo melhorar a preparação de dados para serem processados pelo programa Sotaq.

 

O programa Sotaq permite testes de modelos, baseados na Teoria de Otimalidade, para localização de acentos secundários. Na prática, o “Sotaq é um programa que lê uma coleção de frases e imprime para cada uma delas uma decomposição em segmentos rítmicos”. A validação desses modelos requer um confronto com grande quantidade de dados reais que até então eram preparados e anotados manualmente o que se torna uma tarefa inviável.

 

Então o preSotaq viabilizará esta preparação de dados, pelos lingüistas, através de uma interface gráfica amigável e intuitiva.

 

 

3.    Planejamento

O planejamento para o desenvolvimento do preSotaq contou com várias etapas porém simples e rápidas. Houve muita liberdade para a escolha de todos os itens que estão descritos abaixo.

 

1.    Definição sobre o desenvolvimento

 

A primeira etapa do planejamento e análise dos requisitos contou com a escolha da linguagem e do ambiente de desenvolvimento. A escolha natural foi pela linguagem Java 2, no ambiente de desenvolvimento Netbeans, uma IDE desenvolvida por estudantes da república Tcheca e depois comprada pela Sun Microsystems, que por fim, deixou como “open source”.

 

A escolha pela linguagem Java 2 foi devida principalmente a sua portabilidade, já que possivelmente os usuários utilizarão sistemas operacionais diferentes (Windows e Unix).

 

A escolha pela IDE Netbeans foi pela sua facilidade e integração com as classes Swing JFC, facilitando assim, o desenvolvimento da parte visual do sistema e, portanto, sua integração com o usuário.

 

2.    Entrada e saída de dados

 

Após estas escolhas foi necessário decidirmos a forma de entrada e saída de dados. A primeira opção seria mantermos os tipos de arquivos utilizados pelo Sotaq, que são arquivos texto com uma formatação pré-definida, porém optamos por utilizar o formato XML (Extensible Markup Language) pois além de estar amplamente definido é facilmente estendido. Além disso existe uma integração muito natural entre Java e XML, sendo muito simples tanto ler, quanto gravar arquivos neste formato.

 

Porém com essas definições criamos um certo problema que é como comunicar o preSotaq com o Sotaq. A solução foi simples criando um conversor de arquivos do formato XML para o formato do sotaq, e vice-versa. Apesar disso, já está planejada para a próxima versão do sotaq o tratamento direto de arquivos no formato XML.

 

Então agora temos definido a linguagem (Java), o ambiente de desenvolvimento (Netbeans), o formato de arquivos (XML), e a forma de comunicação entre os sistemas (conversão de arquivos).

 

3.    Funcionalidades do preSotaq

 

Para citarmos as funcionalidades do preSotaq precisamos relembrar seu objetivo: facilitar a preparação de dados. Assim, devemos ter um editor de textos e um selecionador de propriedades para as sílabas de nosso texto e desta maneira podemos citar as funcionalidades que o sistema deve ter no momento de sua entrega:

 

·         Abrir arquivo com frases no formato XML.

·         Visualizar frases no modo normal (sem separação de sílabas).

·         Visualizar frases com sílabas separadas e com as devidas propriedades.

·         Editar propriedades das sílabas.

·         Editar separação de sílabas (juntar e separar).

·         Separação automática de sílabas.

·         Detecção automáticas de algumas propriedades (como início de palavra).

·         Incluir, Excluir e Editar frase.

·         Salvar alterações.

 

 

4.    Cronograma

 

Como o cronograma foi alterado diversas vezes ao longo do projeto e tivemos mais implementações do que o planejado inicialmente, abaixo segue um relato das fases envolvidas e sua duração.

 

1.   Desenvolvimento de um conversor de XML para o formato do Sotaq e vice-versa: conforme explicado,  consiste no conversor que possibilitará a comunicação entre o Sotaq e o preSotaq (junho a julho / 2003).

2.   Desenvolvimento do protótipo da tela inicial para termos uma base de layout para o sistema (julho / 2003).

3.   Desenvolvimento do protótipo do resto do sistema de acordo com as funcionalidades desejadas (agosto / 2003).

4.   Aprovação do protótipo do sistema e eventuais alterações (setembro / 2003).

5.   Implementação de algumas funcionalidades entre elas, abrir arquivo com frases, navegabilidade entre as janelas, entre outras (outubro / 2003).

6.   Implementação das demais funcionalidades: todas as demais funcionalidades descritas no item 3.3 (novembro / 2003 até a entrega).

7.   Refatoração do código: momento de melhoria no código desenvolvido, conforme necessário (janeiro e agosto / 2004)

8.   Testes do sistema e eventuais alterações: testes de todo o sistema para que funcione perfeitamente e caso necessário desenvolvimento de pequenas alterações (janeiro / 2004 e a cada nova entrega de funcionalidades).

9.   Documentação: documentação de todo o código desenvolvido para o sistema (fevereiro e agosto / 2004).

10.  Entrega: entrega através de uma ferramenta de instalação para Windows e Unix (outubro / 2004).

 

Este cronograma tem sido atualizado de acordo com o andamento do projeto e a cobrança para seu cumprimento tem sido bastante tranqüila contando com bastante compreensão do orientador em relação às dificuldades que passamos ao longo de todo o processo de desenvolvimento. Os prazos estão bem esparsos porém com a condição de estendê-lo até o término de todo o desenvolvimento, mesmo que isso leve a alguns meses a mais, como é o caso, pois o projeto tem duração além de um ano.

 

5.    Situação Atual e Planejamento Futuro

 

O preSotaq chegou ao final conforme as especificações iniciais e as demais que foram agregadas ao longo de todo o processo. Assim agora este programa pode ser utilizado por usuários finais e também pode ser adaptado para futuras implementações. Um grande destaque ao produto como se encontra hoje é sua fácil adapatação visual que não necessita alteração em código java, precisando apenas alterar propriedades de um arquivo de cofiguração. Dentre as propriedades configuráveis podemos destacar :

·         Tamanho e posição das janelas.

·         Cores, tipos e tamanhos fontes.

·         Definição das propriedades das sílabas.

·         Textos dos menus, botões, janelas de perguntas (como salvar).

·         Localização dos arquivos de ajuda.

 

Temos abaixo as principais janelas do sistema, onde podemos ver a versão final delas.

 

Começamos com a tela inicial do sistema. Através dela podemos ver:

·         um menu acima com 4 informações : "Arquivo" que possibilita trabalhar informações relativas ao arquivo de dados; "Ajuda" que possibilita visualizar uma janela de ajuda no formato html; "Arquivo Atual" que diz o nome do arquivo que está atualmente aberto; "Arquivo backup" que indica, após salvar, o nome do arquivo de backup atual.

·         uma frase com informações sobre o que o usuário deve fazer : selecionar uma frase abaixo ou selecionar um arquivo com frases.

·         uma tabela com as frases atuais : estas frases podem ser selecionadas para edição.

·         dois botões para que a frase seja editada ou para que as propriedades das sílabas sejam editadas.

·         um asterisco vermelho que indica que houve alterações e que é necessário salvar para guardar as informações.

 

 

(As frases que se encontram duplicadas estão de acordo com o arquivo fornecido para a entrada do programa.)

O usuário pode, através do menu “Arquivo”, fazer as seguintes tarefas:

·         criar um novo arquivo sem nenhuma frase.

·         abrir um arquivo com frases já existente.

·         criar uma frase nova no arquivo atual.

·         excluir a frase selecionada.

·         salvar as alterações no arquivo atual e conseqüentemente criar um arquivo de backup.

·         sair do sistema.

 

 

 

Caso o usuário clique no botão "Editar" na janela principal, a seguinte janela aparecerá:

 

 

A partir dessa janela conseguimos visualizar a frase e algum eventual comentário desta frase que aparece com as separações de sílabas indicadas por um ponto no meio da linha. O usuário pode alterar a frase livremente e se desejar que seja feita uma separação de sílabas automática, basta clicar no botão "Separar Sílabas". Caso deseje inserir uma separação de sílabas manualmente (ou retirar uma) basta clicar em "Inserir Separação" ou clicar com o botão esquerdo do mouse junto com a tecla "Control" pressionada. Além disso é possível obter uma "Ajuda", "Voltar" (guardando as alterações) ou simplesmente "Cancelar" tudo e voltar a tela principal.

 

A partir da tela principal o usuário pode também clicar no botão "Propriedades" que o levará a tela de edição de propriedades das sílabas, conforme janela abaixo.

 

 

Nesta janela podemos selecionar as propriedades de cada sílaba bastando para isso clicar na propriedade correspondente. Da mesma forma como as outras janelas, nesta podemos obter uma rápida "Ajuda", e podemos também da mesma forma que na edição de frases, "Voltar" guardando em memória as alterações ou simplesmente "Cancelar" e não guardar as alterações.

 

Por fim, foi desenvolvido um instalador em java que permite ao usuário selecionar o local de destino dos arquivos a serem instalados. Sua janela está reproduzida abaixo.

 

 

Desta maneira conseguimos atingir o objetivo do sistema, implementando todas as funcionalidades previstas e deixando o sistema facilmente utilizável pelos usuários e configurável para futuros administradores do sistema.

 

Um dos grandes destaques deste sistema é sua facilidade de configuração, através de arquivos de configuração de propriedades. Assim, não é necessário refazer o código nem sequer recompilar o sistema, sendo necessário somente passar os parâmetros corretos na inicialização do sistema.

 

A separação de sílabas que o PreSotaq proporciona ao usuário é baseada no algoritmo (não publicado) de C.L.L. Lucchesi, J. Stolfi e T. Kowaltoski, e adaptada do código gentilmente cedido pelo Prof. Cláudio Lucchesi (e escrito originalmente em C).

 

6.    Bibliografia

 

Abaixo temos os principais lugares que ajudaram no desenvolvimento do preSotaq:

 

1.      Sotaq - http://www.ime.usp.br/~tycho/prosody/sotaq/index.html - informações sobre o Sotaq, suas funcionalidades, aplicações, instalação e utilização.

2.      J2SE API – http://java.sun.com/j2se/1.4.2/docs/api/index.html - documentação básica sobre Java 2, apresentando suas classes e sintaxe.

3.      Java Swing Tutorial – http://java.sun.com/docs/books/tutorial/uiswing/ - tutorial simples sobre a utilização do Swing.

4.      XML - http://www.w3.org/XML/ - documentação sobre a padronização do XML. Referência importante porém de pouco auxílio neste projeto.

5.      DTD - http://www.w3schools.com/dtd/ - um pequeno tutorial sobre DTD e sua utilização com XML.

6.      DTD e XML - http://www.xmlfiles.com/dtd/ - mais um pouco sobre DTD e XML.

7.      Netbeans – http://www.netbeans.org/ - site oficial do NetBeans, de onde é possível fazer o download gratuito desta ferramenta.

 

 

7.    Relação com o curso do BCC

 

Para o desenvolvimento do preSotaq algumas disciplinas ajudaram muito, entre elas Laboratório de Programação II onde pude aprender o início da sintaxe de Java e Programação Extrema onde o desenvolvimento de um projeto prático era um objetivo primordial, além de aprender a utilizar a IDE Netbeans. Além disso, durente o desenvolvimento, houve um enorme aprendizado na manipulação de arquivos XML e um aprimoramento no desenvolvimento de sistemas utilizando a linguagem Java. Vale um grande destaque para a disciplina Linguagens Formais e Autômatos pois agora pude ver uma aplicação bem prática de sua utilização (que é o caso da separação de sílabas).

 

Contudo, toda a formação neste curso juntamente com outras experiências pessoais, entre elas um estágio, possibilitaram um aprendizado ainda maior.

 

Para o preSotaq não houve um grupo de desenvolvimento, que tem as desvantagens de não haver interação entre o próprio grupo, divisão de trabalho, entre outras coisas, porém traz uma responsabilidade maior pois sabemos que todo o trabalho fica atribuído a apenas uma pessoa.

 

A pequena frustração é que este projeto, apesar de sua grande importância, explora pouco o nosso aprendizado durante o curso de graduação, porém é um ponto pequeno perto de tudo que ele envolve.

 

Acredito ter contribuído para a realização de projetos acadêmicos e auxiliado no desenvolvimento de novas teorias, que ajudarão nossa comunidade num futuro próximo e, desta maneira, fica uma pequena contribuição para futuros pesquisadores.