Universidade de Lisboa Faculdade de Ciências Departamento de Informática DESENVOLVIMENTO DE UMA SOLUÇÃO PARA CONTROLO E REPORTE DAS ACTIVIDADES DE PROJECTO - TIME REPORT MANAGEMENT Filipe Miguel dos Santos da Costa Cabaço PROJETO Versão Pública MESTRADO EM ENGENHARIA INFORMÁTICA Especialização em Engenharia de Software 2013
UNIVERSIDADE DE LISBOA Faculdade de Ciências Departamento de Informática DESENVOLVIMENTO DE UMA SOLUÇÃO PARA CONTROLO E REPORTE DAS ACTIVIDADES DE PROJECTO - TIME REPORT MANAGEMENT Filipe Miguel dos Santos da Costa Cabaço PROJETO Trabalho orientado pela Professora Doutora Maria da Graça de Figueiredo Rodrigues Gaspar e coorientado pela Engenheira Ana Teresa Almeida MESTRADO EM ENGENHARIA INFORMÁTICA Especialização em Engenharia de Software 2013
Agradecimentos Considero este relatório o culminar de uma parte importante da minha formação académica, finalizando o meu percurso na Faculdade de Ciências no qual tive o privilégio e prazer de receber uma formação completa, aumentando os meus horizontes e ambições graças a professores competentes e inspiradores. Quero agradecer aos meus diversos colegas de faculdade que estiveram sempre presentes em todas as etapas da minha vida académica que foram uma força motivadora e de apoio que se tornaram em verdadeiros amigos. Também quero mostrar o meu apreço aos meus colegas fora meio académico, sempre dispostos a apoiar em todas as minhas. Em especial quero agradecer à minha namorada Isabel Ramos que esteve presente para ajudar em todas as fases, tornando-se um apoio muito importante. Aos meus colegas de trabalho agradeço as horas de paciência, a capacidade de me integrarem na equipa e o apoio que deram tanto no projeto como na escrita deste relatório, foram sem dúvida um ponto fulcral na minha iniciação na vida profissional. Em especial quero agradecer a minha orientadora Teresa Almeida pelo excelente trabalho como orientadora, proporcionando-me uma oportunidade valiosa, mostrando como poderia melhorar. Queria também agradecer ao Nuno Reis por todo o conhecimento partilhado e ajuda no projeto descrito no relatório. E, por fim, quero agradecer aos meus colegas Bruno Santos e Jaime Vaz, colegas de faculdade que se tornaram colegas de trabalho, ajudaram em todas as fases do meu estágio, facilitando bastante a integração e aprendizagem. À minha coordenadora de estágio, Graça Gaspar, agradeço toda a sua disponibilidade e minuciosidade ao longo de todo o projeto, aconselhando de forma objetiva e construtiva, ajudando assim bastante a escrita deste relatório. Por fim quero agradecer a toda a minha família por terem sido essenciais e uma motivação para concluir a minha vida académica. Em especial, quero agradecer aos meus avós, quatro pessoas que me inspiraram desde cedo fomentaram a minha curiosidade cientifica que guia. E por ultimo, quero agradecer aos meus pais que fizeram de tudo para me facultar o melhor para mim, sempre com um excelente conselho, mostrando que devo sempre querer mais, tornando-se a minha motivação para desafios futuros.
Para os meus pais e avós.
Resumo O desenvolvimento de software é um processo complexo, com diversos objetivos e vários intervenientes, com diferentes exigências e requisitos a serem cumpridos, exigências estas que podem ser prazos, funcionalidades ou arquiteturas, entre outros fatores importantes para o projeto. Esta diversidade de objetivos apresenta desafios para os gestores na preparação e planeamento de um projeto, sendo necessário abordar inúmeros elementos, de forma a concretizar os objetivos propostos. Um dos elementos chave, ao longo de todas as fases do projeto, é a calendarização de tarefas, influenciando, diretamente, o sucesso ou insucesso dos objetivos a cumprir pelos gestores e equipa de desenvolvimento. O objetivo deste trabalho é o desenvolvimento de uma aplicação web, com o intuito de prevenir e mitigar problemas relacionados com o cumprimento de tarefas planeadas, determinando o estado de execução e a conclusão das tarefas, com base nos dados introduzidos pelos membros da equipa de desenvolvimento do projeto. Tendo em vista que são necessárias inúmeras entradas por parte dos utilizadores, foi dada particular relevância às questões relativas à usabilidade e portabilidade do software desenvolvido, tentando-se simplificar processos de aquisição de dados, por parte dos intervenientes, de forma a garantir um processo rápido, seguro e eficiente. Assim, o projeto em causa irá ajudar o desenvolvimento de boas práticas, necessárias para entregas de software nos prazos estabelecidos, com a qualidade exigida pelo cliente, apresentando aos gestores valores concretos, com os quais poderão avaliar e planear com mais exatidão o trabalho das equipas de desenvolvimento, mitigando assim, possíveis riscos. Palavras-chave: Calendarização, Aplicação Web Monitorização, Gestão de Projetos, Tarefas, Planeamento,
Abstract Software development is a complex process, with various objectives and multiple users, with different demands and requirements to be fulfilled, from deadlines to functionalities or system architecture and any other elements that are relevant for a project. This diversity presents challenges to project managers when scheduling and planning a project, with various factors to account for, to guarantee that all objectives are accomplished. One of the key aspects of managing software development, during all its phases, is the correct scheduling of tasks, which affects, directly, the success or failure of the goals set by project managers. This work presents a solution, by exposing the development of a tool with the goal of monitoring the software project tasks, using a simple, intuitive and multiplatform tool, preventing or reducing the impact of task planning errors using input of the development teams. With this objective in mind, additional relevance was given to usability and portability, simplifying processes of data acquisition, improving fulfillment speed, safety and more efficient information gathering. As such, the final goal was the implementation of good development practices that are needed for a well-managed software project, with the quality demanded by the client and within the deadlines proposed in the project planning, presenting the project managers with valuable data to evaluate and plan more precisely the various teams, avoiding future errors or delays. Keywords: Monitoring, Project Management, Tasks, Planning, Scheduling, Web Application
Conteúdo Capítulo 1 Introdução... 15 1.1 Motivação... 15 1.2 Objetivos... 15 1.3 Notação Adotada... 15 1.4 Organização do documento... 15 Capítulo 2 Trabalho relacionado... 16 2.1 Aplicações Similares... 16 2.2 Método atual da instituição de acolhimento... 16 Capítulo 3 Enquadramento... 17 3.1 Instituição de Acolhimento... 17 3.2 Ferramentas de Desenvolvimento... 17 3.3 Processo de Desenvolvimento... 17 3.4 Plataforma de Desenvolvimento... 17 3.5 Calendarização do Projeto... 18 Capítulo 4 Fase de Análise... 19 4.1 Documentação produzida... 19 4.2 Conclusão... 19 Capítulo 5 Fase Desenho... 20 5.1 Modelo de dados... 20 5.2 Modelação do Sistema... 20 Capítulo 6 Fase Implementação... 21 6.1 Módulo de Acesso à Camada de Dados... 21 6.2 Módulo de Automatização de Registo... 21 6.3 RESTful API... 21 Capítulo 7 Fase de Testes... 22 7.1 Testes Unitários... 22 7.2 Testes de Sistema... 22 7.3 Testes de Aceitação... 22 7.4 Conclusão... 22 Capítulo 8 Conclusão... 23 8.1 Influência da fase de análise na fase de desenho... 23 8.2 Discussão do uso de plataformas de desenvolvimentos... 23
8.3 Uso de MVC para aplicações Web... 23 Capítulo 9 Bibliografia... 24
Capítulo 1 Introdução Por motivos de confidencialidade, nesta versão pública é apresentada a estrutura da tese mas a informação está omitida. 1.1 Motivação Descrição da motivação para a criação do projeto. 1.2 Objetivos Descrição dos objetivos pretendidos da aplicação 1.3 Notação Adotada Notação utilizada no documento. 1.4 Organização do documento Detalhada a organização do documento.
Capítulo 2 Trabalho relacionado Nesta secção irei discutir produtos similares à solução proposta neste documento, concluindo com o porquê de não serem adequadas ao objetivo pretendido. Por fim, irei abordar o trabalho atual da empresa, na área de gestão e monitorização de tarefas e, quais os métodos utilizados, concluindo com a minha opinião sobre a sua eficácia. 2.1 Aplicações Similares Analise de diversas aplicações semelhantes à ferramenta desenvolvida, abordando as diversas vantagens e desvantagens de cada aplicação, concluindo comparando com os objetivos propostos pelo projeto desenvolvido. 2.2 Método atual da instituição de acolhimento Descrito os métodos atualmente adotados pela empresa de acolhimento para registo de atividades dos diversos trabalhadores, concluindo com uma analise das vantagens e desvantagens do método atual.
Capítulo 3 Enquadramento Nesta secção irei descrever o enquadramento do trabalho na instituição de acolhimento, as ferramentas a usar, o processo de desenvolvimento, a plataforma de desenvolvimento e a calendarização do projeto. 3.1 Instituição de Acolhimento É descrita a estrutura interna da instituição de acolhimento. 3.2 Ferramentas de Desenvolvimento São especificadas as diversas ferramentas utilizadas no desenvolvimento do projeto. 3.3 Processo de Desenvolvimento Aborda qual o processo de desenvolvimento utilizado para a implementação do projeto. 3.4 Plataforma de Desenvolvimento Descrição da plataforma de desenvolvimento a ser utilizada pelo projeto.
3.5 Calendarização do Projeto Mapa de Gantt e planeamento temporal das diversas tarefas associadas ao desenvolvimento do projeto e respetiva conclusão sobre o cumprimento das datas estipuladas.
Capítulo 4 Fase de Análise Seguindo a metodologia utilizada na instituição de acolhimento, foi produzida documentação de forma a determinar os objetivos, requisitos e funcionamento da aplicação. Neste capítulo, serão descritas as diferentes fases de análise e, qual a documentação produzida associada. 4.1 Documentação produzida Descrição de toda a documentação produzida e anexada ao documento. 4.2 Conclusão São enunciadas as diversas vantagens e desvantagens da fase de análise e de toda a sua documentação.
Capítulo 5 Fase Desenho De forma a garantir uma implementação rápida e com código de qualidade, é necessário haver documentação para garantir que as diversas equipas realizem as suas tarefas corretamente. Neste capítulo descrevo os documentos produzidos e como foi realizada a construção dos mesmos. 5.1 Modelo de dados Descrito qual o modelo de dados escolhido e o motivo de ter sido escolhido. 5.2 Modelação do Sistema Descrita a arquitetura de sistema selecionada para o projeto e os motivos.
Capítulo 6 Fase Implementação Para uma aplicação cumprir todos os requisitos estipulados é necessário que a implementação seja cuidada, utilizando ao máximo as capacidades das plataformas escolhidas. Com esse fim, nesta secção do documento, irei descrever o que considero ser dos elementos mais importantes na aplicação. 6.1 Módulo de Acesso à Camada de Dados Descrito o método criado para acesso à camada de dados. 6.2 Módulo de Automatização de Registo Descrito o método criado para registo de processos automático. 6.3 RESTful API Descrição do serviço web criado para a aplicação.
Capítulo 7 Fase de Testes Todas as aplicações necessitam de garantir um mínimo de qualidade, para que o cliente fique satisfeito com o produto, cumprindo os requisitos por ele estipulados. Neste capitulo, irei explicar como foi feita a fase de testes e qual a minha análise sobre o mesmo. 7.1 Testes Unitários Descrição dos testes unitários realizados. 7.2 Testes de Sistema Descrição dos testes de sistema realizados. 7.3 Testes de Aceitação Descrição dos testes aceitação realizados. 7.4 Conclusão Conclusão e discussão dos resultados dos testes.
Capítulo 8 Conclusão Durante o desenvolvimento do projeto, tive a oportunidade de aprender bastante sobre as suas diversas fases, unindo componentes funcionais a componentes técnicas, o que permitiu ter uma perspetiva bastante abrangente, de como se processa a implementação de projetos de maiores dimensões e adaptados ao negócio. Com base nesta experiencia, detalho de seguida três constatações que, a meu ver, são relevantes e que me levaram a pensar e a ver desenvolvimento de aplicações de forma diferente. 8.1 Influência da fase de análise na fase de desenho Decomposição de como a fase de análise influenciou as decisões da fase de desenho do sistema. 8.2 Discussão do uso de plataformas de desenvolvimentos Opinião sobre a utilização de uma plataforma de desenvolvimento ajuda ou limita o desenvolvimento de aplicações. 8.3 Uso de MVC para aplicações Web Discussão da utilização do desenho arquitetural MVC em aplicações web.
Capítulo 9 Bibliografia Bibliografia usada na construção do documento.