UNIVERSIDADE ANHEMBI MORUMBI ANDRÉ ONUKI DOS SANTOS CLEUMIR DOS SANTOS DE SOUZA TIAGO LUIZ DO NASCIMENTO TASKBOARD DIGITAL PARA EQUIPES SCRUM São Paulo 2011 ANDRÉ ONUKI DOS SANTOS CLEUMIR DOS SANTOS DE SOUZA TIAGO LUIZ DO NASCIMENTO TASKBOARD DIGITAL PARA EQUIPES SCRUM Trabalho de Conclusão de Curso apresentado como exigência parcial para a obtenção do título de Bacharel em Ciências da Computação da Universidade Anhembi Morumbi. Orientador: Luís Fernando Aires Branco Menegueti São Paulo 2011 ANDRÉ ONUKI DOS SANTOS CLEUMIR DOS SANTOS DE SOUZA TIAGO LUIZ DO NASCIMENTO TASKBOARD DIGITAL PARA EQUIPES SCRUM Trabalho de Conclusão Curso apresentado como exigência parcial para a obtenção do título de Bacharel em Ciência da Computação da Universidade Anhembi Morumbi, sob a orientação do Prof. Luís Fernando Aires. Aprovado em Prof. Universidade Anhembi Morumbi Prof. Universidade Anhembi Morumbi Prof. Universidade Anhembi Morumbi RESUMO O taskboard pode fornecer diversas informações sobre o andamento de um sprint para a equipe Scrum. Entretanto essas informações nem sempre são fáceis de serem retiradas do taskboard. E requerem que algum membro da equipe fique constantemente verificando o taskboard para poder anotar as informações e trabalhá-las. O objetivo deste trabalho é criar uma ferramenta digital para substituir o taskboard convencional do Scrum. As principais vantagens de um taskboard digital sobre outro comum são a possibilidade de integração com outras ferramentas e a automatização da coleta de dados sobre o sprint. Os dados coletados podem fornecer muitas informações sobre o progresso do sprint e/ou gargalos no processo. Estes dados podem auxiliar o Scrum master a tomar decisões para melhoria do processo ou mostrar com maior antecedência que os prazos do sprint possam estar comprometidos. Outra vantagem do taskboard digital é a possibilidade de pessoas que trabalham em outra localidade utilizarem o mesmo taskboard. PALAVRAS-CHAVE: Scrum. Metodologias ágeis. taskboard. ABSTRACT A taskboard may offer many information about the sprint’s progress for a Scrum team. However, these information are not easily taken directly from the taskboard and require that a member of the team is constantly checking the taskboard to collect the data and take the information from it. The goal of this project is to develop a digital tool to replace the conventional taskboard. The main advantages of the digital taskboard over the conventional are the possibility of integration with other tools and data collection automation. The data collected this way may provide information about the sprint’s progress and/or bottlenecks on the process. The data may help the Scrum Master to make decisions to improve the process or show in advance that the sprint’s deadline may not be reached. Another advantage of the digital taskboard is the possibility of people who work remotely to share the same taskboard the other team members use. KEY WORDS: Scrum. Agile Methodologies. taskboard. LISTA DE FIGURAS Figura 1: O processo scrum. ............................................................................ 16 Figura 2: Burn down chart. ............................................................................... 18 Figura 3: Burn up chart ..................................................................................... 19 Figura 4: Cumulative flow diagram. .................................................................. 20 Figura 5: Scrum Ninja. ...................................................................................... 21 Figura 6: Green Hopper. .................................................................................. 22 Figura 7: Vip Task Manager. ............................................................................ 23 Figura 8: Padrão MVC ...................................................................................... 24 Figura 9: Casos de uso. ................................................................................... 33 Figura 10: Diagrama de classes das entidades................................................ 34 Figura 11: Diagrama de classes de controle. ................................................... 35 Figura 12: Diagrama de classes – Modelo. ...................................................... 37 Figura 13: Tela de login. ................................................................................... 37 Figura 14: Barra de ferramentas. ..................................................................... 38 Figura 15: Tela do projeto. ............................................................................... 38 Figura 16: Diagrama de classes dos diálogos. ................................................. 39 Figura 17: Diagrama de classes interface com o usuário. ................................ 39 Figura 18: Diagrama de classes criadoras de gráficos ..................................... 40 Figura 19: Diagrama de classes – DAO ........................................................... 40 Figura 20: Diagrama de classes controlador. ................................................... 41 Figura 21: Utilização do sistema. ..................................................................... 42 LISTA DE TABELAS Tabela 1: Características das Ferramentas Existentes .................................... 23 Tabela 2: Requisitos Funcionais ...................................................................... 31 Tabela 3: Requisitos Não Funcionais ............................................................... 32 Tabela 4: Casos de Uso ................................................................................... 33 LISTA DE SIGLAS CSS3 Cascading Style Sheets - Folhas de Estilo em Cascata DAO Data Access Object – Objeto de Acesso Dados HTTP HyperText Transfer Protocol - Protocolo de Transferência HiperTexto JAVA Linguagem de Programação Orientada a Objetos JSP Java Server Pages - Páginas de Servidor Java RF Requisitos Funcionais RNF Requisitos Não Funcionais SQL Structured Query Language - Linguagem de Consulta Estruturada UML Unified Modeling Language - Linguagem de Modelagem Unificado XML Extensible Markup Language - Linguagem de Marcação Extensível SUMÁRIO 1 INTRODUÇÃO .............................................................................................. 11 1.1 Objetivos ................................................................................................. 12 1.2 Justificativa ............................................................................................. 12 1.3 Abrangência............................................................................................ 12 1.4 Estrutura do Trabalho ............................................................................. 13 2 METODOLOGIAS ÁGEIS ............................................................................. 14 2.1 Scrum ..................................................................................................... 14 2.1.1 Equipe Scrum ................................................................................... 15 2.1.2 Reuniões .......................................................................................... 15 2.1.3 Artefatos ........................................................................................... 16 2.2 Taskboard ............................................................................................... 17 2.3 Monitoramento ........................................................................................ 17 2.3.1 Burn Down Chart .............................................................................. 17 2.3.2 Burn Up Chart .................................................................................. 18 2.3.3 Cumulative Flow Diagram ................................................................ 19 3 FERRAMENTAS EXISTENTES .................................................................... 21 3.1 ScrumNinja ............................................................................................. 21 3.2 GreenHopper .......................................................................................... 22 3.3 Vip Task Manager ................................................................................... 22 3.4 Comparações de Ferramentas Existentes .............................................. 23 4 TECNOLOGIAS E PADRÕES DE DESENVOLVIMENTO ........................... 24 4.1 Padrão MVC ........................................................................................... 24 4.2 Google Web Toolkit ................................................................................ 25 4.3 PHP ........................................................................................................ 25 4.4 Struts ...................................................................................................... 26 4.5 Ruby On Rails ......................................................................................... 26 4.6 HTML5 .................................................................................................... 26 4.7 Hibernate ................................................................................................ 27 5 METODOLOGIA ........................................................................................... 28 5.1 Framework de Desenvolvimento Web .................................................... 28 5.2 Persistência de Dados ............................................................................ 29 5.3 Banco De Dados ..................................................................................... 30 5.4 Ambiente de Desenvolvimento ............................................................... 30 5.5 Ferramenta para Geração de Gráficos ................................................... 30 6 MODELAGEM DO SOFTWARE ................................................................... 31 6.1 Requisitos Funcionais e Não Funcionais ................................................ 31 6.2 Casos de Uso ......................................................................................... 32 6.3 Diagramas de Classe.............................................................................. 34 6.4 Diagramas de Sequência........................................................................ 35 7 IMPLEMENTAÇÃO DO PROJETO .............................................................. 36 7.1 Modelo .................................................................................................... 36 7.2 Visualização ............................................................................................ 37 7.3 Controlador ............................................................................................. 40 8 TESTES ........................................................................................................ 42 9 CONCLUSÃO ............................................................................................... 43 9.1 Trabalhos Futuros ................................................................................... 43 REFERÊNCIAS ................................................................................................ 45 APÊNDICE A – CASOS DE USO .................................................................... 48 APÊNDICE B – DIAGRAMAS DE SEQUÊNCIA ............................................. 60 ANEXO A - MANIFESTO ÁGIL ....................................................................... 64 11 1 INTRODUÇÃO O Scrum é utilizado para o desenvolvimento de produtos complexos, desde o início da década de 1990. [...] Scrum não é um processo ou técnica para criação de produtos, mas uma estrutura na qual você pode empregar vários processos e técnicas. O papel do Scrum é trazer à tona a eficácia relativa de suas práticas de desenvolvimento de modo que você possa melhorá-las enquanto fornece uma estrutura na qual produtos complexos possam ser desenvolvidos (SCHWABER; SUTHERLAND, 2010). O coração e esqueleto do Scrum é o processo interativo e incremental. A saída de cada interação é um incremento no produto e durante cada interação há uma inspeção diária onde os indivíduos inspecionam o trabalho dos outros membros da equipe e fazem as adaptações necessárias. (SCHWABER, 2004). A cada interação, são adicionadas ao produto novas funcionalidades, provenientes do backlog do projeto. Um modo de visualizar tanto as funcionalidades futuras quanto as que estão em desenvolvimento é o taskboard. O SCRUM, nome originário do jogo de rúgbi, teve suas raízes em indústrias japonesas no início de 1986 por Takeuchi e Nonaka, mas começou a ser usado nos moldes atuais apenas em 1996 por Jeff Sutherland e Ken Schwaber. Suas técnicas enfatizam a realização de reuniões diárias, o aumento da autonomia dos membros do time, foco nas entregas e a flexibilidade no seguimento de processos pré-definidos (LARMAN, 2003). Um projeto é caracterizado por possuir objetivo e requisitos claramente definidos (Escopo), obedecer ao orçamento aprovado (Custo) e deve ser finalizado no prazo especificado (Tempo) (SCHWALBE, 2002). Segundo HIGHSMITH(2002) fundador da Agile Alliance e criador do método Adaptative Software Evelopment, define os princípios básicos do gerenciamento ágil de projeto como: Entregar sempre algo útil ao cliente; Manter a equipe sempre comprometida; Construir um ambiente de liderança e colaboração; Construir times competentes e colaborativos; 12 Aumentar a autonomia da equipe na tomada de decisões; Usar um processo iterativo com iterações curtas para que seja possível a entrega rápida de novas funcionalidades; Encorajar a adaptabilidade; Buscar sempre a excelência técnica; Focar nas atividades de entrega e não no seguimento de processos pré-definidos. 1.1 Objetivos Este trabalho tem como objetivo criar um software de taskboard para equipe Scrum, chamado dTaskboard, que prevê a retirada de estatísticas a partir do uso do software e respectivos relatórios e terá seu código aberto. 1.2 Justificativa Existem vários softwares para gerenciamento de projetos ágeis ou que utilizam Scrum. Muitos são gratuitos e ou livres. Entretanto, poucos possuem uma interface que possa substituir o taskboard de maneira satisfatória. Alguns softwares comerciais substituem o taskboard, entretanto são softwares proprietários. Em geral, eles possuem licenças caras ou oferecem licenças restritas a projetos de software livre. Entretanto, o mais importante do projeto é a retirada das estatísticas de uso do taskboard. Esses números podem ser bastante importantes para diagnosticar possíveis problemas no projeto. 1.3 Abrangência O software poderá ser utilizado pela internet, para que pessoas mesmo que em locais geograficamente separados possam compartilhar o mesmo taskboard. O software fará autenticação e autorização de usuários, para o controle do executor de cada tarefa. 13 Serão possíveis modificações simultâneas por diferentes usuários. A interface com o usuário se dará exclusivamente por meio de um navegador da internet. Haverá uma interface de visualização de relatórios onde serão mostradas as estatísticas disponíveis. Não serão criadas interfaces para taskboards diferentes do Scrum, como o taskboard do Kanban. 1.4 Estrutura do Trabalho Este trabalho é composto de 9 capítulos, que explicam sobre o Scrum e seu taskboard, as ferramentas já existentes para substituir o taskboard convencional e as ferramentas para desenvolvimento de aplicações web. Então são discutidas as decisões de ferramentas utilizadas no projeto, a modelagem do mesmo e a fase de testes. O capítulo 2 é uma descrição dos métodos ágeis. Neste capítulo é descrito o Scrum, sua teoria, seus participantes e componentes. Nele também é descrito o uso do taskboard. No capítulo 3 é feito um levantamento das ferramentas já existentes. Suas funcionalidades. No capítulo 4 apresentam-se várias ferramentas e frameworks para desenvolvimento de aplicações para web. O capítulo 5 é dedicado à metodologia do projeto, ou seja, será apresentado as ferramentas usadas para a elaboração do trabalho. O capítulo 6 é destinado à modelagem do sistema, incluindo o levantamento dos requisitos funcionais e não funcionais do sistema, os casos de uso, diagramas de classes e de sequências. O capítulo 7 apresenta a implementação do projeto, o qual segue o padrão MVC. No capítulo 8 é descrito o teste realizado na empresa Touch Tecnologia. O capítulo 9 destina-se à conclusão do trabalho. 14 2 METODOLOGIAS ÁGEIS Nos dias 11 a 13 de fevereiro de 2001, nas montanhas Wasatch de Utah, Estados Unidos, 17 pessoas reuniram-se para discutir sobre a necessidade de um processo de desenvolvimento de software alternativo aos processos da época. Entre eles estavam representantes de Programação Extrema, Scrum, DSDM, Desenvolvimento Adaptativo de Software, Crystal, Desenvolvimento Dirigido por Característica, Programação Pragmática, entre outros simpatizantes da causa. Desta reunião, emergiu o Manifesto Ágil de Desenvolvimento de Software. (HIGHSMITH, 2001). Segundo Abrahamsson (2002), “o aspecto focal dos métodos ágeis são a simplicidade e a velocidade. Durante o desenvolvimento, os desenvolvedores concentram-se em entregar as funcionalidades mais necessárias”. Entregues estas funcionalidades, são coletados comentários sobre o que foi entregue e reage-se à essa informação recebida. Um processo ágil é: incremental (ciclos rápidos onde são entregues softwares funcionais), cooperativo (clientes e desenvolvedores comunicam-se constantemente), simples (o método é fácil de aprender, modificar e é bem documentado) e adaptativo (capaz de fazer mudanças em último momento). ABRAHAMSSON (2002). 2.1 Scrum Na década de 90, Ken Schwaber e Jeff Sutherland em busca de uma solução mais simples, ágil e eficaz para a gerência de projetos, baseando-se em suas próprias experiências, desenvolveram um novo método para gerenciar projetos e o chamaram de Scrum. Esta nova metodologia trouxe ao mercado a inovação para manter a consistência, respeitar os prazos determinados e o maior ganho de desempenho da equipe envolvida no projeto sem perder o foco da entrega no menor tempo possível (SCHWABER; BEEDLE, 2001). O processo Scrum define a equipe, artefatos e encontros. No Scrum, cada iteração, chamada de sprint, dura 30 dias e no final de cada sprint é feita uma entrega de um software funcional (SCHWABER; BEEDLE, 2001). 15 2.1.1 Equipe Scrum A equipe Scrum é composta de 5 a 7 desenvolvedores que cuidam de todo o desenvolvimento, análise, documentação e testes. Além dos desenvolvedores, existe o Scrum master, cujas atividades incluem auxiliar os desenvolvedores a manter seus níveis de produtividade no máximo, manter os artefatos e conduzir as reuniões. Há ainda o product owner, que é o único que prioriza os requerimentos no product backlog (SCHWABER; BEEDLE, 2001). 2.1.2 Reuniões “O Scrum define dois tipos de reuniões: a daily Scrum e o planning meeting” (SCHWABER; BEEDLE, 2001). A daily Scrum é uma reunião de, no máximo, quinze minutos, realizada diariamente preferencialmente no mesmo local e na mesma hora. Essa reunião serve para proporcionar visibilidade do trabalho entre os membros da equipe, promover sua comunicação, levantar quais obstáculos atrapalharam o desenvolvimento desde a última daily scrum e servir de oportunidade para decisões rápidas com relação ao progresso do sprint. Nessa reunião, cada membro da equipe detalha o que ele completou desde a última daily Scrum, o que ele pretende fazer até a próxima daily Scrum e quais obstáculos estiveram em seu caminho (SCHWABER, 2004). “O planning meeting consiste de duas partes. Na primeira, a equipe e o product owner reúnem-se para definir quais requerimentos serão entregues no final do sprint. Na segunda, a equipe define como desenvolverá esses requerimentos” (SCHWABER; BEEDLE, 2001). Na segunda etapa do planning meeting, os requerimentos são transformados em tarefas menores e é estimado o tempo necessário para executar cada tarefa. Os membros da equipe se voluntariam para fazer cada tarefa. Deve-se levar em conta o tempo disponível de cada membro da equipe para não sobrecarregá-los (SUTHERLAND; SCHWABER, 2011). 16 2.1.3 Artefatos Product backlog é a lista priorizada de todos os requerimentos do produto. Estes requerimentos podem ser funcionalidades, recursos ou tecnologias. Sempre que uma nova funcionalidade é necessária, ela é adicionada ao product backlog, e do mesmo modo, quando uma funcionalidade é entregue, ela é removida do backlog (SCHWABER; BEEDLE, 2001). “Sprint backlog são os requerimentos que a equipe concorda em entregar no sprint atual. O sprint backlog é definido durante o planning meeting” (SCHWABER; BEEDLE, 2001). Sprint backlog graph, ou burn down chart, é um gráfico que mostra a quantidade de trabalho necessário para terminar o sprint backlog por dias trabalhados. Este gráfico é atualizado diariamente e ajuda a visualizar o progresso do sprint (SCHWABER; BEEDLE, 2001). A figura 1 representa o processo Scrum, desde a fase inicial até a fase de incremento. Figura 1: O processo scrum. Fonte: SUTHERLAND, SCHWABER (2011) (traduzida pelos autores). 17 2.2 Taskboard Muitas equipes fazem uso de uma ferramenta visual para monitorar as tarefas durante o sprint. “Em geral utiliza-se um taskboard onde as tarefas, escritas em notas auto-adesivas, migram entre as colunas: “Não Iniciada”, “Em Progresso”, “Verificar” e “Completa”” (SUTHERLAND; SCHWABER, 2010). O taskboard provê muitas informações por mostrar os requerimentos distribuídos em tarefas menores. Cada nota de tarefa pode fornecer outras informações como tipo de trabalho (codificação, testes, etc) e o número de horas estimadas para sua execução. O taskboard também ajuda a verificar a quantidade de horas remanescentes para o término das tarefas e com isso produzir o burn down chart (MIRANDA; BOURQUE, 2010). “No taskboard, como o número de tarefas que estão em codificação ou quantas estão em testes, não são exploradas sob a assunção de que o importante é o trabalho completo e o trabalho remanescente” (MIRANDA; BOURQUE, 2010). 2.3 Monitoramento O taskboard pode fornecer muitas informações visuais. Mas se os dados de cada tarefa que nele consta forem colhidos, ele pode oferecer ainda mais informações. Seguem alguns dados de monitoramento que podem ser retirados do taskboard. 2.3.1 Burn Down Chart O burn down chart de iteração é um gráfico derivado dos dados do taskboard. Seu público alvo são os próprios membros da equipe. Ele mostra o número de horas de trabalho restantes ante o número de dias remanescentes na iteração atual. Essa informação é utilizada para prever se o trabalho pode ser concluído, ou se será necessário remanejar parte do trabalho, ou ainda realizar horas-extras (MIRANDA; BOURQUE, 2010). 18 A figura 2 abaixo mostra o progresso geral do projeto em relação aos sprints do mesmo. “Esta informação pode ser usada tanto pelos desenvolvedores quanto pelos product owners para estimar em quanto tempo o projeto pode ser terminado” (MIRANDA; BOURQUE, 2010). Figura 2: Burn down chart. Fonte: SUTHERLAND, SCHWABER (2011). 2.3.2 Burn Up Chart O burn up chart é um gráfico parecido com o burn down chart. Entretanto ele mostra a quantidade de trabalho realizado ante o dia da iteração atual. Ele também tem as mesmas duas variedades do burn down chart, iteração e versão. Phil Goodwin e Russ Rufer propuseram um modelo para o burn up chart de iteração que permite que aconteçam mudanças no escopo do projeto. Neste modelo, há uma linha que representa o teto, ou a marca de 100%, do progresso do projeto. Quando há alguma alteração no escopo, esta linha sobe, ou desce, de acordo com a expectativa de aumento, ou diminuição, do trabalho (COCKBURN, 2004). 19 A figura 3 mostra um burn up chart de iteração de acordo com o modelo Goodwin-Rufer. Figura 3: Burn up chart. Fonte: GREENHOPPER (2011) 2.3.3 Cumulative Flow Diagram Cumulative flow diagram é outra representação para o acompanhamento de progresso em um projeto ágil de software, baseado no burn up chart. Como o burn up chart, o cumulative flow diagram retrata o número de recursos concluídos ao longo do tempo. O cumulative flow diagram proporciona uma visão mais detalhada do status do projeto em qualquer ponto no tempo. Ele também permite a detecção precoce de problemas que pode facilitar a correção dos mesmos (CABRI; GRIFFITHS, 2006). Na Figura 4, são mostradas a parte do trabalho “Iniciado” e uma pequena parte no estado “Em Progresso”. Em seguida aparecem os trabalhos em fase de “Verificação” e “Completo”. No final do último sprint todo o trabalho deve aparecer no estado “Completo”. 20 Figura 4: Cumulative flow diagram. Fonte: REINERTSEN (traduzido). O cumulative flow diagram pode também ser utilizado para medir o andamento de um sprint. Neste caso o eixo horizontal fará referência aos dias e o eixo vertical à quantidade de trabalho realizada. 21 3 FERRAMENTAS EXISTENTES O desenvolvimento de software envolve muitas técnicas como requisitos, recursos e tecnologia, que podem mudar durante o processo. Isto torna o processo de desenvolvimento imprevisível e complexo, requerendo flexibilidade para acompanhar as mudanças. O resultado do processo deve ser um software que é realmente útil para o cliente (SCHWABER, 1996). Para auxiliar a equipe SRUM na fase de produção de um software utiliza-se o taskboard físico ou digial. Os taskboard mais aceitos no mercado devido sua praticidade, usabilidade, outros recursos que serão apresentados são: SrumNinja, GreenHopper e Vip Task Manager. 3.1 ScrumNinja O ScrumNinja foi desenvolvida por dois especialistas de Sênior de tecnologia e Certificados como Scrum Masters que são eles: Rodney Carvalho e Lowenfels David. Como principal objetivo o software foi projetado com total integridade conceitual, ele mantém a simplicidade intuitiva do quadro de tarefa comum, fornecendo o benefício de atualizações em tempo real, grande variedade de cores, armazenamento de dados (comentários, observações e imagens) e reforça as melhores práticas para novas equipes para Scrum (SCRUMNINJA, 2011). Figura 5: Screenshot da ferramenta ScrumNinja Fonte: (SCRUMNINJA SCREENSHOT, 2011). 22 3.2 GreenHopper Este taskboard foi desenvolvido pela Atlassian uma empresa australiana que atua no ramo de desenvolvimento de software para gerenciamento de projetos. O GreenHopper é uma ferramenta ideal para auxiliar o scrum master no gerenciamento de tarefas, planejamentos de sprints, compartilhamento dos dados e acompanhamento de processos do projeto. É um software que tem como característica: edição online, tela de gráficos e fácil usabilidade (GREENHOPPER, 2011). Figura 6: Screenshot da ferramenta GreenHopper Fonte: (GREENHOPPER SCREENSHOT, 2011). 3.3 Vip Task Manager O Vip Task Manager está entre os softwares de taskboard mais completo para gerenciamento de tarefas para equipes Scrum. Ele viabiliza o aumento do desempenho da empresa, a eficácia e a maior produtividade. Dispões de recursos para planejar, programar, compartilhar, controlar tarefas, agendar compromissos da equipe, e exibir fase do processo entre outras funcionalidades (VIP QUALITY SOFTWARE, 2010). 23 Figura 7: Screenshot da ferramenta Vip Task Manager Fonte: (VIP TASK MANAGER SCREENSHOT, 2011). 3.4 Comparações de Ferramentas Existentes A figura abaixo aborda os nomes das ferramentas e suas características mais importantes e também contém as funcionalidades contidas em cada ferramenta existente. Tabela1: Características das Ferramentas Existentes Fonte: Os Autores (2011). 24 4 TECNOLOGIAS E PADRÕES DE DESENVOLVIMENTO Das páginas estáticas do passado, aos sistemas dinâmicos atuais, a programação para a Web vem avançando em ritmo acelerado. Com este crescimento, cada vez mais é necessário à utilização de ferramentas para aumentar a produtividade. Tanto as ferramentas de desenvolvimento quanto as linguagens de programação vêm sendo aprimoradas para atender essa nova demanda (LOVATTO, 2007). A seguir são apresentadas algumas ferramentas para programação para web que embasaram na escolha da ferramenta escolhida para o trabalho. 4.1 Padrão MVC Segundo MAGELA (2006), o padrão MVC foi implementado por Jim Althoff. Onde se descreve da seguinte maneira: Modelo: Camada responsável pelos dados que contém a lógica dos negócios de forma separada. Visão: Responsável pela a saída dos dados, lógica de apresentação dos dados ao usuário. Controle: Responsável por fazer o elo entre o Modelo e a Visão, recebe e interpreta as entradas de dados dos usuários. A figura abaixo exemplifica a ligação entre as camadas do padrão MVC. Figura 8: Padrão MVC fonte: REENSKAUG(2003, traduzida) 25 4.2 Google Web Toolkit Durante a conferência JavaOne de 2006, o Google apresentou sua nova ferramenta para desenvolvimento de aplicações web, o Google Web Toolkit (GWT). Com o GWT, pode-se programar tanto a parte cliente da aplicação, quanto a parte servidor, utilizando-se a linguagem Java e um mínimo de HTML. Todo código JavaScript é gerado a partir do código Java, e o GWT cuida das diferenças entres os diferentes navegadores (OLSON, 2007). Com o GWT pode-se escrever toda a aplicação utilizando conceitos de orientação a objetos mesmo que o Javascript não possua todos os recursos de orientação a objetos, pois o código é escrito em Java. Outra vantagem são as bibliotecas que são adicionadas ao GWT tanto pelo Google quanto por terceiros (PERRY, 2006). 4.3 PHP Concebido em 1994 por Rasmus Lerdorf, o PHP é uma linguagem de script orientada a objetos utilizada para a programação de páginas da web. O PHP permite que coloquem programas dentro de uma página HTML. O código do programa será executado toda vez que alguém pedir para ver essa página. O PHP é gratuito e tem seu código aberto. Em janeiro de 2001, aproximadamente 5 milhões de domínios por todo o mundo utilizavam PHP (WELLING; THOMSON, 2008). O PHP possui bom desempenho, um único servidor pode responder a milhões de pedidos por dia. Se for necessário ainda mais performance, o PHP é facilmente escalável adicionando outros servidores em estrutura horizontal. Ele possui integração com tipos de bancos de dados e possui numerosas bibliotecas para tarefas relacionadas à internet, como envio de emails, criação dinâmica de imagens, geração de PDF, e análise de arquivos XML (WELLING; THOMSON, 2008). 26 4.4 Struts O objetivo do Struts2 é facilitar o desenvolvimento web para os programadores. Para tal, ele automatiza muitas tarefas comuns, como converter dados de formulários para serem utilizados nas classes Java. Também utiliza convenção sobre configuração e anotações do Java para diminuir a quantidade de arquivos de configuração (BROWN, DAVIS, STANLICK, 2008). O Struts2 segue o padrão MVC. No Struts2 não há necessidade de se implementar o controller, mas ele pode ser configurado por arquivos XML. O model, onde fica toda a lógica de domínio da aplicação é implementado pelo programador em Java. O view pode ser implementado com páginas JSP ou ferramentas de template como Velocity e FreeMarker (BROWN; DAVIS; STANLICK, 2008). 4.5 Ruby On Rails Ruby on Rails (Rails) é um framework para facilitar o desenvolvimento, construção e manutenção de aplicações web. O Rails extende Ruby de uma maneira para facilitar o trabalho dos desenvolvedores e diminuir o tamanho dos programas e aumentar sua legibilidade (RUBY; THOMAS; HANSSON, 2011). As aplicações Rails são escritas em Ruby, que é uma linguagem de script orientada a objetos. O Rails segue o padrão MVC e também utiliza o conceito de convenção sobre configuração (RUBY; THOMAS; HANSSON, 2011). Todas as aplicações Rails têm suporte a testes embutido no próprio framework. Sempre que uma nova funcionalidade é adicionada, o Rails cria um método para que o desenvolvedor escreva o teste para esta funcionalidade (RUBY; THOMAS; HANSSON, 2011). 4.6 HTML5 HTML5 é a nova geração do HTML. Ele provê novos recursos necessários para aplicações web modernas. Também padroniza recursos 27 utilizados por anos, mas que nunca foram formalmente documentados. Ele foi concebido para ser multi-plataforma, necessitando apenas de um navegador moderno para utilizar seus recursos (PILGRIM, 2010). O HTML5 traz melhorias para as interfaces, utilizando CSS3 para customizar o estilo dos elementos das páginas, e melhorias para os formulários, como os novos componentes de seleção de datas (HOGAN, 2010). 4.7 Hibernate Persistência de dados é um requisito comum de muitas aplicações. Essa persistência na maior parte das vezes envolve o uso de SQL e sistemas gerenciadores de bancos de dados relacionais. Entretanto, a representação tabular dos dados é bem diferente da representação utilizada na orientação a objetos (BAUER; KING, 2005). O mapeamento objeto relacional é o nome dado às soluções de automação do trabalho de converter entre essas duas representações. O Hibernate é uma dessas ferramentas, desenvolvida desde 2001, e enfatiza produtividade e liderança técnica. O Hibernate já é utilizado em milhares de aplicações, por dezenas de milhares de usuários (Bauer; King, 2005). 28 5 METODOLOGIA O sistema será desenvolvido para substituir os taskboards convencionais. Ele terá uma interface que se assemelhará a um taskboard convencional. Além de mostrar os dados como um taskboard convencional, ele também gerará os gráficos de monitoramento vistos no capítulo 2. O sistema deve possibilitar a utilização de múltiplos usuários simultaneamente pela internet. Haverá diferenciação dos usuários por papéis que cada usuário pode assumir. Todos os dados serão salvos em um banco de dados relacional. Para desenvolver o projeto, serão utilizadas algumas das tecnologias apresentadas no capítulo 4. Segue uma breve discussão sobre os motivos da seleção das ferramentas. 5.1 Framework de Desenvolvimento Web A maior parte das linguagens e frameworks para programação para web utilizam o padrão MVC. E na maior parte das vezes, a parte de view é feita em um arquivo de formato diferente dos outros utilizados para as outras partes do sistema, e este arquivo quase nunca é compilado. Por este motivo é muitas vezes difícil encontrar erros nestes arquivos, como uma variável que não foi declarada, e estes erros se manifestam apenas quando o programa está sendo executado. No GWT todos os arquivos são compilados, inclusive os que fazem parte da View. Portanto erros deste tipo podem ser encontrados em tempo de compilação. Os principais editores gratuitos, Eclipse e Netbeans, têm plugins para Ruby, PHP. Entretanto o nível de maturidade desses plugins é inferior ao tratamento nativo que esses editores dão ao Java. Como o GWT utiliza apenas código Java, é mais fácil escrever os programas em GWT nesses editores do que nas outras linguagens. Os criadores do GWT também disponibilizam um plugin para a IDE Eclipse. Este plugin se encarrega de compilar a aplicação e de implantar em 29 um servidor de testes Tomcat. O plugin para Eclipse pode também implantar a aplicação num servidor do Google, para que esta fique disponível na Internet. Os criadores do GWT disponibilizam a configuração para Ant# para auxiliar a compilação e instalação da aplicação. Também há um plugin para Maven# com o mesmo intuito. Entretanto esse plugin para Maven não tem suporte oficial. O GWT foi feito para rodar no servidor Tomcat, que é uma implementação das tecnologias JavaServer Pages (JSP) e Java Servlets. O Tomcat é gratuito e tem seu código fonte aberto. Para hospedagem remota existem hospedeiros que fornecem o Tomcat, entretanto, eles em geral cobram mais caro que os outros servidores de HTTP. Existe também a hospedagem no Google em seu Appengine. Neste caso, a hospedagem é gratuita até que se utilize sua quota de processamento e/ou banda. Quando a quota é estourada, ou o site é desligado, ou é cobrada uma taxa. Foi decidido utilizar o framework GWT para fazer a parte prática do projeto. Todos os frameworks possuem boas ferramentas para desenvolvimento e instalação das aplicações. O fato de o GWT ter interoperabilidade entre navegadores, as vantagens de se utilizar o Java tanto para o desenvolvimento da parte servidor quanto da parte cliente são grandes vantagens sobre os outros frameworks. O projeto não utilizará o HTML5 por ser uma tecnologia muito nova que não está disponível em todos os navegadores. 5.2 Persistência de Dados Para realizar a persistência dos dados, e respectiva busca, será utilizado o Hibernate. O Hibernate é uma das mais antigas e mais estabelecidas ferramentas de mapeamento objeto relacional para Java. 30 5.3 Banco de Dados Para facilitar o trabalho de instalar um sistema gerenciador de banco de dados, foi decidido utilizar o HyperSQL, que é uma implementação de um banco de dados feita em Java, ele suporta a maior parte do padrão SQL (HSQL, 2011). Outra vantagem do HyperSQL é que ele pode ser embutido na aplicação. Deste modo, o banco de dados sobe automaticamente com a aplicação, sem a necessidade de se instalar outro servidor externo. 5.4 Ambiente de Desenvolvimento Para facilitar a programação do aplicativo será utilizado o IDE Eclipse, pois já existe um plugin específico do GWT para este IDE. 5.5 Ferramenta para Geração de Gráficos Para gerar os gráficos foi utilizada a ferramenta Google Chart Tools e seu plugin Google API Libraries for Google Web Toolkit. Ambos desenvolvidos pelo próprio Google fazem que seja extremamente fácil adicionar gráficos a um projeto que utiliza o GWT. 31 6 MODELAGEM DO SOFTWARE Ao iniciar a modelagem foram analisados todos os requisitos funcionais e não funcionais do software de acordo com a proposta do trabalho. A partir disso, foram criados os casos de uso, diagrama de classe e os diagramas de sequência. Os diagramas foram criados na ferramenta Astah-UML. Através das definições dos diagramas será possível ter uma visão geral da implementação do software. 6.1 Requisitos Funcionais e Não Funcionais Com o intuito de criar uma ferramenta consistente e funcional, foram feitas as análises e as especificações das funcionalidades do dTaskboard, onde, foram definidos os requisitos funcionais e não funcionais da ferramenta. Requisitos Funcionais são declarações detalhadas das funções que o sistema deve executar e como deve ser seu comportamento diante de entradas e situações específicas (SOMMERVILLE, 2003) A tabela 2 representa os requisitos funcionais, ou seja, representa as atividades que poderão ser executadas no dTaskboard. Tabela 2: Requisitos Funcionais Fonte: Os Atores (2011) 32 Requisitos não Funcionais são as restrições sobre as funções que serão oferecidas pelo sistema. Eles também podem ser a respeito de requisitos relacionados ao processo utilizado para o desenvolvimento do software, como especificações dos padrões de qualidade. Os Requisitos não Funcionais surgem em razão do usuário, do orçamento disponível, das políticas organizacionais ou até mesmo de necessidades externas, como necessidades legais ou de segurança (SOMMERVILLE, 2003) A tabela 3 representa os Requisitos não Funcionais do sistema. Tabela 3: Requisitos Não Funcionais Fonte: Os Atores (2011) 6.2 Casos de Uso Para ajudar a determinar as funcionalidades que devem ser implementadas no sistema, foram feitos os casos de uso indicando os principais fluxos de trabalho dos usuários do sistema. O sistema possuirá quatro tipos de atores, o administrador que poderá criar projetos; os gerentes de projetos que poderão criar sprints, histórias e também poderão dar permissão de acesso aos seus projetos a outros usuários. Existem os usuários que têm permissão de utilizar pelo menos um dos projetos e modificar as tarefas desse projeto, e temos ainda os visitantes, que podem apenas ver os projetos. A tabela 4 mostra uma listagem dos atores e dos requisitos que compõem o sistema. 33 Tabela 4: Casos de Uso Fonte: Os Autores (2011) Na Figura 9 é possível visualizar a maneira que cada ator (Usuário, Gerente de projeto e Administrador) interage com o sistema. Figura 9: Casos de uso. Fonte: Os Autores (2011). Para melhor visualização, a descrição dos casos de uso encontra-se no APÊNDICE A. 34 6.3 Diagramas de Classes Nos diagramas de classe é possível visualizar as diferentes classes que compõem o sistema e a maneira de como elas se relacionam. As classes são representadas com seus respectivos nomes e atributos. A Figura 10 mostra o diagrama das classes que serão persistidas no sistema e através da imagem é possível analisar a maneira que elas se relacionam. Figura 10: Diagrama de classes das entidades. Fonte: Os autores (2011). A Figura 11 mostra as classes que tem acesso às informações contidas no banco de dados. Essas classes compõem o modelo e nelas estão contidas todas as lógicas de negócio da aplicação. 35 Figura 11: Diagrama de classes de controle. Fonte: Os autores (2011). 6.4 Diagramas de Sequência Devido à complexidade de um determinado sistema com diferentes métodos e classes é difícil determinar a sequência de eventos do sistema. A criação do diagrama de sequência é feita para minimizar esta complexidade. Os diagramas são feitos com base nos casos de usos e nos diagramas de classe. Os diagramas de sequência foram criados de acordo com o escopo do trabalho. Para melhor visualização os diagramas encontram-se no APÊNDICE B. 36 7 IMPLEMENTAÇÃO DO PROJETO A implementação do projeto segue o padrão MVC. O projeto foi então dividido entre três pacotes: dtaskboard.client representado a visualização da aplicação, dtaskboard.server representando a de lógica de negócios e o pacote dtaskboard.entities representando o modelo. A seguir são descritas cada uma dessas partes da aplicação. 7.1 Modelo O relacionamento entre as classes do modelo pode ser verificado na Figura 12. O pacote dtaskboard.entities possui todas as classes que são as entidades do mundo real, o model, e que são persistidas no banco de dados. As classes Project, Sprint, History e Task representam as respectivas entidades de um taskboard. Tanto o Sprint quanto o Task possuem seus estados, definidos respectivamente pelas enumerações SprintStatus e TaskStatus. Estas enumerações se encontram em outro pacote para serem utilizados também pela visualização. As classes Project, Sprint e Task guardam dados de horas previstas e cumpridas para o cálculo das métricas e confecção dos gráficos de burndown e burnup. Para realizar a autenticação, foram criadas as classes User, Role e a enumeração RoleClass. Cada usuário possui um respectivo objeto da classe User que possui os dados do login e senha do usuário. A enumeração RoleClass possui os diferentes tipos de papéis que um usuário pode ter no sistema: administrador, gerente de um projeto ou usuário de um projeto. Finalizando as classes de autenticação, a classe Role faz o relacionamento dos dados do usuário e quais papéis ele tem em cada projeto. Conforme a Figura 12 abaixo. 37 Figura 12: Diagrama de classes – Modelo. Fonte: Os Autores (2011). 7.2 Visualização O pacote dtaskboard.client possui todas as classes que fazem parte da view, todas as telas, formulários e pontos de interação com o usuário ficam nele. Este pacote possui diversos outros sub pacotes para melhor organizar o projeto. A tela de autenticação dtaskboar.client.login.LoginPage. Esta é representada página mostra o pela classe formulário de autenticação, como na Figura 13. Figura 13: Tela de login. Fonte: Os Autores (2011). Depois de se autenticar, o usuário entra na tela que mostra a barra de ferramentas desse usuário, e de administrador caso esse usuário seja um 38 administrador. Essa barra de ferramentas é representada pela classe dtaskboard.client.toolbar.Toolbar. Esta tela pode ser vista na figura 14. Na barra de ferramentas do usuário, ao se clicar em qualquer uma das entradas, aparece um Menu onde o usuário pode realizar algumas funções. Clicando em seu nome de usuário (admin no caso da figura 14) aparecem as ações: “Trocar Senha” e “Sair do sistema”. Em projetos o usuário pode selecionar o projeto que deseja ver. Figura 14: Barra de ferramentas. Fonte: Os Autores (2011). Em Administração pode-se criar um novo usuário, adicionar um papel a um usuário e criar um novo projeto. O item administração só aparece para administradores. Estas ações, com a exceção de sair do sistema, abrem caixas de diálogo modal onde o usuário deve preencher dados para executar a ação. Esses diálogos são implementados pelas classes AddRoleToUserDialog, ChangePasswordDialog, CreateProjectDialog e CreateUserDialog, que estão no mesmo pacote da classe Toolbar. Quando um usuário seleciona o projeto que deseja ver, abre-se a barra de ferramentas do projeto logo abaixo da barra de ferramentas do usuário e também o taskboard com o sprint atual do projeto, como na figura 15. Figura 15: Tela do projeto. Fonte: Os Autores (2011). 39 Na barra de ferramentas do projeto, se o usuário for um gerente do projeto ele pode editar o projeto, criar um novo sprint e encerrar o sprint atual. Estas ações também abrem diálogos e são implementadas pelas respectivas classes de diálogo. As classes que geram a barra de ferramentas do projeto e a tabela do projeto encontram-se no pacote dtaskboard.client.project. As classes dos diálogos estão no pacote dtaskboard.client.project.dialog. No taskboard o usuário pode criar tarefas e histórias, se for o gerente, e pode mover as tarefas entre as colunas. Todos os diálogos são subclasses de Dialog, a classe de diálogos fornecida pelo GWT, como pode ser visto na figura 16. A classe Toolbar e ProjectToolbar são subclasses de MenuBar, que é a classe fornecida pelo GWT para fornecer barras de menu. Além dessas classes existem também a LoginPage e a ProjectPage que podem ser vistas na figura 17. Figura 16: Diagrama de classes dos diálogos. Fonte: Os Autores (2011). Figura 17: Diagrama de classes interface com o usuário. Fonte: Os Autores (2011). A figura 18 mostra as classes que foram implementadas para mostrar os gráficos no sistema. Elas implementam um método e devolvem um componente que pode ser adicionado diretamente na tela e renderiza um gráfico. Para isso estas classes utilizam a biblioteca Google Chart Tools. 40 Figura 18: Diagrama de classes criadoras de gráficos. Fonte: Os Autores (2011). 7.3 Controlador Por último o pacote dtaskboard.server possui todas as lógicas de negócio e manipulação das entidades, o controlador. Quando o usuário executa uma ação na view, ela é enviada para o controlador e então processada. Para tratar a persistência e recuperação dos dados foi utilizado o padrão DAO (Data Access Object), onde uma classe é responsável por fazer a persistência dos dados sem expor as especificidades do banco de dados. Os DAOs estão no pacote dtaskboard.server.dao e há uma classe GenericDao que implementa os métodos de criação, remoção, recuperação e listagem de entidades. Existem subclasses de GenericDao para cada entidade e cada subclasse precisa apenas implementar os métodos que são necessários para essa entidade. O diagrama de classes do pacote dtaskboard.server.dao pode ser visto na figura 19. Figura 19: Diagrama de classes – DAO. Fonte: Os Autores (2011). 41 A figura 20 mostra as classes com as lógicas de negócio. O ProjectServiceImpl possui todas as lógicas que tratam do projeto, criar e atualizar projetos, sprints e tarefas além de tratar das mudanças de estados das tarefas. O LoginServiceImpl trata das funções administrativas de criar usuários e papéis para eles, e também da autenticação. Figura 20: Diagrama de classes controlador. Fonte: Os Autores (2011). 42 8 TESTES O sistema foi implantado em um projeto da Touch Tecnologia. Este projeto conta com 12 desenvolvedores divididos em 3 grupos. Apesar de não haver tempo suficiente para uma coleta profunda de dados o projeto teve grande aceitação inicial. Ele ajudou consideravelmente na comunicação entre membros de projeto. O projeto possui um taskboard físico, um dos grupos encontra-se em andar diferente do prédio. Com o novo sistema todos compartilham o mesmo taskboard. O fato de criar os gráficos dinamicamente também foi apreciado. A figura 21 mostra a situação do projeto durante um sprint. Os nomes das histórias, das tarefas e do próprio projeto foram modificados para manter a confidencialidade das informações. Figura 21: Utilização do sistema. Fonte: Os Autores (2011). 43 9 CONCLUSÃO Analisando o cenário de desenvolvimento de software o fator mais importante é cumprir o prazo estabelecido de entrega e a maior dificuldade encontrada pelas equipes de desenvolvimento é criar um software funcional no período especificado. Ao assumir o comprometimento de entrega em um período específico, a maioria das empresas adotam uma metodologia ágil. De acordo com a proposta do trabalho, utilizamos a metodologia Scrum. Buscou-se neste trabalho, disponibilizar uma ferramenta no idioma português e de código aberto para auxiliar a equipe Scrum no processo de desenvolvimento de software, desde a fase inicial até a fase de conclusão. De acordo com o objetivo proposto no trabalho essa ferramenta automatiza o processo de geração de gráficos e as retiradas de estatísticas para o acompanhamento do desenvolvimento do software. O código fonte está disponível em: http://code.google.com/p/dtaskboard/source/checkout. Portanto, adequando o software ao método Scrum os resultados foram obtidos com sucesso. É possível gerar os gráficos e as estatísticas necessárias da fase de desenvolvimento dos Sprints que são elas: a fazer, em processo, verificando e feito. 9.1 Trabalhos Futuros Ao desenvolver a ferramenta dTaskboard, foram identificados recursos que poderiam ser incluídos como melhorias na ferramenta desenvolvida, mas estes recursos identificados estão além do escopo do projeto. Portanto, serão descritos a seguir como propostas de trabalhos futuros e tem como objetivo tornar o dTaskboard mais simples e dinâmico. Para tornar o software mais útil e manter o foco no que é importante a ferramenta deve: Gerar outros relatórios em tempo real dos sprints e do projeto como um todo, para que assim o Scrum Master e os integrantes da equipe tenham uma visão aprofundada do desenvolvimento e do projeto em geral. 44 Após concluir a reunião diária os sprints definidos devem ser enviados automaticamente por email para seus respectivos desenvolvedores, com isso a equipe teria um ganho significativo, pois, durante as reuniões os desenvolvedores não perderiam tempo anotando informações, é muito útil também se caso algum integrante da equipe não estivesse presente. Fazer teste de usabilidade com todos os níveis usuários e fazer os devidos ajustes de acordo com o feedback. 45 REFERÊNCIAS ABRAHAMSSON, Pekka et al. Agile software development methods: review and analysis. Finland: VTT Publications, 2002. BAUER, Christian; King, Gavin. Hibernate in action. Greenwich: Manning, 2005. BECK, Kent et al. Manifesto for agile software development. 2001. Disponível em: <http://agilemanifesto.org>. Acesso em: 24 abr. 2011. BROWN, Donald; DAVIS, Chad Michael; STANLICK, Scott. Struts2 in action. Greenwich: Manning, 2008. CABRI, Anthony; GRIFFITHS, Mike. Earned value and agile reporting. In: AGILE 2006, 2006, Minneapolis, Minnesota. COCKBURN, Alistair. Crystal clear: a human-powered methodology for small teams. Indianapolis, Indiana: Addison-Wesley Professional, 2004. GREENHOPPER, Atlassian. 1 de junho de 2011. Disponível em: <http://www.atlassian.com/software/greenhopper>. Acesso em 31 de maio de 2011. HIGHSMITH, Jim, Agile Project Management: Principles and Tools. Cutter Consortium Executive Report, 2002. HIGHSMITH, Jim. History: the agile manifesto. 2001. Disponível em: <http://agilemanifesto.org/history.html>. Acesso em: 24 abr. 2011. HOGAN, Brian P. HTML5 & CSS3. Develop with Tomorrow's Standards Today. The Pragmatic Programmers, 2010. LARMAN, C., Agile and Iterative Development: A Manager's Guide. Addison Wesley, 2003. LOVATTO, Cheferson Washington. Comparando ambientes de desenvolvimento Java e Ruby on Rails. Porto Alegre: UFRGS, 2007. MAGELA, R. Engenharia de Software Aplicada: Fundamentos. Rio de Janeiro: Alta Books, 2006. MIRANDA, Eduardo; BOURQUE, Pierre. Agile monitoring using the line of balance. The journal of systems and software, Amsterdam, v. 83, p. 12051215, 2010. OLSON, Steven Douglas. Ajax on Java. Califórnia: O’Reilly, 2007. 46 PERRY, Bruce. Google web toolkit for Ajax. Califórnia: O’Reilly, 2006. PILGRIM, Mark. HTML5 up and running. California: O'Reilly, 2010 REENSKAUG, T. The Model-View-Controller(MVC): Postado em 20 de Agosto de 2003. Disponível em: <http://heim.ifi.uio.no/~trygver/2003/javazonejaoo/MVC_pattern.pdf>. Acesso em 15/10/2011 REINERTSEN, Donald G., Managing the Design Factory - A Product Developer's Toolkit, Free Press, New York NY, 1997 RUBY, Sam; THOMAS, Dave; HANSSON, David Heinemeier. Agile web development with Rails. Texas: The Pragmatic Bookshelf, 2011. SCHWABER, Ken. Agile project management with scrum. Redmond: Microsoft Press, 2004. SCHWABER, Ken; BEEDLE, Mike. Agile software development with scrum. New Jersey: Prentice-Hall Inc., 2001. SCHWALBE, Kathy., Information Technology Project Management. Cambridge, MA, USA, 2002. SCHWABER, Ken; SCRUM Development Process. Burlington. MA, USA, 1996 SCRUMNINJA, ScrumNinja Software. 25 de abril de 2011. Disponível em: <http://www.scrumninja.com/scrum-software>. Acesso em 28 de maio de 2011. SOMMERVILLE, Ian. Engenharia de Software. 6° ed. Tradução Maurício de Andrade. São Paulo: Ed. Pearson Addison Wesley,2003. p.79 - 123. SUTHERLAND, Jeff; SCHWABER, Ken. The scrum papers: nuts, bolts, and origins of an agile process. s.l, 2011. Disponível em: <http://jeffsutherland.com/ScrumPapers.pdf>. Acesso em: 28 ago. 2011. VIP QUALITY SOFTWARE, Vip Task Manager. 4 de Outubro de 2010. Disponível em: <http://www.vip-qualitysoft.com/products/task-manager>. Acessado em 4 de jun. de 2011. WELLING, Luke; THOMSON, Laura. PHP and MySQL Web Development. Indiana: Sams, 2008. SCRUMNINJA SCREENSHOT, ScrumNinja Software. 25 de abril de 2011. Disponível em: <http://www.scrumninja.com/projects/9998/stories>. Acesso em: 13 de dezembro de 2011. 47 GREENHOPPER SCREENSHOT, Atlassian. 1 de junho de 2011. Disponível em: <http://www.atlassian.com/software/greenhopper/overview/tour/screenshottour>. Acesso em: 13 de dezembro de 2011. VIP TASK MANAGER SCREENSHOT, Vip Task Manager. 4 de Outubro de 2010. Disponível em: <http://www.taskmanagementsoft.com/upload/iblock/ec6/ec6bb078e4ea2351a6 e94e487680aa8b.png>. Acesso em: 13 de dezembro de 2011. 48 APÊNDICE A – CASOS DE USO Caso de Uso: UC 01 - Entrar no sistema Descrição Resumida: O usuário deseja se autenticar no sistema. Ator Primário: Usuário (qualquer nível) Pré-Condições: O usuário não deve estar autenticado no sistema. Fluxo Principal: 1. O usuário entra na página do sistema. 2. O sistema mostra a página de entrada. 3. O usuário fornece seu nome de usuário, sua senha e clica no botão “Entrar”. 4. O sistema valida o par. 5. O usuário está autenticado no sistema e o caso de uso se encerra. Fluxos de Exceção: 4a. O usuário forneceu o par nome de usuário e senha errados. 4a1. O sistema mostra mensagem indicando que o par nome de usuário e senha estavam incorretos e retorna-se ao passo 2 do fluxo principal. 49 Caso de Uso: UC 02 - Gerenciar usuários Descrição Resumida: Deseja-se adicionar ou remover um usuário do sistema. Ator Primário: Administrador Pré-Condições: O administrador deve estar autenticado no sistema e na página de administração. Fluxo Principal: 1. O administrador clica no botão “Adicionar usuário”. 2. O sistema mostra a tela de adicionar usuário. 3. O administrador preenche o nome do usuário e a senha inicial e clica no botão “Adicionar”. 4. O sistema cadastra o novo usuário, mostra uma mensagem de confirmação e o caso de uso se encerra. Fluxos Alternativos: 1a. O administrador clica no botão “Remover usuário” referente ao usuário que deseja-se remover. 1a1. O sistema mostra uma tela pedindo a confirmação da ação. 1a2. O administrador clica em “Confirmar”. 1a3. O sistema remove o usuário e encerra-se o caso de uso. Fluxos de Exceção: 4a. O nome de usuário já está cadastrado no sistema. 4a1. O sistema exibe uma mensagem de erro e retorna-se ao passo 2 do fluxo principal. 50 Caso de Uso: UC 03 - Criar Projeto Descrição Resumida: Deseja-se criar um novo projeto. Ator Primário: Administrador Pré-Condições: O administrador deve estar autenticado no sistema e na página de administração. Fluxo Principal: 1. O administrador clica no botão “Criar projeto”. 2. O sistema mostra a tela de criação de projeto. 3. O administrador preenche o nome do projeto, seleciona um gerente para esse projeto e clica no botão “Criar”. 4. O sistema verifica se o nome do projeto é válido, cria o projeto, e adiciona o gerente a ele e encerra-se o caso de uso. Fluxos de Exceção: 4a. O nome do projeto já existe. 4a1. O sistema mostra uma mensagem de erro e retorna-se ao passo 2 do fluxo principal. 51 Caso de Uso: UC 04 - Criar sprint Descrição Resumida: Deseja-se criar um novo sprint para um projeto. Ator Primário: Gerente do projeto Pré-Condições: O gerente do projeto deve estar autenticado no sistema e deve estar na página do projeto. Fluxo Principal: 1. O gerente cria no botão “Criar sprint”. 2. O sistema mostra a tela de criação de sprint. 3. O gerente preenche a data inicial, a data de término, a quantidade de trabalho planejada para este sprint e preenche o campo de atualização de tempo total estimado do projeto se necessário e clica no botão “Criar”. 4. O sistema verifica se as datas do sprint não batem com datas de outros sprints neste mesmo projeto, cria o sprint e mostra uma mensagem para o gerente e encerra-se o caso de uso. Fluxos de Exceção: 4a. Há intersecção entre as datas deste sprint e as datas de outro sprint. 4a1. O sistema exibe uma mensagem de erro e retorna-se ao passo 2 do fluxo principal. 52 Caso de Uso: UC 05 - Criar história Descrição Resumida: Deseja-se criar uma história em um sprint. Ator Primário: Gerente do projeto Pré-Condições: O gerente do projeto deve estar autenticado no sistema e deve estar na página do respectivo sprint. Fluxo Principal: 1. O gerente clica no botão “Criar história”. 2. O sistema mostra a tela de criação de história. 3. O gerente preenche a sigla da história, respectiva descrição e clica no botão “Criar”. 4. O sistema verifica se a sigla da história já foi utilizada neste sprint, cria a história, mostra uma mensagem de sucesso e encerra-se o caso de uso. Fluxos de Exceção: 4a. A sigla da história já foi utilizada neste sprint. 4a1. O sistema mostra uma mensagem de erro e retorna-se para o passo 2 do fluxo principal. 53 Caso de Uso: UC 06 - Criar tarefa Descrição Resumida: Deseja-se criar uma nova tarefa para uma história. Ator Primário: Gerente do projeto Pré-Condições: O gerente do projeto deve estar autenticado no sistema e deve estar na página do respectivo sprint. Fluxo Principal: 1. O gerente clica no botão “Criar tarefa” da respectiva história. 2. O sistema mostra a tela de criação de tarefa. 3. O gerente informa a descrição e o trabalho estimado da tarefa e clica no botão “Criar”. 4. O sistema cria a tarefa, mostra uma mensagem de sucesso e encerrase o caso de uso. 54 Caso de Uso: UC 07 - Modificar estado de tarefa Descrição Resumida: Deseja-se mudar o estado de uma tarefa. Ator Primário: Um usuário que tenha acesso ao projeto Pré-Condições: O usuário deve estar autenticado no sistema e deve estar na página do respectivo sprint. Fluxo Principal: 1. O usuário clica no botão para avançar ou retroceder o estado da caixa da tarefa. 2. O sistema salva a mudança e encerra-se o caso de uso. 55 Caso de Uso: UC 08 - Gerenciar usuários do projeto Descrição Resumida: Deseja-se adicionar ou remover um usuário do projeto Ator Primário: Gerente do projeto Pré-Condições: O gerente do projeto deve estar autenticado no sistema e deve estar na página do respectivo projeto. Fluxo Principal: 1. O gerente clica no botão “Adicionar usuário”. 2. O sistema mostra a tela para adicionar um usuário ao projeto. 3. O gerente informa o usuário. 4. O sistema salva a informação, mostra uma mensagem de sucesso e encerra-se o caso de uso. Fluxos Alternativos: 1a. O gerente do projeto clica no botão “Remover usuário” referente ao usuário que deseja-se remover. 1a1. O sistema mostra uma tela pedindo a confirmação da ação. 1a2. O administrador clica em “Confirmar”. 1a3. O sistema remove o usuário do projeto e encerra-se o caso de uso. Fluxo de Exceção: 4a. O usuário informado já possui acesso ao projeto. 4a1. O sistema mostra uma mensagem de aviso e retorna-se ao passo 2 do fluxo principal. 56 Caso de Uso: UC 09 - Encerrar projeto Descrição Resumida: Deseja-se encerrar o projeto. Ator Primário: Gerente do projeto Pré-Condições: O gerente do projeto deve estar autenticado no sistema e na tela do projeto. Fluxo Principal: 1. O gerente clica no botão “Encerrar projeto”. 2. O sistema exibe uma mensagem pedindo a confirmação da ação. 3. O gerente clica em “Confirmar”. 4. O sistema encerra o projeto e encerra-se o caso de uso. 57 Caso de Uso: UC 10 - Alterar gerente do projeto Descrição Resumida: Caso algum gerente não possa gerenciar um projeto, deve ser possível trocar o gerente do projeto. Ator Primário: Administrador Pré-Condições: O gerente do projeto deve estar autenticado no sistema e na tela do projeto. Fluxo Principal: 1. O administrador clica no botão “Alterar gerente” do respectivo projeto. 2. O sistema mostra uma caixa de diálogo com a listagem de usuários. 3. O administrador seleciona o usuário desejado e clica em “Selecionar”. 4. O sistema atualiza a configuração do projeto e encerra-se o caso de uso. 58 Caso de Uso: UC 11 - Alterar senha Descrição Resumida: Deseja-se alterar a senha do usuário. Ator Primário: Usuário (qualquer nível) Pré-Condições: O usuário deve estar autenticado no sistema. Fluxo Principal: 1. O usuário clica em “Alterar senha”. 2. O sistema mostra o diálogo de alterar senha. 3. O usuário informa sua senha atual, nova senha, confirmação da nova senha e clica em “Alterar senha”. 4. O sistema verifica a senha atual do usuário, verifica a nova senha e a confirmação, atualiza a senha do usuário e encerra-se o caso de uso. Fluxo de Exceção: 4a. O usuário forneceu a senha atual errada. 4a1. O sistema mostra uma mensagem informando que a senha atual está incorreta e retorna-se para o passo 2 do fluxo principal. 4b. O usuário forneceu a confirmação da nova senha diferente da nova senha. 4b1. O sistema mostra uma mensagem informando que a confirmação da nova senha é diferente da nova senha e retorna-se para o passo 2 do fluxo principal. 59 Caso de Uso: UC 12 - Gerar estatísticas Descrição Resumida: Deseja-se gerar alguma estatística do projeto. Ator Primário: Gerente do projeto Pré-Condições: O gerente do projeto deve estar autenticado no sistema e na tela do projeto. Fluxo Principal: 1. O gerente do projeto clica em “Estatísticas”, em seguida clica na estatística que deseja gerar. 2. O sistema gera as estatísticas, mostra na tela e encerra-se o caso de uso. 60 APÊNDICE B – DIAGRAMAS DE SEQUÊNCIA A seguir os diagramas de sequência, onde, são mostradas as classes e suas respectivas ações. 61 62 63 64 ANEXO A - MANIFESTO ÁGIL Estamos descobrindo novas maneiras de desenvolver software por fazêlo e ajudar outros a fazê-lo. Por este trabalho começamos a valorizar: Indivíduos e interações sobre processos e ferramentas Software funcionando sobre documentação abrangente Colaboração com o cliente sobre negociação de contrato Responder a mudança sobre seguir um plano Isto é, enquanto há valor nos itens da direita, valorizamos mais os itens da esquerda. Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick Robert C. Martin Steve Mellor Ken Schwaber Jeff Sutherland Dave Thomas