˘ao implementada3.819modelo da solu˘c~ao...

61
¸˜aoImplementada3.819ModelodaSolu¸c˜aoImplementadafigure.3.8¸˜ ao do m´ odulo Java3.920Execu¸c˜ ao do m´ odulo Javafigure.3.9 ´ agina de Detalhe de um Pro- jecto3.1325P´ agina de Detalhe de um Projectofigure.3.13 ´ agina de Detalhe de um Projecto(continua¸ c˜ao)3.1425P´ agina de Detalhe de um Projecto(continua¸c˜ ao)figure.3.14 ´ aficos Esfor¸ coPrevisto/Real3.1526Gr´aficosEsfor¸coPrevisto/Realfigure.3.15¸c˜ ao de Esfor¸co3.1627Distribui¸ c˜aodeEsfor¸cofigure.3.16 ¸c˜ oes do wiki4pgest.bat3.1828wiki4pgest.batfigure.3 ´ odigo inserido no c´odigo fonte do MediaWiki3.2836C´odigo inserido no c´ odigo fonte do MediaWikifigure.3.28 ¸ c˜aodeTarefasA.142Calendariza¸c˜ ao de Tare- fastable.A.1¸c˜ ao de Tarefas(continua¸c˜ ao)A.243Calendariza¸c˜ ao de Tarefas(continua¸c˜ ao)table.A.2 1

Upload: hahuong

Post on 14-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

¸ao Implementada3.819Modelo da Solucao Implementadafigure.3.8 ¸ao do moduloJava3.920Execucao do modulo Javafigure.3.9 agina de Detalhe de um Pro-jecto3.1325Pagina de Detalhe de um Projectofigure.3.13 agina de Detalhe de umProjecto(continuacao)3.1425Pagina de Detalhe de um Projecto(continuacao)figure.3.14aficos Esforco Previsto/Real3.1526Graficos Esforco Previsto/Realfigure.3.15 cao deEsforco3.1627Distribuicao de Esforcofigure.3.16 coes do wiki4pgest.bat3.1828wiki4pgest.batfigure.3.18odigo inserido no codigo fonte do MediaWiki3.2836Codigo inserido no codigo fontedo MediaWikifigure.3.28 cao de TarefasA.142Calendarizacao de Tare-fastable.A.1 cao de Tarefas(continuacao)A.243Calendarizacao de Tarefas(continuacao)table.A.2

1

Universidade de LisboaFaculdade de Ciencias

Departamento de Informatica

”Wiki4PGest”Publicacao automatica de dados numa ferramenta

Wiki

projecto realizado na

EF Tecnologias de Software, S.A.

por

Diogo Nuno Castanheira Ribeiro Lopes

Mestrado em Engenharia Informatica

2008

3

Universidade de LisboaFaculdade de Ciencias

Departamento de Informatica

”Wiki4PGest”Publicacao automatica de dados numa ferramenta

Wiki

projecto realizado na

EF Tecnologias de Software, S.A.

por

Diogo Nuno Castanheira Ribeiro Lopes

PROJECTO

Projecto orientado pela Profa. Dra. Ana Paula Afonsoe co-orientado por Dra. Fernanda Ferreira

Mestrado em Engenharia Informatica

2008

Declaracao

Diogo Nuno Castanheira Ribeiro Lopes, aluno no 29357 da Faculdade de Ciencias

da Universidade de Lisboa, declara ceder os seus direitos de copia sobre o seu Re-

latorio de Projecto em Engenharia Informatica, intitulado ”Wiki4PGest - Publicacao

automatica de dados numa ferramenta Wiki”, realizado no ano lectivo de 2007/2008

a Faculdade de Ciencias da Universidade de Lisboa para o efeito de arquivo e con-

sulta nas suas bibliotecas e publicacao do mesmo em formato electronico na Internet.

FCUL, 29 de Setembro de 2008

Profa Ana Paula Afonso, supervisora do projecto de Diogo Nuno Castanheira

Ribeiro Lopes, aluno da Faculdade de Ciencias da Universidade de Lisboa, declara

concordar com a divulgacao do Relatorio do Projecto em Engenharia Informatica,

intitulado ”Wiki4PGest - Publicacao automatica de dados numa ferramenta Wiki”.

Lisboa, 29 de Setembro de 2008

Resumo

Hoje em dia a partilha de informacao e uma caracterıstica cada vez mais intrınseca

na sociedade em que vivemos. A crescente necessidade em haver um acesso rapido,

intuitivo e seguro a uma grande quantidade e variedade de informacao, leva a que

sejam criados varios mecanismos que a satisfacam. A Wikipedia baseada no con-

ceito Wiki e um exemplo de um caso de sucesso nesta area e tem desempenhado um

papel fundamental quanto a promocao deste conceito de informacao colaborativa.

No actual clima empresarial e de negocio, as empresas estao a apostar tambem nesta

polıtica de partilha de informacao de forma a agilizar o processo de cooperacao entre

os varios colaboradores que as integram, resultando num melhoramento do processo

de execucao de tarefas. Assim sendo, o conceito de informacao colaborativa tem-se

traduzido como um objectivo estrategico de qualquer empresa.

Este projecto teve como objectivo desenvolver um sistema de pesquisa e de pub-

licacao automatica de informacao inerente a gestao de projectos da Empresa EF

Tecnologias de Software, S.A. numa ferramenta Wiki, de forma a facilitar aos seus

colaboradores o acesso a este tipo de informacao e a oferecer aos gestores de projecto

uma melhor perspectiva de gestao dos mesmos.

PALAVRAS-CHAVE:

wiki, pesquisa, publicacao automatica, informacao colaborativa, partilha de

informacao.

i

Abstract

Nowadays, sharing of information is a intrinsic feature in our society. The growing

need to have a rapid, intuitive and secure access to a large quantity and variety of

information, leads to the creation of various mechanisms to support that need. The

Wikipedia based on the Wiki concept, is an example of success in this area and

has played a key role in the promotion of the concept of collaborative information.

The companies are also adopting this policy of sharing information to expedite the

process of cooperation between the partners of companies, resulting in an improve-

ment on their processes of tasks executions. Thereby, the concept of collaborative

information is becoming a strategic goal of any company.

This project aim to develop a search system of automatic publication in a Wiki

tool, of information related to project management of the company EF Tecnologias

de Software, S.A., to facilitate the access to that information and give managers a

better perspective of their project managements.

KEYWORDS:

wiki, search, automatic publication, collaborative information, sharing of

information.

iii

Conteudo

Lista de Figuras viii

Lista de Tabelas ix

1 Introducao 1

1.1 Motivacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3 Organizacao do documento . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Enquadramento 3

2.1 EF Tecnologias, S.A. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 PGest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.3 MediaWiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3 Projecto - Wiki4PGest 6

3.1 Analise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.1.1 Primeira Abordagem . . . . . . . . . . . . . . . . . . . . . . . 6

3.1.2 Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2 Desenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.2.1 Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.2.2 Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . . 13

3.2.3 Diagrama de Actividades . . . . . . . . . . . . . . . . . . . . . 14

3.2.4 Ferramentas Utilizadas . . . . . . . . . . . . . . . . . . . . . . 15

3.3 Planeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3.1 Etapas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3.2 Mapa de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.4 Implementacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.4.1 Modulo Java e Opcoes de Implementacao . . . . . . . . . . . . 20

3.4.2 Modulo Python Wikipedia Robots Framework . . . . . . . . . 29

3.4.3 Outras Funcionalidades . . . . . . . . . . . . . . . . . . . . . . 33

3.5 Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

v

4 Conclusao 38

4.1 Resumo do trabalho desenvolvido . . . . . . . . . . . . . . . . . . . . 38

4.2 Revisao Crıtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.3 Trabalho Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

A Calendarizacao de Tarefas 41

B Codigo de uma pagina Wiki 44

vi

Lista de Figuras

2.1 Carteira Clientes EF . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.1 Exemplos de plug-ins do Google Desktop . . . . . . . . . . . . . . . . 7

