Felipe Pinho Alencastre
1 Universidade de Lisboa Faculdade de Ciências Departamento de Informática Desenvolvimento de motor de BI (Business Intelligence) Eduardo Filipe Ferreira Andrade Mestrado em Engenharia Informática 2007
3 Universidade de Lisboa Faculdade de Ciências Departamento de Informática Desenvolvimento de motor de BI (Business Intelligence) Eduardo Filipe Ferreira Andrade Projecto orientado pela Prof. Dra. Ana Luisa Respício e co-orientado pelo Eng. Nuno Miguel Pombo Rodrigues Mestrado em Engenharia Informática 2007
5 Declaração Eduardo Filipe Ferreira Andrade, aluno n o da Faculdade de Ciências da Universidade de Lisboa, declara ceder os seus direitos de cópia sobre o seu Relatório de Projecto em Engenharia Informática, intitulado Desenvolvimento de motor de BI (Business Intelligence), realizado no ano lectivo de 2006/2007 à Faculdade de Ciências da Universidade de Lisboa para o efeito de arquivo e consulta nas suas bibliotecas e publicação do mesmo em formato electrónico na Internet. FCUL, 28 de Setembro de 2007 Eng. Nuno Miguel Pombo Rodrigues, supervisor do projecto de Eduardo Filipe Ferreira Andrade aluno da Faculdade de Ciências da Universidade de Lisboa, declara concordar com a divulgação do Relatório do Projecto em Engenharia Informática, intitulado Desenvolvimento de motor de BI (Business Intelligence). Lisboa, 28 de Setembro de 2007
7 Resumo A informação, como factor que sustenta o conhecimento e o seu tratamento, é de extrema importância pois esta constitui parte integrante de processos de trabalho e decisões que aproximam as organizações dos seus propósitos. Os sistemas de Business Intelligence utilizam os dados disponíveis nas organizações para disponibilizar informação relevante para a tomada de decisão, combinando um conjunto de ferramentas de interrogação e exploração dos dados com ferramentas que permitem a geração de relatórios, para produzir informação que será posteriormente utilizada pela gestão de topo das organizações, no suporte à tomada de decisão. Este projecto consiste no estudo de alguns produtos de exploração de dados que utilizam a tecnologia OLAP (On-line Analytical Processing) e posterior integração destes produtos (Mondrian & jpivot) numa aplicação comercial. O objectivo desta integração é enriquecer a aplicação dotando-a de funcionalidades de exploração de dados que permitem aos utilizadores da aplicação ter um acesso facilitado à informação contida no sistema operacional. PALAVRAS-CHAVE: Business Intelligence, OLAP, Mondrian, jpivot, Java i
9 Abstract Information play a role of high importance in the process of knowledge aquisition, so that good decisions can be taken to evolve in a positive manner. Business Intelligence systems use the data available in the organizations to share relevant information, combining a set of query and analysis tools, in order to produce information that may be used afterwards by the higher levels of the organization supporting the decision making processes. This project relies on the study of some analysis software tools that use OLAP (On-line Analytical Processing) and subsequent integration of this tools (Mondrian & jpivot) in another software product. The main purpose of this integration is to enrich the application, endowing it with features of data analysis allowing users to access information that relies on the operational system. KEYWORDS: Business Intelligence, OLAP, Mondrian, jpivot, Java iii
11 Conteúdo Lista de Figuras vii Lista de Tabelas viii 1 Introdução Motivação Objectivos Organização do documento O Projecto A Instituição O período de integração e a fase inicial Framework GEDI Arquitectura da framework Breve descrição das tecnologias utilizadas Comunicação das Java Applets Desenvolvimento Equipa de desenvolvimento Software utilizado Metodologia e Calendarização do projecto Conceitos Conceitos de BI Avaliação de produtos BI Oracle BI Plataforma Pentaho BI Mondrian & jpivot Mondrian jpivot Cubos Desenho de cubos Arquitectura Exploração de dados dos cubos v
12 4.3.1 Controlo de concorrência Gráficos Conclusão Principais dificuldades Conclusão Trabalho Futuro Acrónimos 43 Índice remissivo 45 Bibliografia 46 6 Anexos Anexo A Anexo B vi
13 Lista de Figuras e Tabelas Lista de Figuras 2.1 Representação gráfica da arquitectura física do sistema aplicacional Arquitectura lógica da Framework GEDI Comunicação de uma Arealist com o servidor Diagrama de classes da Arealist Arquitectura do motor OLAP - Mondrian Exemplo de interface para análise com tabela pivot e um gráfico de barras 3D (jpivot) Pentaho Report Wizard Ferramenta Spoon do produto Kettle Exemplo de inicialização do Mondrian através de uma classe Java Elementos XML do Mondrian suportados pelo ecrã de definição de cubos Modelo de dados utilizado para persistir uma definição de cubo na base de dados Ecrã de desenho dos cubos, apresentando o tabulador de identificação do cubo Ecrã de exploração dos dados, apresentando o tabulador de definição dos factos do cubo Ecrã de exploração dos dados, apresentando o tabulador de definição das dimensões do cubo Ficheiro XML contendo a definição de um cubo definido no ecrã de desenho de cubos Arquitectura lógica da Framework GEDI após integração do Mondrian & jpivot Ecrã de exploração dos dados, apresentando o tabulador de Exploração Ecrã de exploração dos dados, apresentando o tabulador de DrillThrough Ecrã de exploração dos dados, apresentando o tabulador de Gráficos. 36 vii
14 viii 4.11 Modelo de dados estendido para suportar a definição de visualizações de cubos e gráficos associados Diagrama de classes para a nova Arealist BI, desenvolvida neste projecto Quadro comparativo de funcionalidades dos produtos BI analisados Ecrã Inicial da aplicação SIAG Ecrã de desenho de cubos, apresentando o tabulador principal do cubo Ecrã de desenho de cubos, apresentando o tabulador dos factos do cubo Ecrã de desenho de cubos, apresentando o tabulador das dimensões do cubo Ecrã de exploração de cubos, apresentando o tabulador de exploração Ecrã de exploração de cubos, apresentando o tabulador de DrillThrough Ecrã de exploração de cubos, apresentando a definição do gráfico para definição do seu tipo Ecrã de exploração de cubos, apresentando o tabulador do gráfico para definição das legendas e títulos Ecrã de exploração de cubos, apresentando o tabulador do gráfico para definição dos eixos Ecrã de exploração de cubos, apresentando o gráfico com as opções escolhidas anteriormente Lista de Tabelas 2.1 Calendarização do Projecto Mapa de funcionalidades da plataforma Pentaho BI
15 Capítulo 1 Introdução 1.1 Motivação Após a conclusão do curso de Licenciatura em Engenharia Informática da Faculdade de Ciências da Universidade de Lisboa, tem-se a possibilidade de efectuar um Mestrado com carácter profissionalizante que facilita a integração dos licenciados no sector laboral. O desenvolvimento de um projecto integrado numa empresa, neste caso a empresa GEDI, culmina com a elaboração de um relatório final descrevendo o trabalho realizado e o qual será alvo de uma avaliação, sendo a meu ver, um factor importante para a vida profissional futura, a incluir no currículo profissional. Este projecto surge da necessidade de incluir uma componente de Business Intelligence num produto de software comercializado pela empresa GEDI, denominado SIAG-AP 1. O produto SIAG-AP não dispõe de interfaces de exploração avançadas que permitam ao utilizador construir uma visão multidimensional da informação, agrupando e combinando diferentes visões sobre uma área de negócio, pelo que o projecto aqui descrito, pretende colmatar as lacunas existentes e constituir uma mais-valia para o produto. Esta mais-valia traduz-se a nível de funcionalidades do produto e também pode constituir um ponto importante na apresentação do produto a potenciais clientes, apresentando-se como um factor competitivo quando comparado com outros produtos existentes no mercado. 1.2 Objectivos O objectivo consiste na integração de uma ferramenta de exploração de dados vocacionada para o Business Intelligence num produto já existente e comercializado pela GEDI. Pretende-se escolher um produto, de preferência software de código livre que reúna as condições necessárias para esta integração. Para tal é necessário analisar 1 Sistema Integrado de Apoio à Gestão para a Administração Pública 1
16 Capítulo 1. Introdução 2 vários produtos e daí escolher a ferramenta que melhor se adequa às necessidades. Os objectivos principais vão-se reflectir nas fases de análise de produtos e suas características; na escolha do produto que se adequa às necessidades e na definição da sua interligação com a framework já existente na GEDI; na implementação da ligação entre o produto escolhido e a framework. 1.3 Organização do documento Este relatório segue a estrutura indicada de seguida. No capítulo 2 é feita uma apresentação da instituição e da framework desenvolvida, sendo também descrito o planeamento, metodologia de desenvolvimento e ferramentas utilizadas na execução deste projecto. No capítulo 3 são apresentados alguns fundamentos teóricos necessários para a compreensão do trabalho realizado, bem como um estudo comparativo de vários produtos de Business Intelligence. No capítulo 4 é apresentada em detalhe a forma como os componentes de Business Intelligence foram integrados na framework em desenvolvimento na GEDI e no capítulo 5 é apresentada a conclusão do projecto.
17 Capítulo 2 O Projecto Neste capítulo descreve-se a empresa onde decorre este projecto bem como a forma como foi conduzido o período inicial do estágio. De seguida descreve-se a framework que se desenvolve na empresa e que serve de base para o produto comercializado por esta. O capítulo termina com uma descrição da equipa de desenvolvimento, das ferramentas e metodologias utilizadas sendo também apresentada a calendarização do projecto. 2.1 A Instituição A GEDI - Gabinete de Estudos e Divulgação Informática, S.A. é uma empresa fundada em 1984 e cuja actividade principal é a concepção, desenvolvimento e implementação de soluções informáticas em diferentes áreas da Administração Pública. Após um longo trabalho de investigação e identificação das necessidades junto dos serviços e organismos públicos efectuados por uma equipa constituída por técnicos especializados no desenvolvimento de soluções informáticas e de consultores de alguma forma ligados ao sector público, a GEDI, S.A. disponibiliza um conjunto de aplicações, as quais constituem uma solução global com vista à satisfação de necessidades dos diversos serviços e organismos. São cobertas pelas soluções oferecidas áreas como a gestão orçamental, contabilidade pública, gestão patrimonial, gestão de pessoal e gestão de informação. 2.2 O período de integração e a fase inicial O estágio iniciou-se em Setembro de 2006, sendo realizada uma reunião para apresentar a fase preliminar do projecto e assinar o acordo de estágio, onde foram dadas a conhecer as regras vigentes na empresa bem como o plano de trabalho inicial. Foi realizada também uma visita guiada às instalações e apresentados os colaboradores existentes na empresa, sendo distribuído um documento Manual do novo Colabora- 3
18 Capítulo 2. O Projecto 4 dor que sintetiza informações importantes sobre a estrutura da empresa e processos de trabalho. 2.3 Framework GEDI A Framework GEDI constitui actualmente o projecto de maior relevância da GEDI, S.A. e representa mais de uma década de experiência no desenvolvimento de software para a administração pública utilizando tecnologias actuais, vocacionadas para o desenvolvimento de aplicações web pretendendo ser tão modular quanto possível. O seu objectivo é fornecer uma base de desenvolvimento para novas aplicações. Actualmente encontra-se em fase de desenvolvimento a aplicação SIAG-AP - Sistema Integrado de Apoio à Gestão para a Administração Pública, que faz uso da Framework GEDI para o desenvolvimento de módulos aplicacionais. O presente projecto faz também uso desta Framework para desenvolver um novo módulo de exploração de informação, utilizando um motor de Business Intelligence Arquitectura da framework A arquitectura física do sistema aplicacional é a de uma típica aplicação vocacionada para a web, da qual se apresenta um diagrama representativo na figura 2.1: Figura 2.1: Representação gráfica da arquitectura física do sistema aplicacional Com respeito à arquitectura lógica da Framework GEDI, esta divide-se em três camadas: a camada de apresentação, a camada de negócio e a camada de dados. Cada uma destas camadas tem funções específicas e formas específicas de actuar. A arquitectura da Framework obedece ao modelo das três camadas, vulgarmente conhecido como MVC - Model-View Controller [13] e utiliza tecnologias actuais como o Apache Struts/Tiles, Spring Framework e JBoss Hibernate para as camadas de
19 5 Capítulo 2. O Projecto Figura 2.2: Arquitectura lógica da Framework GEDI apresentação, negócio e de dados, respectivamente. A utilização do modelo de três camadas permite obter modularização e flexibilidade no desenvolvimento, facilitando a configuração e adição de conteúdo à aplicação. A figura 2.2 representa um diagrama da arquitectura da Framework GEDI. Camada de apresentação A camada de apresentação é responsável por: Gerir os pedidos e as respostas para um utilizador. Providenciar a delegação de chamadas à lógica de negócio. Disponibilizar os dados de uma forma coerente ao utilizador. Executar validações de introdução de dados. Camada de negócio A camada de negócio é responsável pela: Lógica de negócio da aplicação e por validações de negócio. Gestão transaccional. Comunicação das interfaces com as outras camadas. Gestão das dependências entre objectos de negócio. Ligação entre a camada de apresentação e a camada de dados de forma a evitar a comunicação directa entre estas. Camada de dados A camada de dados é responsável pela correcta gestão de todos os dados da aplicação. As suas funções incluem:
20 Capítulo 2. O Projecto 6 Transformação da informação relacional em objectos utilizando a biblioteca Hibernate, permitindo o manuseamento de registos de uma base de dados através de objectos Java. Gravação, actualização e remoção de informação guardada num SGBD Breve descrição das tecnologias utilizadas A framework GEDI é desenvolvida utilizando a linguagem de programação Java e faz uso das frameworks descritas de seguida. Jboss Hibernate A framework Jboss Hibernate efectua o mapeamento entre tabelas de uma base de dados em esquema relacional para o modelo orientado a objectos (OO) através da introdução de objectos Java, que representam registos [1]. A relação que existe entre tabelas também é transposta para os objectos através de relações muitos-para-um onde o Hibernate acrescenta ainda a possibilidade de ter relações um-para-muitos através de conjuntos de objectos. Spring Application Framework A Spring Application Framework [9] permite instanciar objectos Java e as respectivas relações através da sua configuração em XML, conseguindo-se assim um código mais legível, uma vez que as relações entre objectos são definidas recorrendo apenas a ficheiros de configuração XML. É utilizada para inicializar, gerir e fornecer acesso aos serviços da camada de negócio. Apache Struts A Framework Apache Struts [5] utiliza o modelo de três camadas, dividindo o processamento em três componentes distintas : o modelo, o controlo e a apresentação. O modelo representa os dados da aplicação, que na framework GEDI são objectos Java, obtidos através dos serviços da camada de negócio. O controlo é conseguido através de Actions. Estas Actions são o ponto de entrada na aplicação, onde é feito o tratamento da lógica para determinada acção. As Actions pertencem à camada de apresentação da aplicação e interagem com a camada de negócio através de serviços, sendo que para cada Action existe um serviço responsável por tratar da sua lógica de negócio. A apresentação é feita pelo intermédio de JSP, sendo que os dados apresentados na JSP são obtidos através de ActionForms, construídos na componente de controlo e mapeados para a JSP automaticamente pela framework Struts. Os ActionForms são objectos Java que efectuam o mapeamento de propriedades para cada campo do formulário de HTML permitindo o seu preenchimento e tratamento de forma automática pela framework.
21 7 Capítulo 2. O Projecto Tiles A framework Tiles é utilizada para a divisão da página a apresentar no browser do cliente num conjunto de zonas que podem ser definidas recorrendo a um ficheiro XML. No caso da framework GEDI a framework Tiles é utilizada para definir uma apresentação consistente para toda a aplicação, título da página consistente com o conteúdo e no caso de existirem formulários na página, é incluído também o endereço da Action que irá tratar o formulário Comunicação das Java Applets A framework GEDI utiliza Java Applets contendo uma tabela com uma apresentação dinâmica, de modo a permitir a apresentação de listagens de dados. No contexto da framework, as Java Applets são denominadas de Arealists. Cada Arealist é executada num browser e comunica directamente com o servidor para efectuar operações de adição, remoção, edição ou listagem de dados. Estas podem ser caracterizadas como um cliente-fino no sentido em que todo o processamento de informação é efectuado no servidor, sendo a Arealist utilizada apenas para visualizar dados e para capturar eventos do utilizador sobre esses dados, para serem tratados pelo servidor. Existem dois tipos de Arealist: editáveis e não-editáveis. Uma Arealist editável permite a possibilidade de edição de campos da tabela, enquanto que uma Arealist não-editável não o permite, servindo apenas para a listagem de dados. Figura 2.3: Comunicação de uma Arealist com o servidor
22 Capítulo 2. O Projecto 8 Para cada Arealist editável presente no ecrã, existe um objecto associado no servidor (AppletContext) que mantém informação de contexto sobre a Arealist, incluindo os dados que são passíveis de serem apresentados no ecrã. A estrutura de dados que suporta esta informação é construída aquando do primeiro pedido de dados enviado pela Arealist sendo preenchida com os dados obtidos através da camada de negócio. O procedimento de solicitação de um conjunto de dados 1, pode ser descrito da seguinte forma: A Arealist comunica com o servidor enviando um tipo de operação e os atributos relevantes para essa operação, através de um objecto serialized - CommandWrapper. A classe BaseAppletAction (no servidor) trata de invocar as funções adequadas ao tratamento da operação, actualizando o AppletContext, caso seja necessário. Eventualmente, serão invocadas funções do serviço responsável para obter dados actualizados da base de dados através das funções disponibilizadas pela framework Hibernate. No tratamento destes objectos é preenchido o atributo virtualdb da instância do objecto AppletContext e é enviado o conjunto de dados para a Arealist representar, através do objecto serialized do tipo ResponseWrapper. A figura 2.3 apresenta de forma genérica, como é feita a comunicação da Arealist com o servidor. Foi necessário o estudo da forma como as Arealist estão implementadas, para que fosse possível desenvolver uma nova Arealist que estendesse a já existente, de forma a suportar os requisitos deste projecto. O diagrama de classes mais importantes que constituem a Arealist é apresentado na figura Desenvolvimento Equipa de desenvolvimento A equipa de desenvolvimento do software SIAG-AP é constituída por 9 programadores e um gestor de projecto/coordenador principal. A minha função ao integrar a equipa de desenvolvimento incluiu total responsabilidade sobre o desenvolvimento do projecto descrito neste relatório, cabendo a coordenação do desenvolvimento ao coordenador de projecto, Eng. Nuno Rodrigues. 1 A Arealist efectua pedidos de 100 registos cada de modo a evitar sobrecarga no processamento tanto da Arealist como do servidor
23 9 Capítulo 2. O Projecto Figura 2.4: Diagrama de classes da Arealist
24 Capítulo 2. O Projecto Software utilizado Para além das frameworks já descritas na secção 2.3.2, foram utilizados outros produtos de software nas fase de análise e desenvolvimento do projecto. Como ambiente de desenvolvimento integrado 2, utilizou-se o Eclipse, que é vocacionado para desenvolver aplicações oferecendo funções avançadas de edição de código, compilação e testes, principalmente na linguagem Java. Como extensão ao Eclipse, utilizou-se o MyEclipse, desenvolvido para suprir algumas lacunas na plataforma Eclipse no que respeita ao desenvolvimento de aplicações direccionadas para a web, suportando JavaServer Pages, Javascript, XML, e configurações de Apache Struts e Framework Spring. De modo a executar o projecto SIAG-AP, utilizaram-se vários servidores de aplicações: Apache Tomcat, JBoss Application Server e Oracle Application Server, bem como diferentes sistemas de gestão de base de dados relacionais (SGBD) : MySQL Community Server, Oracle 10g Database e Microsoft SQL Server. De modo a ser possível gerir os ficheiros do projecto e a permitir o controlo de versões, é utilizado um sistema de controlo de versões - CVS, o qual é utilizado para obter código actualizado, desenvolvido desde a última actualização ou persistir a alteração que um membro da equipa de desenvolvimento faz, disponibilizando as alterações para outros membros da equipa. Permite também efectuar ramos de código num dado instante temporal, facilitando a distinção entre versões de código de produção e código de desenvolvimento, permitindo a manutenção de várias versões da aplicação em simultâneo. A GEDI dispõe de uma aplicação interna (GEDIDev) utilizada para desenvolver os ecrãs, gerar classes Java e configurações da framework, facilitando o processo de desenvolvimento e mantendo um registo coerente e automatizado neste processo Metodologia e Calendarização do projecto Metodologia de desenvolvimento O desenvolvimento de software normalmente segue um conjunto de procedimentos bem definido, de forma a que haja um controlo do processo para garantir a qualidade do resultado final. As metodologias seguidas podem ser muitas, e a generalidade destas assenta em processos rígidos e burocráticos com um ênfase muito grande na fase de planeamento do sistema. Estas metodologias, dadas as suas características preditivas, não contemplam com facilidade mudanças que possam ocorrer, apresentando dificuldades na resolução de um dos problemas fundamentais dos sistemas de informação: a sua constante necessidade de evolução. 2 IDE - Integrated Development Environment
25 11 Capítulo 2. O Projecto Nos últimos anos têm surgido novas metodologias de desenvolvimento de software que têm como requisito a capacidade de suportar a evolução nos sistemas a serem desenvolvidos. Estas metodologias são conhecidas na disciplina de Engenharia de software como metodologias ágeis [2]. Estas novas metodologias pretendem ser adaptativas apresentando um equilíbrio entre o planeamento e o desenvolvimento do sistema, incluindo mecanismos para lidar com a mudança do software de modo garantir que a qualidade do mesmo não se degrada ao longo do tempo. O desenvolvimento de software na GEDI enquadra-se no âmbito das metodologias ágeis, mais concretamente nas metodologias Extreme Programming [14] e Feature Driven Development. Uma característica comum a todas as metodologias ágeis é o facto do processo de desenvolvimento ser efectuado em pequenas iterações com durações variáveis, que tipicamente vão desde 1 semana até 4 semanas. No final de cada iteração existe uma nova versão do sistema com uma nova funcionalidade implementada. Deste modo, é possível avaliar-se o sistema e fornecer retro-alimentação à equipa de desenvolvimento, bem como instalar as componentes testadas e formar os utilizadores. Para além das vantagens apresentadas o uso de metodologias ágeis faz uso da reutilização e reformulação (refactoring) do código desenvolvido, permitindo entre iterações eliminar redundâncias introduzidas e adaptar a arquitectura do sistema a novos requisitos. Todas as semanas, existe uma pequena reunião com o coordenador de projecto, com a finalidade da discussão do estado do projecto, dos objectivos definidos e alcançados, bem como definição das tarefas para essa semana. De modo a manter um registo do trabalho realizado, utiliza-se uma ferramenta de registo das tarefas realizadas e o tempo despendido para cada uma. Calendarização do projecto Tarefa Descrição Inicio Final Duração 1 Instalação de software de trabalho Sep 11 Sep 11 1d 2 Investigação sobre ferramentas existentes Sep 12 Sep 22 9d no mercado 2.1 Investigação recorrendo à Internet Sep 12 Sep 15 4d 2.2 Elaboração de um documento Sep 18 Sep 20 3d 2.3 Elaboração de uma apresentação Sep 21 Sep 22 2d 3 Levantamento de funcionalidades dos produtos Sep 25 Sep 29 4d 4h
26 Capítulo 2. O Projecto Instalação dos produtos Oracle BI EE e Sep 25 Sep 26 1d 4h Pentaho BI 3.2 Elaboração de um documento Sep 26 Sep 29 3d 4 Desenho de diversos modelos de análise Sep 29 Nov 15 33d 4.1 Pentaho BI Sep 29 Oct 12 9d Pentaho BI - Análise de dados recursos Sep 29 Oct 11 8d humanos Pentaho BI - Mondrian OLAP Server e Oct 12 Oct 12 1d jpivot 4.2 Oracle BI EE Oct 13 Nov 15 24d Oracle BI EE - Análise de dados de recursos Oct 13 Oct 26 10d humanos Oracle BI EE - Análise de dados orçamentais Oct 27 Nov 7 8d Oracle BI EE - Análise de dados - vendas Nov 8 Nov 15 6d e compras 5 Formação Framework GEDI Oct 11 Oct 11 1d 6 Familiarização com a Framework Nov 16 Nov 20 3d 7 Elaboração do Relatório Preliminar Nov 21 Nov 27 5d 8 Funcionalidade de desenho de cubos Nov 28 Dec 15 14d 8.1 Definição do modelo de dados para suportar Nov 28 Nov 29 2d definição do cubo 8.2 Desenho da interface de definição de cubos Nov 30 Dec 1 2d 8.3 Construção do XML de definição de cubos Dec 4 Dec 15 10d (Mondrian) 9 Funcionalidade de exploração de cubos Dec 18 Mai d 9.1 Interface de exploração de cubos (applet) Dec 18 Fev 28 53d - Pivot Table Desenvolvimento Dec 18 Fev 16 45d Testes Fev 19 Fev 28 8d 9.2 Interface de exploração de cubos - Gráficos Mar 1 Mai 14 53d Desenvolvimento Mar 1 Mai 2 45d Testes Mai 3 Mai 14 8d 10 Elaboração de portlets para inclusão num Mai 15 Jun 11 20d portal 10.1 Desenvolvimento Mai 15 Mai 28 10d 10.2 Testes Mai 29 Jun 11 10d 11 Elaboração do Relatório final e apresentação Jun 12 Jul 20 29d Tabela 2.1: Calendarização do Projecto A Tabela 2.1 apresenta a calendarização inicial do projecto. Os prazos estipulados
27 13 Capítulo 2. O Projecto foram cumpridos com pequenos desvios controlados de modo a manter o estado global do projecto coerente com a calendarização inicial, no entanto, a tarefa n o. 10 sofreu um atraso no seu início de cerca de 1 mês. Este desvio deveu-se ao facto de as tarefas n o s. 8 e 9 se terem prolongado mais do que o previsto pois foram desenvolvidas algumas funcionalidades adicionais que não estavam previstas inicialmente.
29 Capítulo 3 Conceitos Este capítulo inicia-se com uma descrição de vários conceitos de BI. Em seguida, apresenta-se uma descrição de alguns produtos de BI que foram analisados. Destes produtos analisados foram escolhidos para uma análise e utilização mais detalhada os produtos Oracle BI e Pentaho BI Platform. Do produto Pentaho BI Platform foram escolhidas as componentes Mondrian e jpivot, para serm integradas no SIAG-AP. Estes produtos são descritos no final do capítulo. 3.1 Conceitos de BI De modo a compreender o trabalho realizado, é necessário compreender alguns conceitos importantes relacionados com a área do Business Intelligence. Em seguida são apresentados os conceitos mais importantes de uma forma sucinta, que podem ser consultados em maior detalhe em [11]. OLAP O termo OLAP tem origem num artigo escrito por E.F. Codd [3], quando este definiu regras para a criação destas aplicações. O conceito OLAP relaciona-se com análise e consolidação de dados, efectuando processamento analítico do mesmo, permitindo a visualização de informação a partir de muitas perspectivas diferentes, mantendo no entanto uma estrutura de dados adequada e eficiente. Uma aplicação OLAP deve permitir a análise multidimensional dos dados. Análise multidimensional A análise multidimensional apresenta os dados como uma matriz na qual cada dimensão é um tema ou assunto do negócio que será objecto da análise. O tempo é normalmente uma das dimensões consideradas. É uma técnica particularmente útil para inspecção, sumarização e arranjo de dados para facilitar a sua análise. A análise multidimensional utiliza factos, dimensões e hierarquias para tratar de dados 15
30 Capítulo 3. Conceitos 16 numéricos, como valores, contadores, pesos e ocorrências. Cubo É uma estrutura que armazena os dados de negócio em formato multidimensional, facilitando a sua análise. É composto por dimensões e factos, definidos através de ligações lógicas, que são normalmente mapeadas em ligações entre tabelas de uma base de dados. Dimensão Uma dimensão é uma unidade de análise com dados agrupados. Esta serve o propósito de reunir conjuntos de dados que partilhem determinadas características comuns, bem como definir os níveis de agrupamento de dados. Por exemplo, a dimensão tempo poderia ter os dados agrupados em anos, meses e dias. A dimensão localização poderia ter os dados agrupados em país, distrito e cidade. Hierarquia São representadas pela granularidade das dimensões, por exemplo, país, distrito, cidade. Existem operações em OLAP para navegar por uma hierarquia e visualizar os seus membros. Membro É um subconjunto de uma dimensão. Por exemplo, numa dimensão tempo o nível mês poderia conter os membros Janeiro, Fevereiro, Março, etc. Os membros de uma dimensão dependem sempre da granularidade definida pela hierarquia. Facto ou medida É uma dimensão especial para comparações. Os seus membros normalmente são agrupados com uma função aritmética. Tipicamente são definidos para medir outras dimensões e podem ser por exemplo valores monetários ou contagens de indivíduos. MDX MDX é um acrónimo para Multidimensional Expressions, que constitui a sintaxe que suporta a definição e manipulação de objectos e dados multi-dimensionais, especificada pela primeira vez em 1997 pela Microsoft Corporation [4]. A sua sintaxe tem semelhanças com a sintaxe do SQL.Tal como uma query na linguagem SQL, cada query MDX requer um pedido de dados (a cláusula SELECT ), um ponto de partida (a cláusula FROM ), e opcionalmente um filtro (a cláusula WHERE). A execução de uma query MDX permite a leitura de dados de um cubo construído para análise, possuindo também um conjunto de funções para a manipulação de
31 17 Capítulo 3. Conceitos dados, bem como a possibilidade de estender a sintaxe para usar funções definidas pelo utilizador. XMLA XMLA é um acrónimo para XML for Analysis e é um standard que permite a aplicações cliente comunicarem com fontes de dados multi-dimensionais. Utiliza protocolos standard - HTTP, SOAP, e XML para a comunicação e utiliza o mdxml como linguagem de query, que é baseado no MDX, com alterações de modo ser independente da fonte de dados. O facto de a arquitectura do XMLA se basear em standards para a web, resulta na possibilidade de concretizar software que pode ser desenvolvido em várias linguagens de programação, e utilizado em múltiplo hardware, plataforma ou dispositivo. 3.2 Avaliação de produtos BI A definição dos principais produtos do mercado pode ser efectuada de várias formas, seja pelas suas funcionalidades e a sua capacidade de cobrir as necessidades de uma organização, seja pela compatibilidade com a infraestrutura da organização em termos de arquitectura e escalabilidade, ou também pela capacidade de suporte por parte da empresa que comercializa o produto. A elaboração desta avaliação foi efectuada no início do projecto e pretende apresentar e comparar algumas plataformas de desenvolvimento de aplicações na área de BI, incluindo de preferência software de código livre ou de baixo custo e que permita obter bons resultados. O facto de existir actualmente muito software nesta área reclamando um conjunto cada vez maior de funcionalidades obrigou à selecção de um conjunto pequeno de produtos que pelas suas características sobressaem de entre todos os outros. Indicam-se os produtos analisados de seguida, sendo possível visualizar um quadro comparativo no Anexo A. Pentaho Open BI Suite 1.2 InetSoft Style Report Pro 8 SpagoBI JasperIntelligence BusinessObjects BI Platform Hyperion System 9 BI+ Application Builder.J2EE Cognos 8 BI Oracle BI Standard Edition
32 Capítulo 3. Conceitos Oracle BI Durante a execução do projecto foi estudado o produto Oracle BI com o objectivo de perceber as possibilidades de exploração de informação e características principais do produto. A componente escolhida foi o Oracle Siebel Analytics versão 7.3 para a qual se procedeu à definição de vários modelos de dados multi-dimensionais, permitindo por um lado, obter conhecimentos e ideias importantes para o desenvolvimento deste projecto e por outro lado dispor de um produto comercial estratégico para comercialização a organizações que necessitem de um produto de BI profissional e de nível empresarial. 3.4 Plataforma Pentaho BI É um produto direccionado para PMEs na sua vertente de software de código livre e utilização grátis, mas dispõe de uma versão Professional que, segundo os criadores, é direccionada para empresas de maior dimensão, sendo uma plataforma robusta e escalável. É uma plataforma que abrange várias áreas de Business Intelligence. A versão avaliada é a RC2. Tem na sua composição os seguintes produtos principais : Mondrian OLAP Server e jpivot Analysis Front-End JFreeReport Kettle Weka Data Mining JBoss Application server, Hibernate and Portal Eclipse Workbench and BIRT reporting components JOSSO single sign-on and LDAP integration A arquitectura da plataforma Pentaho BI assenta num motor de execução de sequências de acções que a partir de um determinado input (que tanto pode ser vindo de uma acção do utilizador, como um processo automático como seja um trabalho programado), executa uma sequência de acções bem definida permitindo interagir com os componentes que estão encarregues de obter os dados. Estas sequências de acções são definidas em XML, nas denominadas Xactions, que podem ser criadas utilizando um editor de ficheiros que suporte XML ou a ferramenta gráfica (Pentaho Design Studio) que foi desenhada como uma extensão do IDE Eclipse e é fornecida com a plataforma Pentaho BI.
33 19 Capítulo 3. Conceitos De seguida descrevem-se em detalhe alguns componentes da plataforma, de modo a fornecer uma visão global das capacidades deste produto. Mondrian OLAP Server O sistema OLAP Mondrian é um servidor desenvolvido na linguagem Java e o seu funcionamento está organizado em quatro camadas; desde a camada mais próxima do cliente até à camada em contacto com a base de dados, temos: a camada de apresentação (UI Layer), a camada dimensional (Dimensional Layer), a camada em estrela (Star Layer) e a camada de armazenamento (SQL Layer). Figura 3.1: Arquitectura do motor OLAP - Mondrian A camada de apresentação (UI Layer) determina a visão do utilizador bem como a forma como este interage através da análise (query). Existe a possibilidade de representar conjuntos de dados multi-dimensionais através de tabelas pivot, gráficos, assim como ferramentas de visualização avançadas como mapas interactivos. A segunda camada é a camada dimensional (Dimensional Layer), cujo principal objectivo é analisar, validar e executar perguntas MDX. Após a recepção do pedido MDX são obtidos os factos e dimensões associados ao modelo de dados previamente definido. A avaliação da query tem várias fases e a sua manipulação tem em conta
34 Capítulo 3. Conceitos 20 o histórico de (queries) efectuadas de forma a tirar partido de optimizações, ao invés de construir uma pergunta de cada vez que é feito um pedido. Os meta-dados descrevem o modelo dimensional e a forma como é feito o mapeamento para o modelo relacional. A terceira camada é a camada em estrela (Star Layer), pela organização dos dados em estrela, típicos da análise multidimensional), sendo esta responsável por gerir dados agregados (caso existam) e manter uma cache de membros obtidos anteriormente. A sua responsabilidade de gestão de cache consiste em criar e gerir os metadados necessários para verificar se um pedido pode ser satisfeito com dados já guardados em cache, de modo a evitar novos pedidos à base de dados. A camada de armazenamento (SQL Layer) é um SGBD (Sistema de Gestão de Bases de Dados) e é responsável por guardar dados e fornecer interfaces de inserção e obtenção de dados. A ligação do Mondrian a este SGBD é feita usando JDBC (Java Database Connectivity). A arquitectura do Mondrian é apresentada na figura 3.1. jpivot Figura 3.2: Exemplo de interface para análise com tabela pivot e um gráfico de barras 3D (jpivot) O jpivot é uma biblioteca de código-livre que pode ser utilizada como ferramenta de análise OLAP apresentando tabelas e gráficos. O utilizador pode usar as navegações típicas das ferramentas de exploração de dados. Utiliza o motor OLAP
35 21 Capítulo 3. Conceitos Mondrian como forma de obter os dados e constrói a apresentação da informação, sendo o seu objectivo típico a apresentação num web browser, como se pode observar na figura 3.2. JFreeReport O JFreeReport é uma biblioteca grátis para construção de relatórios em soluções embebidas. Possui um motor que processa uma definição de um relatório em XML e gera um relatório estático (não permitindo análise) que pode ser gravado nos formatos mais conhecidos : PDF, HTML, RTF, CSV e Microsoft Excel. A criação de ficheiros de definição de relatórios pode ser feita usando o Report Design Wizard ou o Pentaho Report Design, permitindo a criação, gestão e publicação de relatórios. Pentaho Report Definition Wizard Figura 3.3: Pentaho Report Wizard O Pentaho Report Definition Wizard constitui uma forma fácil de criar relatórios, através de um assistente. Escolhe-se a fonte de dados (JDBC, MDX, Hibernate), a estrutura do relatório e os campos e cálculos associados que deverão servir para construir o relatório e o resultado do assistente é um ficheiro de definição de relatório que pode ser usado para visualização. Destina-se principalmente a utilizadores iniciais que não estão familiarizados com uma ferramenta de reporting ou que não pretendem relatórios muito elaborados. Este assistente é apresentado na figura 3.3.
36 Capítulo 3. Conceitos 22 Pentaho Report Designer O Pentaho Report Designer é um programa que permite a criação de relatórios de uma forma fácil, permitindo uma personalização elevada com funções presentes em aplicações comerciais deste género: construção da apresentação do relatório utilizando Drag & Drop, assistentes para auxiliar a inclusão de componentes no relatório, incorporação de funções do JFreeReport que permite a pré-visualização e escolha de componentes baseado no resultado que se pretende, edição de estilos de relatório de forma a uniformizar o resultado final, entre outras funções. Kettle Figura 3.4: Ferramenta Spoon do produto Kettle O Kettle é uma ferramenta ETL 1 que permite a construção de um armazém de dados (Data Warehouse). Na sua composição dispõe de quatro ferramentas : Spoon: Corresponde a uma interface gráfica para o desenho de processos ETL permitindo definir os métodos de obtenção, agregação/manipulação e entrega dos dados, constituindo o processo inicial de carregamento de dados num armazém de dados; (na figura 3.4 apresenta-se o aspecto gráfico da aplicação). Pan: Permite a execução em cadeia de transformações definidas com a ferramenta Spoon; 1 Extract, Transform and Load
37 23 Capítulo 3. Conceitos Chef: Permite a criação de trabalhos, que normalmente são encarregues de fazer a actualização dos armazéns de dados com as suas fontes de dados, incluindo verificações de sucesso de cada tarefa e acções a tomar em caso de sucesso ou falha das mesmas; Kitchen: Ferramenta que serve para executar tarefas desenvolvidas com a ferramenta Chef de forma programada (periódica). Mapa de funcionalidades Criou-se um mapa geral evidenciando as principais funcionalidades, de modo a fornecer um guia de consulta rápido das funcionalidades do produto. Este mapa decorre da experimentação do produto e da análise da sua documentação e é apresentado na tabela 3.1. Funcionalidades da plataforma Pentaho BI RC2 Fontes de dados Fontes de dados suportadas Virtualmente todas as bases de dados que tenham driver JDBC. Múltiplas fontes de dados? Sim Necessidade de DataWarehouse Não, mas pode usar.? Possibilidade de utilização Sim. de um Data Warehouse? Ferramenta de administração Sim. (Kettle & Pentaho Design Studio) Análise Formato de apresentação PNG/JPEG gráfica Gráficos e tabelas com navegação Sim. (Member, Position, Through, Down)? Editor de query? Sim. (SQL/MDX/XMLA) Definição de fontes de dados Sim. (Eixos - linhas e colunas, Filtros) para análise online? Principais tipos de gráficos Área suportados? Barras Barras Empilhadas Linhas Circulares Opções: Horizontal/Vertical e 2D/3D Formatos de exportação Gravar como imagem. Gravar em PDF/HTML. Alertas
38 Capítulo 3. Conceitos 24 Configuração e definição Formato do resultado: Destino: Reporting Estrutura do relatório Opções do editor gráfico Assistente de criação de relatórios Formato de importação Formatos de exportação Através do Pentaho Scheduler usando XActions (não tem interface web, mas pode ser criado com o Pentaho Design Studio) Condição de disparo. Periodicidade. Definição de destinatários no caso de ou relatório. HTML/XLS/PDF/CSV/RTF. , Relatório, criação de nova XAction. Page Header Report Header Item Band Report Footer Page Footer Drag & Drop Pré-visualização do relatório. Junção de relatórios. Publicação no servidor. Sim. Pentaho Report Definition (XML) XLS/PDF/CSV/RTF/CSV/XML. Tabela 3.1: Mapa de funcionalidades da plataforma Pentaho BI 3.5 Mondrian & jpivot Após a análise dos vários produtos contidos na framework, escolheram-se dois produtos em particular: Mondrian e jpivot que pelas suas características, podiam ser integrados no SIAG-AP, preenchendo algumas lacunas existentes. Não foram incluídos outros produtos devido ao facto de já existirem no SIAG-AP alternativas que permitiam obter resultados semelhantes ou simplesmente as suas funcionalidades não eram relevantes no contexto em que o SIAG-AP se situa. No decorrer deste projecto foram utilizadas as versões e 1.5 do Mondrian e jpivot, respectivamente Mondrian O motor OLAP - Mondrian é desenvolvido na linguagem Java e funciona como uma camada de middleware fornecendo suporte para análise multidimensional em bases
39 25 Capítulo 3. Conceitos de dados relacionais. A definição do modelo dimensional utiliza a linguagem XML e a sua sintaxe está bem definida [7]. Toda a gestão do motor Mondrian pode ser feita por via programática (através de uma API bem conhecida) utilizando a linguagem Java. De modo a ser possível efectuar queries através do Mondrian, existem alguns requisitos que são necessários satisfazer : Definir um ficheiro XML contendo informações sobre os cubos, dimensões e factos, relacionando-os com as tabelas e colunas da base de dados relacional; Definir uma ligação JDBC utilizando o controlador adequado para a ligação à base de dados relacional; Inicializar o motor Mondrian e carregar as definições, utilizando a interface disponibilizada para programação (API 2 ). Como resultado do carregamento das definições anteriores, o motor Mondrian disponibiliza acesso ao modelo multidimensional o qual pode ser efectuado através do software jpivot, que interage directamente com o motor Mondrian através da API, sendo possível executar queries MDX e navegar nos resultados. A figura 3.5 Figura 3.5: Exemplo de inicialização do Mondrian através de uma classe Java representa um pedaço de código na linguagem Java que exemplifica de forma simples como se pode efectuar uma query ao Mondrian e obter um resultado. A documentação do Mondrian é bastante completa, havendo um manual [7] que resume todo o projecto, permitindo uma consulta rápida e acessível a pormenores técnicos relevantes para o desenvolvimento de soluções embebidas que utilizem o motor. Este manual constitui a principal referência bibliográfica sobre o motor Mondrian, porém, existe também a descrição da sua API [8], importante para um programador poder conhecer e utilizar o motor Mondrian de forma correcta. 2 Application Programming Interface
40 Capítulo 3. Conceitos jpivot jpivot é uma biblioteca que permite transformar um resultado de um motor OLAP, apresentando-o através de uma tabela dinâmica (tabela pivot). A sua API fornece métodos para navegar nos resultados, permitindo descer(drill down) ou subir(roll up) nos resultados, bem como fatiar(slice) e rodá-los(dice). Utiliza o motor Mondrian ou XMLA como as suas fontes de dados OLAP. A documentação do jpivot é escassa, não existindo um documento com descrições técnicas da concretização do projecto. A única referência técnica disponível e utilizada no desenvolvimento da solução de integração com o SIAG-AP é a descrição da API [10].
41 Capítulo 4 Cubos Este capítulo inicia-se com a descrição do trabalho realizado para permitir a construção de cubos, sendo depois apresentada a componente de exploração dos cubos construídos. 4.1 Desenho de cubos A necessidade da criação de uma componente de desenho de cubos, advém de vários factores. Por um lado, quer-se dar a possibilidade de um utilizador definir os cubos utilizando o próprio SIAG-AP, sem ser necessário recorrer a outras ferramentas. Por outro lado, a única ferramenta disponibilizada pela plataforma Pentaho BI, o produto CubeDesigner, encontra-se numa versão muito pouco estável (versão beta) e após se ter construído alguns cubos com esta ferramenta, percebeu-se que tinha muitas limitações e era pouco usável. Por estas razões decidiu-se construir uma componente própria que permitisse a construção e gestão de cubos possibilitando o carregamento do cubo no Mondrian. A componente de desenho de cubos consiste num ecrã onde um utilizador pode definir um cubo com base nas tabelas de base de dados utilizada pelo SIAG-AP. Para definir o ecrã foi necessário perceber quais as funcionalidades do Mondrian que iriam ser utilizadas, sendo importante perceber e adequar o grau de complexidade de funções suportadas, ao tempo disponível para desenvolver o ecrã. Iniciou-se o processo com a análise das entidades definidas em XML e que representam os elementos de construção necessários para efectuar o mapeamento lógico multidimensional ao modelo relacional da base de dados onde o Mondrian obtém os dados. A escolha dos elementos a suportar na definição do ficheiro XML, através do ecrã de definição de cubos obedece aos requisitos e restrições que se apresentam de seguida. O modelo lógico do cubo deve obedecer ao esquema em estrela ou floco-de-neve, com uma tabela de factos apenas. 27
42 Capítulo 4. Cubos 28 Deve ser possível introduzir filtros SQL sobre a coluna de uma dada tabela, definida para um nível de uma dimensão. Deve ser possível aplicar uma função, de um conjunto de funções, que permitam obter um cálculo sobre coluna de uma dada tabela definida para um nível de uma dimensão. Deve ser possível configurar a utilização ou não de cache do Mondrian. Deve ser possível definir se um cubo está disponível para permitir a execução de queries ou não. A definição de dimensões, deve permitir o mapeamento de relações hierárquicas não-balanceadas, utilizadas em alguns modelos de dados do SIAG-AP. Após a definição destes requisitos, foi necessário avaliar e definir as entidades XML mais relevantes que os suportassem, sendo apresentados na figura 4.1. Para suportar a salvaguarda da definição do cubo na base de dados, optou-se por criar um modelo de dados que permitisse o armazenamento de informação vinda do ecrã de definição de cubos, sendo utilizados estes dados na geração do ficheiro XML que representa a definição do cubo. O diagrama do modelo de dados é apresentado na figura 4.2. Uma vez definidas as funcionalidades a suportar e o modelo de dados subjacente, efectuou-se um esboço do ecrã de desenho de cubos que permite a um utilizador definir um cubo. A concretização do esboço(figuras 4.3, 4.4, 4.5) em ecrã foi conseguida com o auxílio da ferramenta GEDIDev, que permite definir o ecrã graficamente, incluindo as Arealists que o compõem. Após a concretização do esboço na ferramenta GEDIDev, são gerados alguns ficheiros de forma automática e que constituem a base de desenvolvimento do ecrã. Os ficheiros gerados incluem código para ser executado tanto no servidor como no cliente, ao que se apresenta uma breve descrição dos mesmos. Cliente: Ficheiro JSP contendo definição da representação gráfica do ecrã a ser apresentado no browser do cliente; Ficheiro contendo código Javascript para ser executado pelo browser do cliente na abertura do ecrã do utilizador, inicializando objectos tais como Arealist, de forma automática.
43 29 Capítulo 4. Cubos Figura 4.1: Elementos XML do Mondrian suportados pelo ecrã de definição de cubos.
44 Capítulo 4. Cubos 30 Figura 4.2: Modelo de dados utilizado para persistir uma definição de cubo na base de dados. Figura 4.3: Ecrã de desenho dos cubos, apresentando o tabulador de identificação do cubo.
45 31 Capítulo 4. Cubos Figura 4.4: Ecrã de exploração dos dados, apresentando o tabulador de definição dos factos do cubo. Figura 4.5: Ecrã de exploração dos dados, apresentando o tabulador de definição das dimensões do cubo.
46 Capítulo 4. Cubos 32 Servidor: Ficheiros Action, um para cada Arealist, efectuando o mapeamento da camada de apresentação no servidor para essa Arealist. Ficheiros ExtendedAction, um para cada Arealist, representando uma extensão do ficheiro Action, uma vez que estes últimos não devem ser alterados manualmente. Ficheiros ServiceImpl, um para cada Arealist, representando a camada de negócio, fazendo o interface entre a camada de apresentação e a camada da persistência (dados). Uma vez construído o ecrã que serve de interface com o utilizador para a definição de cubos, foi necessária a definição de métodos que convertessem a representação dos dados presentes no SIAG-AP para um ficheiro XML que o Mondrian soubesse interpretar como definição de cubo, equivalente à definida no ecrã. Foi desenvolvida a classe Java BiCodeForBase que constitui um ponto fulcral na comunicação entre o SIAG-AP e o Mondrian, estando definidos um conjunto de métodos que permitem : Inicializar o Mondrian; Converter os dados obtidos a partir do ecrã de desenho de cubos numa definição de ficheiro XML interpretada pelo Mondrian; Adicionar/substituir uma definição de um cubo no Mondrian; Efectuar queries e obter resultados do Mondrian. Na figura 4.6 apresenta-se como exemplo o conteúdo de um ficheiro XML contendo a definição de um cubo, gerado pelos métodos da classe BiCodeForBase para ser carregado no Mondrian. 4.2 Arquitectura No final da fase de construção do ecrã de desenho de cubos, o Mondrian encontra-se integrado na Framework, sendo inicializado durante o arranque da aplicação SIAG- AP e possuindo métodos de gestão próprios, através do ecrã de desenho de cubos. A arquitectura lógica da Framework passa a adoptar um novo componente que vem efectuar uma nova ligação entre a camada de negócio e a base de dados. Na figura 4.7 encontra-se a representação da arquitectura lógica da Framework GEDI, já com a inclusão do Mondrian.
47 33 Capítulo 4. Cubos Figura 4.6: Ficheiro XML contendo a definição de um cubo definido no ecrã de desenho de cubos Figura 4.7: Arquitectura lógica da Framework GEDI após integração do Mondrian & jpivot
48 Capítulo 4. Cubos Exploração de dados dos cubos O objectivo da construção de um ecrã de exploração de cubos é fornecer ao utilizador um meio de análise através de uma tabela dinâmica (tabela pivot). Este ecrã pretende ser a evolução de um interface existente e disponibilizado pelo jpivot para um interface mais rico, fazendo uso de uma Java Applet possibilitando a apresentação de informação de forma mais flexível e com uma apresentação gráfica mais profissional. A construção do ecrã de exploração de cubos implicou uma análise das funcionalidades do jpivot de modo a escolher as mais significativas para concretização e inclusão no ecrã. Após esta análise, ficou definido que seriam concretizadas as seguintes funcionalidades: Adição de dimensões e factos aos eixos da tabela de exploração (sem recorrer a uma tabela adicional como faz o jpivot) utilizando a funcionalidade de arrastar e largar (Drag & Drop); Permitir mostrar/ocultar as linhas vazias (i.e. mostrar/ocultar os membros de dimensões que não têm factos associados); Permitir a troca dos eixos de exploração (i.e. os membros representados no eixo das linhas passam a estar representados no eixo das colunas e vice-versa; Permitir a navegação expandindo/colapsando um membro de uma dimensão de seguintes formas distintas : Descer por membro: ao expandir um membro de uma dimensão, os sub-níveis desse membro são apresentados. Descer por posição: ao expandir um membro de uma dimensão, são expandidos todos os membros da mesma dimensão, cuja identificação seja igual ao membro expandido, mostrando todos os sub-níveis desses membros. Descer substituindo: ao expandir um membro de uma dimensão este é substituído pelos seus sub-níveis. Permitir efectuar a operação de descer através dos factos (DrillThrough), que é útil para a visualização dos registos reais da base de dados que originam o valor dos factos após cálculo de agregação. Para além destas funcionalidades, que devem ser conseguidas através do uso do jpivot e concretizadas no ecrã de exploração de cubos do SIAG-AP, existem algumas funcionalidades extra que devem ser desenvolvidas, sendo estas pertencentes apenas ao SIAG-AP.
49 35 Capítulo 4. Cubos Deve ser possível guardar uma visualização de um cubo, para posterior visualização, bem como partilhar esta visualização do cubo com outros utilizadores do SIAG-AP; Deve ser possível imprimir uma listagem com os resultados de uma exploração de dados, directamente para os formatos PDF, XLS e RTF; Deve existir uma opção de geração de gráficos representando uma visualização de um cubo, permitindo ao utilizador configurar a sua apresentação de forma semelhante à configuração de gráficos já existente no SIAG-AP. Tendo em conta as funcionalidades a suportar no ecrã de exploração de cubos, foi efectuado um esboço (definido nas figuras 4.8, 4.9, 4.10), para definir posteriormente este ecrã na ferramenta GEDIDev, à semelhança das tarefas efectuadas para o ecrã de desenho de cubos. Figura 4.8: Ecrã de exploração dos dados, apresentando o tabulador de Exploração. O modelo de dados definido para o ecrã de desenho de cubos foi aumentado para suportar a gravação de uma visualização de cubo, bem como de gráficos associados, sendo apresentado na figura Foi definido um novo modelo de Arealist que suportasse as funcionalidades definidas para a exploração, tendo o cuidado de manter a integração com o SIAG-AP, utilizando a mesma forma de comunicação com o servidor. As classes desenvolvidas são apresentadas no diagrama de classes na figura O diagrama apenas pretende evidenciar as classes desenvolvidas (cujo nome tem o prefixo ArealistBI), quando comparado com a figura do diagrama 2.4.
50 Capítulo 4. Cubos 36 Figura 4.9: Ecrã de exploração dos dados, apresentando o tabulador de DrillThrough. Figura 4.10: Ecrã de exploração dos dados, apresentando o tabulador de Gráficos.
51 37 Capítulo 4. Cubos Figura 4.11: Modelo de dados estendido para suportar a definição de visualizações de cubos e gráficos associados.
52 Capítulo 4. Cubos 38 Figura 4.12: Diagrama de classes para a nova Arealist BI, desenvolvida neste projecto.
53 39 Capítulo 4. Cubos Controlo de concorrência A execução de queries e a obtenção de um resultado, de cada vez que o utilizador interage com o ecrã de exploração de cubos implica aceder ao modelo definido no Mondrian, colocar as mesmas definições que o utilizador tem no ecrã de exploração para de seguida obter um resultado concordante com a acção que o utilizador efectuou. Devido ao facto de existir apenas um modelo por cada cubo definido, este tem de ser partilhado por todos os utilizadores que efectuem explorações nesse modelo de dados. Assim, foi necessário criar uma protecção para o acesso concorrente ao modelo do cubo, conseguido através dos mecanismos da linguagem Java [12], que permite a utilização de zonas de código de acesso exclusivo (synchronized) ou mesmo a definição de acesso exclusivo a determinados métodos. A definição das zonas de acesso exclusivo e dos métodos implicou um cuidado particular, uma vez que uma protecção de acesso concorrente inadequada, poderia impedir o acesso simultâneo a algumas zonas de código, o que resultaria numa situação em que apenas um utilizador poderia estar a explorar um cubo num dado instante na aplicação SIAG-AP Gráficos Apesar do produto jpivot possuir mecanismos de apresentação dos resultados de uma exploração em formato gráfico, foi decidido utilizar o produto de que a aplicação SIAG-AP já faz uso. As principais razões que levaram a esta decisão baseiam-se no facto de que uma vez que já existe um produto cuja função é apresentar gráficos integrado na aplicação SIAG-AP e este tem uma apresentação mais profissional e agradável que o disponibilizado pelo jpivot, deve-se usar esse produto. Para além disso, o esforço a despender para a adaptação do módulo de gráficos do jpivot seria maior que a adaptação do ecrã de exploração de cubos ao produto já existente. Esta integração consistiu na transformação dos resultados de exploração obtidos para um formato conhecido, que é posteriormente utilizado na construção de um ficheiro XML com dados que são carregados na aplicação de desenho do gráfico.
55 Capítulo 5 Conclusão 5.1 Principais dificuldades A concretização deste projecto suscitou algumas dificuldades, que foram sendo a pouco e pouco ultrapassadas, permitindo avançar o desenvolvimento do projecto ao longo do tempo. As principais dificuldades advêm do facto da falta de experiência profissional e académica na área de desenvolvimento do projecto, o que obrigou a um esforço inicial adicional para compreensão do tema. Outra dificuldade surge naturalmente devido ao facto de este projecto descrever uma integração de dois produtos Mondrian & jpivot na aplicação SIAG-AP. Uma vez que o projecto jpivot dispõe de pouca documentação técnica, foi necessário obter conhecimentos sobre o seu funcionamento através da análise em tempo de execução, avaliando o comportamento da framework jpivot quando utilizada para explorar dados, de modo a permitir o conhecimento necessário para integrar o produto na aplicação SIAG-AP. 5.2 Conclusão Ao participar neste projecto, pude contactar com várias tecnologias e conceitos que me eram alheios. Os produtos de Business Intelligence estão em franca expansão e os responsáveis pelas empresas tendem a tomar consciência da importância de possuir um produto desta área na sua organização para explorar a informação. O projecto revelou-se ambicioso pois envolvia a integração de dois produtos de software de código livre numa aplicação, neste caso a aplicação SIAG-AP, o que exigia um conhecimento adequado do funcionamento de ambos, de modo a que a ligação entre estes fosse efectuada correctamente. Penso que os objectivos propostos no início do projecto foram alcançados, uma vez que os produtos Mondrian & jpivot foram efectivamente integrados no SIAG- AP. Por outro lado, a sua utilização no SIAG-AP é semelhante à que se obtém 41
56 Capítulo 5. Conclusão 42 quando estes se encontram integrado na plataforma Pentaho BI mantendo-se assim a exploração das suas funcionalidades Trabalho Futuro Pretende-se nesta secção definir algumas linhas-guia que poderão ser utilizadas para desenvolver mais o projecto aqui descrito, indicando em cada área alguns itens que podem ser concretizados ou melhorados. Novas funcionalidades do ecrã de desenho de cubos : Suportar um maior número de elementos de XML do Mondrian, possibilitando a construção de cubos mais complexos. Possibilitar a criação de cubos com mais do que uma tabela de factos, não restringindo a sua criação a modelos em estrela ou floco-de-neve. Permitir a criação de mais fontes de dados, expandindo a possibilidade de análise a outras bases de dados. Novas funcionalidades do ecrã de exploração de cubos : Permitir a ordenação dos membros de uma hierarquia ou dimensão. Dar a possibilidade de visualizar propriedades de membros de uma dimensão. Permitir a execução de queries MDX ad-hoc. Suportar a possibilidade de comunicação do jpivot através de XMLA, permitindo o acesso a fontes de dados como o Microsoft SqlServer Analysis Services (MSAS). Fornecer serviços de exploração de dados a aplicações externas através de web services. Separar o motor Mondrian da aplicação SIAG-AP permitindo que ambos estejam em servidores de aplicações localizados em diferentes máquinas, potenciando a sua escalabilidade. Algumas destas funcionalidades encontram-se em desenvolvimento (ou já desenvolvidas) à data de conclusão desta dissertação, o que mostra a continuidade do projecto que aqui se descreveu.
57 Acrónimos API AS CVS ETL GEDI HTML IDE JDBC JOSSO JPEG JSP LDAP MDX OLAP PDF PME PNG RTF SGBD SQL XLS XML XMLA Application Programming Interface Application Server Concurrent Versions System Extract Transform and Load Gabinete de Estudos e Divulgação Informática Hypertext Markup Language Integrated Development Environment Java Database Connectivity Java Open Single Sign On Joint Photographic Experts Group Java Server Pages Lightweight Directory Access Protocol Multidimensional Expressions Online Analitical Processing Portable Document Format Pequenas e Médias Empresas Portable Network Graphics Rich Text Format Sistema de Gestão de Base de Dados Structured Query Language Microsoft Excel File Extensible Markup Language XML for Analysis 43
58 Índice Conceitos BI, 15 Cubos, 27 Controlo de concorrência, 39 Desenho de cubos, 27 Exploração de dados, 34 Desenvolvimento, 8 Calendarização, 11 GEDIDev, 10 Metodologia, 10 Software, 10 GEDI, 3 Framework, 4 Gráficos, 39 Java Applets, 7 JDBC, 20 JFreeReport, 21 jpivot, 20, 26 Kettle, 22 Mondrian, 19, 24 Pentaho Report Definition Wizard, 21 Pentaho Report Designer, 22 Produtos BI, 17 Oracle BI, 18 Pentaho BI, 18 44
59 Bibliografia [1] Christian Bauer and Gavin King. Hibernate in Action (In Action series). Manning Publications Co., Greenwich, CT, USA, [2] Mike Beedle, Arie van Bennekum, and Alistair Cockburn et alia. Agile manifesto. [3] E.F. Codd, S.B. Codd, and C.T. Salley. Providing olap (on-line analytical processing) to user-analysts: An it mandate. Technical report, Codd and Assoc., providing_olap_to_user_analysts.pdf. [4] Microsoft Corporation. Multidimensional expressions (mdx). microsoft.com/en-us/library/ms aspx. [5] George Franciscus and Craig R. McClanahan. Struts in Action: Building Web Applications With the Leading Java Framework. Manning Publications Co., Greenwich, CT, USA, [6] Anil Hemrajani. Agile Java Development with Spring, Hibernate and Eclipse (Developer s Library). Sams, Indianapolis, IN, USA, [7] Julyan Hyde and development team. Mondrian technical guide, technical-guide.pdf. [8] Julyan Hyde and development team. Mondrian application programming interface, overview-summary.html. [9] Rod Johnson, Juergen Hoeller, and Alef Arendsen et al. The Spring Framework - Reference Documentation, reference/index.html. [10] jpivot development team. jpivot application programming interface, html. 45
60 Bibliografia 46 [11] Ralph Kimball and Margy Ross. The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling. John Wiley & Sons, Inc., New York, NY, USA, [12] Douglas Lea and Doug Lea. Concurrent Programming in Java: Design Principles and Patterns. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, [13] Avraham Leff and James T. Rayfield. Web-application development using the model/view/controller design pattern. In EDOC 01: Proceedings of the 5th IEEE International Conference on Enterprise Distributed Object Computing, page 118, Washington, DC, USA, IEEE Computer Society. [14] Don Wells. Extremme programming.
61 Capítulo 6 Anexos 6.1 Anexo A Figura 6.1: Quadro comparativo de funcionalidades dos produtos BI analisados 47
62 Capítulo 6. Anexos Anexo B Imagens da aplicação SIAG-AP apresentando alguns dos ecrãs desenvolvidos neste projecto. Figura 6.2: Ecrã Inicial da aplicação SIAG.
63 49 Capítulo 6. Anexos Figura 6.3: Ecrã de desenho de cubos, apresentando o tabulador principal do cubo.
64 Capítulo 6. Anexos 50 Figura 6.4: Ecrã de desenho de cubos, apresentando o tabulador dos factos do cubo.
65 51 Capítulo 6. Anexos Figura 6.5: Ecrã de desenho de cubos, apresentando o tabulador das dimensões do cubo.
66 Capítulo 6. Anexos 52 Figura 6.6: Ecrã de exploração de cubos, apresentando o tabulador de exploração.
67 53 Capítulo 6. Anexos Figura 6.7: Ecrã de exploração de cubos, apresentando o tabulador de DrillThrough.
68 Capítulo 6. Anexos 54 Figura 6.8: Ecrã de exploração de cubos, apresentando a definição do gráfico para definição do seu tipo.
69 55 Capítulo 6. Anexos Figura 6.9: Ecrã de exploração de cubos, apresentando o tabulador do gráfico para definição das legendas e títulos.
70 Capítulo 6. Anexos 56 Figura 6.10: Ecrã de exploração de cubos, apresentando o tabulador do gráfico para definição dos eixos.
71 57 Capítulo 6. Anexos Figura 6.11: Ecrã de exploração de cubos, apresentando o gráfico com as opções escolhidas anteriormente.