¸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
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 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 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 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)