3.2 Google Search Appliance . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.3 Arquitectura Wiki4PGest . . . . . . . . . . . . . . . . . . . . . . . . 12

3.4 Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . 13

3.5 Diagrama de Actividades . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.6 Etapas Processo de Desenvolvimento . . . . . . . . . . . . . . . . . . 16

3.7 Mapa de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.8 Modelo da Solucao Implementada . . . . . . . . . . . . . . . . . . . . 19

3.9 Execucao do modulo Java . . . . . . . . . . . . . . . . . . . . . . . . 20

3.10 Modelo de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.11 Ficheiro Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.12 Projectos em Curso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.13 Pagina de Detalhe de um Projecto . . . . . . . . . . . . . . . . . . . 25

3.14 Pagina de Detalhe de um Projecto(continuacao) . . . . . . . . . . . . 25

3.15 Graficos Esforco Previsto/Real . . . . . . . . . . . . . . . . . . . . . . 26

3.16 Distribuicao de Esforco . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.17 Batch Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.18 wiki4pgest.bat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.19 Ficheiro user-config.py . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.20 Ficheiro ef-family.py . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.21 Diagrama de de Actividade do Bot pagefromfile.py . . . . . . . . . . 31

3.22 Bot pagefromfile.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.23 Diagrama de de Actividade do Bot upload.py . . . . . . . . . . . . . 32

3.24 Bot upload.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.25 Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.26 Smiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.27 Ficheiro build.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.28 Codigo inserido no codigo fonte do MediaWiki . . . . . . . . . . . . . 36

B.1 Codigo de uma pagina Wiki . . . . . . . . . . . . . . . . . . . . . . . 44

vii

Lista de Tabelas

A.1 Calendarizacao de Tarefas . . . . . . . . . . . . . . . . . . . . . . . . 42

A.2 Calendarizacao de Tarefas(continuacao) . . . . . . . . . . . . . . . . . 43

ix

Capıtulo 1

Introducao

O presente documento apresenta o projecto Wiki4PGest realizado no ambito da

disciplina de Projecto de Engenharia de Informatica (PEI), integrada no 2o ano do

Mestrado em Engenharia Informatica da Faculdade de Ciencias da Universidade de

Lisboa, no ano lectivo de 2007/2008. O projecto teve uma duracao de 9 meses tendo

como inıcio Setembro de 2007 e termino em Maio de 2008.

O projecto consiste no desenvolvimento do sistema Wiki4PGest de publicacao au-

tomatica de informacao de gestao de projectos e foi desenvolvido na empresa EF

Tecnologias de Software S.A., tendo como utilizadores alvo todos os colaboradores

da empresa.

1.1 Motivacao

Este projecto surge da necessidade de fomentar e aumentar a partilha de informacao

de projectos entre os colaboradores da empresa. A informacao relacionada com a

gestao de projecto e normalmente gerida pelos chefes de projecto, que por sua vez

a partilham com as suas equipas de desenvolvimento. Com isto, pretende-se assim

alargar o acesso a alguma desta informacao as varias equipas como forma de divulgar

mais facilmente informacao de varios projectos em curso, como por exemplo: estado

de execucao dos varios projectos e das respectivas fases e tarefas associadas, tarefas

executadas, datas de entrega para producao, recursos humanos alocados, pessoas

envolvidas em determinada tarefa, distribuicao temporal de esforco.

Outro aspecto tambem importante e a divulgacao da informacao atraves de mecan-

ismos de criterios de pesquisa de forma a agilizar o seu acesso.

A informacao que se pretende partilhar encontra-se disponıvel num sistema de in-

formacao PGest1 desenvolvido internamente pela EF.

O PGest nao disponibiliza funcionalidades de pesquisa eficazes sobre os projectos,

1Aplicacao de suporte a gestao e controlo de projectos e recursos da empresa EF Tecnologiasde Software.

1

Capıtulo 1. Introducao 2

nem um modulo de visualizacao de dados acessıvel a todos os colaboradores. Por

outro lado, foi desenvolvido numa tecnologia interna que esta a ser descontinuada.

Inicialmente, a forma adoptada para a divulgacao desta informacao aos colabo-

radores da empresa, foi atraves de edicao manual de paginas na ferramenta Medi-

aWiki.2. Mas devido a elevada quantidade de informacao e a necessidade constante

de actualizacao, esta tarefa torna-se extremamente repetitiva, consumindo bastante

tempo para ser realizada.

1.2 Objectivos

Este projecto tem como objectivo criar uma aplicacao que permita a publicacao

automatica e visualizacao de informacao relacionada com a execucao de projec-

tos desenvolvidos na empresa, que possibilite um rapido acesso aos seus conteudos

atraves de criterios de pesquisa.

Outro dos objectivos preconizados foi o de incluir informacao de estado de execucao

dos projectos, e efectuar uma estruturacao de toda a sua apresentacao.

O objectivo final e facilitar o acesso e conhecimento a este tipo de informacao, de

forma a agilizar o processo de execucao de tarefas e de desenvolvimento e gestao de

projectos.

1.3 Organizacao do documento

Este documento encontra-se organizado da seguinte forma:

• Capıtulo 1 - Apresentacao geral do projecto onde e feita uma abordagem pre-

liminar e uma contextualizacao relativamente aos seus objectivos e a motivacao

existente dentro da instituicao de acolhimento para a sua realizacao.

• Capıtulo 2 - Enquadramento institucional e apresentacao dos dois sistemas

envolvidos no desenvolvimento do sistema Wiki4PGest (PGest e MediaWiki).

• Capıtulo 3 - Desenvolvimento do projecto, onde sao apresentadas todas as

etapas que envolveram a concretizacao do projecto.

• Capıtulo 4 - Conclusao, onde e apresentado um discurso conclusivo relativa-

mente a elaboracao deste documento e do projecto. E tambem realizada uma

analise crıtica ao projecto, sao apontados alguns aspectos a melhorar e o tra-

balho futuro com o intuito de acrescentar novas funcionalidades a aplicacao.

2Pacote de software livre de edicao e partilha de artigos, caracterizado por ser o motor nuclearda Wikipedia.

Capıtulo 2

Enquadramento

Neste capıtulo e apresentada a instituicao de acolhimento onde foi realizado o PEI

e os dois sistemas utilizados na empresa que sao parte integrante no ambito do

projecto.

2.1 EF Tecnologias, S.A.

A EF e uma empresa em actividade ha 15 anos, iniciada com um conjunto de colabo-

radores provenientes do mundo universitario especializados nas areas da investigacao

e desenvolvimento e com grande experiencia em projectos inovadores.

A EF oferece solucoes tecnologicas profissionais no desenvolvimento e integracao

em sistemas de informacao e sistemas distribuıdos, com uma orientacao preferencial

para as necessidades efectivas e requisitos especıficos dos seus clientes. Tem uma

forte base tecnologica embora se afirme principalmente como uma empresa orien-

tada ao cliente e que desenvolve solucoes direccionadas para o sector financeiro e da

banca online.

A inovacao e pioneirismo em novas plataformas e tecnologias de desenvolvimento e

um requisito profundamente integrado nas suas solucoes profissionais apresentadas.

A EF tem desenvolvido e acumulado uma extensa experiencia e um solido conhec-

imento na area financeira, fornecendo solucoes orientadas para servicos bancarios

electronicos para bancos sediados em Portugal e Espanha, e servicos de software para

pagamento electronico para clientes em Portugal e Reino Unido. Desde os maiores

projectos desenvolvidos para o maior grupo bancario portugues, a CGD-Caixa Geral

de Depositos, a EF tambem oferece solucoes para outras instituicoes da area finan-

ceira como, o Banco Caixa Geral, BANIF, Deutsche Bank, Montepio Geral, Banco

Espırito Santo, SIBS. A EF oferece tambem solucoes para um conjunto de clientes

ligados a outras areas como a TMN, Optimus na area das telecomunicacoes, e para

