Faculdade de Engenharia da Universidade do Porto Licenciatura em Engenharia Electrotécnica e de Computadores Projecto/Seminário/Trabalho Final de Curso Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Gabriel António Lopes Ribeiro Orientador do projecto: Professor Raul Moreira Vidal Co-orientador do projecto: Engenheiro Manuel Machado Julho 2003 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Resumo Este relatório refere-se ao projecto “Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições” desenvolvido no âmbito da disciplina Projecto/Seminário/Trabalho Final de Curso do 5º ano da Licenciatura em Engenharia Electrotécnica e de Computadores da Faculdade de Engenharia da Universidade do Porto. Este projecto é uma das partes constituintes de um projecto mais vasto cujo objectivo final é a construção de um sistema de informação para a Licenciatura em Engenharia Informática e Computação da Faculdade de Engenharia da Universidade do Porto. O trabalho realizado insere-se na área de sistemas de informação e consiste no desenvolvimento de uma aplicação que permite a disponibilização de conteúdos do SiFEUP de forma eficiente usando XML. ii Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Agradecimentos Professor Raul Moreira Vidal – Orientador do projecto, pelo apoio e orientação do trabalho. Engenheiro Manuel Machado – Responsável da Unidade de Sistemas de Informação do CICA e co-orientador do projecto, pelas sugestões e acompanhamento do trabalho. Professores João Correia Lopes e Augusto Sousa – Co-orientadores do projecto, pelas sugestões e apoio dado. Engenheiro Pedro Strecht – Especialista de Informática da Unidade de Sistemas de Informação do CICA, pela disponibilidade e apoio na concepção do sistema. Vítor Carvalho – Designer das páginas do SiFEUP, pelas sugestões e apoio dado na concepção do exemplo de portal. Todas as pessoas da Unidade de Sistemas de Informação do CICA pelas sugestões e excelente ambiente de trabalho proporcionado. iii Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Índice 1. Introdução __________________________________________________________ 1 1.1. Análise do Problema ______________________________________________ 1 1.2. Objectivos ______________________________________________________ 2 1.3. Definição de Requisitos ____________________________________________ 2 1.3. Escalonamento do Trabalho ________________________________________ 4 1.4. Tecnologias e Ferramentas _________________________________________ 4 2. Modelo de Dados ____________________________________________________ 5 2.1. Modelo Entidade-Associação _______________________________________ 5 2.2. Modelo Relacional ________________________________________________ 6 2.3. Criação das Tabelas na Base de Dados ________________________________ 7 3. Interface Web ______________________________________________________ 12 3.1. Interface de Administração ________________________________________ 12 3.1.1. Criação de Definições _________________________________________ 13 3.1.2. Alteração e Eliminação de Definições ____________________________ 15 3.1.3. Junções ____________________________________________________ 17 3.1.4. Geração de XML ____________________________________________ 17 3.2. Interface de Utilização ____________________________________________ 20 4. Implementação _____________________________________________________ 21 4.1. Procedimentos e Funções _________________________________________ 21 4.1.1. Aspecto da interface web ______________________________________ 21 4.1.2. Autenticação ________________________________________________ 21 4.1.3. Definições __________________________________________________ 21 4.1.4. Junções ____________________________________________________ 22 4.1.5. Geração de XML ____________________________________________ 22 4.2. Análise dos Procedimentos mais Relevantes __________________________ 22 4.2.1. Procedimento form_definicao __________________________________ 22 4.2.2. Procedimento submeter_definicao _______________________________ 23 4.2.3. Procedimento sel_definicao ____________________________________ 23 4.2.4. Procedimento form_juncao_____________________________________ 23 4.2.5. Procedimento submeter_juncao _________________________________ 24 4.2.6. Procedimento form_geraXML __________________________________ 24 4.2.7. Procedimentos gera_XML _____________________________________ 24 4.2.8. Procedimento apresenta_XML __________________________________ 25 4.3. Alguns Aspectos de Optimização de Funcionamento do Sistema __________ 25 4.3.1. Criação da Tabela PARAMETROS_GERACAO ___________________ 25 4.3.2. Cache de XML ______________________________________________ 25 5. Exemplos de Aplicação ______________________________________________ 27 5.1. XML, XSL e CSS _______________________________________________ 27 5.2. Portal LEIC ____________________________________________________ 27 5.3. Exemplo de Integração no SiFEUP __________________________________ 32 6. Conclusões ________________________________________________________ 33 6.1. Trabalho Realizado ______________________________________________ 33 6.2. Perspectivas de Evolução do Projecto ________________________________ 33 6.3. Experiência Pessoal ______________________________________________ 34 Bibliografia e Referências ______________________________________________ 35 Anexo A: Relatório de Especificação de Requisitos __________________________ 36 iv Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 1. Introdução 1.1. Análise do Problema Este projecto tinha inicialmente como objectivo a construção de um protótipo de um sistema de informação para uma licenciatura da Faculdade de Engenharia da Universidade do Porto, especificamente a Licenciatura em Engenharia Informática e Computação (LEIC). Para esse efeito foi elaborado, no âmbito deste projecto, um relatório de especificação de requisitos que está anexo a este documento. Um sistema de informação para uma licenciatura da Faculdade de Engenharia da Universidade do Porto teria que ir obter grande parte da informação que necessitaria ao Sistema de Informação Faculdade de Engenharia da Universidade do Porto (SiFEUP), que é um repositório enorme com toda a informação relevante sobre as actividades da Faculdade de Engenharia da Universidade do Porto, com interface web. Devido a esta necessidade e ao facto de ser útil dotar o SiFEUP com uma forma padronizada de fornecimento de informação, o projecto inicial foi alterado, tendo passado a orientar-se para a construção de um módulo que permita “Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições”. O trabalho foi realizado na Unidade de Sistemas de Informação, nas instalações do Centro de Informática Professor Correia de Araújo, na Faculdade de Engenharia da Universidade do Porto. 1 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 1.2. Objectivos Devido à crescente necessidade de retirar informação do SiFEUP por parte de alguns utilizadores do sistema, surge a necessidade de criar uma biblioteca de disponibilização de conteúdos, que permita ao utilizador especificar que informação pretende obter. O acesso a essa biblioteca deve ser feito através de uma interface de utilização prática, libertando o utilizador da necessidade de ter conhecimentos de base de dados relacionais para poder utilizá-la. Outro aspecto que é necessário salvaguardar é a segurança, o utilizador não deve poder aceder à informação sem restrições, e sim retirar do sistema apenas a informação que a administração do mesmo disponibilize na biblioteca de conteúdos. Neste sistema o utilizador tanto poderá ser alguém que necessita de retirar informação do sistema ocasionalmente, como poderá ser um portal web que usa o sistema de uma forma sistemática para obter a informação que pretende apresentar. A informação pretendida pelo utilizador será exportada utilizando o formato XML. 1.3. Definição de Requisitos Para ilustrar formalmente os requisitos do sistema segue-se o diagrama de casos de uso. Um diagrama de casos de uso é um diagrama das funcionalidades do sistema, elaborado com base na linguagem de modelização UML (Unified Modelling Language)[4]. Neste tipo de diagramas as funcionalidades são designadas por ‘casos de uso’ e os utilizadores designados por ‘actores’. No sistema em causa identificam-se os seguintes actores: - Administrador - Utilizador/Portal 2 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Figura 1.1 – Diagrama de casos de uso 3 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 1.3. Escalonamento do Trabalho O trabalho realizado foi desenvolvido em várias etapas: - Modelação do sistema – modelo entidade-associação, modelo relacional, criação das tabelas na base de dados. - Criação da interface web – duas interfaces, uma de administração, e uma de utilização. - Geração de XML – criação e optimização de um procedimento que retira a informação do sistema e a disponibiliza em formato XML. - Teste e revisões – simulações de utilização do sistema em todas as situações previstas de modo a eliminar eventuais anomalias no funcionamento do sistema. - Protótipo de demonstração – construção de um pequeno protótipo de portal (SiLEIC) para demonstrar a utilidade do sistema desenvolvido. As várias etapas não são independentes, todas elas sofreram alterações e optimizações no decorrer do trabalho. 1.4. Tecnologias e Ferramentas No desenvolvimento do trabalho foram usadas as seguintes linguagens de programação: - PL/SQL[1] – usada na implementação de módulos de interacção com a base de dados. - HTML [2] – usada na criação das interfaces e na apresentação das páginas web. - XML[3] – usada para a exportação da informação. - Javascript[5] – usada para passagem de parâmetros entre páginas web e para tornar as páginas interactivas. As ferramentas usadas foram: - Oracle Designer 2000 – usada para a modelização do sistema (modelo entidadeassociação e modelo relacional) e para a criação das tabelas na base de dados. - Quest SQL Navigator – usada para o desenvolvimento de toda a aplicação. 4 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 2. Modelo de Dados O projecto consiste na criação de um módulo que permita armazenar dados relativos à informação que os utilizadores podem retirar do SiFEUP, ou seja, criar uma biblioteca de definições. Uma definição é um modelo genérico de uma pergunta à base de dados (query SQL), que é parametrizado de acordo com a informação que se pretende obter. Para suportar a biblioteca de definições, é necessário um modelo de dados que armazene toda a informação que será usada na construção da query SQL, que por sua vez será usada para gerar o documento XML, que será exportado. Neste capítulo é dada a conhecer a arquitectura do sistema, ou seja, o modelo de dados que foi criado para suportar as funcionalidades pretendidas para o sistema. Na construção do modelo de dados foi usada a ferramenta Oracle Designer 2000, tendo o modelo sofrido várias alterações ao longo da execução do trabalho, de maneira a adaptar-se melhor à informação que irá armazenar. 2.1. Modelo Entidade-Associação Inicialmente foi construído o modelo entidade-associação que mostra as tabelas que são necessárias, a informação que cada tabela deve guardar e as dependências entre as várias tabelas. A figura seguinte ilustra o modelo entidade-associação construído. 5 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Figura 2.1 – Modelo Entidade-Associação 2.2. Modelo Relacional Depois de construído o modelo entidade-associação, através do Oracle Designer 2000 gera-se automaticamente o modelo relacional. O modelo relacional mostra todas as colunas que as tabelas que serão criadas na base de dados irão possuir, o tipo de dados de cada coluna e todas as dependências entre tabelas. A figura seguinte ilustra o modelo relacional obtido. 6 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Figura 2.2 – Modelo Relacional 2.3. Criação das Tabelas na Base de Dados Com base no modelo relacional acima ilustrado e ainda usando a ferramenta Oracle Designer 2000 todas as tabelas e dependências associadas foram geradas automaticamente na base de dados. Nesta secção é feita uma breve análise da estrutura das tabelas ,indicando as colunas, tipo de dados, tamanho (quando aplicável) e comentários. 7 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Tabela DEFINICOES Nesta tabela é armazenada a informação que identifica cada definição, como por exemplo a sua descrição, o criador, e a data de criação. Figura 2.3 – Definição da tabela DEFINICOES Tabela COLUNAS Nesta tabela é armazenada a informação relativa às colunas que fazem parte das definições. Figura 2.4 – Definição da tabela COLUNAS 8 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Tabela DEF_JUNCOES Nesta tabela é guardada a informação acerca das junções existentes, ou seja, as definições que fazem parte de cada junção e o tipo de junção que é usada. Figura 2.5 – Definição da tabela DEF_JUNCOES Tabela DEF_J_COLUNAS Esta tabela está associada à tabela DEF_JUNCOES. Para cada junção existente na tabela DEF_JUNCOES, existe na tabela DEF_J_COLUNAS a informação sobre as colunas usadas para juntar as definições. Figura 2.6 – Definição da tabela DEF_J_COLUNAS 9 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Tabela FUNCIONARIOS Esta é uma tabela que já existia no ambiente do SiFEUP, tendo como finalidade identificar o criador das definições e das gerações de XML. Figura 2.7 – Definição da tabela FUNCIONARIOS Tabela PORTAIS Esta tabela tem a mesma finalidade que a tabela FUNCIONARIOS, sendo usada para identificar os portais que usam o sistema. Esta tabela indica também o REFRESH_TIME de cada portal que é usado na implementação de um mecanismo de cache de XML que será abordado noutro capítulo deste relatório. Figura 2.8 – Definição da tabela PORTAIS 10 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Tabela GERACOES_XML Nesta tabela são guardados o documento XML gerado e a query SQL que foi usado na sua geração. É de salientar também o campo VALIDA que tem como finalidade testar a validade ou não da informação armazenada. A definição usada para gerar o documento XML pode ser alterada, invalidando todas as gerações realizadas até à data para essa definição. Figura 2.9 – Definição da tabela GERACOES_XML Tabela PARAMETROS_GERACAO Esta tabela armazena os parâmetros associados a cada geração de XML. A finalidade é utilizar esta informação para optimizar o funcionamento do sistema, como será mostrado noutro capítulo deste documento. Figura 2.10 – Definição da tabela PARAMETROS_GERACAO 11 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 3. Interface Web Neste capítulo é analisada a interface web desenvolvida para a biblioteca de definições. Esta interface está dividida em dois grupos, a interface de administração e a interface de utilização. Para ter acesso à interface web da biblioteca de definições, o utilizador tem que se autenticar introduzindo o seu código e password no formulário de controlo de acesso, usado no SiFEUP. Figura 3.1 – Controlo de acesso 3.1. Interface de Administração Depois de se autenticar como tal, um administrador tem acesso a todas as funcionalidades da interface, podendo aceder às várias páginas muito facilmente através do menu de opções disponível em todas as páginas. 12 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 3.1.1. Criação de Definições O formulário para criar uma nova definição é interactivo, sendo alguns campos preenchidos automaticamente. Inicialmente é pedida a introdução dos dados iniciais, sendo os campos para introdução das colunas da definição, apenas mostrados após a escolha da primeira tabela. À medida que o administrador necessita de inserir mais colunas o formulário vai crescendo. Figura 3.2 – Criação de Definição Figura 3.3 – Introdução das colunas da definição 13 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Quando o administrador tenta submeter uma definição são feitas várias validações, sendo-lhe indicado o que deve corrigir (em caso de insucesso), ou que a operação foi efectuada (em caso de sucesso). Figura 3.4 – Exemplo de validação de dados Figura 3.5 – Inserção correctamente efectuada 14 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 3.1.2. Alteração e Eliminação de Definições O administrador tem a possibilidade de visualizar todas as definições existentes no sistema. Figura 3.6 – Pesquisa de Definições No ecrã de selecção, clicando numa definição da lista, abre-se o formulário de criação de definições com toda a informação relativa à definição em causa. O administrador pode assim alterar a definição e voltar a submeter, ou eventualmente eliminar a definição. Figura 3.7 – Possibilidade de eliminar ou alterar Definição 15 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Quando a definição que se pretende alterar faz parte de alguma junção, existem restrições às alterações possíveis. Figura 3.8 – Restrições às alterações Eliminar uma definição implica eliminar toda a informação associada a essa definição, eventuais junções e gerações de XML. Figura 3.9 – Confirmação de eliminação de Definição 16 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 3.1.3. Junções Para criar junções existe o seguinte formulário, também interactivo. Figura 3.10 – Criação de Junções Para as junções estão também disponíveis todas as funcionalidades anteriormente descritas para as definições, como por exemplo, eliminar e alterar junções. 3.1.4. Geração de XML O documento XML pode ser gerado de duas formas, usando o formulário que a interface disponibiliza para o efeito, ou chamando directamente o procedimento que gera o documento XML com os respectivos parâmetros. O formulário de geração de XML foi construído de forma a que o utilizador não necessite de ter quaisquer conhecimentos de base de dados para utilizá-lo, limitando-se a especificar a informação que pretende obter. A segunda forma de gerar o documento XML é usada pelos portais para obter a informação que necessitam, recebendo o XML respectivo. 17 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Figura 3.11 – Formulário de geração de XML Figura 3.12 – XML gerado 18 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições O administrador pode ainda de visualizar todas as gerações de XML existentes no sistema e eliminar aquelas que já não se encontrem válidas. Figura 3.13 – Pesquisar gerações de XML Figura 3.14 – Eliminação de gerações inválidas 19 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 3.2. Interface de Utilização Na interface de utilização apenas estão presentes as funcionalidades relacionadas com a geração e visualização de XML. O utilizador apenas pode gerar XML e visualizar gerações que eventualmente já existam no sistema. Figura 3.15 – Pesquisa de gerações de XML Figura 3.16 – Geração de XML 20 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 4. Implementação Neste capítulo é feita uma análise dos procedimentos criados para suportar o sistema de biblioteca de definições. O ambiente de desenvolvimento usado foi o Quest SQL Navigator. Apresenta-se uma listagem de todos os procedimentos e funções usadas, seguida de uma breve análise de alguns tópicos relevantes, tais como validações e optimização. 4.1. Procedimentos e Funções 4.1.1. Aspecto da interface web Nome cabecalho menu_opcoes botoes apresentar_mensagem Descrição Apresenta cabeçalho das páginas web Apresenta menu de opções Apresenta botões de navegação Apresenta mensagem informativa Tipo Procedimento Procedimento Procedimento Procedimento Descrição Controlo de acesso ao sistema Tipo Função Descrição Cria formulário para as definições Submete formulário de definições Permite pesquisa de definições Tipo Procedimento Procedimento Procedimento 4.1.2. Autenticação Nome autenticacao 4.1.3. Definições Nome form_definicao submeter_definicao sel_definicao 21 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 4.1.4. Junções Nome form_juncao submeter_ juncao sel_ juncao Descrição Cria formulário para as junções Submete formulário de junções Permite pesquisa de junções Tipo Procedimento Procedimento Procedimento Descrição Cria formulário para gerar XML Gera o XML Permite pesquisar gerações de XML Apresenta XML Elimina gerações inválidas Tipo Procedimento Procedimento Procedimento Procedimento Procedimento 4.1.5. Geração de XML Nome form_geraXML gera_XML sel_geracoes apresentar_XML Elimina_geracao 4.2. Análise dos Procedimentos mais Relevantes Nesta secção é feita uma breve análise a alguns dos procedimentos, referindo as principais funcionalidades que implementam. 4.2.1. Procedimento form_definicao Este procedimento é usado sempre que se pretende criar, alterar ou eliminar alguma definição. São usados formulários com elementos do tipo hidden e funções de javascript para o preenchimento automático de alguns campos do formulário e para passar parâmetros para outros procedimentos. Quando se trata de criar uma nova definição o formulário é mostrado em branco, quando se trata de uma operação sobre uma definição já existente o formulário é carregado com os valores respectivos, valores esses obtidos da base de dados. 22 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 4.2.2. Procedimento submeter_definicao Este é o procedimento para realizar todas as operações na base de dados, no que diz respeito ás definições. Para além disso, é também neste procedimento que são feitas todas as verificações e operações necessárias, para garantir a consistência dos dados inseridos na base de dados. De seguida são referidas as verificações feitas por este procedimento. - Obrigar o preenchimento de campos obrigatórios. - Obrigar o preenchimento de campos, se algum campo relacionado também o estiver. - Verificar se as tabelas indicadas no campo FROM são válidas. - Impedir repetição de alias nas colunas de uma definição. - Impedir alteração de campos fundamentais em colunas usadas como condição de junção. - Pedir confirmação sempre que se trata de uma operação de eliminação de definição. - Avisar o utilizador da existência de junções e/ou gerações de XML associadas a uma definição que pretende eliminar. - Marcar como inválidas, todas as gerações de XML associadas a uma definição, sempre que está é alterada. 4.2.3. Procedimento sel_definicao Este procedimento usa um cursor para retirar da base de dados a listagem de todas as definições e apresenta-a numa página web de pesquisa de definições com os respectivos botões de navegação. 4.2.4. Procedimento form_juncao Este procedimento é similar ao procedimento form_definicao, sendo responsável pela obtenção dos dados a partir da base de dados no caso de junções já existente, e pela passagem de parâmetros para outros procedimentos. 23 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 4.2.5. Procedimento submeter_juncao Tal como no caso das definições, para inserir uma junção na base de dados é necessário fazer algumas verificações para garantir a consistência dos dados. De seguida são listadas as verificações feitas por este procedimento. - Obrigar preenchimento de campos obrigatórios. - Impedir inserção de junções sem condições de junção. - Impedir definição de condições de junção entre colunas com tipo de dados diferentes. 4.2.6. Procedimento form_geraXML Este procedimento é responsável pela passagem dos parâmetros para os procedimentos que vão gerar o documento XML. Para isso é usado um cursor, que retira da base de dados todas as colunas que podem ser seleccionadas e/ou parametrizadas. Essa informação é usada para criar o formulário que é usado pelo utilizador para escolher a informação que pretende obter no documento XML. 4.2.7. Procedimentos gera_XML Este procedimento recebe os parâmetros do formulário onde o utilizador escolhe a informação que pretende, e usa-os para construir a pergunta à base de dados (query SQL) que vai ser usada para gerar o documento XML. Além disso este procedimento insere informação relativa à geração de XML actual, na base de dados, logo faz também algumas verificações que são listadas a seguir. - Obrigar selecção de pelo menos uma coluna. - Obrigar preenchimento de parâmetros obrigatórios. - Impedir a introdução de valores não numéricos para parâmetros do tipo NUMBER. 24 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 4.2.8. Procedimento apresenta_XML Este procedimento utiliza a query SQL construída pelo procedimento gera_XML para gerar o documento XML, utilizando o procedimento XMLGen existente no ambiente do SiFEUP . Depois de gerado, é guardado na base de dados e é apresentado numa página web. 4.3. Alguns Aspectos de Optimização de Funcionamento do Sistema 4.3.1. Criação da Tabela PARAMETROS_GERACAO Para evitar que cada vez que fosse gerado um documento XML tivesse que se acrescentar uma nova entrada na tabela GERACOES_XML , foi criada a tabela PARAMETROS_GERACAO que guarda os parâmetros que foram usados em cada uma das gerações. Assim, o procedimento que insere as gerações na base de dados, sempre que é chamado verifica se já existe uma geração para aquela definição, com aqueles parâmetros, e em caso afirmativo apenas actualiza a informação. Isto evita o crescimento desnecessário da tabela GERACOES_XML e evita que se guarde a mesma informação várias vezes. 4.3.2. Cache de XML Quando a biblioteca de definições é utilizada por um portal para obter informação, uma definição pode ser usada de uma maneira sistemática com os mesmos parâmetros. Por exemplo, o futuro portal da LEIC para mostrar uma lista dos seus docentes usaria uma definição “Docentes” que lista os docentes de um curso, com o parâmetro CURSO preenchido com o valor LEIC. Sempre que alguém através do portal, quisesse visualizar a lista de docentes os parâmetros seriam exactamente os mesmos. O documento XML seria gerado a cada acesso, o que tornava o processo de visualização da lista de docentes mais lento. Para além disso, originaria uma sobrecarga adicional na base de dados do SiFEUP, pois cada vez que o documento XML é gerado, 25 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições é executada a query SQL, que pode ser complexa. Isso seria uma desperdício de recursos, pois na maioria dos casos a informação obtida seria exactamente a mesma. Para evitar esta situação foi criada a tabela PORTAIS que tem uma coluna onde é definido, para cada portal, o período de tempo após o qual a informação deve ser actualizada (REFRESH_TIME). O sistema, antes de gerar o documento XML verifica se já existe uma geração com os mesmos parâmetros. Se existe alguma geração nessas condições, soma-se a data da geração com o valor de REFRESH_TIME do portal, se o valor obtido for superior à data actual o documento XML volta a ser gerado, caso contrário é exportado o documento que está guardado na base de dados. 26 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 5. Exemplos de Aplicação 5.1. XML, XSL e CSS O XML (eXtensible Markup Language) separa rigorosamente o conteúdo da apresentação, ao contrário do HTML (HyperText Markup Language). XML é uma representação de dados estruturados em formato texto, ou seja, um documento XML contém apenas e só informação. Para apresentar a informação, por exemplo num browser, é necessário formatar o seu conteúdo, usando para esse efeito uma folha de estilo (XSL ou CSS). Uma folha de estilo CSS (Cascading Style Sheet) usa o conteúdo documento XML e apresenta-o de uma determinada forma. Uma folha de estilo XSL (eXtensible Stylesheet Language), apesar da sua maior complexidade, apresenta outras vantagens, permite a reordenação da informação, e seleccionar a informação que se pretende apresentar. 5.2. Portal LEIC Para demonstrar a utilidade da biblioteca de definições e do uso do XML para exportar a informação, foi construído uma página web bastante simples, que pretende simular o futuro portal da LEIC. O portal usa a biblioteca de definições para obter o documento XML com a informação que pretende disponibilizar, e formata esse documento com uma folha de estilo XSL. A folha de estilo usada para formatar o documento é local ao portal, a biblioteca de definições exporta unicamente o documento XML. Desta maneira o portal tem a possibilidade de apresentar a informação da forma que desejar, podendo inclusive seleccionar do documento XML apenas a informação que pretende apresentar. Nesta secção são mostrados dois exemplos. Num dos exemplos é apresentada na página HTML todo o conteúdo do documento XML criado pela biblioteca de definições. No segundo exemplo é mostrada apenas alguma da informação contida pelo documento XML. 27 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Neste primeiro exemplo foi usada a definição “Docentes” que permite obter os dados de todos os docentes de um curso num determinado ano lectivo. No exemplo a definição foi parametrizada de forma a fornecer a sigla, o nome, e o e-mail de todos os docentes a leccionar na LEIC no ano lectivo de 2002/2003. Figura 5.1 – XML exportado pela biblioteca de definições Figura 5.2 – XML formatado com XSL e apresentado no portal 28 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Usando o mesmo documento XML obtido da biblioteca de definições pode obter-se uma visualização diferente, bastando para isso usar uma folha de estilo diferente. Figura 5.3 – XML formatado com XSL e apresentado no portal 29 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Como segundo exemplo foi usada a definição “Cadeiras” que exporta a informação relativa a todas as cadeiras de um curso. A definição foi parametrizada de forma a fornecer o nome, o ano, o semestre e a página web de cada uma das cadeiras da LEIC. Figura 54 – XML exportado pela biblioteca de definições Figura 5.5 – XML formatado com XSL e apresentado no portal 30 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Neste segundo exemplo não é apresentada toda a informação contida no documento XML, é apenas apresentado o nome da cadeira e a respectiva página web, apesar de o documento XML conter também o ano e o semestre de cada cadeira. Esta formatação é executada pela XSL que se ilustra na figura seguinte. Note-se que a folha de estilo XSL usa uma outra folha de estilo CSS (leic.css) para formatar a apresentação (tipo de letra, fonte,etc). Figura 5.6 – Documento XSL Os utilizadores do portal, quando tentarem visualizar a informação num browser, algures na Internet, receberão apenas páginas HTML, a formatação dos documentos XML é feita pela portal. O diagrama seguinte ilustra o funcionamento acima referido. SiFEUP XML Portal LEIC Pedido de XML HTML Utilizador do portal na Internet Pedido de página Figura 5.7 – Fluxo de Informação 31 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 5.3. Exemplo de Integração no SiFEUP Nesta secção é dado um exemplo de utilização da aplicação desenvolvida no ambiente do SIFEUP. Usou-se a definição “Pessoal_activo” para criar a opção “Exportar Pessoal Activo em XML” na página de pesquisa de informação sobre pessoal do SiFEUP. Figura 5.8 – Exemplo de integração no SiFEUP 32 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 6. Conclusões 6.1. Trabalho Realizado Os objectivos do trabalho foram alcançados, foi construída uma biblioteca de definições, que permite exportar conteúdos do SiFEUP de uma forma eficiente. Com esta nova aplicação, evita-se a necessidade de ter construir a query SQL, e disponibilizar os conteúdos, sempre que alguém necessita de alguma informação. O utilizador não necessita de ter quaisquer conhecimentos sobre base de dados para poder usar a biblioteca de definições, pois a interface de utilização está construída de forma a que o utilizador se limite a especificar a informação que pretende obter. A biblioteca de definições também esta preparada para responder a utilizadores sistemáticos, como por exemplo portais. Para esse efeito tem implementado um mecanismo de cache de XML, que evita o uso desnecessário de recursos. Criando definições genéricas e abrangentes, sempre que algum pedido de informação for feito, basta efectuar uma nova geração da definição com os parâmetros adequados. Outra grande vantagem que a biblioteca de definições oferece aos utilizadores, é facto de a exportação dos conteúdos ser feita usando XML.O documento XML, sendo uma representação estruturada da informação, permite ao utilizador uma enorme flexibilidade, podendo ser formatado da maneira mais conveniente antes de ser apresentada a informação. Uma das formas de formatar XML que apresenta mais potencialidades é o XSL, permite para além da formatação do aspecto, a reordenação e selecção de conteúdos. 6.2. Perspectivas de Evolução do Projecto A nível de perspectivas de evolução do projecto, sugerem-se as seguintes: - Implementar a geração de XML de junções de definições. - Expandir o modelo de dados e a interface de modo a suportar queries com maior complexidade. 33 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 6.3. Experiência Pessoal A nível pessoal, a realização deste projecto permitiu alargar bastante os conhecimentos sobre as tecnologias usadas, bem como aumentar a aptidão para a programação. Um dos principais objectivos da disciplina, no âmbito da qual se inseriu este projecto, é aproximar os alunos da realidade do mundo do trabalho. Este objectivo foi plenamente alcançado, tendo o aluno realizado o projecto integrado num dinâmico grupo de trabalho, na Unidade de Sistemas de Informação do Centro de Informática Professor Correia de Araújo. 34 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Bibliografia e Referências [1].FEUERSTEIN, Steven – Oracle PL/SQL Programming, O’Reilly & Associates, Inc., 1995 [2].MUSCIANO, Chuck; KENNEDY, Bill – HTML: The Definitive Guide, O’Reilly & Associates, Inc., 1997 [3].HEITLINGER, Paulo – O guia prático da XML, Centro Atlântico 2001 [4].SILVA, Alberto; VIDEIRA, Carlos – UML, Metodologias e Ferramentas Case, Centro Atlântico 2001 [5].FLANNAGAN, David – Javascript: The Definitive Guide, O’Reilly & Associates, Inc., 1997 35 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Anexo A: Relatório de Especificação de Requisitos 36 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Projecto Seminário Trabalho Final de Curso LEEC 2002-2003 SILEIC Relatório de Especificação de Requisitos Trabalho realizado por: Gabriel António Lopes Ribeiro ee98206 37 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições Índice 1. Introdução _________________________________________________________ 1.1. Objectivo ______________________________________________________ 1.2. Enquadramento _________________________________________________ 1.3. Riscos ________________________________________________________ 2. Requisitos do Sistema________________________________________________ 2.1. Descrição geral dos requisitos do Sistema ____________________________ 2.2. Descrição detalhada dos requisitos mínimos do sistema __________________ 2.2.1. Gestão de Utilizadores ________________________________________ 2.2.2. Plano de Estudos_____________________________________________ 2.2.3. Inscrição em disciplinas e turmas ________________________________ 2.2.4. Ficha do Aluno ______________________________________________ 2.2.5. Folha de avaliação ___________________________________________ 2.2.6. Foros de Discussão ___________________________________________ 2.2.7. Sistema de Notícias __________________________________________ 2.2.8. Vitrina Electrónica ___________________________________________ 2.2.9. Gestão de Documentação ______________________________________ 2.2.10. Website de Estágios _________________________________________ 2.3. Descrição dos Requisitos não Funcionais do Sistema ____________________ 38 39 39 39 39 40 40 41 41 41 41 42 42 42 42 43 43 44 45 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 1. Introdução 1.1. Objectivo Desenvolver um sistema de informação para um curso da faculdade de engenharia da universidade do porto, especificamente para a LEIC. Sistema esse que deve ter uma interface simples e intuitiva e possuir funcionalidades inovadoras em relação aos sistemas já existentes, facilitando o acesso à informação e o trabalho de todas as pessoas ligadas à licenciatura. 1.2. Enquadramento Devido ao crescimento em número de pessoas e de cadeiras da LEIC tornou-se necessário a criação de um sistema de informação que disponibilize um melhor acesso a toda a informação sobre o curso e que disponibilize também facilidades na avaliação, entrega de trabalhos, comunicação entre utilizadores, etc. Como existe já na faculdade um sistema de informação (SiFEUP, que cobre algumas das funcionalidades necessárias), pretende-se com este projecto não duplicar a informação, mas sim tirar partido das potencialidades do SiFEUP e implementar novas e úteis funcionalidades. Com este trabalho espera-se obter um portal específico para a LEIC, organizando a informação referente à LEIC existente no SiFEUP e disponibilizando funcionalidades que contribuam para o melhor funcionamento da licenciatura e do trabalho de todos a ela associados. 1.3. Riscos Este projecto engloba vários riscos, dos quais se destacam os seguintes: - Grande dimensão do sistema; - Tempo limitado para a execução do projecto; 39 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 2. Requisitos do Sistema 2.1. Descrição geral dos requisitos do Sistema Este sistema é muito vasto podendo ser dividido em várias partes que serão mencionadas em seguida e analisadas com mais pormenor adiante neste documento: - Este sistema deve suportar vários tipos de utilizadores, cada um desses tipos com permissões distintas para aceder ás funcionalidades do sistema, sendo estas sujeitas a verificação; - Manter utilizadores e grupos de utilizadores, autenticando o acesso dos mesmos ao sistema; - Manter informação actualizada sobre os cursos e planos de estudo; - Permitir registar a inscrição de alunos em disciplinas e turmas; - Manter uma ficha de aluno detalhada, com informação de classificações parciais e faltas de cada aluno; - Possuir sistema de foros de discussão e notícias; - Possuir um sistema de vitrina electrónica onde possam ser afixados classificações e informações importantes; - Permitir a submissão de entregáveis relativos a trabalhos de grupo e posterior consulta e anotação por parte dos docentes; - Possuir um website específico para os estágios da LEIC; 40 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 2.2. Descrição detalhada dos requisitos mínimos do sistema Nesta secção será feita uma descrição mais pormenorizada das funcionalidades desejadas para o sistema que foram enumeradas na secção anterior. 2.2.1. Gestão de Utilizadores O sistema deve suportar quatro tipos de utilizadores: - Gestores, responsáveis por gerir e configurar o sistema; - Docentes, responsáveis pela informação relativa às cadeiras que leccionam, planos de aulas, planos de avaliação, foros de discussão, etc; - Alunos, têm acesso a informação relativa às cadeiras que frequentam, participam em foros de discussão, submetem trabalhos, etc; - Público, consultam informação pública; O acesso dos utilizadores ao sistema deve ser autenticado e verificadas as suas permissões. 2.2.2. Plano de Estudos O sistema deve permitir a visualização do plano de estudos do curso com a seguinte informação: - Disciplinas por ano e por semestre; - Créditos de cada disciplina; - Disciplinas optativas; - Link para página referente à disciplina; 2.2.3. Inscrição em disciplinas e turmas O sistema deve permitir aos alunos inscreverem-se em disciplinas e turmas (funcionalidade existente no SiFEUP). 41 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 2.2.4. Ficha do Aluno O sistema deve disponibilizar ao aluno uma ficha de aluno detalhada, onde deve constar a seguinte informação: - Nota final em cada disciplina quando disponível; - Notas das avaliações parciais (mini-testes, relatórios, etc.) em cada disciplina; - Tipo de frequência; - Faltas do aluno em cada disciplina; 2.2.5. Folha de avaliação O sistema deve permitir que os docentes produzam, no início de cada semestre, uma folha de avaliação onde especificam os itens de avaliação. Essa especificação pode alternativamente ser apresentada na ficha de disciplina. 2.2.6. Foros de Discussão O sistema deve disponibilizar foros de discussão com as seguintes características: - Possibilidade de criar foros privados (por exemplo um foro específico para um grupo de utilizadores, uma disciplina, uma comissão); - Possibilidade de atribuir permissões distintas aos utilizadores; - Permitir arquivar o foro quando retirado do sistema; 2.2.7. Sistema de Notícias O sistema de notícias deve também permitir: - Definir prioridades; - Definir prazos de validade; - Definir grupos alvo aos quais se dirigem notícias específicas; - Notificar via e-mail os utilizadores pertencentes a grupos alvo de notícias prioritárias; - Arquivar notícias; 42 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 2.2.8. Vitrina Electrónica O sistema deve possuir uma página onde os docentes e a administração possam afixar classificações e outras informações úteis. Esta secção do sistema deve: - Permitir o acesso á informação apenas a utilizadores devidamente autenticados e com permissões para o fazerem; - Permitir que os utilizadores possam pesquisar a informação que querem visualizar (classificações, informações, ano, semestre, etc); 2.2.9. Gestão de Documentação O sistema deve disponibilizar um módulo de gestão documental com as seguintes características: - Deve permitir a submissão de trabalhos por parte dos membros de grupos definidos (várias versões do mesmo trabalho); - Deve mostrar os prazos estabelecidos para os trabalhos; - Deve registar toda a informação (nome do documento, nome do submissor, data de submissão, etc.); - Deve permitir ao docente anotar o trabalho, atribuindo-lhe uma classificação e/ou um comentário; - Deve permitir a alteração das anotações por parte dos docentes; - Deve registar a informação referente ao anotador e a data de anotação; - Deve permitir aos alunos a visualização dos trabalhos e das anotações, mas apenas no caso dos trabalhos por si produzidos (ou pelo seu grupo de trabalho); - Permitir o acesso aos trabalhos também aos docentes das respectivas disciplinas; - O sistema deve armazenar os documentos num sistema de ficheiros local ao SiLEIC e a restante informação numa base de dados; 43 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 2.2.10. Website de Estágios O sistema deve possuir uma secção destinada a processar a informação referente aos estágios da LEIC. Essa secção deve disponibilizar as seguintes funcionalidades: - Permitir a submissão de propostas de estágio; - Permitir aos alunos candidatarem-se aos estágios; - Permitir o fecho das candidaturas e da submissão de propostas; - Disponibilizar informação acerca das propostas de estágio e regulamentos; - Permitir a colocação de dados pessoais por parte dos alunos (curriculum vitae) e áreas de interesse; - Informar acerca das atribuições de estágios; 44 Exportação de conteúdos do SiFEUP para XML através de uma biblioteca de definições 2.3. Descrição dos Requisitos não Funcionais do Sistema A informação deve ser partilhada pelo SiLEIC e pelo SiFEUP, não deve existir duplicação de informação. Quando alterada a informação no SiFEUP, deve automaticamente ser alterada também no SiLEIC. 45