DGA INFORMÁTICA Aplicação de Práticas Ágeis no Desenvolvimento do Sistema de Controle de Estoque da Unicamp Área de Desenvolvimento de Novos Projetos Flavia Facciolla Maia Gerente da Área de Novos Projetos Arthur Vieira de Lima Arquiteto UNICAMP - 11/06/2012
INDICE Estudo da Situação do Projeto Histórico Por que aplicar Técnicas Ágeis? Aplicação das Técnicas Ágeis Conclusão Técnicas de Gestão Técnicas de Desenvolvimento Resultados Obtidos Próximos Passos 2
ESTUDO DA SITUAÇÃO DO PROJETO HISTÓRICO Jan/10 à Abril/11: Tentativa de desenvolvimento do Projeto do Sistema de Controle de Estoque da Unicamp com a empresa terceirizada. Porém, a empresa não foi capaz de entregar os produtos com qualidade e no prazo estabelecido. Junho/11 à Março/12: Tentativa de desenvolvimento interno (tradicional) a partir dos códigos entregues pela empresa. Porém, esta forma de desenvolvimento não estava atingindo as expectativas do cliente quanto à qualidade e prazos. 04/04/12 até 24/04/12: Levantamento da situação atual e estudo do que deveria ser aplicado ao Projeto. Foram levantadas várias práticas que poderiam ajudar o Projeto no objetivo de definir uma data de entrega para o cliente e entregar o produto final do desenvolvimento com maior Qualidade. 25/04/12: Início da aplicação de técnicas ágeis no Projeto. 3
ESTUDO DA SITUAÇÃO DO PROJETO POR QUE APLICAR TÉCNICAS ÁGEIS? A área de desenvolvimento de software é muito nova, e como consequência disso, ainda estamos aprendendo quais são as técnicas que funcionam e quais só atrapalham o dia-a-dia dos nossos projetos. É dever de todo profissional da área buscar meios para melhorar o nosso objetivo principal: Construir softwares que atendam com qualidade aos clientes e usuários. Práticas ágeis são um meio (e não um fim) para desenvolvimento eficiente e eficaz. Não deve-se utilizar as técnicas se não é evidente quais problemas elas tentam resolver, usar por usar não melhora em nada o resultado final do seu projeto. Você só deve usar essas práticas se realmente entender porquê elas são necessárias, e não porquê estão na moda. 4
TÉCNICAS DE GESTÃO Após a avaliação da situação do projeto, várias práticas associadas à gestão de projetos ágeis foram escolhidas para serem aplicadas, o objetivo principal era dar uma visão global e real do projeto para o cliente e para a equipe e planejar e cumprir as datas das entregas. Algumas das técnicas escolhidas foram: Participação efetiva do cliente no projeto O cliente passou a atuar como Product Owner, participando ativamente das decisões do Projeto. Para isso foi feito uma re-priorização de todos os pacotes de trabalho juntamente com o cliente e a partir dessa priorização foi planejado um re-faseamento das entregas. 5
TÉCNICAS DE GESTÃO Report semanal do Projeto para o cliente Dando continuidade a participação ativa do cliente no Projeto, elaboramos um report semanal, onde mostramos para o cliente a situação real do projeto e os avanços esperados e realizados a cada semana. Durante a reunião de acompanhamento onde apresentamos este report o cliente é convidado a propor soluções para problemas encontrados e que podem afetar a data de entrega acordada. Neste report também são apresentados e acompanhados os riscos do Projeto e o cliente elabora junto com a equipe os planos de contingência para os riscos. 6
TÉCNICAS DE GESTÃO Re-orçamentação do Projeto utilizando Scrum Poker A cada Fase do Projeto realizamos uma reunião de orçamentação das atividades baseada em Scrum Poker. Toda a equipe participa. O objetivo principal dessa reunião é além de termos uma avaliação comparativa da complexidade de todas as tarefas, uniformizamos o conhecimento da equipe em relação a cada atividade que precisa ser desenvolvida e testada. Após esta orçamentação, escolhemos as atividades que farão parte da sprint seguinte baseada na velocidade da sprint anterior. 7
TÉCNICAS DE GESTÃO Formação de Sprints de Desenvolvimento com entrega fixa Montamos um planejamento de sprints quinzenais de desenvolvimento. A sprint inclui o toda a equipe do projeto que trabalha focada na entrega. O conteúdo de cada sprint é planejado com toda a equipe com base na orçamentação feita na reunião de scrum planning poker e tendo como foco a priorização das tarefas pelo cliente. 8
TÉCNICAS DE GESTÃO Treinamentos específicos para os diversos profissionais do Projeto Treinamento em Testes Automáticos Treinamento em ferramentas de gestão Treinamento em Processos de Testes Treinamento em Levantamento de Requisitos Treinamento em Usabilidade 9
TÉCNICAS DE GESTÃO Controle visual do Projeto Acompanhamento diário e report semanal da equipe do Projeto 10
TÉCNICAS DE GESTÃO Uso de Indicadores para avaliação do andamento do Projeto Demos início ao gerenciamento através de indicadores do Projeto. Criamos indicadores que mostram o avanço das tarefas e esses indicadores são avaliados pela equipe e pelo cliente semanalmente. 11
TÉCNICAS DE DESENVOLVIMENTO Peer-Code Soma de diferentes habilidades, técnicas e pontos de vista para resolução de um problema. Testes automáticos e integração contínua Consiste em se ter um ambiente automatizado, que várias vezes ao dia baixa o código do repositório (Subversion), executa todos os testes e gera relatórios sobre a qualidade do código. 12
TÉCNICAS DE DESENVOLVIMENTO Adoção de Ferramentas especializadas: Test Link: ferramenta que permite facilmente criar e gerir processos, bem como organizá-los em planos de teste. Tais planos permitem que membros da equipe de teste acompanhem os casos de teste, execute-os, vejam os resultados e gerem relatórios, auxiliando-os na priorização e atribuição de tarefas. Jira: ferramenta de bugtracking que ajuda a executar a reportagem de defeitos, tarefas e novas funcionalidades. Selenium: ferramenta utilizada para realização de testes funcionais que validam as funções acessíveis através da interface com o usuário. Utiliza código Java e JavaScript para comandar a execução de um navegador Mozilla, Firefox ou Internet Explorer. Maven: ferramenta para automação e gerenciamento de configuração de projetos em Java. Entre suas principais características estão a gestão de dependências, a padronização da estrutura de diretórios, o ciclo de vida bem definido, a geração de documentação, além de uma imensa quantidade de plugins disponíveis que permitem estender muitas funcionalidades. 13
TÉCNICAS DE DESENVOLVIMENTO Adoção de Ferramentas especializadas: Hudson é um servidor de integração contínua de código aberto e escrito em Java. Com grande disponibilidade de plugins, suporte a diversos tipos de repositórios (SVN, Git, CVS e etc) e suporte a ferramentas como Ant e Maven. 14
TÉCNICAS DE DESENVOLVIMENTO Adoção de Ferramentas especializadas: Sonar é uma ferramenta open source dedicada ao controle e medição da qualidade do código. Funcionando de maneira integrada ao Hudson, ela possibilita fornecer continuamente métricas capazes de ajudar toda a equipe a identificar falhas e evitar o acúmulo de débito técnico. 15
CONCLUSÃO RESULTADOS OBTIDOS Estruturação da área de Projetos da Informática da DGA Especialização de cada profissional da Equipe Visão global e uniformizada do Projeto tanto para o cliente quanto para a equipe Satisfação da equipe por estar trabalhando com técnicas novas e evidenciam num curto espaço de tempo a produtividade individual e da equipe. Satisfação do cliente em receber constantemente informações sobre o andamento do projeto, por poder participar ativamente das decisões e encaminhamento do Projeto e por ter segurança da entrega. O cliente já se manifestou positivamente em relação às mudanças realizadas e se sente mais seguro da entrega do sistema tanto com relação às datas quanto com relação à qualidade da entrega. 16
CONCLUSÃO PRÓXIMOS PASSOS Possibilidades de aplicação em outras áreas/órgãos Todas as áreas ou órgãos ligados ao desenvolvimento de software, ou mesmo aquelas que acumulam várias tarefas com uma equipe pequena e que tem prazo definido de entrega, podem se beneficiar das práticas ágeis. Particularmente em Desenvolvimento de Software tais práticas propõem uma nova forma de trabalho, que tem se mostrado muito eficiente para equipes com o perfil adequado. Essas técnicas influenciam positivamente em todas as vertentes de avaliação da qualidade de um software desde que sejam aplicadas de forma correta. Número de usuários e/ou pessoas beneficiadas 10 pessoas da equipe e mais 5 usuários no período de desenvolvimento do Sistema. 130 usuários no período de implantação do Sistema Outros clientes e equipes de novos projetos onde as práticas serão repetidas. Futuros desdobramentos possíveis Ampliação do uso dessas práticas para outros projetos e áreas. Consolidação das práticas na equipe de Projetos da Informática da DGA. 17
? Perguntas Dúvidas Sugestões flavia@dga.unicamp.br - Ramal: 12522 arthur@dga.unicamp.br - Ramal: 12517 18