clientes de outras areas distintas como a Fidelidade Mundial Seguros, Fundacao

Calouste Gulbenkian, Infarmed, e ANA.

3

Capıtulo 2. Enquadramento 4

A estreita ligacao com os seus clientes, em que as competencias tecnologicas e a

experiencia adquirida actuam como factores-chave, e a garantia de elevada disponi-

bilidade e de proximidade das suas equipas de engenharia de software, actuam como

factores decisivos para o sucesso das solucoes fornecidas.

1

Figura 2.1: Carteira Clientes EF

2.2 PGest

O PGest caracteriza-se como sendo um sistema central de apoio a gestao e controlo

de execucao de projectos e recursos da empresa. Os colaboradores utilizam esta fer-

ramenta para introduzir o esforco dispendido em execucao de tarefas relativas aos

projectos em que estao inseridos. Interessa salientar que no PGest existe o conceito

de projecto que e estruturado em fases de processo de desenvolvimento de um sis-

tema de informacao. Cada fase tem uma ou varias tarefas associadas. O projecto e

gerido pelo chefe de projecto, que aloca recursos aos projectos e atribui-lhes tarefas.

No fim de cada dia de trabalho, o colaborador regista o tempo consumido para de-

senvolver a tarefa que lhe foi atribuıda, registando desta forma as suas actividades

diarias.

Em vez de se ter optado por adquirir uma das variadıssimas ferramentas de gestao

de projecto que se encontram disponıveis no mercado, optou-se por desenvolver

internamente esta aplicacao de gestao de projecto. Isto porque o PGest foi desen-

volvido de forma a poder responder a requisitos de integracao com outros sistemas

internos, nomeadamente um sistema de Bug Tracking tambem desenvolvido pela

propria empresa. O controlo completo do sistema permite a empresa implementar

Capıtulo 2. Enquadramento 5

funcionalidades a medida que facilita as tarefas de gestao de projecto na interaccao

com os clientes.

2.3 MediaWiki

O MediaWiki[2] e uma ferramenta de edicao e publicacao colaborativa de conteudos.

Esta ferramenta permite que varios utilizadores, colaborativamente, possam criar e

editar conteudos informativos partilhados por todos os utilizadores. O MediaWiki

disponibiliza um conjunto de funcionalidades que permitem a edicao de conteudos

numa sintaxe simples designada por WikiText. Permite tambem interligar paginas e

adicionar varios tipos de conteudos e submeter comentarios aos artigos publicados.

Inicialmente esta tecnologia foi desenvolvida para a Wikipedia[4] e para todos os

projectos a ela associados, mas actualmente tambem e usada por projectos fora do

ambito da Wikipedia.

Na empresa, o MediaWiki e usado como uma ferramenta de colaboracao de docu-

mentacao e partilha de informacao generica no seio da empresa, desde documentacao

de projectos, a informacao tecnica de caracter mais geral.

Capıtulo 3

Projecto - Wiki4PGest

Este projecto surge na necessidade de disponibilizar um mecanismo de publicacao

automatica e de pesquisa de dados relacionados com a gestao dos projectos desen-

volvidos na propria empresa.

Neste capıtulo sao apresentadas todas as etapas que envolveram a execucao deste

projecto.

3.1 Analise

3.1.1 Primeira Abordagem

O projecto inicialmente denominava-se por Google4PGest e a intencao inicial era

desenvolve-lo usando a plataforma Google Desktop[1] em vez do MediaWiki[2].

De notar que esta foi a primeira abordagem para responder ao desafio e as intencoes

inerentes a este projecto, que consistiam em desenvolver funcionalidades de pesquisa

sobre a base de dados do PGest recorrendo a API’s do Google, integrando funcional-

idades com o Google Desktop.

O Google Desktop e uma software com mini-aplicacoes que permitem a realizacao

de pesquisas de dados e ficheiros no Desktop de um computador. Para alem disso,

o Google Desktop fornece uma ferramenta de desenvolvimento com uma API que

permite desenvolver outras mini-aplicacoes e plug-ins de indexacao. A ideia ini-

cial seria a de, atraves desse kit de desenvolvimento, implementar um plug-in que

indexasse todos os projectos da empresa e respectiva informacao associada, e que

permitisse acede-la atraves de criterios de pesquisa. Esta seria uma solucao bastante

interessante e promissora, na medida em que os colaboradores podiam ter acesso a

informacao de gestao de projectos da empresa atraves de um plug-in instalado nos

proprios ambientes de trabalho, onde efectuavam a sua pesquisa da informacao dese-

jada usando todas as funcionalidades e potencialidades do motor de pesquisa Google.

Esta primeira abordagem correspondeu a primeira fase do estagio, e envolveu todo

um trabalho de investigacao e pesquisa de documentacao disponıvel na Web de in-

6

Capıtulo 3. Projecto - Wiki4PGest 7

formacao relativa a mecanismos e maneiras de realizar uma integracao com o PGest.

Mas depois de realizar algum estudo sobre esta tecnologia e de realizar algumas ex-

periencias com esta ferramenta, chegou-se a conclusao que esta integracao nao seria

possıvel porque a API disponibilizada pelo Google e bastante limitada e insuficiente

para desenvolver esta integracao, no sentido em que a sua propria implementacao

e funcionalidades disponibilizadas sao demasiados especıficas e restritas focando-se

mais para aplicacoes mais simples.

Figura 3.1: Exemplos de plug-ins do Google Desktop

Capıtulo 3. Projecto - Wiki4PGest 8

Chegando a esta conclusao, houve mais um trabalho de investigacao no sentido

de encontrar outra solucao Google para uma integracao do seu motor de pesquisa

com o PGest. E chegou-se a unica solucao disponibilizada pela Google que real-

mente responderia a este desafio, o Google Search Appliance1[3]. Esta seria optima

solucao empresarial que responderia aos objectivos e intencoes propostas para este

projecto, mas e uma solucao que nao so envolveria custos para a empresa, como

tambem nao se inclui no ambito de desenvolvimento de um projecto de estagio em

engenharia informatica, visto consistir num dispositivo que apenas seria necessario

instala-lo e configura-lo com a base de dados do PGest, sem que houvesse um qual-

quer desenvolvimento cientıfico associado. Optou-se entao por mudar a tecnologia

utilizada, mantendo-se inalterados o objectivo e proposito do projecto.

Figura 3.2: Google Search Appliance

Com isto, foi necessario haver novamente um trabalho de investigacao, mas desta

vez explorando outras tecnologias e ferramentas e nao ficar limitado a tecnologia

Google.

O MediaWiki foi a outra solucao encontrada com funcionalidades e potencialidades

que vao encontro do proposito do projecto, tambem com a vantagem de ser uma

solucao totalmente livre de licencas e custos para a empresa. Com alguma in-

vestigacao pela propria documentacao desta ferramenta, conseguiu-se moldar uma

forma de integracao com o PGest e assim responder aos objectivos propostos. Para

alem disso decidiu-se usar o MediaWiki por ser uma ferramenta com uma com-

ponente informativa muito forte que se enquadra perfeitamente no proposito deste

projecto, por ser uma ferramenta ja utilizada no seio da empresa onde os colabo-

1Dispositivo empresarial comercializado pela Google, que faz indexacao de todo o tipo de in-formacao dentro da rede interna das empresas.

Capıtulo 3. Projecto - Wiki4PGest 9

radores ja se sentem de alguma forma familiarizados com o seu funcionamento na

qual usam-na para partilhar algumas informacoes, manuais e conhecimentos inter-

nos de ordem tecnica dentro do nucleo da empresa.

3.1.2 Objectivos

Os gestores de projecto sao os responsaveis por inserir e manipular dados na aplicacao

PGest relacionados com a gestao dos projectos que sao responsaveis, como por exem-

plo: criar projectos, criar e editar fases e tarefas de desenvolvimento de um projecto,

alocar colaboradores a projectos e a tarefas, inserir datas previstas e reais de inıcio

e termino de projectos, alocar recursos a projectos e respectivas tarefas. Por outro

