SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL SENAI/SC - FLORIANÓPOLIS CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS VINICIUS VERARDI ALVES DE OLIVEIRA INDICADORES DE PROJETOS ÁGEIS APLICADOS EM UMA EMPRESA DE SOFTWARE Florianópolis (SC) 2013 VINICIUS VERARDI ALVES DE OLIVEIRA INDICADORES DE PROJETOS ÁGEIS APLICADOS EM UMA EMPRESA DE SOFTWARE Trabalho de Conclusão de Curso apresentado à Banca Examinadora do Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da Faculdade de Tecnologia SENAI Florianópolis como requisito parcial para obtenção do Grau de técnico em informática sob a orientação da Profa. Priscila Bastos Fagundes, Me. Florianópolis (SC) 2013 VINICIUS VERARDI ALVES DE OLIVEIRA INDICADORES DE PROJETOS ÁGEIS APLICADOS EM UMA EMPRESA DE SOFTWARE Trabalho de Conclusão de Curso apresentado à Banca Examinadora do Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da Faculdade de Tecnologia SENAI Florianópolis em cumprimento a requisito parcial para obtenção do título Superior Tecnólogo em Análise e Desenvolvimento de Sistemas. APROVADA PELA COMISSÃO EXAMINADORA EM FLORIANÓPOLIS, ___ DE ________________DE _____ Profª. Priscila Bastos Fagundes, Me., (SENAI/SC) – Coordenador do Curso Profª. Jaqueline Voltolinide Almeida, Esp., (SENAI/SC) – Coordenadora de TCC Profª. Priscila Bastos Fagundes, Me. (SENAI/SC) – Orientador Mauricio Seiji Rezende, Me. (SENAI/SC) – Examinador Aos meus pais. AGRADECIMENTOS Agradeço primeiramente aos meus pais, Claudio Oliveira e Marisol Alves, pelo apoio e educação que me deram para chegar até aqui. À professora e coordenadora do curso, Priscila Fagundes, por me orientar ao longo deste trabalho de conclusão de curso e pela sua dedicação perante aos alunos do SENAI. À Vitor Pelizza e Débora Anselmo, meus tutores na empresa XPTO, responsáveis por guiar os passos e o conhecimento necessário para a realização deste trabalho. À todos entrevistados e a empresa XPTO, pelo auxilio e estrutura que possibilitaram a existência deste trabalho. “Insanidade: É fazer a mesma coisa repetidamente e esperar resultados diferentes.” (ALBERT EINSTEIN) OLIVEIRA, Vinicius Verardi Alves de. Indicadores De Projetos Ágeis Aplicados Em Uma Empresa De Software. Florianópolis, 2013. Trabalho de Conclusão de Curso - Curso Superior de Tecnologia em Analise e desenvolvimento de sistemas. Faculdade de Tecnologia do SENAI, Florianópolis, 2013. RESUMO As empresas de desenvolvimento de software estão mudando. O progresso acelerado da área de TI passa a exigir grande demanda de respostas à essa evolução. A partir desta demanda, a adoção de metodologias ágeis cresce muito nas empresas de desenvolvimento de software, valorizando o feedback e colaboração constante junto aos clientes, ou seja, é importante mostrar resultados. A abordagem incremental da metodologia ágil visa a realização constante de revisões e melhoria continua do processo de desenvolvimento de software adotado, gerando maior qualidade no produto final. Visando estabelecer melhorias constantes, há um crescente enfoque na aplicação de indicadores e métricas que permitem validar esta evolução, padronizando um ciclo de revisão e otimização dentro do processo de desenvolvimento de software utilizado pelas empresas. Palavras-chave: Metodologia ágil. Indicador. Métrica. OLIVEIRA, Vinicius Verardi Alves de. Indicadores De Projetos Ágeis Aplicados Em Uma Empresa De Software. Florianópolis, 2013. Trabalho de Conclusão de Curso - Curso Superior de Tecnologia em Analise e desenvolvimento de sistemas. Faculdade de Tecnologia do SENAI, Florianópolis, 2013. ABSTRACT Software development companies are changing. The accelerated progress of IT starts demanding regularly answers to this evolution. According to this appeal, there is a growing adoption of agile methodologies on software development companies, valuing feedback and constant collaboration with customers, in other words, is important to show results. The incremental approach to agile methodology aims to constant revisions and continuous improvement of the adopted software development process, generating sophisticated quality in the final product. To establish continuous improvements, there is a rising focus on application of metrics and indicators, which allows validate this growth, standardizing a revision and optimization cycle inside the software development process assumed by these companies. Keywords: Agile methodology. Indicator. Metric. LISTA DE FIGURAS Figura 1 – Scrum ...................................................................................................................... 17 Figura 2 – Kanban Board ......................................................................................................... 22 Figura 3 - Medida ..................................................................................................................... 25 Figura 4 - Métrica ..................................................................................................................... 26 Figura 5 - Indicador .................................................................................................................. 27 Figura 6 - Sprint Burndown ...................................................................................................... 29 Figura 7 - Release Burndown ................................................................................................... 29 Figura 8 - Velocidade ............................................................................................................... 30 Figura 9 - Aceleração ............................................................................................................... 32 Figura 10 - Cumulative Flow ................................................................................................... 33 Figura 11 – Calculo Lead Time ................................................................................................ 34 Figura 12 – SLA ....................................................................................................................... 34 Figura 13 – Cycle Time ............................................................................................................ 35 LISTA DE GRÁFICOS Gráfico 1 – Burndown Sprint 74 Equipe A .............................................................................. 43 Gráfico 2 – Burndown Sprint 1 Equipe B ................................................................................ 43 Gráfico 3 – Burndown Sprint 1 Equipe C ................................................................................ 44 Gráfico 4 – Histórico da Velocidade na Equipe A ................................................................... 45 Gráfico 5 – Evolução da Aceleração Equipe A ........................................................................ 46 Gráfico 6 - Cumulative Flow Equipe C .................................................................................... 48 LISTA DE ABREVIATURAS E SIGLAS IT – Information Technology MIT – Massachussets Institute of Tecnology SAC – Sistema de Atendimento ao Cliente SENAI – Serviço Nacional de Aprendizagem Industrial TDD – Test-driven Development TI – Tecnologia da Informação SUMÁRIO 1 INTRODUÇÃO ................................................................................................................... 14 1.1 JUSTIFICATIVA ............................................................................................................... 15 1.2 OBJETIVOS ....................................................................................................................... 15 1.2.1 Objetivo geral ................................................................................................................. 15 1.2.2 Objetivos específicos ...................................................................................................... 15 2 METODOLOGIAS ÁGEIS ................................................................................................ 16 2.1 SCRUM .............................................................................................................................. 17 2.1.1 Equipes Scrum ............................................................................................................... 18 2.1.2 Artefatos do Scrum ........................................................................................................ 18 2.1.3 Eventos Scrum ............................................................................................................... 19 2.1.4 Estimativas Scrum ......................................................................................................... 21 2.2 KANBAN ........................................................................................................................... 21 3 MEDIDAS, MÉTRICAS E INDICADORES.................................................................... 24 3.1 MEDIDAS E MÉTRICAS ................................................................................................. 24 3.2 INDICADORES ................................................................................................................. 27 3.3 MÉTRICAS E INDICADORES ÁGEIS ............................................................................ 28 3.3.1 Burndown........................................................................................................................ 28 3.3.2 Velocidade ...................................................................................................................... 30 3.3.3 Aceleração ...................................................................................................................... 31 3.3.4 Cumulative Flow............................................................................................................. 32 3.3.5 Lead Time ....................................................................................................................... 34 3.3.6 Cycle Time....................................................................................................................... 35 4 PROCEDIMENTOS METODOLÓGICOS ..................................................................... 36 5 ESTUDO DE CASO ............................................................................................................ 37 5.1 A EMPRESA ...................................................................................................................... 37 5.2 O PROCESSO DE DESENVOLVIMENTO DA EMPRESA ........................................... 38 5.3 AS MÉTRICAS E INDICADORES DA EMPRESA ........................................................ 41 5.3.1 Burndown........................................................................................................................ 42 5.3.2 Velocidade ...................................................................................................................... 44 5.3.3 Aceleração ...................................................................................................................... 46 5.3.4 Cumulative Flow............................................................................................................. 47 5.3.5 Lead Time ....................................................................................................................... 48 5.3.6 Cycle Time....................................................................................................................... 49 6 CONCLUSÃO...................................................................................................................... 50 REFERÊNCIAS ..................................................................................................................... 52 APÊNDICES ........................................................................................................................... 56 APÊNDICE A – ENTREVISTA SOBRE MÉTRICAS E INDICADORES DE PROJETOS ÁGEIS ...................................................................................................................................... 56 ANEXOS ................................................................................................................................. 57 ANEXO A – GRÁFICO BURNDOWN SPRINT 75 EQUIPE A ............................................. 57 ANEXO B – GRÁFICO BURNDOWN SPRINT 76 EQUIPE A ............................................. 57 ANEXO C – GRÁFICO BURNDOWN SPRINT 2 EQUIPE C ................................................ 58 ANEXO D – GRÁFICO BURNDOWN SPRINT 3 EQUIPE C................................................ 58 14 1 INTRODUÇÃO O processo incremental empregado pelos métodos ágeis gera um ciclo uniforme de revisões, melhorias e atualizações. Se este ciclo não for devidamente padronizado, o processo de otimização pode se tornar demorado e oneroso (SATO, 2009). Medições de software são destinadas a determinar valores numéricos a atributos de um determinado software ou processo de software. Confrontando esses valores, obtidos ao longo de intervalos de tempo, é possível se chegar a conclusões sobre a qualidade do software em questão ou dos processos aplicados em seu ciclo de vida (SOMMERVILLE, 2007). Foi realizado um estudo de caso em uma grande empresa de desenvolvimento de software, analisando como a empresa adota métricas e indicadores providos de metodologias ágeis. Por questão de privacidade, não será revelada a identidade da empresa, assim utilizaremos o nome fictício de empresa XPTO. Será apresentado, neste trabalho, um estudo sobre metodologias ágeis, abordando os frameworks do Scrum e Kanban. A seguir serão apresentados os conceitos sobre métricas e indicadores atrelados a desenvolvimento de software. O tópico seguinte irá abordar os conceitos referentes a métricas e indicadores ágeis aplicáveis ao processo de desenvolvimento da empresa XPTO. Um estudo de caso utilizará uma visão ágil ao desenvolvimento de software para analisar a utilização das métricas e indicadores na gestão dos projetos de desenvolvimento da empresa XPTO, indicando possíveis falhas e oportunidades de melhoria dentro do ciclo de revisões da empresa. 15 1.1 JUSTIFICATIVA O presente estudo visa aumentar a qualidade do processo de desenvolvimento de software da empresa XPTO, analisando e propondo melhorias para medir a qualidade do processo de desenvolvimento utilizado nos projetos que utilizam metodologias ágeis. 1.2 OBJETIVOS Visando uma contextualização deste trabalho, os objetivos estão apresentados a seguir, divididos em objetivo geral e objetivos específicos. 1.2.1 Objetivo geral Comparar as métricas e os indicadores de projeto utilizados na empresa XPTO, com as métricas e indicadores focados em projetos ágeis, identificando possíveis melhorias no processo de desenvolvimento de software da empresa. 1.2.2 Objetivos específicos a) Analisar o framework Scrum, selecionando métricas e indicadores aplicáveis aos projetos da empresa XPTO. b) Analisar a metodologia do Kanban, selecionando métricas e indicadores aplicáveis aos projetos da empresa XPTO. c) Comparar o processo de desenvolvimento adotado pelas equipes com as metodologias ágeis de desenvolvimento estudados. d) Construir uma comparativa entre as métricas e os indicadores utilizados na empresa XPTO e as métricas e os indicadores estudados dentro das metodologias ágeis. e) Propor melhorias dentro do processo de desenvolvimento de software da empresa XPTO. 16 2 METODOLOGIAS ÁGEIS A palavra ‘Ágil’ é um termo de marketing criado para descrever um estilo de trabalho. Esse estilo se concentra em trabalho colaborativo, resultados concretos, entrega de valores e minimização de desperdícios (SHORE, 2008). O Manifesto Ágil, criado em 2001 na cidade de Utah, descreve a essência de um conjunto de abordagens baseado em diversas metodologias de desenvolvimento de produtos e software, visando a criação de uma alternativa perante aos complexos e burocráticos processos de desenvolvimento de software existentes na época. Estamos descobrindo maneiras melhores de desenvolver softwares, fazendo-o nós mesmos e ajudando outros a fazerem o mesmo. Através deste trabalho, passamos a valorizar: a) Indivíduos e interações mais que processos e ferramentas. b) Software em funcionamento mais que documentação abrangente. c) Colaboração com o cliente mais que negociação de contratos. d) Responder a mudanças mais que seguir um plano. Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda (BECK et al., 2001). As metodologias ágeis se tornaram extremamente populares. Cada vez mais, grandes companhias como IBM e Microsoft adotam as metodologias ágeis para gerenciamento de seus projetos e equipes (SHORE; WARDEN, 2008). O objetivo de todas as empresas é alcançar de alguma maneira, o sucesso organizacional. Os métodos ágeis atingem este sucesso focando em agregar valor e diminuir custos, o que será revertido em um retorno aumentado do investimento (SHORE; WARDEN, 2008). De acordo com o Sétimo Estado Anual do Desenvolvimento Ágil, 84% das companhias entrevistadas planejam utilizam ou planejam utilizar metodologias ágeis em seus projetos (VERSION ONE, 2013). Cohn (2011) cita alguns dos principais benefícios da adoção de métodos ágeis: a) Maior produtividade e menores custos; b) Maior engajamento e satisfação por parte dos colaboradores; c) Tempo de colocação do produto no mercado mais rápido; 17 d) Maior qualidade; e) Maior satisfação dos stakeholders1. 2.1 SCRUM O Scrum é um framework criado para suportar o desenvolvimento e manutenção de produtos, onde pessoas podem tratar e solucionar problemas complexos e adaptativos. O framework consiste em equipes Scrum associadas a seus papéis, eventos, artefatos e regras (SCHWABER; SUTHERLAND, 2011). Figura 1 – Scrum Fonte: Mountain Goat Software (2005) Kniberg (2009) descreve o Scrum em breves tópicos: a) Separar a empresa, em equipes pequenas, multifuncionais e auto organizáveis; b) Dividir o trabalho, em uma lista de pequenas funcionalidades entregáveis, estime o esforço de cada uma e organize por prioridade; 1 Um stakeholder, é uma pessoa ou organização ativamente envolvida em um projeto. Esta organização ou pessoa possui interesses que possam ser positiva ou negativamente afetados pela execução ou conclusão do projeto ou pode vir a exercer influência sobre o projeto, suas entregas e seus membros de equipe (BOURNE, 2009). 18 c) Dividir o tempo, em iterações pequenas e de tamanho fixo (1–4 semanas), sempre com potenciais funcionalidades a serem entregues ao final de cada iteração; d) Reorganizar as prioridades e seu plano de entregas em conjunto com seu cliente, baseando-se no conhecimento obtido ao longo das iterações; e) Otimizar e incrementar o processo, fazendo uma retrospectiva ao final de cada iteração. 2.1.1 Equipes Scrum As equipes Scrum são formadas por três papéis: um Product Owner, a Equipe de Desenvolvimento e o Scrum Master (SCHWABER; SUTHERLAND, 2011). O Product Owner é o responsável por maximizar o valor do produto e o trabalho da equipe de desenvolvimento. Dentre suas atividades, a principal é gerenciar o backlog do produto (SCHWABER; SUTHERLAND, 2011). A Equipe de Desenvolvimento deve ser pequena, multifuncional e auto organizável (KNIBERG, 2009). Segundo Schwaber e Sutherland (2011), a função da Equipe de Desenvolvimento é entregar uma versão tangível do que foi desenvolvido que potencialmente integrará o produto “pronto” ao final de cada Sprint. O Scrum Master tem a responsabilidade de fazer com que o Scrum seja entendido e aplicado, garantindo que a equipe Scrum esteja em conformidade com a teoria, práticas e regras do Scrum (SCHWABER; SUTHERLAND, 2011). 2.1.2 Artefatos do Scrum Os artefatos do Scrum representam o trabalho ou o valor das várias maneiras que são úteis no fornecimento de transparência e oportunidades para inspeção e adaptação (SCHWABER; SUTHERLAND, 2011). 19 O Backlog do Produto é uma lista completa de funcionalidades pendentes de desenvolvimento que farão parte do produto final. O Backlog do Produto é priorizado pelo Product Owner para que a equipe Scrum primeiramente trabalhe em cima das funcionalidades de alto valor. A maneira mais conhecida para criar um Backlog do Produto é por meio das histórias de usuário, que são pequenas descrições de cada funcionalidade a partir da perspectiva de um usuário ou cliente (COHN, 2013). Outro artefato é o Backlog da Sprint, que é uma lista de funcionalidades, criada na Reunião de Planejamento da Sprint pelos membros da equipe Scrum. Essas funcionalidades serão a lista de afazeres da equipe durante a Sprint (COHN, 2013). Existem outros artefatos importantes, como o Sprint Burndown Chart e o Release Burndown Chart, que serão analisados no item 2.3. 2.1.3 Eventos Scrum No Scrum, existem eventos pré-definidos e com uma duração máxima para ocorrerem, eles garantem a transparência, adaptabilidade e inspeção do trabalho realizado. A Sprint é o principal evento do Scrum, os outros eventos estão atrelados a seu planejamento, inspeção e adaptação (SCHWABER; SUTHERLAND, 2011). Kniberg (2009) recomenda que as equipes Scrum organizem suas Sprints em iterações pequenas e de tamanho fixo (1 – 4 semanas), sempre com potenciais funcionalidades a serem entregues ao final de cada iteração. De acordo com Schwaber e Sutherland (2011), as Sprints são compostas por uma reunião de planejamento, reuniões diárias, o trabalho de desenvolvimento, uma revisão da Sprint e a retrospectiva da Sprint: a) Reunião de planejamento; Nas reuniões de planejamento, a equipe Scrum inteira fará sua colaboração. Nesse plano serão definidas duas questões: 1) Quais itens do backlog do produto serão entregues como resultado do incremento da próxima Sprint? 20 2) Como o trabalho deve ser executado para entregar o incremento? b) Reunião diária; É um evento diário, com duração de 15 minutos, em que a equipe de desenvolvimento deve sincronizar as atividades realizadas e planejar as próximas 24 horas. Cada membro da equipe esclarece três questões: 1) Desde a última reunião, o que foi finalizado? 2) Até a próxima reunião, o que será desenvolvido? 3) Existem impedimentos para a realização das atividades? Quais? Reuniões Diárias melhoram as comunicações, eliminam outras reuniões, identificam e removem impedimentos para o desenvolvimento, destacam e promovem rápidas tomadas de decisão e melhoram o nível de conhecimento da equipe de desenvolvimento. c) Revisão da Sprint. A Revisão da Sprint é executada no final da Sprint para inspecionar o incremento e adaptar o Backlog do Produto, se necessário. A Reunião de Revisão inclui os seguintes elementos: 1) O Product Owner identifica o que foi “Pronto” e o que não foi “Pronto”. 2) A Equipe de Desenvolvimento discute o desempenho da Sprint, salientando os problemas ocorridos dentro da Sprint e como foram resolvidos. 3) A Equipe de Desenvolvimento demonstra o trabalho que está “Pronto” e responde as questões sobre o incremento. 4) O Product Owner discute o Backlog do Produto tal como está, projetando as prováveis datas de conclusão baseado no progresso até a data. 5) O grupo todo colabora sobre o que fazer a seguir, e é assim que a Reunião de Revisão da Sprint fornece informações importantes para a Reunião de Planejamento da próxima Sprint. 21 2.1.4 Estimativas Scrum Nesta seção, será introduzida a técnica de estimativa por pontos de história, uma prática do Scrum para a realização das estimativas de esforço dos requisitos e funcionalidades de um software. Os pontos de história são uma unidade de medida para expressar o tamanho médio de uma história de usuário, funcionalidade ou parte do trabalho. Quando é realizada a estimativa por pontos de história, atribuímos um valor de ponto de história para cada item (COHN, 2006). Ainda de acordo com Cohn (2006), os valores que serão utilizados para representar o trabalho não importam; o essencial é manter a consistência na estimativa: uma história que possui um valor de “dois” deve ser pelo menos duas vezes mais complexa do que a história que vale apenas “um”. Pode-se representar que a atividade de valor “dois” simbolicamente vale seis pontos de história, assim a atividade de valor “um” deveria ser estimada com valor de três pontos de história. Dessa forma, há medidas consistentes. 2.2 KANBAN Kanban é uma palavra Japonesa que significa “cartão visual”. Na Toyota, por exemplo, Kanban é o termo utilizado para definir o sistema de sinalização físico e visual que integra o sistema lean2 de produção. No desenvolvimento ágil de software, o Kanban é considerado uma abordagem lean (KNIBERG, 2013). A metodologia Kanban adota técnicas de melhoria contínua, baseada na visualização do estado atual do planejamento de trabalho, tendo a gestão do fluxo de trabalho como a principal medida de desempenho (AGILE ALIANCE, 2013). Kniberg e Skarin (2010) definem o núcleo de trabalho do Kanban da seguinte maneira: O termo “lean” foi cunhado ao final da década de 1980 em um projeto de pesquisa do Massachusetts Institute of Technology (MIT) sobre a indústria automobilística mundial. A pesquisa revelou que a Toyota havia desenvolvido um novo e superior paradigma de gestão nas principais dimensões dos negócios (manufatura, desenvolvimento de produtos e relacionamento com os clientes e fornecedores) (LEAN, 2013). 2 22 a) Visualização do fluxo de trabalho; Divida o trabalho em pequenas partes, escreva cada item em um cartão e cole no mural. Use colunas nomeadas para ilustrar onde cada item está no fluxo de trabalho. b) Limitar o trabalho em andamento; Atribua limites de quantos itens podem estar em andamento dentro de cada estado no fluxo de trabalho. c) Mensurar tempo de ciclo (Cycle Time). Otimize o processo para tornar o tempo de cada ciclo cada vez menor e previsível. Figura 2 – Kanban Board Fonte: Kniberg (2013) Segundo Kniberg e Skarin (2010), os principais benefícios do Kanban são: a) Possíveis gargalos tornam-se visíveis em tempo real. Isto levará as pessoas a colaborarem na otimização de toda cadeia de valor, não apenas em suas partes individuais; b) Promove um modelo de evolução mais gradual de cascata para o desenvolvimento ágil de software, ajudando empresas que anteriormente foram incapazes ou não estavam dispostas a implementar métodos ágeis; c) Fornece uma maneira para fazer o desenvolvimento ágil de software sem a necessidade de utilizar iterações de tempo e compromissos fixos pré- 23 determinados. Útil para situações onde Sprints do Scrum não fazem sentido, como em equipes de suporte, onde ocorre um alto grau de incerteza e variabilidade; d) Tende a espalhar-se por toda empresa para os outros departamentos, como vendas e RH, aumentando a visibilidade de tudo que está acontecendo na empresa. O tópico seguinte aborda os conceitos de medidas, métricas e indicadores focados no desenvolvimento de software. 24 3 MEDIDAS, MÉTRICAS E INDICADORES Esta seção descreve os conceitos de medidas, métricas e indicadores dentro do desenvolvimento de software. Em seguida, serão apresentadas métricas e indicadores focados nos métodos ágeis de desenvolvimento de software. 3.1 MEDIDAS E MÉTRICAS No contexto de gerenciamento de projetos de software, as preocupações iniciais são relacionadas a métricas de produtividade dentro do processo de software e a qualidade do produto em desenvolvimento (PRESSMAN, 1995). Pressman (1995) lista cinco razões para que seja realizada a medição de software: a) Indicar qualidade do produto; b) Avaliar a produtividade das pessoas que produzem o produto; c) Avaliar os benefícios derivados de novos métodos e ferramentas de desenvolvimento de software; d) Formar uma linha básica para estimativas; e) Ajudar a justificar pedidos de novas ferramentas ou treinamento adicional. De acordo com Sato (2009), métricas de software são padrões de medida, referentes ao sistema, processo ou artefato. Elas podem ser calculadas sobre uma ou mais medidas. Por exemplo, a quantidade de problemas encontrados após a implantação do software; neste caso a métrica será composta pelo número de defeitos e a data onde foi identificado o defeito. A Figura 3 representa a medida e seu valor no contexto de um gráfico. 25 Figura 3 - Medida Fonte: O autor (2013) Sato (2009) classifica as métricas em três grupos, uma mesma métrica pode estar dentro de um ou mais grupos, pois eles abordam diferentes pontos de vista: a) Objetiva/Subjetiva; O valor de uma métrica objetiva depende somente do objeto em questão e não do ponto de vista de quem a está interpretando. Por exemplo, o número de revisões no repositório é uma métrica objetiva, pois é obtida diretamente da ferramenta. O valor de uma métrica subjetiva depende do objeto em questão e também do ponto de vista de quem a está interpretando. Por exemplo, a qualidade do código, numa escala de 0% a 100%. b) Quantitativa/Qualitativa; O valor de uma métrica quantitativa pertence a um intervalo de uma certa magnitude e geralmente é representado por um número. Tal estrutura permite que medidas quantitativas sejam comparadas entre si. Por exemplo, o número de defeitos encontrados. 26 Valores de uma métrica qualitativa são aqueles representados por palavras, símbolos ou figuras em vez de números. Por exemplo, a satisfação do cliente, a qual pode ser definida como baixa, média ou alta. c) Organizacional/Acompanhamento. Métricas organizacionais são aquelas que medem a quantidade de valor de negócio entregue ao cliente. Métricas de acompanhamento proveem informações que ajudam o time no entendimento e Melhoria do processo que produz valor de negócio. Por exemplo, a velocidade da equipe. Uma métrica é a representação da evolução das alterações de uma medida mensurada ao longo de um intervalo ou variação temporal. A linha azul na Figura 4 a seguir representa uma métrica. Figura 4 - Métrica Fonte: O autor (2013) 27 3.2 INDICADORES Um indicador é um valor que define uma situação em particular. No caso de um projeto de software, podemos defini-lo como uma métrica definida pelo projeto como meta, para fins de monitoria e acompanhamento, onde a cada iteração do projeto, esta mesma métrica é extraída novamente, comparando-a ao indicador. Na Figura 5, o indicador está representado pela linha amarela. Figura 5 - Indicador Fonte: O autor (2013) Indicadores de projeto são instrumentos de avaliação que permitem comprovar empiricamente e com objetividade a progressão de uma ou mais dimensões de um projeto diante de metas estabelecidas (ARMANDO FILHO, 2010). O indicador permitirá a realização de comparações históricas, com dados obtidos ao longo do tempo, para avaliar as variações e o avanço do que está sendo observado, diante da expectativa do que foi planejado no início do projeto. 28 3.3 MÉTRICAS E INDICADORES ÁGEIS Este tópico aborda uma série de métricas e indicadores focados para equipes que utilizam metodologias ágeis de desenvolvimento de software. 3.3.1 Burndown O gráfico Burndown é um artefato enraizado no framework Scrum. Basicamente, ele representa a quantidade de esforço que falta, para a conclusão das tarefas estimadas dentro de uma iteração. Por ser flexível, ele pode ser aplicado em qualquer tipo de projeto (VELAMAKANNI; SATHIANARAYANAN, 2009). Quando o gráfico Burndown é utilizado para rastrear o desenvolvimento de um produto, as equipes podem utilizar um gráfico Burndown para rastrear cada iteração (Sprint Burndown Chart) e também um gráfico Burndown para rastrear o completo do projeto (Release Burndown Chart) (KOCUREK, 2011). Sendo assim, é possível afirmar que, de acordo com os grupos de classificação criados por Sato (2009), esta métrica é quantitativa e de acompanhamento. A criação do gráfico Burndown para acompanhamento de iterações é feita a partir de duas medidas: tempo (eixo X) e trabalho restante (eixo Y). O tempo pode ser representado em dias, já o trabalho deve ser representado em horas (Figura 6). 29 Figura 6 - Sprint Burndown Fonte: French Scrum User Group (2013) O gráfico Burndown, quando utilizado para acompanhamento de entregas, utiliza as mesmas medidas, porém o tempo (eixo X) será representado pelo número de iterações do projeto, o trabalho restante (eixo Y) pode ser representado por pontos de história, número de funcionalidades e até mesmo horas/dias estimados (Figura 7). Figura 7 - Release Burndown Fonte: Mountain Goat Software (2013) 30 Quando atualizado diariamente, o gráfico Burndown fornece dados sobre precisão de estimativas, produtividade da equipe, controle de processos (VELAMAKANNI; SATHIANARAYANAN, 2009). 3.3.2 Velocidade Ao fim de cada iteração, a equipe verifica os pontos estimados que foram entregues durante a iteração. A soma destes pontos é chamada velocidade (AGILE ALLIANCE, 2013). Sato (2009) define que a velocidade é um indicador quantitativo e objetivo. É possível gerar um gráfico da variação de velocidade (eixo Y) ao longo das iterações (eixo X). Para isto, pode-se utilizar como medidas de velocidade: Pontos de história, horas de trabalho ou dias, considerando apenas os itens concluídos em cada iteração (Figura 8). Figura 8 - Velocidade Fonte: Version One (2013) A velocidade é uma métrica de acompanhamento que possibilita a equipe conhecer seus limites e atingir os objetivos de cada iteração. Com a velocidade, é possível melhorar capacidade de entregar software funcionando, a precisão das estimativas e o planejamento dos projetos. De acordo com Sato (2009), existem fatores que podem afetar a velocidade: a) Mudanças na equipe; 31 b) Impedimentos; c) Falta de conhecimento em ferramentas e tecnologias utilizadas. É importante ressaltar que não há comparação significativa da velocidade de diferentes equipes. Mesmo que todas as equipes utilizem a mesma medida para estimar esforços, cada equipe emprega uma técnica diferente no momento de realizar a estimativa (AGILE ALLIANCE, 2013). 3.3.3 Aceleração A aceleração é um indicador calculado com base na velocidade da equipe ao longo das iterações. É considerada uma solução interessante para comparar produtividade entre diferentes equipes. Ambler (2008) sugere que o cálculo da aceleração seja realizado desta forma: (Velocidade da iteração 2 – Velocidade da iteração 1) / Velocidade da iteração 1 = Aceleração da equipe. É possível construir um gráfico do histórico da aceleração de uma equipe entre as iterações, baseando-se na velocidade da equipe em cada iteração (Figura 9). Exemplo do histórico de velocidade na equipe Y: Iteração 1: 17 pontos; Iteração 2: 18 pontos; Iteração 3: 18 pontos; Iteração 4: 19 pontos; Iteração 5: 21 pontos. 32 Figura 9 - Aceleração Fonte: O autor (2013) Também se calcula que a aceleração da equipe Y, partindo da iteração 1 para a iteração 5 foi (21-17)/17 = 0,235294118 ou seja: 23,53%. Na comparação entre diferentes equipes, é aconselhada a normalização da métrica: Divide-se o resultado da aceleração pelo número de membros da respectiva equipe. Isto possibilita obter a aceleração média por membro de equipe (AMBLER, 2008). Ainda de acordo com Ambler (2008), monetizar este indicador pode ser uma solução interessante: Sabendo a aceleração da equipe e quanto ela gasta por iteração, é possível estimar quanto dinheiro está sendo economizado por iteração. Exemplo: A equipe Y possui a aceleração de 3%. São gastos por iteração R$ 20000,00. Assim a economia por iteração é de R$ 600,00. 3.3.4 Cumulative Flow O gráfico Cumulative Flow é uma representação gráfica que exibe como as atividades sofrem mudanças entre diferentes estados ao longo do projeto até serem finalizadas (AGILE SHERPA, 2010). 33 O gráfico é formado pela variação da quantidade de trabalho (eixo Y) atrelado a seus estados (categorias) ao longo do tempo (eixo X). Na Figura 10 as categorias estão representadas por: atividades em backlog, atividades em progresso, e atividades finalizadas. Figura 10 - Cumulative Flow Fonte: Yoshima (2013) A Agile Sherpa (2010) cita diversos fatores que a análise deste gráfico permite visualizar ao longo do projeto: a) Frequência de entrega ou não das atividades. b) Onde se localizam os gargalos e impedimentos. c) Quanto tempo leva para uma atividade percorrer todos estados de desenvolvimento (tempo de ciclo). d) Frequência nas mudanças de escopo do projeto. Dessa maneira, é possível revisar as etapas do processo de desenvolvimento de software que precisam de reformas e melhorias. 34 3.3.5 Lead Time Adaptado ao desenvolvimento de software, pode-se dizer que o lead time é o tempo percorrido entre a identificação de um requisito até sua entrega efetiva (AGILE ALLIANCE, 2013). O conceito do lead time visa eliminar desperdícios, excluindo o que não tem valor para o cliente, imprimindo velocidade à empresa. O lead time é calculado pela formula: Trabalho em progresso / Taxa de saída. (Figura 11) (VITOR, 2010). Figura 11 – Calculo Lead Time Fonte: Vitor (2010) Em outras palavras, se uma equipe possui dezoito pontos de história em progresso, e a cada hora que passa a equipe entrega três pontos, então o lead time da equipe é de seis horas. Possuir um lead time estável, permite que empresas focadas na excelência do atendimento ao cliente implementem acordos de nível de serviço (Figura 12). Figura 12 – SLA Fonte: Roock (2013) 35 3.3.6 Cycle Time O cycle time é o tempo percorrido entre a ordem de implementação de uma atividade até o momento de sua entrega (SATO, 2009). Sato (2009) considera que o cycle time é importante para descobrir o quão rápido o processo de desenvolvimento entrega valor de forma repetitiva e confiável. Para descobrir o cycle time de um item de trabalho, basta medir o tempo corrido, partindo do início da implementação da funcionalidade, até o momento em que é realizada a entrega como incremento do produto final (Figura 13). Figura 13 – Cycle Time Fonte: Roock (2013) Conforme o processo de desenvolvimento é melhorado, o cycle time deve diminuir, até atingir um patamar mínimo (SATO, 2009). Lankey (2012) determina uma série de ações que podem ser tomadas para melhorar o cycle time do projeto. Dentre estas, é importante citar: a) Estabeleça regras básicas com sua equipe, possibilitando maior comunicação entre todos; b) Defina claramente seu problema e o escopo do projeto; c) Selecione adequadamente sua equipe, com pessoas engajadas e responsáveis; d) Estabeleça um bom plano de projeto; e) Agende previamente as reuniões de monitoramento e revisão com a equipe. 36 4 PROCEDIMENTOS METODOLÓGICOS Este estudo baseia-se em uma análise qualitativa que, segundo Silva Casarin e José Casarin (2011), explora uma metodologia predominantemente descritiva, reduzindo a prioridade aos modelos matemáticos e estatísticos, onde a quantificação dos objetos da pesquisa é deixada em segundo plano. Foi realizada uma pesquisa exploratória, para desenvolver a capacitação e contextualização do conteúdo abordado. Como fontes de pesquisa, foram consultados livros, artigos científicos, material disponibilizado na internet, teses e dissertações. De acordo com Silva e Casarin (2011), a pesquisa exploratória tem como objetivo proporcionar conhecimento sobre determinado problema ou fenômeno. Tratando-se de um estudo de caso, foram levantados dados subjetivos a partir de entrevistas estruturadas. O estudo de caso é uma modalidade de estudo nas ciências sociais, focando na coleta e registro de informações relacionadas a casos particularizados, elaborando relatórios críticos organizados, possibilitando a tomada de decisões ou intervenções sobre o objeto selecionado para a análise. As entrevistas são estruturadas quando o roteiro de questões está previamente definido pelo entrevistador e não há liberdade para alterar os tópicos ou incluir questões diante das situações (BARROS; LEHFELD, 2007). 37 5 ESTUDO DE CASO Este capítulo apresenta o estudo de caso realizado na empresa XPTO, descrevendo como as equipes pesquisadas trabalham com as metodologias ágeis e de que forma métricas e indicadores são aplicados. 5.1 A EMPRESA A empresa XPTO é uma companhia de grande porte focada no desenvolvimento de soluções corporativas para segmentos específicos de negócios, como: Tribunais de Justiça, Procuradorias, órgãos de infraestrutura, transportes e obras, universidades, empresas do ramo da construção civil e organizações que adquirem financiamentos em bancos internacionais. O cenário do estudo de caso foi realizado dentro de três equipes da área de desenvolvimento da empresa. As equipes desenvolvem soluções especificas para Tribunais de Justiça e Procuradorias. Para a análise, denominamos as equipe em A, B e C. Em cada equipe, uma pessoa assume um papel gerencial e define como a equipe seguirá a metodologia de desenvolvimento proposta pela empresa. As equipes possuem autonomia para aplicar técnicas e métodos que permitam verificar e melhorar seu desempenho com o passar do tempo. Na equipe A existem oito colaboradores atualmente. O entrevistado atua há dezoito anos na empresa, hoje exerce a função de analista de negócios e coordenação da equipe. As atividades relacionadas a metodologia de desenvolvimento da equipe são definidas em conjunto da equipe, assim todos opinam na definição do processo. A equipe B possui dezesseis colaboradores. O entrevistado desempenha a função de gestor da manutenção e analista de sistemas. Ele é responsável pelas principais atividades relacionadas ao desenvolvimento ágil dentro da equipe e trabalha na empresa há seis anos. Na equipe C trabalham vinte e um colaboradores. A pessoa entrevistada ocupa o cargo de gestor de projetos e trabalha na empresa há um ano e três meses, é responsável pelas atividades de planejamento e acompanhamento dos projetos. 38 No primeiro momento são apresentadas as informações a respeito da utilização das metodologias ágeis pelas equipes e logo após sobre a utilização de métricas e indicadores. Desta forma é contextualizado o processo de desenvolvimento adotado pelas equipes, permitindo a análise e proposta de melhorias. 5.2 O PROCESSO DE DESENVOLVIMENTO DA EMPRESA A pesquisa realizada busca compreender o processo de desenvolvimento de software utilizado por cada equipe e como os métodos ágeis são adotados neste processo. Esta seção apresenta os questionamentos (APÊNDICE A – Entrevista sobre métricas e indicadores de projetos ágeis) realizados sobre a utilização dos métodos ágeis de desenvolvimento nas equipes. Os tópicos abordados no questionário tratam de quais métodos ágeis são aplicados na equipe, quais reuniões são realizadas durante o processo de desenvolvimento, como funcionam as iterações e estimativas, e quais ferramentas são utilizadas para auxiliar este processo. Quando questionado sobre a adoção dos métodos ágeis, o entrevistado da equipe A descreveu que a equipe utiliza técnicas do Scrum há mais de dois anos em seu processo de desenvolvimento. São realizadas iterações com tempo fixo de quinze dias. Em relação as reuniões, a equipe pratica uma reunião de planejamento de Sprint, onde todos os membros da equipe reúnem-se para selecionar e estimar as atividades que serão desenvolvidas na próxima Sprint, considerando que a priorização das demandas é feita pelo Analista de Negócios atuando com o papel de Product Owner. Também são feitas reuniões diárias de acompanhamento da Sprint com a participação da equipe inteira. Na equipe A, as estimativas são realizadas em horas, que são traduzidas em pontos, por exemplo: duas horas possuem o valor de um ponto, quatro horas valem dois pontos, quatro horas valem cinco pontos e assim por diante. A ferramenta de acompanhamento das iterações é um quadro, onde estão dispostas as atividades selecionadas para a Sprint em três divisórias: Na primeira estão as atividades maiores referentes à entrega da Sprint, a segunda as atividades menores serem desenvolvidas e na terceira seção as atividades finalizadas. 39 Ao abordar sobre a utilização de métodos ágeis na equipe B, o entrevistado informou que há dois anos a equipe utiliza o Scrum em combinação com o Kanban. A equipe trabalha com iterações com tempo fixo de três semanas. Dos dezesseis integrantes, são selecionados nove membros da equipe que participarão da iteração e divididos em três times, com três integrantes cada. Dois times trabalham com desenvolvimento de novas funcionalidades e um time realiza as correções de erros identificados no sistema. A equipe trabalha com uma dinâmica de reuniões adaptada a seu contexto: Antes da Sprint, são realizadas duas reuniões de planejamento. Na primeira reunião, o coordenador da equipe, que faz o papel de Product Owner, seleciona as atividades do Backlog que serão desenvolvidas na Sprint, os analistas de sistema responsáveis pela especificação, repassam a regra de negócio e a documentação de cada atividade para os desenvolvedores responsáveis pela codificação. A segunda reunião é realizada internamente em cada time, onde as demandas são divididas em atividades menores, para que os integrantes realizem suas estimativas por atividade. De acordo com o entrevistado, a estimativa é mensurada em pontos Fibonacci. Para cada time, é realizada uma reunião diária de acompanhamento da Sprint com o acompanhamento de um analista mentor, que auxilia nos problemas ou dúvidas do time, ele não faz parte dos times. Quem ministra a reunião diária dos times é o gestor da manutenção. Na retrospectiva da Sprint, são coletadas informações sobre problemas ocorridos no decorrer da Sprint e discutidas alternativas para prevenir os riscos e imprevistos. As ferramentas de acompanhamento para a gestão da Sprint envolvem uma planilha de Excel e o quadro onde as atividades ficam dispostas em três níveis: o primeiro representa os itens da entrega, o segundo nível contém as atividades menores a serem desenvolvidas dentro das entregas e o ultimo nível representa as atividades finalizadas. Na equipe C, o gestor de projetos descreveu que o processo de desenvolvimento adota metodologias ágeis há dois anos, onde são aplicadas técnicas do Scrum e Kanban, aliados ao TDD (Desenvolvimento Orientado por Testes). A equipe possui iterações com duas semanas de duração. São realizadas reuniões de planejamento da Sprint e reuniões diárias para acompanhamento. Ao termino da Sprint, analistas e programadores realizam uma revisão informal, para discutir problemas que podem ter ocorrido no desenvolvimento das atividades. A equipe estima em horas de desenvolvimento e utiliza como ferramenta de acompanhamento dos projetos uma planilha de Excel. 40 Após análise dos dados obtidos nas entrevistas, foi possível identificar oportunidades de melhoria dentro do processo de desenvolvimento de software das equipes. Com base nestas oportunidades serão feitas sugestões focadas na realidade de cada uma das equipes, objetivando um aumento na qualidade do processo de desenvolvimento adotado pelas mesmas. No que tange a respeito das metodologias empregadas na equipe A, foi observado a ausência de um mentor focado na revisão e melhoria dos métodos de desenvolvimento empregados. Schwaber e Sutherland (2011) relacionam esta responsabilidade ao papel do Scrum Master, que tem o dever de garantir que a equipe esteja em conformidade com a teoria, práticas e regras do Scrum. Foi identificado na equipe A, a ausência da reunião de revisão da Sprint, que ainda de acordo com Schwaber e Sutherland (2011), possibilita verificar o trabalho que está pronto e discutir os problemas ocorridos dentro da iteração, identificando maneiras de lidar com futuros contratempos nas próximas Sprints. Considerando as abordagens empregadas pela equipe B, percebeu-se que o método empregado na realização de duas reuniões de planejamento da Sprint corresponde aos conceitos apresentados por Schwaber e Sutherland (2011) quanto à reunião de planejamento da Sprint. A primeira reunião de planejamento permite detalhar a resposta da primeira questão para a seleção do plano de entrega da Sprint: Quais itens do backlog do produto serão entregues como resultado do incremento da próxima Sprint? Na segunda reunião realizada dentro dos times de desenvolvimento, é respondida a segunda questão proposta por Schwaber e Sutherland (2011), tornando o planejamento detalhado: Como o trabalho deve ser executado para entregar o incremento? A segunda reunião, ainda permite a divisão do trabalho, que Kniberg (2009) aconselha dividi-lo em uma lista de pequenas funcionalidades que podem ser entregues. O estudo sugere que as técnicas e reuniões de planejamento das Sprints utilizadas na equipe B, sejam adotadas nas equipes A e C. Isto permitirá que as equipes visualizem o incremento de maneira íntegra, compreendendo a maneira que o trabalho será executado para concluir as atividades planejadas para desenvolvimento na iteração. Ficou compreendido que as equipes adaptam o quadro dentro de sua realidade, empiricamente focada ao Scrum. O estudo sugere que, além das necessidades de gerenciamento de iterações, seja adaptada uma nova seção nos quadros, ou adotado um novo 41 quadro, onde estariam dispostos os itens do backlog da release, não apenas as atividades selecionadas para a iteração. Segundo Kniberg e Skarin (2010), esta prática permitirá que gargalos tornem-se visíveis para toda a equipe em tempo real. Serão observadas funcionalidades que não são trabalhadas, pontos para melhoria do sistema e possíveis falhas de conhecimento da equipe em determinadas tecnologias ou áreas de conhecimento. Nos seguintes tópicos, serão abordadas as métricas e indicadores adotados pelo processo de desenvolvimento de software das equipes A, B e C. 5.3 AS MÉTRICAS E INDICADORES DA EMPRESA Esta etapa da pesquisa buscou entender quais métricas e indicadores são utilizados pelas equipes analisadas. Serão apresentados os resultados dos questionamentos (APÊNDICE A – Entrevista sobre métricas e indicadores de projetos ágeis) sobre quais métricas e indicadores são utilizados e suas finalidades, qual a frequência de atualização e quem é o responsável pelos artefatos. Desta forma foi possível a realização de uma análise das métricas e indicadores aplicados nas equipes, possibilitando a sugestão de melhorias a serem aplicadas. Ao questionar o entrevistado da equipe A, sobre a utilização de métricas e indicadores, foi relatado que o único indicador adotado é o gráfico Burndown, objetivando o acompanhamento das Sprints na equipe. A atualização do gráfico é realizada diariamente, a responsabilidade de mantê-lo atualizado é revezada entre os membros da equipe ao longo das Sprints. A equipe demonstra interesse em aplicar métricas e indicadores que auxiliem na evolução do processo de desenvolvimento de software. A entrevista realizada na equipe B, demostrou a utilização de gráficos Burndown, planilhas de controle de atendimentos por cliente e a comparação de horas estimadas/realizadas como indicadores adotados. O gestor da manutenção é responsável pela atualização das métricas e indicadores, suas divulgações são realizadas semanalmente. O entrevistado informou que há necessidade de melhoria nos indicadores e suas técnicas de aplicação, pois atualmente o processo de desenvolvimento adotado pela equipe não é otimizado. Atualmente as ferramentas utilizadas para acompanhamento dos projetos, como o Sistema de Atendimento ao Cliente (SAC), quadro de atividades e o Excel, não possuem 42 integração, assim a atualização do indicador é comprometida, pois deve ser realizada manualmente em diversos locais. O assunto também foi abordado junto ao entrevistado da equipe C, onde ficou compreendida a utilização de indicadores focados a realidade da equipe. Os indicadores adotados são planilhas de Excel contendo informações dos atendimentos no SAC, gráfico Burndown, gráfico de esforço previsto/realizado e gráfico de porcentagem de esforço empregado por cliente. Todos indicadores possuem a finalidade de acompanhamento dos projetos. O indicador é atualizado diariamente pelo gestor de projetos e está disponível aos colaboradores em uma página web da equipe. Os indicadores são revisados apenas em caso de falhas na iteração, neste caso os problemas encontrados são discutidos pela equipe. O entrevistado relatou o interesse na aplicação de novos indicadores, inclusive a equipe possui uma série de indicadores preparados para aplicação. O principal problema relacionado a aplicação de indicadores compreende a dificuldade na coleta e atualização dos dados nas diversas ferramentas utilizadas para a gestão dos projetos. Diversos artefatos foram coletados para análise de dados nas equipes entrevistadas. A partir destes artefatos, torna-se possível o cálculo e aplicação de novos indicadores, que possivelmente tragam benefícios para o processo de desenvolvimento de software empregado nas equipes. As seções abaixo apresentam os artefatos obtidos em cada equipe e as propostas de melhoria sugeridas pelo estudo. 5.3.1 Burndown Na equipe A, os gráficos Burndown apresentados, representam a evolução do total de pontos estimados ao longo dos dias percorridos na iteração. A linha marcada em preto demonstra a evolução planejada e a marcação em vermelho exibe o trabalho realizado. No rodapé fica anotado o trabalho realizado não planejado, este é somado junto aos pontos dentro da evolução do trabalho realizado (em vermelho) (Gráfico 1). 43 Gráfico 1 – Burndown Sprint 74 Equipe A Fonte: Empresa XPTO (2013) O gráfico Burndown apresentado pela equipe B exibe o trabalho total estimado decrescendo ao longo da iteração. Em azul está representado o indicador que é adotado como meta estimada para a equipe, chamado de evolução prevista. Em vermelho está representada a evolução dos pontos concluídos ao longo da iteração (Gráfico 2). Gráfico 2 – Burndown Sprint 1 Equipe B Fonte: Empresa XPTO (2013) O gestor de projetos da equipe C disponibilizou gráficos Burndown detalhados. Estes gráficos possuem a representação do trabalho total estimado decrescendo ao longo dos dias passados durante as iterações. Os itens em azul mostram a evolução prevista da Sprint em horas, os itens em vermelho representam a evolução total realizada em horas trabalhadas e as marcações em verde indicam se ocorreu imprevistos nos dias marcados a quantidade de tempo consumida para lidar com o problema. Os itens não planejados são cadastrados em 44 uma tabela abaixo do gráfico, para controle e revisão dos problemas durante e após as iterações (Gráfico 3). Gráfico 3 – Burndown Sprint 1 Equipe C Fonte: Empresa XPTO (2013) Após análise dos gráficos Burndown, ficou compreendido que as equipes realizam a atualização constante de seus gráficos. Seguindo as diretrizes de Velamakanni e Sathianarayanan (2009), quando o gráfico Burndown é atualizado diariamente, as equipes visualizam dados sobre precisão de estimativas, produtividade da equipe e controle de processos. Porém, considera-se importante que os gráficos sejam verificados por toda equipe ao final de cada iteração, na reunião de revisão da Sprint, isto possibilita a compreensão de falhas na equipe e problemas que podem ser evitados nas próximas iterações. 5.3.2 Velocidade Segundo a Agile Alliance (2013), a métrica é obtida a partir da quantidade de horas ou pontos estimados que a equipe efetivamente trabalhou. Os dados obtidos com base nos gráficos Burndown permitem identificar a velocidade da equipe ao final de cada iteração. Como estudo, foi aplicado o cálculo da velocidade média diária, com base nas informações obtidas na equipe A, ao longo das iterações 74, 75 e 76. O Gráfico 1 exibido no item 5.3.1 representa que a velocidade da equipe A na iteração 74 foi de 157 pontos. O Anexo 45 A – Gráfico Burndown Sprint 75 Equipe A, demonstra que a velocidade da equipe A na iteração 75 foi de 125 pontos. O gráfico do Anexo B – Gráfico Burndown Sprint 76 Equipe A, mostra a velocidade de 112 pontos. As iterações estudadas possuem 9 dias (Sprint 74) e 8 dias (Sprints 75 e 76). Para que as velocidades sejam comparáveis, é necessário normalizar a medida pelo número de dias corridos em cada Sprint. Desta forma a velocidade diária da equipe é de: 157 pontos / 9 dias = 17,5 pontos por dia na primeira iteração, 125 pontos / 8 dias = 15,625 pontos por dia na segunda iteração e 112 pontos / 8 dias = 14 pontos por dia na terceira iteração. Realizada a normalização, pode-se calcular a velocidade média diária da equipe: 17,5 + 15,625 + 14 = 47,125 pontos / 3 iterações = 15,708 pontos por dia (Gráfico 4). Gráfico 4 – Histórico da Velocidade na Equipe A Fonte: O autor (2013) O estudo considera importante a utilização e atualização do indicador de velocidade em todas as equipes. Sato (2009), explica que ao conhecer sua velocidade, permite à equipe conhecer seus limites e atingir os objetivos planejados de cada iteração. 46 5.3.3 Aceleração Após a compreensão da aplicação do indicador de velocidade, é possível mensurar a evolução das equipes ao longo das iterações. Este tópico aborda a utilização da aceleração como indicador de produtividade das equipes. Com base nos artefatos estudados nas equipes, identificou-se a possibilidade de simular o cálculo da aceleração de uma equipe entre duas iterações. De acordo com a situação de cada equipe e cada iteração, podem ser identificadas normalizações a serem realizadas para promover um cálculo consistente da aceleração. Os dados da velocidade da equipe A, calculados no tópico 5.3.2, permitem a aplicação do indicador de aceleração. Conforme a formula do cálculo da aceleração apresentada por Amber (2008), foi realizado o cálculo da aceleração da equipe entre as Sprints 74 e 75: (15,625 pontos – 17,5 pontos) / 17,5 pontos = -0,10 ou -10%; E a aceleração entre as Sprints 75 e 76: (14 pontos – 15,625 pontos) / 15,625 pontos = -0,10 ou 10%. Desta forma, é possível concluir que a cada iteração que passa, a equipe diminui sua capacidade de entrega em 10%. Este cenário (Gráfico 5) indica que a equipe está sofrendo com problemas e imprevistos comprometem o desempenho da equipe. Gráfico 5 – Evolução da Aceleração Equipe A Fonte: O autor (2013) Amber (2008) indica que é possível monetizar o indicador: Supondo que a equipe A gasta onze mil reais por iteração, e sua aceleração média entre as iterações 1, 2 e 3 foi de - 47 10%, é possível compreender que a equipe pode estar custando cerca de mil e cem reais a mais, para entregar a mesma quantidade de trabalho em relação à iteração anterior. O estudo conclui que o indicador de aceleração é meramente o sinal da variação da velocidade da equipe ao longo do tempo. Sua aplicação deve ser estudada e adaptada à contextos e objetivos específicos. Um exemplo de aplicação seria para verificar quais equipes aumentaram/diminuíram sua capacidade de entrega nas ultimas iterações, possibilitando a identificação e análise de problemas (nas equipes que diminuíram a capacidade) e soluções (nas equipes que aumentaram a capacidade) dentro do processo de desenvolvimento adotado pela empresa. 5.3.4 Cumulative Flow O gráfico Cumulative Flow representa mudanças situacionais ocorridas nas atividades ao longo de um projeto até entrega. Utilizando as informações disponíveis sobre a equipe C, foi construído um diagrama do Cumulative Flow referenciando o desenvolvimento do trabalho da Sprint 1 (Gráfico 3), Sprint 2 (Anexo C – Gráfico Burndown Sprint 2 Equipe C) e Sprint 3 (Anexo D – Gráfico Burndown Sprint 3 Equipe C). O trabalho total estimado das três Sprints foi 484 horas de esforço e isto representa o “Backlog” da equipe C neste intervalo de tempo. No início de cada Sprint as atividades referentes a ela entram no estado de “Em andamento”. Todo o esforço realizado dentro de uma Sprint muda para o estado “Encerrado” ao final da iteração (Gráfico 6). 48 Gráfico 6 - Cumulative Flow Equipe C Fonte: O autor (2013) A análise do Gráfico 6 possibilitou compreender que a frequência de entrega das atividades da equipe ocorre sempre ao final de cada Sprint, pois o gráfico foi criado após o término do projeto analisado. Desta maneira não foi possível levantar as informações em tempo de execução do projeto, cruciais para a construção deste artefato. Segundo a Agile Sherpa (2010), entende-se que a utilização e atualização constante deste indicador ao longo de um projeto exibirá em tempo real os impedimentos e as mudanças ocorridas no escopo do projeto. 5.3.5 Lead Time A Agile Aliance (2013) descreve que o lead time é o tempo percorrido entre a identificação de um requisito até sua entrega efetiva. Para realizar o cálculo do lead time é necessário levantar informações sobre o momento em que as solicitações das demandas estudadas foram realizadas oficialmente pelos clientes para a empresa prestadora de serviços, em seguida é necessário calcular quanto tempo corrido no processo de análise, no desenvolvimento e nos testes de cada uma das demandas estudadas. Devido às dificuldades 49 que surgiram no levantamento das informações necessárias para sua simulação do lead time, não foi possível calcular o indicador para as equipes estudadas na empresa XPTO. Em um cenário ideal, este indicador seria obtido a partir de um sistema com foco na gestão e acompanhamento de projetos, onde as informações necessárias para o cálculo dos indicadores são coletadas automaticamente na entrada das demandas que a empresa ou o cliente realiza na ferramenta. 5.3.6 Cycle Time Segundo Sato (2009) para calcular o cycle time de uma atividade é preciso saber quanto tempo levou a partir da sua ordem de implementação até o momento da entrega. Segundo as informações estudadas, foi possível simular o cálculo do cycle time para a equipe A. Consideramos o fato de que a ordem para a implementação efetiva das atividades da equipe são denominadas ao início de cada iteração e ao final de cada iteração, as atividades concluídas são entregues ao cliente. Desta forma, foi concluído que o cycle time da equipe é a média dos dias trabalhados em cada iteração. Os gráficos estudados mostram que a Sprint 74 (Gráfico 1) o Cycle Time foi de nove dias, as Sprints 75 (Anexo A – Gráfico Burndown Sprint 75 Equipe A) e 76 (Anexo B – Gráfico Burndown Sprint 76 Equipe A) o cycle time foi de oito dias em cada Sprint. Com base nestes dados, o cycle time médio da equipe nas três iterações foi de 8,4 dias. De acordo com Sato (2009), se conclui que este valor representa o quão rápido o processo de desenvolvimento adotado pela equipe entrega valor de forma repetitiva e confiável. 50 6 CONCLUSÃO Este trabalho objetivou um estudo de caso comparativo, na empresa de sistemas de gestão XPTO. Com base na análise e compreensão, por meio de pesquisa exploratória, das metodologias ágeis de desenvolvimento de software, métricas e os indicadores aplicáveis aos projetos da empresa XPTO. Desta forma, foi adquirido conhecimento técnico para a realização do estudo de caso, onde foram realizadas entrevistas e coleta de artefatos dentro das equipes de desenvolvimento de software da empresa XPTO, buscando compreender o processo de desenvolvimento de software, os indicadores e as métricas adotadas por elas. Os artefatos coletados durante as entrevistas possibilitaram construir a comparativa das metodologias ágeis, os indicadores e as métricas estudados previamente com o processo de desenvolvimento, as métricas e os indicadores utilizados nas equipes de desenvolvimento de software da empresa XPTO. O estudo comparativo entre as metodologias ágeis dos frameworks Scrum e Kanban e o processo de desenvolvimento utilizado pelas equipes da empresa XPTO, permitiu entender a importância dos métodos ágeis na qualidade e melhoria continua do processo de desenvolvimento de software. Assim foram sugeridas técnicas a serem adotadas dentro do processo de desenvolvimento de software das equipes na empresa XPTO. Entre os indicadores e métricas estudados são citados o gráfico Burndown, a Aceleração, a Velocidade, o gráfico Cumulative Flow, o Lead Time e o Cycle Time. Compreender estes indicadores e métricas possibilitou a simulação de suas aplicações com base em dados históricos obtidos nas pesquisas realizadas nas equipes da empresa XPTO. O estudo notou a necessidade da aplicação de novos indicadores e métricas nas equipes, o que pode tornar o ciclo de revisões e melhorias mais abrangente e otimizado dentro do processo de desenvolvimento utilizado. Assim ficou compreendida a importância da adoção de dois novos indicadores: o indicador de Velocidade, cujo objetivo é proporcionar que as equipes a conheçam suas capacidades e limites para cada iteração; E o gráfico Cumulative Flow, que permite visualizar a frequência de entrega das atividades das equipes e quando ocorrem impedimentos ou mudanças de escopo no projeto. 51 Com base nas dificuldades ocorridas ao longo deste trabalho, foi percebido que no caso da falta de insumos para suas aplicações, haverá necessidade da realização de esforços específicos para a adoção de novas abordagens dentro do processo de desenvolvimento das equipes. Entende-se que a aplicação de novas técnicas para mensurar, avaliar e revisar o processo de desenvolvimento de software utilizado por uma equipe deve ser analisada no quesito da viabilidade. Novos métodos e técnicas podem tornar o processo de desenvolvimento da equipe oneroso e burocrático, se não forem devidamente avaliados e compreendidos, pois podem exigir que recursos humanos e tecnológicos estejam focados exclusivamente nestes assuntos. O cenário estudado mostrou que as equipes da empresa XPTO utilizam técnicas e métodos de desenvolvimento de software distintos entre si. Isto evidencia que mesmo em empresas com processos padronizados, é possível que existam diferentes culturas e abordagens relacionadas ao desenvolvimento de software dentro da mesma corporação. Visando trabalhos futuros, este estudo de caso pode ser utilizado como base na adoção das metodologias ágeis estudadas em projetos de desenvolvimento de software de uma empresa, utilizando as métricas e indicadores propostas nos procedimentos de qualidade e revisão realizados pelas equipes. Este trabalho dá abertura para a incorporação de novas métricas e indicadores a serem utilizados junto aos propostos por ele, como também a utilização de uma ferramenta especializada em gestão e acompanhamento de projetos. A utilização de uma ferramenta pode possibilitar que a aplicação de métricas e indicadores seja realizada de maneira transparente e automatizada, pois as informações necessárias para o cálculo das métricas e indicadores são coletadas automaticamente na entrada das informações de atividades e demandas que a empresa e o cliente realizam na ferramenta. 52 REFERÊNCIAS AGILE ALIANCE (Org). Kanban [Periodico na internet]. Disponível em: <http://guide.agilealliance.org/guide/kanban.html>. Acesso em: 5 maio 2013. AGILE ALLIANCE (Org.). Lead Time. Disponível em: <http://guide.agilealliance.org/guide/leadtime.html>. Acesso em: 10 maio 2013. AGILE ALLIANCE (Org.). Velocity. Disponível em: <http://guide.agilealliance.org/guide/velocity.html>. Acesso em: 10 maio 2013. AGILE SHERPA (Org.). Cumulative Flow. Disponível em: <http://www.agilesherpa.org/agile_coach/metrics/cumulative_flow/>. Acesso em: 04 ago. 2010. AMBLER, Scott. Acceleration: An Agile Productivity Measure. Disponível em: <https://www.ibm.com/developerworks/mydeveloperworks/blogs/ambler/entry/metric_accele ration?lang=en>. Acesso em: 28 abr. 2013. BARROS, Aidil Jesus da Silveira; LEHFELD, Neide Aparecida de Souza. Fundamentos de Metodologia Científica. 3. ed. São Paulo: Pearson, 2007. BECK, Kent; BEEDLE, Mike; BENNEKUM, Arie van; COCKBURN, Alistair; CUNNINGHAM, Ward; FOWLER, Martin; GRENNING, James; HIGHSMITH, Jim; HUNT, Andrew; JEFFRIES, Ron; KERN, Jon; MARICK, Brian; MARTIN, Robert C. ; MELLOR, Steve; SCHWABER, Ken; SUTHERLAND, Jeff; THOMAS, Dave. Manifesto para Desenvolvimento Ágil de Software. Disponível em: http://www.agilemanifesto.org/iso/ptbr/. Acesso em: 28 abr. 2013. 53 BOURNE, Lynda. Who is a Stakeholder? Disponível em: <http://blogs.pmi.org/blog/voices_on_project_management/2009/09/who-is-astakeholder.html>. Acesso em: 22 set. 2009. COHN, Mike. Agile estimating and planning. New Jersey: Prentice Hall, 2006. COHN, Mike. What is Scrum Methodology? Disponível em: <http://www.mountaingoatsoftware.com/topics/scrum>. Acesso em: 30 abr. 2013. FRENCH SCRUM USER GROUP (Org.). Burndown charts. Disponível em: <http://www.frenchsug.org/display/FRSUG/Burndown+charts>. Acesso em: 23 maio 2013. IMPROVE IT (Org.). Manifesto Ágil. Disponível em: <http://improveit.com.br/xp/manifesto_agil>. Acesso em: 28 abr. 2013. KNIBERG, Henrik. Kanban. Disponível em: <http://www.crisp.se/gratis-material-ochguider/kanban>. Acesso em: 5 maio 2013. KNIBERG, Henrik. Scrum vs Kanban. Disponível em: <http://www.crisp.se/fileuploads/Kanban-vs-Scrum.pdf>. Acesso em: 30 abr. 2013. KNIBERG, Henrik; SKARIN, Mattias. Kanban and Scrum: making the most of both. Estados Unidos: InfoQueue, 2010. KOCUREK, Dusan. Understanding the Scrum Burndown Chart. Disponível em: <http://www.methodsandtools.com/archive/scrumburndown.php>. Acesso em: 2011. LANKEY, Lori. How to Improve Project Cycle Time. Disponível em: <http://www.isixsigma.com/methodology/project-management/how-to-improve-projectcycle-time/>. Acesso em: 16 jan. 2012. LEAN (Org.). Lean Thinking (Mentalidade Enxuta). Disponível em: <http://www.lean.org.br/o_que_e.aspx>. Acesso em: 02 jun. 2013. 54 MOUNTAIN GOAT SOFTWARE (Org.). Agile Burn Chart - Release Burndown Charts. Disponível em: <http://www.mountaingoatsoftware.com/scrum/release-burndown/>. Acesso em: 23 maio 2013. MOUNTAIN GOAT SOFTWARE (Org.). Scrum. Disponível em: <http://www.mountaingoatsoftware.com/system/asset/file/27/scrum1600x1200.png>. Acesso em: 03 jun. 2013. PRESSMAN, Roger S. Engenharia de Software, / Roger S. Pressman ; tradução José Carlos Barbosa dos Santos ; revisão técnica José Carlos Maldonado, Paulo Cesar Masiero, Rosely Sanches. São Paulo: Pearson Makron Books, 1995. ROOCK, Stefan. Kanban: Definition of Lead Time and Cycle Time. Disponível em: < http://stefanroock.wordpress.com/2010/03/02/kanban-definition-of-lead-time-and-cycletime/>. Acesso em: 23 maio 2013. SATO, Danilo Toshiaki. Métricas de acompanhamento para metodologias ágeis. Engenharia de Software Magazine, v. 12, 2009. SCHWABER, Ken; SUTHERLAND, Jeff. O Guia do Scrum. Disponível em: <http://www.fabiocruz.com/wp-content/uploads/2012/01/Scrum_Guide_2011-PortugueseBR-Version-Scrum-org.pdf>. Acesso em: 30 abr. 2013. SHORE, James. How To Be Agile. Disponível em: <http://www.jamesshore.com/AgileBook/how_to_be_agile.html>. Acesso em: 30 abr. 2013. SHORE, James; WARDEN, Shane. A arte do desenvolvimento ágil. Rio de Janeiro: Alta Books, 2008. SILVA, Helen de Castro; CASARIN, Samuel José. Pesquisa Científica: da teoria à prática. Curitiba: Ibpex, 2011. 55 SOMMERVILLE, Ian. Engenharia de Software, 8ª edição / Ian Sommerville; tradução: Selma Shin Shimizu Melnikoff, Reginaldo Arakaki, Edilson de Andrade Barbosa; revisão técnica Kechi Kirama. –8. ed. – São Paulo : Pearson Addison-Wesley, 2007. TERRIBILI FILHO, Armando. Indicadores de Gerenciamento de Projetos. Monitoração Contínua/ Armando Terribili Filho. São Paulo : M. Books do Brasil Ltda., 2010. VELAMAKANNI, Bharadwaj; SATHIANARAYANAN, Ramanathan. Burndown Analysis for Managing Productivity & Schedules. Disponível em: <http://www.infoq.com/articles/burndown-analysis>. Acesso em: 15 set. 2009. VERSION ONE (Org.). 7th Annual State Of Agile Development Survey. Disponível em: <http://www.versionone.com/pdf/7th-Annual-State-of-Agile-Development-Survey.pdf>. Acesso em: 01 maio 2013. VERSION ONE (Org.). Measuring the Velocity of your Scrum Team. Disponível em: <http://www.versionone.com/Agile101/Agile-Scrum-Velocity/>. Acesso em: 23 maio 2013. VITOR, Paulo. Cálculo do lead time em user stories. Disponível em: <http://www.infoq.com/br/articles/lead-time-user-stories>. Acesso em: 23 abr. 2010. YOSHIMA, Rodrigo. O Cumulative Flow Diagram. Disponível em: <http://blog.aspercom.com.br/2012/04/03/cumulative-flow-diagram/>. Acesso em: 23 maio 2013. 56 APÊNDICES APÊNDICE A – ENTREVISTA SOBRE MÉTRICAS E INDICADORES DE PROJETOS ÁGEIS Dados pessoais Nome: Papel: Tempo de empresa: Dados da equipe Nome: Número de colaboradores: Gestão de Projetos 1) Quais são as metodologias utilizadas na gestão dos projetos da equipe? São utilizadas há quanto tempo? 2) Quais são as reuniões (cerimonias) realizadas? Quem são os participantes (envolvidos)? 3) São feitas sprints (iterações)? Qual o tamanho? 4) Como são realizadas as estimativas? 5) É utilizada alguma ferramenta para o acompanhamento (gestão) do projeto? Métricas e Indicadores 1) Quais métricas e indicadores são utilizados e qual sua finalidade? 2) Qual a frequência e quem faz a atualização da métrica? 3) As métricas são utilizadas no encerramento da iteração? Qual a visibilidade para a equipe? 57 4) A equipe tem interesse em aplicar novos indicadores? Em que isto agregaria? ANEXOS ANEXO A – GRÁFICO BURNDOWN SPRINT 75 EQUIPE A ANEXO B – GRÁFICO BURNDOWN SPRINT 76 EQUIPE A 58 ANEXO C – GRÁFICO BURNDOWN SPRINT 2 EQUIPE C ANEXO D – GRÁFICO BURNDOWN SPRINT 3 EQUIPE C