lado, os colaboradores sao responsabilizados por inserir os dados relacionados com

as tarefas que lhes sao atribuıdas no seguimento do desenvolvimento de cada pro-

jecto, assim como o esforco investido em determinado projecto e/ou tarefa. Toda

esta informacao e inserida no PGest onde e registada e armazenada num sistema de

gestao de base de dados Informix.

O objectivo para este projecto consiste em desenvolver um sistema que aceda a esta

base de dados, interprete e publique os dados num servidor MediaWiki, de modo a

que possam ser acedidos por todos os colaboradores da empresa.

A informacao relacionada com os projectos da empresa a ser apresentada de forma

estruturada respondendo assim as necessidades dos colaboradores, e a seguinte:

• Nome do projecto;

• Referencia e ID na Base de Dados;

• Descricao do projecto e das respectivas fases e tarefas de desenvolvimento;

• Cliente a que o projecto se destina;

• Datas previstas e reais de desenvolvimento de cada projecto;

• Estado do desenvolvimento de cada Projecto, Fase e Tarefa;

• Esforcos em horas e em recurso humanos;

• Fases de desenvolvimentos associadas a cada projecto;

• Tarefas associadas a cada fase de desenvolvimento;

• Informacao de caracter grafico e estatıstico de distribuicao temporal de esforco;

• Informacao com componente dinamica, de alerta em relacao ao estado e ao

cumprimento dos prazos estabelecidos para cada projecto, fase e tarefa;

Capıtulo 3. Projecto - Wiki4PGest 10

Para alem disto existem algumas caracterısticas que sao exigidas para este sis-

tema. Uma delas e o facto da sua execucao ser totalmente independente de qualquer

operacao humana. A ideia e que toda a informacao seja apresentada num formato

pre-definido a uma hora previamente estipulada de maneira a que todo este processo

seja totalmente autonomo. Outra caracterıstica do sistema e que seja escalavel na

sua habilidade de manipular uma porcao crescente de informacao, ou estar preparado

para o seu crescimento. O sistema tera tambem de ser implementado de maneira

a que a alteracao de informacao a publicar ou ate mesmo a inclusao de novas fun-

cionalidades seja de facil concretizacao.

A publicacao e a partilha interna deste tipo de conteudos e uma mais valia para

o seio da empresa, no sentido em que permite que o colaborador se mantenha in-

formado relativamente a projectos e tarefas em curso na empresa. O objectivo e

oferecer ao colaborador uma base de suporte ao controlo e gestao do seu processo de

execucao de tarefas. A interpretacao dos dados recolhidos e apresentacao de dados

estatısticos dos projectos vao tambem proporcionar a todos os colaboradores uma

visao global de execucao de planeamento de todos os projectos em curso na empresa.

3.2 Desenho

Esta seccao apresenta a arquitectura e diagramas de modelacao do Wiki4PGest. E

apresentada uma visao global do funcionamento do Wiki4PGest e uma perspectiva

da sua interaccao com o utilizador e respectiva sequencia de actividades.

3.2.1 Arquitectura

Inicialmente, depois de proceder juntamente com a coordenadora de projecto a uma

analise de requisitos para apurar todas as caracterısticas e aspectos funcionais da

aplicacao, teve de haver um trabalho de investigacao no sentido de encontrar uma

solucao para o desafio proposto para este projecto. Durante a pesquisa foi necessario

ter em atencao o facto da solucao ter de preencher todos os requisitos propostos

pela coordenadora do projecto. Depois de alguma pesquisa na internet a procura

de uma resposta para o problema, chegou-se a uma solucao atraves da propria doc-

umentacao do sistema MediaWiki, que reside na utilizacao da Python Wikipedia

Robots Framework[6] que consiste numa ferramenta desenvolvida no ambito do Me-

diaWiki que disponibiliza uma biblioteca com algumas funcoes do MediaWiki de

realizacao de tarefas rotineiras e de manutencao. Esta biblioteca e composta por

scripts escritos em codigo python denominados por Bots, em que cada um realiza

uma operacao especıfica sobre um sistema MediaWiki. Os Bots utilizados para este

efeito sao respectivamente, o pagefromfile.py que recebe um ficheiro e publica o seu

conteudo escrito em HTML e/ou em WikiText no MediaWiki em forma de pagina

Capıtulo 3. Projecto - Wiki4PGest 11

Wiki, e o upload.py que trata de efectuar uploads de imagens para o MediaWiki.

Para que esta solucao pudesse ser aplicada, foi necessario proceder a alteracao de

algum codigo fonte do MediaWiki instalado na empresa, de maneira a permitir fazer

upload de ficheiros de imagem, e de configurar o sistema para que nao seja possıvel

editar e modificar as paginas enviadas pelos Bots.

Uma vez encontrada esta solucao possıvel, foi necessario efectuar alguma serie de

testes e experiencias no sentido de apurar se esta seria uma solucao viavel e se con-

seguiria preencher todos os requisitos propostos para o projecto, caso que se veio a

verificar.

Com isto tratou-se entao de moldar todo o processo complementar a esta solucao,

mais propriamente o processo de acesso a informacao do PGest e a construcao

dos documentos em ficheiros com toda essa informacao segundo certos moldes pre-

definidos, para servir de input aos Bots da Python Wikipedia Robots Framework.

Como uma das funcionalidades pedidas e o facto de a aplicacao ter de apresentar

graficos estatısticos de esforco, teve de haver tambem um trabalho de investigacao

nesta area, no sentido de arranjar um biblioteca Java que desse suporte a este requi-

sito. A biblioteca pesquisada que melhor se aplica as caracterısticas do Wiki4PGest

e que sera utilizada, e a JFreeChart[7]. O que se pretende com este suporte de

geracao de graficos, e de fornecer graficos estatısticos do esforco estimado e real da

carga horaria de cada projecto e sua distribuicao temporal, para serem apresentados

nas paginas Wiki de cada projecto.

Ora, uma vez realizado todo o processo de investigacao e de realizacao de testes

a solucao idealizada, iniciou-se entao o processo de desenvolvimento da aplicacao.

Durante todo este processo houve a necessidade de efectuar revisoes aos requisitos

do projecto de forma a completar a aplicacao com alguns aspectos funcionais impor-

tantes que nao se tinham analisado aquando da analise de requisitos. Foi tambem

necessario realizar alguns testes unitarios durante o desenvolvimento de maneira a

tornar a aplicacao o mais robusta e eficaz possıvel.

Na fase final do projecto foi necessario criar uma documentacao propria do Wiki4PGest

com aspectos ligados a instalacao e configuracao da aplicacao, de maneira a oferecer

aos colaborador da empresa uma base de suporte e de informacao da aplicacao e de

como ela funciona.

A figura 3.3 ilustra a arquitectura do Wiki4PGest:

Capıtulo 3. Projecto - Wiki4PGest 12

Figura 3.3: Arquitectura Wiki4PGest

Capıtulo 3. Projecto - Wiki4PGest 13

3.2.2 Diagrama de Casos de Uso

Este diagrama apresenta as accoes que o utilizador pode executar com a utilizacao

do Wiki4PGest.

Tal como e apresentado neste diagrama, o utilizador pode efectuar varios tipos

de consulta de informacao acerca de projectos da empresa. Pode consultar uma

listagem de informacao simples de projectos em curso e de projectos antigos que

foram desenvolvidos na empresa mas que nao se encontram mais em curso. Pode

tambem consultar informacao de projectos mais completa e detalhada, e pode con-

sultar informacao relacionada com cada tarefa que compoe cada projecto. Para

alem das consultas, o utilizador pode executar uma pesquisa de informacao inserindo

palavras-chave relacionadas com a informacao que deseja aceder.

Figura 3.4: Diagrama de Casos de Uso

Capıtulo 3. Projecto - Wiki4PGest 14

3.2.3 Diagrama de Actividades

Este diagrama representa o fluxo de actividades inerentes a interaccao do utilizador

com o Wiki4PGest.

Este diagrama ajuda a perceber a sequencia e opcoes de escolha de accoes envolvidas

na interaccao do utilizador alvo com o Wiki4PGest.

1

Figura 3.5: Diagrama de Actividades

Capıtulo 3. Projecto - Wiki4PGest 15

3.2.4 Ferramentas Utilizadas

Nesta seccao sao apresentadas todas as ferramentas envolvidas e utilizadas na ex-

ecucao de todas as tarefas do desenvolvimento de todo o projecto.

Eclipse SDK versao 3.3.0

Ferramenta de desenvolvimento de software utilizada para implementar todo o codigo

Java.

SQL Explorer versao 3.5.0

Plug-in do Eclipse para acesso, interrogacao e manipulacao da Base de Dados do

PGest.

SVN Repository Exploring

Plug-in do Eclipse que permite efectuar um rastreio de versoes e controlo de al-

teracoes dos varios ficheiros do projecto.

Apache Ant

Ferramenta que permite gerir as dependencias e automatizar a construcao de soft-

ware, e efectuar um conjunto de tarefas associadas ao build do projecto.

MediaWiki

Software de edicao e partilha de conteudos, onde sao publicadas as paginas com os

dados dos varios projectos, paginas estas que ficam disponıveis via Web.

Python Wikipedia Bot Framework

Biblioteca de funcoes do MediaWiki. Disponibiliza um conjunto de modulos em

Python que permitem realizar tarefas rotineiras em qualquer sistema MediaWiki.

IDLE - Python’s Integrated Development Environment

Ambiente de desenvolvimento de codigo Python.

WinShell

Editor de texto utilizado para a elaboracao dos relatorios usando tecnologia ”Latex”.

Microsoft Visio

Ferramenta de elaboracao de modelos e diagramas;

Powerdesigner

Ferramenta de elaboracao de modelos de dados, utilizada para consultar o modelo

Capıtulo 3. Projecto - Wiki4PGest 16

de dados do PGest;

3.3 Planeamento

De modo a garantir a qualidade do produto desenvolvido e de alcancar uma boa

produtividade durante o seu desenvolvimento, a execucao deste projecto seguiu or-

denadamente as etapas mais relevantes que integram um qualquer processo de de-

senvolvimento de software.

Embora o metodo de desenvolvimento inicialmente escolhido para este projecto

tenha sido o metodo em cascata, o desenvolvimento acabou por seguir um fluxo

iterativo e incremental pelas varias etapas, pelo facto de que a medida a que se ia

evoluindo iam surgindo alguns incrementos e revisoes a serem realizadas nas etapas

anteriores.

Figura 3.6: Etapas Processo de Desenvolvimento

3.3.1 Etapas

Analise - Fase de arranque do projecto. Nesta etapa e exposto em detalhe o

projecto a desenvolver e o que se pretende com ele. E feito um modelo geral e

um levantamento de requisitos no qual se define concretamente todos os aspectos

funcionais e caracterısticas que a aplicacao a desenvolver devera de possuir. Sao

feitas algumas reunioes com a coordenadora do projecto onde se define algumas

guidelines que o desenvolvimento do projecto devera seguir, nao so relativamente a

requisitos funcionais e nao funcionais do Wiki4PGest, como tambem a questoes do

seu proprio planeamento. O modelo de analise foi rectificado nas diversas iteracoes

do projecto.

Nesta fase tenta-se tambem modelar e encontrar solucoes que melhor se adequam

as intencoes do projecto e aos requisitos previamente analisados.

Foi durante esta processo que ocorreu a mudanca de abordagem do projecto para o

MediaWiki, por se chegar a conclusao que a integracao com o Google Desktop nao

seria viavel.

Capıtulo 3. Projecto - Wiki4PGest 17

Desenho - Nesta fase foram realizados diagramas de Casos de Uso e de Ac-

tividades, de forma a adquirir uma melhor perspectiva do problema. Foi tambem

executada toda a modelacao da arquitectura da aplicacao e de Modelo de Classes

para com isto dar inıcio ao processo de implementacao.

Implementacao - Esta e sem duvida a etapa mais prolongada do projecto. E

nesta etapa que se constroi aquilo que se modelou, respeitando sempre as regras

funcionais e de domınio anteriormente estabelecidas. Antes de se proceder a imple-

mentacao foram tomadas algumas decisoes de forma a respeitar as caracterısticas e

intencoes da aplicacao. A medida que se foi avancando nesta etapa foram surgindo

novos requisitos a novas opcoes de implementacao a serem revistos.

Testes - Nesta etapa foram realizados testes que visam garantir que todos os

requisitos da aplicacao sejam respeitados. Esta etapa foi iterada durante a etapa

de implementacao com a execucao de alguns testes unitarios sobre os metodos im-

plementados no modulo Java da aplicacao. No final da implementacao foi entao

realizado um processo de testes mais exaustivo de maneira a garantir a qualidade

de execucao da aplicacao.

Finalizacao - Ultima fase destinada a packaging e distribuicao da aplicacao.

Foi necessario construir documentacao informativa que apresenta o fundamento do

Wiki4PGest, o seu funcionamento, opcoes funcionais da interface com o utilizador,

opcoes de implementacao, e o seu modo de instalacao e configuracao, de maneira a

fornecer uma base de suporte a qualquer colaborador que no futuro pretenda insta-

lar e/ou configurar o Wiki4PGest.

Capıtulo 3. Projecto - Wiki4PGest 18

3.3.2 Mapa de Gantt

A seguir e apresentado o mapa de Gantt correspondente ao planeamento do estagio,

com a distribuicao temporal de cada etapa de desenvolvimento do projecto. A cal-

endarizacao de todas as tarefas realizadas no ambito do projecto e apresentada na

seccao apendices no final do documento.

Figura 3.7: Mapa de Gantt

Capıtulo 3. Projecto - Wiki4PGest 19

3.4 Implementacao

Nesta seccao e apresentado todo o modelo de implementacao do Wiki4PGest.

A figura 3.8 apresenta o modelo de desenho da solucao implementada.

Interessa salientar que nesta solucao existem dois modulos nucleares, o modulo Java

e o modulo Python Wikipedia Robots Framework, cada um com objectivos e tarefas

bem definidos.

Vamos agora estudar aprofundadamente cada um.

Figura 3.8: Modelo da Solucao Implementada

Capıtulo 3. Projecto - Wiki4PGest 20

3.4.1 Modulo Java e Opcoes de Implementacao

E necessario salientar as razoes pela qual levaram a que este modulo fosse realizado

na linguagem Java. E as razoes residem no facto desta ser a linguagem mais utilizada

no desenvolvimento dos projectos da empresa, e por ser tambem a linguagem em que

eu e a grande maioria dos tecnicos de desenvolvimento nos sentimos mais familiar-

izados para trabalhar. Esta e a maior componente de toda a aplicacao Wiki4PGest

em termos de tarefas funcionais.

E nesta componente que os dados dos projectos registados no PGest sao acedi-

dos e tratados, e sao gerados ficheiros com toda essa informacao, para servirem de

input ao modulo Python, para que este possa proceder a geracao da paginas Wiki

e apresenta-las no sistema MediaWiki. E tambem nesta componente que sao con-

struıdos os graficos estatısticos de dados relativos a gestao dos projectos, para que o

modulo Python os possa enviar para o MediaWiki e serem apresentados nas paginas

Wiki dos projectos. Todo o output gerado por esta componente vai servir de input

ao modulo Python que por sua vez tratara de enviar toda a documentacao gerada

para o MediaWiki.

Figura 3.9: Execucao do modulo Java

Seguidamente, e apresentado o Modelo de Classes desta componente, com todas

as classes e respectivos metodos implementados.

Neste modelo e representado o conjunto de pacotes de classes Java e respectivos

metodos envolvidos na implementacao do Wiki4PGest.

Capıtulo 3. Projecto - Wiki4PGest 21

Figura 3.10: Modelo de Classes

Capıtulo 3. Projecto - Wiki4PGest 22

As proximas seccoes pretendem oferecer uma boa percepcao de todas as ex-

ecucoes que integram este modulo do Wiki4PGest.

Vao ser apresentadas as opcoes de implementacao dos varios aspectos funcionais

deste modulo da aplicacao, e vamos estudar detalhadamente cada funcionalidade

implementada neste modulo, de maneira a compreender a finalidade de cada uma e

como foram implementadas.

Acesso aos dados do PGest

Na classe main do modulo Java do Wiki4PGest, aquando do arranque da aplicacao,

e estabelecida uma ligacao a Base de Dados do PGest usando a classe Properties

do Java que permite definir num ficheiro os campos da base de dados a aceder.

Esta opcao de implementacao permite que facilmente se configure o Wiki4PGest a

operar sobre uma qualquer maquina onde esteja alojada a base de dados do PGest,

bastando apenas alterar neste ficheiro os campos respectivos a base de dados.

Figura 3.11: Ficheiro Properties

Este acesso e feito usando o JDBC(Java Data Base Connection) para sistemas

Informix. Com esta ligacao pretende-se ter acesso aos dados dos projectos registados

na aplicacao PGest para se proceder a recolha dos dados dos projectos a apresen-

tar nas paginas Wiki. Esta informacao e adquirida atraves da classe QueriesMan-

ager.java por via de interrogacoes a base de dados usando comandos SQL. Antes de

implementar esta classe, foi feita a sua interface Java QueriesManagerInterface.java

de forma a moldar os metodos de interrogacao a base de dados necessarios a imple-

mentar.

Capıtulo 3. Projecto - Wiki4PGest 23

Estruturacao dos dados recolhidos do PGest

Os dados recolhidos do PGest sao estruturados por classes implementadas que dao

a nocao de projecto, fase e tarefa. Estas sao respectivamente: FullProjectInfo.java,

SimpleProjectInfo.java, Phase.java, Task.java e SimpleTask.java. Sao nos objectos

destas classes que toda a informacao e organizada para depois ser utilizada para es-

crever nos ficheiros de output. Estas classes sao utilizadas e manipuladas conforme

os dados a apresentar nas paginas Wiki a construir. Por exemplo, as classes Full-

ProjectInfo.java e Task.java sendo classes que representam cada projecto e tarefa

de um forma completa, sao usadas apenas nas paginas Wiki que iram apresentar

os dados completos de projecto e tarefas, enquanto que as classes SimpleProject-

Info.java e SimpleTask.java que sao classes que representam os projectos e tarefas de

um forma mais simplificada, sao usadas apenas nas paginas que apenas apresentarao

informacao de uma forma mais simplificada.

Geracao de Paginas Wiki

A classe PagesGenerator.java do package wikipages e a responsavel pelo controlo

e pela escrita do codigo WikiText e HTML nos ficheiros de output, de toda a in-

formacao recolhida do PGest. Durante o processo de construcao dos ficheiros de

output, esta classe faz tambem o controlo do codigo WikiText e HTML responsavel

pelo Layout das paginas que iram ser geradas atraves destes ficheiros. Nesta classe

tambem foram implementados metodos que tratam de realizar a conversao de to-

dos os caracteres especiais dos dados do PGest para codificacao UTF-82, visto que o

Bot pagefromfile.py que vai gerar as paginas Wiki atraves dos ficheiros de output do

Java, apenas opera com ficheiros em que o seu conteudo esteja codificado em UTF-8.

Escrita de Paginas em Ficheiros

Os ficheiros onde e escrito todo o codigo WikiText sao respectivamente: histori-

cal.wiki, projects.wiki, individualProjects.wiki e individualTasks.wiki. Estes ficheiros

contem todo o codigo de todas as paginas Wiki a serem geradas para o MediaWiki.

O ficheiro historical.wiki contem a pagina Wiki responsavel por apresentar todos os

projectos terminados e em fase de manutencao, o ficheiro projects.wiki contem a

pagina que apresenta os projectos ainda em curso na empresa, o ficheiro individual-

Projects.wiki contem todas as paginas individuais de todos os projectos, e o ficheiro

individualTasks.wiki todas as paginas individuais de todas as tarefas associadas aos

2Tipo de codificacao Unicode que pode representar qualquer caracter universal padrao do Uni-code, sendo tambem compatıvel com o ASCII.

Capıtulo 3. Projecto - Wiki4PGest 24

projectos. Estes dois ultimos ficheiros tem o codigo das varias paginas Wiki sep-

arados por delimitadores para que o Bot pagefromfile.py responsavel por gerar as

paginas saiba onde comeca e acaba cada pagina a ser gerada. O delimitador que

representa o inıcio de uma pagina e a string ”xxxx”, e o que representa o final da

pagina e a string ”yyyy”.

Na seccao Apendices e apresentado uma parcela do conteudo do ficheiro individual-

Projects.wiki com os delimitadores referidos.

As figuras 3.12, 3.13 e 3.14 apresentam exemplos de paginas no MediaWiki geradas

pelos Bots com estes ficheiros de input.

Figura 3.12: Projectos em Curso

Geracao de Graficos Estatısticos

Existe tambem a classe responsavel por gerar os dois graficos estatısticos de esforco

de cada projecto. Estes graficos sao criados usando a API JFreeChart. O primeiro

grafico denominado por ”Esforco Previsto/Real”, consiste num grafico cartesiano de

barras que apresenta o esforco estimado e real das horas de trabalho consumidas

Capıtulo 3. Projecto - Wiki4PGest 25

Figura 3.13: Pagina de Detalhe de um Projecto

Figura 3.14: Pagina de Detalhe de um Projecto(continuacao)

Capıtulo 3. Projecto - Wiki4PGest 26

para a realizacao do respectivo projecto. Este grafico tem tambem uma componente

dinamica que muda a cor da barra entre verde e vermelho, consoante o valor real

de esforco estiver dentro ou nao do prazo estimado. A figura 3.15 apresenta um

exemplo de um grafico em que o esforco real encontra-se dentro do valor previsto e

um grafico em que o valor do esforco real excede o valor previsto.

Figura 3.15: Graficos Esforco Previsto/Real

O grafico de ”Distribuicao de Esforco”consiste igualmente num grafico cartesiano

mas agora de representacao linear, em que apresenta cronologicamente a distribuicao

do esforco consumido ao longo do tempo. O espaco temporal e apresentado em varias

representacoes, consoante a duracao do projecto em questao: diario se for menos de

31 dias, semanal se for entre 31 e 182 dias, mensal se for entre 182 e 365, e trimestral

se tiver uma duracao superior a um ano.

A figura 3.16 apresenta um exemplo de um grafico deste genero, em que a duracao

do projecto representado e compreendido entre 182 e 365 dias, atribuindo assim ao

grafico um intervalo de tempo mensal.

Capıtulo 3. Projecto - Wiki4PGest 27

Figura 3.16: Distribuicao de Esforco

Controlo de Redundancia de Paginas Wiki

Durante a fase de testes do Wiki4PGest, tornou-se evidente de que a operacao de

geracao de paginas para o MediaWiki de todos os projectos e tarefas do PGest,

traduzia-se numa operacao bastante demorada (cerca de 9 horas), visto haver uma

grande quantidade de projectos, e principalmente de tarefas. Realmente nao fazia

muito sentido o Wiki4PGest ser redundante ao ponto de gerar paginas de projectos

e tarefas que nao sofreram alteracoes nos seus dados desde a sua ultima geracao.

Entao pensou-se numa maneira de contornar esta situacao, e a solucao passou por

criar hashes dos dados de cada projecto e tarefa de cada vez que o Wiki4PGest

corre, e comparar com o valor que se encontra armazenado numa tabela criada no

PGest para o efeito com valores de hashes geradas anteriormente que correspondem

a ultima alteracao dos respectivos dados. Assim apenas sao geradas novas paginas

de projectos e tarefas novas, e paginas com dados que sofreram alteracoes.

Batch Files

A execucao dos Bots com os ficheiros de output do Java, e feita a partir de batch files

gerados tambem pelo Java, e pelo batch file wiki4pgest.bat escrito com o proposito

de correr todos estes batch files que desencadeiam as varias execucoes dos Bots. Ou

seja, o ficheiro wiki4pgest.bat contem as instrucoes que fazem correr os Bots para

os varios ficheiros que contem o codigo das paginas Wiki.

Para melhor compreender o seu funcionamento, a figura 3.17 apresenta uma ilus-

tracao que esclarece toda a interaccao destes Batch Files com os Bot, e o codigo das

instrucoes escritas no batch file wiki4pgest.bat.

Capıtulo 3. Projecto - Wiki4PGest 28

Figura 3.17: Batch Files

Figura 3.18: wiki4pgest.bat

O ficheiro makegraphics.bat referenciado no wiki4pgest.bat, e o ficheiro que con-

tem as instrucoes que executa o Bot upload.py para todos os graficos gerados pelo

modulo Java. A medida que o modulo Java gera cada grafico, e escrito neste ficheiro

a instrucao que trata de executar o Bot para esse respectivo grafico.

Capıtulo 3. Projecto - Wiki4PGest 29

3.4.2 Modulo Python Wikipedia Robots Framework

Tal como foi dito em 3.2.1, este modulo consiste numa ferramenta desenvolvida no

ambito do MediaWiki que disponibiliza um conjunto de scripts que realizam tarefas

rotineiras e de manutencao num sistema MediaWiki. Estas tarefas sao implemen-

tadas em modulos escritos em codigo python denominados por Bots (Robots). Estes

Bots sao ferramentas automaticas e configuraveis que operam em qualquer sistema

MediaWiki de modo a facilitar a execucao de operacoes repetitivas e em serie, que

em caso de serem feitas manualmente se traduzem em trabalho excessivo e repetitivo

consumindo bastante tempo a ser realizado.

No Wiki4PGest, este modulo e entao responsavel por gerar e enviar para o servi-

dor MediaWiki todas as paginas escritas no ficheiros de output do modulo Java.

Para alem disso, e tambem responsavel por enviar as imagens correspondentes aos

graficos estatısticos gerados pelo Java, e as imagens informativas caracterizadas por

”smiles”que informam o utilizador acerca do estado do projectos/fases/tarefas e re-

spectivos prazos. Estas operacoes sao realizadas a partir dos Bot pagefromfile.py e

upload.py.

Ficheiro de Configuracao user-config.py

Este e o ficheiro de configuracao geral da Python Wikipedia Robot Framework.

Neste ficheiro definem-se os aspectos gerais da aplicacao, tais como, a linguagem

a ser usada na comunicacao dos Bot com a Wikipedia, o ficheiro family.py com as

configuracoes do sistema MediaWiki a aceder, e o utilizador com conta activa no

MediaWiki.

Figura 3.19: Ficheiro user-config.py

Capıtulo 3. Projecto - Wiki4PGest 30

Ficheiro de Configuracao ef-family.py

E neste ficheiro onde e feita a configuracao do sistema MediaWiki onde a Python

Wikipedia Robot Framework opera. E necessario configurar o nome da famılia do

sistema, o seu URL, o seu namespace, versao do MediaWiki, e a ”path”para a pagina

principal da Wikipedia a aceder.

Figura 3.20: Ficheiro ef-family.py

Capıtulo 3. Projecto - Wiki4PGest 31

Bot pagefromfile.py

Tal como ja foi dito anteriormente, o pagefromfile.py e o Bot responsavel por servir

de input os ficheiros de output do Java, e a partir daı gerar as respectivas paginas

e envia-las para o servidor MediaWiki.

Seguidamente e apresentado o seu diagrama de actividade e uma figura que apre-

senta o Bot em execucao:

Figura 3.21: Diagrama de de Actividade do Bot pagefromfile.py

Figura 3.22: Bot pagefromfile.py

Capıtulo 3. Projecto - Wiki4PGest 32

Bot upload.py

O Bot upload.py trata de realizar o upload das imagens dos graficos gerados pelo java

e dos smiles ja mencionados. Depois estas imagens vao ser apresentadas nas paginas

Wiki sendo referenciadas por links para o local onde se encontram armazenadas no

servidor MediaWiki.

Seguidamente o respectivo diagrama de actividade e figura que apresenta o Bot em

execucao:

Figura 3.23: Diagrama de de Actividade do Bot upload.py

Figura 3.24: Bot upload.py

Capıtulo 3. Projecto - Wiki4PGest 33

3.4.3 Outras Funcionalidades

Pesquisa

O campo de pesquisa e uma funcionalidade integrada de raız na plataforma Medi-

aWiki que permite que o utilizador va ao encontro da informacao desejada.

Inserindo um palavra chave relacionada com a informacao pretendida, e apresentado

um resultado com todas as paginas Wiki que contem informacao relacionada com

essa palavra chave, bastando apenas que o utilizador seleccione a pagina correspon-

dente a informacao que pretende.

Figura 3.25: Pesquisa

Capıtulo 3. Projecto - Wiki4PGest 34

Representacao de Smiles

Os smiles tem uma componente informativa representando o facto de as datas e

esforcos do projecto estarem dentro ou nao dos prazos previstos. Ha tambem a

representacao do smile confuso que significa que um dos campos se encontra a null.

Figura 3.26: Smiles

Capıtulo 3. Projecto - Wiki4PGest 35

Build do Projecto

Para efectuar o build do projecto foi construido o ficheiro ”build.xml”para ser ex-

ecutado pela ferramenta Ant. Este ficheiro e configurado de maneira a que sejam

executadas um conjunto de operacoes como build do codigo fonte Java, criacao do

arquivo Jar de execucao da aplicacao, gestao de dependencias da biblioteca Java e

descompactamento do modulo python do Wiki4PGest.

A estrutura do ficheiro build.xml encontra-se representado na figura 3.27.

Figura 3.27: Ficheiro build.xml

Capıtulo 3. Projecto - Wiki4PGest 36

Configuracao do MediaWiki

O ficheiro LocalSettingsa.php incluido no package da plataforma MediaWiki, per-

mite realizar algumas configuracoes relativamente a instancia instalada. Foi necessario

configura-lo de maneira a permitir o upload de ficheiros com formato PNG, e que

nao fosse possıvel ao utilizador editar paginas geradas pelo Wiki4PGest.

Figura 3.28: Codigo inserido no codigo fonte do MediaWiki

Capıtulo 3. Projecto - Wiki4PGest 37

3.5 Testes

A medida que as varias funcionalidades iam sendo implementadas, realizaram-se

alguns testes unitarios de forma a garantir as regras funcionais da aplicacao. Como

a realizacao destes testes nao chegaram para garantir a total garantia de qualidade

da aplicacao, no final do desenvolvimento procedeu-se a uma sessao de testes um

pouco mais exaustiva em relacao aos valores e tratamentos dos dados apresentados

pela aplicacao, de forma a garantir a total fiabilidade e coerencia do produto final.

Foi tambem durante esta fase que se consciencializou de que a aplicacao demorava

demasiado tempo a gerar todas as paginas de todos os projectos e tarefas. Com

a implementacao da funcionalidade de controlo de redundancia, testou-se uma vez

mais a aplicacao no sentido de medir o seu tempo de execucao, que se traduziu em

tempos aceitaveis.

Como se pretendia que o Wiki4PGest nao interferisse com o normal funcionamento

do PGest, criou-se uma instancia da base de dados do PGest com dados de producao,

de maneira a que se pudesse executar os testes sobre dados de producao, nao inter-

ferindo com o PGest, garantido assim o normal funcionamento do PGest durante a

hora laboral.

Foram tambem efectuados testes de usabilidade com os utilizadores alvo, de maneira

a obter um feedback e de angariar novas ideias e sugestoes para que fossem satisfeitas

todas as necessidades do publico alvo.

As sugestoes recebidas focaram-se mais em questoes relacionadas com o design da

interface. Foi sugerido a alternancia de cor nos campos das tabelas para se iden-

tificar melhor cada um deles e algumas propriedades relacionadas com o proprio

layout como borders, labels, texto a bold e posicoes de elementos nas paginas.

Capıtulo 4

Conclusao

Neste capıtulo faz-se uma conclusao relativamente a experiencia passada na real-

izacao do projecto, e de fazer uma analise crıtica a todo o processo envolvido e ao

produto final. Sao tambem tiradas algumas ilaccoes relativamente a continuidade a

este projecto.

4.1 Resumo do trabalho desenvolvido

Nesta fase de iniciacao a integracao no mercado de trabalho e no mundo empresarial,

a realizacao deste projecto traduziu-se num desafio pessoal que me permitiu testar

todas as minhas capacidades e conhecimentos adquiridos durante a Licenciatura. O

facto de o realizar numa empresa de desenvolvimento de software como instituicao

de acolhimento, e estar em contacto com varios colaboradores que lidam diariamente

com o cliente e que se encontram integrados na sua equipa de suporte e manutencao,

forneceu-me alguns conhecimentos relativamente a polıtica de negocio e interaccao

com o cliente, embora o projecto nao tenha sido desenvolvido para um cliente es-

pecıfico da empresa. O facto de nao estar incluido numa equipa numerosa tambem

se revelou um aspecto importante, visto que exigiu um envolvimento por todas as

etapas no processo de desenvolvimento do projecto. Para alem do conhecimento

tecnico adquirido e de ter explorado novas tecnologias na abordagem ao projecto,

toda esta experiencia foi enriquecedora no sentido em que adquiri boa praticas de

desenvolvimento e outros conhecimentos tecnicos de outras tecnologias que descon-

hecia, utilizadas na implementacao dos projectos desenvolvidos na empresa. Um dos

factores motivadores na realizacao do projecto, e a sua utilidade que o projecto vai

exercer na execucao de algumas tarefas no quotidiano dos colaboradores da empresa.

Devo concluir assim que toda a experiencia passada neste projecto de estagio teve

um balanco bastante positivo.

38

Capıtulo 4. Conclusao 39

4.2 Revisao Crıtica

A intencao inicial do projecto de desenvolver no ambito do Google, era bastante

ambiciosa e interessante e traria algumas caracterısticas enriquecedoras a aplicacao.

Pelos motivos apresentados no capıtulo 3 deste documento chegou-se a conclusao

que a API disponibilizada pelo Google Desktop nao seria suficiente para solucionar

o problema proposto neste projecto. Mas a mudanca de abordagem do projecto

acabou por ser bastante vantajosa, na medida em que conduziu o projecto de estagio

para um novo percurso, potenciando assim o trabalho de pesquisa no sentido de iden-

tificar e estruturar uma nova solucao para o problema proposto. Para alem do mais,

a integracao com o MediaWiki permitiu gerar um repositorio de informacao estru-

turada com informacao global de projectos.

Uma aspecto que contribuiu para o sucesso do projecto, foi o optimo acompan-

hamento por parte da coordenadora de projecto e de alguns colaboradores da em-

presa que me souberam ajudar em alguns pontos cruciais, tanto na fase de desen-

volvimento, como em todo o perıodo de estagio.

4.3 Trabalho Futuro

Como trabalho futuro, e necessario colocar em producao o Wiki4PGest. Esta tarefa

tera de ser feita fora da hora laboral para evitar que ocorra algum problema com

a base de dados, impedindo assim que se possa trabalhar com o PGest durante

a hora laboral da empresa. E tambem importante que se proceda a configuracao

de um software de execucao agendada de instrucoes, para que a aplicacao seja ex-

ecutada automaticamente e diariamente sem qualquer intervencao manual. Estas

tarefas ainda nao foram realizadas porque ainda nao houve disponibilidade da parte

dos colaboradores responsaveis para testar a aplicacao fora da hora laboral, e para

disponibilizar uma maquina onde se possa instalar uma instancia do MediaWiki

e integrar o Wiki4PGest com um software de execucao agendada para executar a

aplicacao periodicamente.

Outra caracterıstica que o Wiki4PGest possui e a capacidade de detectar algumas

incoerencias nos dados obtidos do PGest, como por exemplo, datas de termino de

projectos anteriores a respectiva data de inıcio do projecto. Chegou-se entao a con-

clusao que devido a existencia de algumas inconsistencias nos dados do PGest, que

seria interessante como trabalho futuro, incrementar uma nova funcionalidade de

alerta ou de ”logging”onde escreve-se em ficheiros estes casos de inconsistencia, per-

mitindo assim que os gestores de projecto detectassem facilmente esta incoerencias,

e que por si so o Wiki4PGest conseguisse apresentar a informacao corrigida nas

paginas Wiki geradas.

Bibliografia

[1] http://desktop.google.com/

[2] http://www.mediawiki.org/

[3] http://www.google.com/enterprise/

[4] http://www.wikipedia.org/

[5] http://www-306.ibm.com/software/data/informix/

[6] http://en.wikipedia.org/wiki/Wikipedia:Creating a bot

[7] http://www.jfree.org/jfreechart/

[8] Manual PGest

40

Apendice A

Calendarizacao de Tarefas

41

Apendice A. Calendarizacao de Tarefas 42

Semana Tarefas

17/09 a 05/10 - Apresentacao e adaptacao a empresa.Analise de Requisitos:- Apresentacao e aproximacao ao problema proposto.- Definicao de funcionalidades e caracterısticasda aplicacao a desenvolver.- Pesquisa de solucoes Google para o problema proposto.- Experimentacao da ferramenta SDK e respectivas API’sdo Google Desktop.

8/10 a 19/10 - Mudanca do ambito do projecto alterando-odo Google para o MediaWiki.- Revisao de requisitos, funcionalidades ecaracterısticas da aplicacao.- Pesquisa de informacao acerca do MediaWikino sentido de perceber a sua arquitecturae de arranjar uma solucao para o problema proposto.- Experimentacao da ferramentaPython Wikipedia Robots Framework.

22/10 a 26/10 Desenho:- Apresentacao do Modelo de dados Base de Dados do PGest.- Desenho da arquitectura do Wiki4PGest.- Desenho da solucao proposta para o Wiki4PGest.- Elaboracao do esboco da UI do Wiki4PGest.- Elaboracao de um esboco da estruturacao do codigo Java.- Elaboracao de uma Interface Java de todos os metodos deinterrogacao a base de dados do PGest.

29/10 a 09/11 - Elaboracao do relatorio preliminar.12/11 a 07/03 Implementacao:

- Estruturacao do codigo e implementacao preliminardas estruturas de dados.- Implementacao do prototipo do Wiki4PGestem toda a sua extensao.Testes Unitarios:- Realizacao de testes unitarios a cada funcionalidadeimplementada.- Correccao de erros.Analise de Requisitos:- Revisao dos requisitos da aplicacao e introducao denovas funcionalidades.Implementacao:- Alteracoes de acordo com a revisao dos Requisitos.- Introducao das novas funcionalidades.- Alteracoes no PHP do MediaWiki de integracao doWiki4PGest.

Tabela A.1: Calendarizacao de Tarefas

Apendice A. Calendarizacao de Tarefas 43

Semana Tarefas

Testes:10/03 a 21/03 - Testes ao prototipo.

- Confirmacao da coerencia dos resultados apresentadospela aplicacao.- Correccao de erros.

24/03 a 30/05 - Implementacao:- Implementacao do algoritmo de actualizacao de paginasdo Wiki4PGest.Testes:- Testes ao algoritmo.Finalizacao:- Ajustes Finais.- Preparacao para producao.

12/05 a 13/06 - Elaboracao do relatorio final.

Tabela A.2: Calendarizacao de Tarefas(continuacao)

Apendice B

Codigo de uma pagina Wiki

Figura B.1: Codigo de uma pagina Wiki

44