12
Desenvolvimento ágil e práticas Lean Renan Daré 1 , Marcos Abreu 2 1 Gerenciamento de projetos de T.I - Pontifícia Universidade Católica (PUCPR) Caixa Postal 17.315 - 80.215-901 - Curitiba - PR - Brasil 2 Professor orientador - Pontifícia Universidade Católica (PUCPR) Caixa Postal 17.315 - 80.215-901 - Curitiba - PR - Brasil [email protected], [email protected] Resumo. Este artigo tem como objetivo comparar as diferentes técnicas utilizadas no desenvolvimento ágil e práticas Lean, a fim de levantar os desafios na implantação, os benefícios obtidos com as técnicas e elaborar um plano de ação com base nesta pesquisa, para implantação em uma equipe de quatro desenvolvedores de software de uma empresa brasileira de tecnologia. 1. Metodologias de desenvolvimento de software Dentre as diversas metodologias utilizadas em desenvolvimento de software, podemos destacar entre elas: 1.1. Modelo em cascata Descrito pela primeira vez em 1970 por Winston W. Royce, um cientista da computação, em seu artigo “Managing the development of large software systems”, este modelo tem como objetivo seguir uma sequência linear de desenvolvimento, ou seja, uma sequência cronológica, é composta por sete passos, sendo eles: requerimentos do sistema, requerimentos do software, análise, design, codificação, testes e manutenção, conforme mostra a figura 1. Em seu artigo, Royce faz críticas a este modelo principalmente quanto a dificuldade de validação dos resultados gerados a cada fase, dificultando ao cliente saber exatamente o que esperar do software até as últimas fases do projeto, dificultando também o controle do tamanho, custo e cronograma do projeto. Royce propõe ajustar o modelo através da inclusão de iterações e na elaboração de documentação para suportar estas iterações. Seus principais pontos negativos são: 1. Alto impacto no produto caso um erro de requisito for encontrado, ou uma mudança precisar ser feita, fazendo com que projeto volte ao ciclo desde o início. 2. O produto só é testado no final do ciclo, e uma vez que uma etapa for concluída os desenvolvedores não podem voltar a um estágio anterior para fazer alterações.

Desenvolvimento ágil e práticas Lean

Embed Size (px)

Citation preview

Page 1: Desenvolvimento ágil e práticas Lean

Desenvolvimento ágil e práticas Lean

Renan Daré1, Marcos Abreu2

1Gerenciamento de projetos de T.I - Pontifícia Universidade Católica (PUCPR)

Caixa Postal 17.315 - 80.215-901 - Curitiba - PR - Brasil

2Professor orientador - Pontifícia Universidade Católica (PUCPR)

Caixa Postal 17.315 - 80.215-901 - Curitiba - PR - Brasil

[email protected], [email protected]

Resumo. Este artigo tem como objetivo comparar as diferentes técnicas

utilizadas no desenvolvimento ágil e práticas Lean, a fim de levantar os desafios

na implantação, os benefícios obtidos com as técnicas e elaborar um plano de

ação com base nesta pesquisa, para implantação em uma equipe de quatro

desenvolvedores de software de uma empresa brasileira de tecnologia.

1. Metodologias de desenvolvimento de software

Dentre as diversas metodologias utilizadas em desenvolvimento de software, podemos

destacar entre elas:

1.1. Modelo em cascata

Descrito pela primeira vez em 1970 por Winston W. Royce, um cientista da computação,

em seu artigo “Managing the development of large software systems”, este modelo tem

como objetivo seguir uma sequência linear de desenvolvimento, ou seja, uma sequência

cronológica, é composta por sete passos, sendo eles: requerimentos do sistema,

requerimentos do software, análise, design, codificação, testes e manutenção, conforme

mostra a figura 1. Em seu artigo, Royce faz críticas a este modelo principalmente quanto

a dificuldade de validação dos resultados gerados a cada fase, dificultando ao cliente saber

exatamente o que esperar do software até as últimas fases do projeto, dificultando também

o controle do tamanho, custo e cronograma do projeto. Royce propõe ajustar o modelo

através da inclusão de iterações e na elaboração de documentação para suportar estas

iterações. Seus principais pontos negativos são: 1. Alto impacto no produto caso um erro

de requisito for encontrado, ou uma mudança precisar ser feita, fazendo com que projeto

volte ao ciclo desde o início. 2. O produto só é testado no final do ciclo, e uma vez que

uma etapa for concluída os desenvolvedores não podem voltar a um estágio anterior para

fazer alterações.

Page 2: Desenvolvimento ágil e práticas Lean

Figura 1. Representação gráfica do fluxo do modelo em cascata, criado por Winston W. Royce - Managing the development of large software systems.

1.2. RUP (Rational Unified Process)

Segundo Philippe Kruchten criador do livro “The Rational Unified Process An

Introduction – Third Edition” em 2003, RUP é: “Um processo de engenharia de software

que captura muitas das melhores práticas em desenvolvimento de softwares modernos e

apresenta-os em uma forma adequada para uma ampla gama de projetos e organizações.”.

O ciclo de vida do RUP está baseado no modelo Espiral proposto por Boehm. RUP é

documentado utilizando a UML (Unified Modeling Language) para ilustrar os processos

em ação, e é composto por quatro fases, e nove disciplinas, sendo suas fases: Iniciação,

que tem como objetivo definir o escopo do projeto e sua motivação comercial; elaboração

tem como objetivo analisar as necessidades em detalhes; construção, onde se dá início

efetivamente a produção de design e código-fonte do software; e transição, onde o sistema

é entregue aos usuários. Suas disciplinas são: Modelagem de negócios, Requisitos, análise

e design, Implementação, Teste, Implantação, Gerenciamento de configuração e

mudanças, Gerenciamento de projetos e ambiente, ver figura 2. Dentre as vantagens na

sua utilização estão: 1. Uso de um ciclo de vida iterativo e incremental; 2. Uso de artefatos

como resultados das etapas e iterações definidos através de uma especificação formal

(UML); 3. Suporte à gestão de riscos através da fase de Elaboração. Como principal

desvantagem está o alto nível de complexidade para projetos de pequeno porte e quando

aplicado em algumas áreas exige certo nível de experiência da equipe.

Page 3: Desenvolvimento ágil e práticas Lean

Figura 2. Representação gráfica das fases do modelo RUP. Fonte: Wikipédia.

1.3. Práticas Lean

Criada no início da segunda guerra mundial, foi idealizada e implementada na Toyota,

por Taiichi Ohmo, e utilizada na linha de produção para guiar processos industriais, por

esta razão também recebe o nome de “toyotismo”. O Lean tem seus princípios voltados

para a eliminação de desperdícios, excelência na qualidade, criação de conhecimentos,

adiar decisões e comprometimentos, entregas antecipadas, respeitar pessoas e equipes, e

otimizar o todo. O método Lean propõe em seu fluxo sempre, construir, mensurar e

aprender (figura 4). Dentre os pontos positivos de se utilizar Lean estão: 1. Máximo

envolvimento das pessoas no processo de desenvolvimento; 2. Evitar desperdícios e

ampliar o valor agregado entregue ao cliente. 3. Trabalho em equipe com objetivo de

ganhar tempo e eliminar o tempo ocioso. Sua maior desvantagem está na necessidade de

mudanças nos hábitos culturais da organização, há quem considere também o aumento da

concorrência entre os funcionários causados pela disputa de melhores resultados entre si,

sacrificando o trabalhador com intuído de aumentar sua produtividade.

Muitas das propostas dos métodos chamados ágeis, como por exemplo XP e Scrum, são

propostas de trazer para o desenvolvimento de software as práticas de eliminação de

desperdício desenvolvidas na indústria de transformação.

1.4.XP (Extreme Programming)

Criado em 1996 por Kent Beck (1999) um engenheiro americano de software com intuito

de evitar especificações formais e rígidas, para um processo de projeto colaborativo e

interativo. É definido por Vinícius Teles no livro “Extreme Programming” como: “Um

processo de desenvolvimento que busca assegurar que o cliente receba o máximo de valor

de cada dia de trabalho da equipe de desenvolvimento.” Além disso, o XP se baseia em

cinco valores principais: o feedback, a comunicação, a simplicidade a coragem, e o

Page 4: Desenvolvimento ágil e práticas Lean

respeito. Possui treze práticas (Cliente Presente, Planejamento, Reuniões em pé,

Programação em Par, Desenvolvimento Guiado pelos Testes, Refatoração, Código

Coletivo, Código Padronizado, Design Simples, Metáfora, Ritmo Sustentável, Integração

Contínua e Releases Curtos). No XP quando o cliente aprende com o sistema e reavalia

suas necessidades, ele gera feedback para a equipe. Dentre as principais vantagens da

utilização do XP estão: 1. O ganho de eficiência no desenvolvimento uma vez que os

desenvolvedores têm grande foco neste processo; 2. Aceitar mudanças contínuas; 3. Foco

na qualidade pois, ao utilizar desenvolvimento em pares, permite que o código seja

revisado constantemente enquanto é criado. Como desvantagens no uso têm-se: 1.

Limitação no tamanho da equipe, uma vez que se recomenda utilizar em equipes de até

doze membros; 2. Exige maturidade da alta direção para implantação. No artigo "The

Costs and Benefits of Pair Programming" de Laurie Williams (2001), o autor relata que

em relação a programação em pares, existe ainda uma perda em tempo gasto na solução

de problemas, em relação a utilização da programação individual, porém, segundo o

levantamento feito pelo próprio Williams, equipes que utilizam programação em pares

produzem códigos com 15% menos erros devido as validações constantes. Na figura 3 é

possível ver o fluxo do XP.

Figura 3. Representação gráfica do fluxo do processo Extreme Programming. Fonte: Google.

Page 5: Desenvolvimento ágil e práticas Lean

Figura 4. Representação gráfica do fluxo utilizado pelas práticas Lean. Fonte: www.manualdastartup.com.br.

1.5. SCRUM

Criado em 1995 por Ken Schwaber e Jeff Sutherland com o propósito de ser um conjunto

de práticas que auxiliam na gestão de um projeto, segue a teoria de que só conhecemos

algo de fato através da experiência. Scrum possui três papeis principais: o Scrum Master,

que tem como função manter os processos, o Product Owner representando os

stakeholders e o negócio como um todo, e a equipe responsável pela codificação, testes e

implementação. Scrum segue um conjunto de práticas denominadas: Product Backlog:

uma lista ordenada de trabalhos a serem realizados mantida pelo Product Owner; Daily

Scrum: reuniões diárias em pé com duração de 15 minutos no máximo e tem o propósito

de manter toda a equipe integrada e atualizada; Sprint: conjunto de histórias, que devem

ser entregues em um período que não ultrapasse um mês; Sprint Planning Meeting:

reunião regida pelo Product Owner com a intenção de informar a equipe sobre as histórias

do próximo Sprint; Sprint Backlog: uma lista de tarefas que o time se compromete a fazer

em um Sprint; Sprint Review Meeting: reunião feita ao final de cada Sprint, onde o time

mostra o que foi alcançado durante o Sprint; Sprint retrospective: reunião feita com o

time ao final de cada Sprint, tem como objetivo identificar o que funcionou bem, o que

pode ser melhorado, e que ações serão tomadas para melhorar o processo. Dentre as

vantagens desta metodologia estão: 1. Promover a melhoria contínua através de ações

tomadas após reuniões de Sprint retrospective, 2. Satisfação do cliente obtida através da

entrega contínua de pequenos pedaços de software. As principais desvantagens são: 1.

Em alguns casos existe a ausência de documentação uma vez que a metodologia prima

por entregar versões do software ao invés de grandes documentações; 2. Exige certa

maturidade e dedicação de todos os membros para se conseguir manter níveis elevados

de comunicação.

Page 6: Desenvolvimento ágil e práticas Lean

Figura 5. Representação gráfica do fluxo utilizado nas práticas SCRUM. Fonte: www.desenvolvimentoagil.com.br.

2. O desenvolvimento ágil

Segundo Jeff Patton publicou em seu artigo “Kanban Development Oversimplified” em

2009, ágil é: “Uma mistura de uma variedade de boas ideias, de uma variedade de

fontes”.

O termo ágil surgiu em 2001 quando Ken Schwaber e Jeff Sutherland, fundadores dos

métodos SCRUM, Kent Beck (1999) representando o Extreme Programming (XP), entre

outros, se reuniram em Utah EUA, e criaram os princípios comuns entre os diferentes

métodos, dando origem a aliança ágil, e posteriormente a criação do “Manifesto Ágil”

[Agile Manifesto (2004)].

Este manifesto tem como objetivo descobrir e reunir maneiras melhores de desenvolver

softwares, que estão separadas em quatro características principais, visando:

Indivíduos e interações mais que processos e ferramentas;

Software em funcionamento mais que documentação abrangente;

Colaboração com o cliente mais que negociação de contratos;

Responder a mudanças mais que seguir um plano;

2.1. Diferenças entre métodos tradicionais e métodos ágeis

Em metodologias tradicionais como o modelo em cascata por exemplo, existe grande foco

em documentação, levantamento de requisitos onde somente após cumpridas estas etapas

dá-se início a codificação, este modelo geralmente segue um fluxo linear de trabalho, ou

seja, somente pode-se passar para a próxima etapa após finalizar a anterior, e tem seu foco

Page 7: Desenvolvimento ágil e práticas Lean

voltado no produto final. Outro ponto importante está relacionado ao fato deste modelo

não estar suscetível a mudanças a qualquer momento, o que causa certa desvantagem em

relação a metodologias ágeis, uma vez que uma mudança seja necessária, é preciso

documentar e aprovar novamente, reiniciando todo o ciclo. Desta forma não há a sensação

de sucesso progressivo existente nas metodologias ágeis obtida após cada entrega do

software, e sim, somente quando o software é entregue por completo.

Os processos ágeis promovem desenvolvimento sustentável, atenção a excelência técnica

e bom design, dão maior agilidade ao desenvolvimento, e tem a simplicidade como fator

essencial. Além disso, em processos ágeis acredita-se que, as melhores arquiteturas,

requisitos e designs nascem de equipes auto organizáveis, e, refletir sobre como se tornar

mais eficaz, realizar os ajustes necessários, estão entre os princípios comuns nos

processos ágeis. Em metodologias ágeis parte-se do princípio que entregar pequenas

parcelas do software gera valor agregado ao cliente, e tem-se o foco voltado as pessoas

ao invés de processos.

Dentre as principais técnicas adotadas por Ryan Polk como ágil, em seu artigo “Agile &

Kanban In Coordination” em 2011, estão:

User Stories: Definições de alto nível de um requisito contendo informações suficientes

para que os desenvolvedores possam produzir uma estimativa do esforço para

implementá-lo.

Acceptance tests: Descrição formal do comportamento de um produto de software,

geralmente expressa como um exemplo ou uma situação de uso.

Iterative Development: Estratégia de desenvolvimento onde partes diferentes do

software são desenvolvidas em paralelo e integradas quando finalizadas.

Burn-Down Charts: Gráfico que demonstra a evolução do esforço versus o tempo sobre

as User’s Stories.

Project Boards: Quadro que contém os backlogs do Sprint corrente. Tem o objetivo de

tornar as informações visíveis a toda a equipe.

Daily Stand Ups: Reuniões diárias em pé de no máximo 15 minutos tem como intuito

manter toda a equipe informada sobre o andamento das tarefas.

TDD (Test-driven development): Prática onde se desenvolve primeiro o caso de teste,

depois se codifica.

Continuous Integration: Prática que tem como objetivo minimizar a duração e o esforço

de cada item e entregar a partes do produto ao cliente a qualquer momento.

Já Kazuhiro Matsuo, professor no Instituto de tecnologia de Kanazawa, e Shota Anzawa,

aluno de graduação do mesmo instituto, revelaram em seu artigo “Work in Progress -

Project Pratices of Agile Software Development for Undergraduate Students“ (2010) que

utilizaram outras técnicas, são elas:

TiDD (Ticket-Driven Development): Gestão de tarefas no ciclo de vida de

desenvolvimento de software usando ferramentas de relatório de erro, geralmente utiliza-

se JIRA;

Pair Programming: Os membros do projeto fazem suas tarefas de programação em

pares;

Page 8: Desenvolvimento ágil e práticas Lean

Automated Testing: Criar rotinas de testes automatizadas capaz de praticar testes em um

software automaticamente;

Code Coverage: Rotina de testes utilizada para descrever o grau em que o código-fonte

de um programa é testado, tem o intuito de evitar bugs e geralmente utiliza-se a ferramenta

EMMA.

Além destas técnicas citadas, existem outras três técnicas de grande importância quando

se utiliza metodologia ágil em desenvolvimento de software, são elas:

Sprint Review: Reunião realizada ao final de cada sprint incluindo o time, Product

Owner, Scrum Master, Stakeholders, gerência e clientes, a fim de avaliar se os objetivos

do Sprint encerrado foram atingidos.

Sprint Retrospective: Reunião que ocorre ao final de cada sprint contendo somente o

time, com o propósito de identificar o que funcionou bem no sprint que se encerra, o que

pode ser melhorado e que ações serão tomadas para melhorar nos próximos sprints.

Quadro Kanban: Consiste em um sistema representado por um quadro, onde cartões que

representam o trabalho seguem um fluxo pré-estabelecido de estágios geralmente

separados em colunas. Na medida em que o trabalho vai evoluindo, os cartões vão

mudando de estágio, e sempre que um novo trabalho é identificado, um novo cartão é

criado e adicionado ao quadro.

3. Desafios na implementação ágil

Ryan (2011) mostra como muitas equipes implementam erradamente as práticas ágeis.

Dentre os principais equívocos encontramos:

3.1. Reuniões diárias sem propósito

Fazer reuniões diárias de 15 minutos não é suficiente. A reunião diária é o momento onde

cada membro da equipe informa o que fez, o que pretende fazer e quais impedimentos

encontrou desde a reunião anterior. O objetivo desta reunião é manter a equipe sempre

atualizada sobre as tarefas, tomar decisão em casos de impedimentos ou problemas e

também para que seja criado um plano de ação para as próximas 24 horas. Estas reuniões

perdem seu propósito em alguns casos bastante comuns, ou seja, quando o assunto se

torna extremamente técnico, quando são usadas para planejamento, quando somente o

Scrum Master fala, quando a conversa é direcionada somente ao Scrum Master, e por fim,

obviamente quando as reuniões são canceladas. Ryan relata em seu artigo que alguns

membros da sua equipe passaram a faltar regularmente das reuniões diárias em pé, e

percebeu que muitos deles não conseguiam finalizar seus trabalhos dentro das iterações,

criou-se então uma equipe com menor número de membros e maior estrutura imaginando

que estes membros seriam capazes de se auto organizar e executar seus trabalhos, Ryan

começa então a utilizar o método Kanban para controlar o ambiente e gerenciar o trabalho.

3.2. Uso de ferramenta de controle de bugs para coordenar a equipe

Ferramentas de controle de bugs são muito boas para registrar as pendências, visualizar

as demandas e até mesmo para auxiliar no processo de qualidade, mas não ajudam a dar

uma direção e propósito bem definido para o trabalho. Ryan (2011) percebeu isso quando

cita que os trabalhos eram distribuídos pelo Product Owner e conforme a demanda

Page 9: Desenvolvimento ágil e práticas Lean

chegava, o próprio Product Owner definia para qual equipe ia o trabalho, tentavam-se

quebrar as tarefas por trabalho individual e/ou características de cada equipe, mas no final

estes acabavam abrangendo todas as equipes.

3.3. Ausência de um processo de estimativa

Segundo Hazan (2008), a estimativa em softwares é uma atividade que pode ser aplicada

em todas as fases do ciclo de vida de um projeto, e com ela é possível chegar a métricas

para prever custos e prazos necessários para se desenvolver um software. Uma das

principais dificuldades encontradas no processo de estimativa é a falta de base para

comparação, é preciso antes formar esta base para depois conseguir estimar. Uma das

formas de se conseguir formar esta base é quebrando as estórias em tarefas e estimando

estas tarefas em horas, por outro lado, este tipo de estimativa pode se tornar uma meta,

fazendo com que a equipe se force a cumpri-la, comprometendo a qualidade e o grau

assertividade das estimativas. James Grenning (2002) criou uma técnica de estimativa

chamada “Planning Poker” que consiste em um jogo de cartas feito com a equipe onde

cada membro tem 13 cartas contendo os tamanhos de 0, ½, 1, 2, 3, 5, 8, 13, 20, 40 e 100,

além de uma carta contendo uma interrogação, cada membro da equipe utiliza uma carta

para dar peso a uma estória ou tarefa a desenvolver, e ao final chega-se a um consenso

comum entre a equipe com relação aos valores obtidos. Dentre os benefícios da utilização

desta técnica está o entendimento do escopo, pois como cada participante estima de forma

individual, o mesmo é forçado a entender todas as funcionalidades de cada tarefa para

conseguir estimar, e consegue-se dar início a criação da base de conhecimento.

3.4. Ausência de reuniões de aprendizagem

Muitas equipes que tentam implementar metodologia ágil em seu dia-a-dia, acabam

tentando implantar ágil como uma técnica “mecânica” e pronta, e esquecem das

interações entre as equipes e a troca de experiências entre eles, tais como Sprint Planning

e Sprint Retrospective.

3.5. Estruturar a equipe é mais do que dividir por produto ou processo

A estrutura da equipe é um tema delicado pois a mesma pode influenciar na estrutura final

da aplicação: em 1968 por Melvin E. Conway publicou artigo no Simpósio Nacional de

Programação Modular mostrando haver uma forte correlação entre a estrutura das equipes

e as estruturas dos softwares produzidos pelas mesmas: "Organizações que desenvolvem

sistemas de software tendem a produzir sistemas que são cópias das estruturas de

comunicação dessas organizações." Isso demonstra o quanto o processo de estruturação

de equipes é importante para garantir um software de qualidade, uma vez que estruturar

uma equipe exige que seus membros possuam certo grau de maturidade.

4. Proposta para implantação de Práticas Ágeis em uma equipe – ação

incremental

Considerando as técnicas discutidas, e as diversas citações de experiências obtidas por

vários autores neste artigo, tomou-se a decisão de descrever uma proposta estratégica para

implantação de metodologia ágil, em uma empresa com as mesmas características da

empresa onde o autor trabalha. Fundada em 1989 atua em diversas áreas do mercado,

focada em tecnologia e educação, líder na produção de computadores no país, na parte

educacional possui aproximadamente 300 funcionários, e está presente em mais de 40

países, 14 mil escolas e atende mais de 1,4 milhões de usuários em seus sistemas. Nos

Page 10: Desenvolvimento ágil e práticas Lean

últimos doze meses sofreu diversas mudanças tanto em relação a produtos, quanto a

estrutura. Há seis meses houve a necessidade de mudança no produto e foi então decidido

desenvolver a partir desta data os sistemas em linguagem de programação C# .NET,

deixando o legado em ASP clássico aos cuidados de uma nova equipe, denominada

equipe de manutenção.

A equipe de desenvolvimento conta com nove desenvolvedores em seu quadro, que estão

subdivididos em outras duas equipes uma com cinco e outra com quatro desenvolvedores,

e cada uma destas equipes possui um coordenador técnico, responsável por retirar

impedimentos, organizar as demandas, e fazer o primeiro contato técnico com os

criadores dos projetos, acima destas duas equipes existe ainda o gerente de projetos. O

foco deste estudo é a equipe com quatro desenvolvedores denominada Equipe de Projetos.

Suas demandas, são passadas pela equipe de criação de projetos formada em sua maioria

por pedagogas, para o coordenador da equipe, que tem a função de quebrar e repassar as

tarefas aos desenvolvedores, utilizando ferramenta, Microsoft TFS (Team Foundation

Server), onde cada desenvolvedor é responsável por garantir a entrega de seus backlogs

durante o Sprint corrente. Um dos principais problemas encontrados na metodologia de

trabalho atual é a alta demanda da equipe de desenvolvimento, uma vez que os prazos de

entrega, são criados pela equipe de criação de projetos e não pelo time, desta forma o

coordenador não consegue alcançar o limite máximo do WIP para a equipe. Outro ponto

importante é a comunicação, não há formalidade nas solicitações de desenvolvimento

entre as equipes, causando inúmeras reuniões de concepção de projetos sem sucesso e

objetividade, e alto índice de bugs. São feitas reuniões em pé diariamente com a equipe

de desenvolvimento, a fim de manter atualizado o andamento de cada backlog a todos os

integrantes da equipe. Ao final de cada backlog existe um processo de testes realizados

pela própria equipe de desenvolvimento a fim de garantir a inexistência de bugs, e validar

seu funcionamento em diferentes plataformas tais como tablets e browsers diversos, após

esta validação o coordenador da equipe é responsável por aprovar o pacote que está sendo

entregue, após esta aprovação, a equipe de design e a equipe de criação do projeto também

fazem seu teste a fim de garantir que o que está sendo entregue condiz com o que foi

solicitado. Este processo de validação torna-se muito burocrático e pouco eficaz, pois é

efetuado em três ambientes diferentes, sendo um deles o ambiente de produção. Com base

neste cenário, propõe-se um plano de ação a fim de garantir a melhoria no ambiente de

desenvolvimento, e maior agilidade, com auxílio das seguintes técnicas:

Adoção da metodologia ágil SCRUM:

Propõe-se a adoção da metodologia ágil SCRUM dentre as diversas existentes atualmente

e citadas neste artigo, a fim de se obter maior desempenho da equipe e qualidade nos

softwares entregues. Escolheu-se SCRUM por ser uma das metodologias mais difundidas

atualmente, por não requerer grandes mudanças culturais na organização, também, por já

ser utilizada em outros times de desenvolvimento da mesma empresa, a fim de conseguir

comparar futuramente os ganhos obtidos em cada time com esta metodologia.

Utilização de Quadro Kanban:

Assim como Ryan (2011) utilizou este quadro para gerir e controlar a demanda de sua

equipe com sucesso, este mesmo quadro é utilizado por muitas empresas, em paralelo

Page 11: Desenvolvimento ágil e práticas Lean

com a utilização de alguma metodologia ágil, propõe-se então a utilização do quadro

Kanban juntamente com a metodologia ágil SCRUM com foco em gerir e controlar as

demandas diárias da equipe e conseguir também, encontrar o limite do WIP da equipe.

Adoção de Sprint Planning Meeting

Propõe-se realizar reuniões de Sprint Planning Meeting para dar início a cada Sprint

conforme determina as práticas ágeis, e engajar cada vez mais o Product Owner hoje

distante da equipe de desenvolvimento, a cada novo Sprint, e conseguir diminuir o fluxo

demasiadamente alto de trabalho existente sobre a equipe de desenvolvimento.

Adoção de Sprint Retrospective

Assim como Ryan (2011) também utilizava esta técnica, porém semanalmente, propõe-

se a realização de reuniões de Sprint Retrospective com todo o time de desenvolvimento,

ao final de cada Sprint, a fim de promover a melhoria contínua conforme característica

principal da técnica, e ajudar no processo de construção de uma equipe auto gerenciável.

5. Conclusão

Como pôde ser observado nas seções anteriores, seja qual for o método ágil que adotar,

eles sempre tendem a estar relacionados ao comportamento e ao relacionamento entre

pessoas de uma equipe, a participação dos clientes no desenvolvimento, e adaptação a

mudanças no decorrer do desenvolvimento. Pode-se dizer que metodologia ágil foca em

pessoas e não somente em processos, considera também a necessidade de produzir mais,

com o mesmo espaço de tempo, e, além disso, consegue-se aumentar a satisfação do

cliente com múltiplas entregas de pedaços de software. Com base neste cenário viu-se a

necessidade de implantar algumas práticas de metodologia ágil citadas acima, na equipe

de desenvolvimento denominada equipe de projetos, a fim de mitigar os problemas

encontrados atualmente por falta de gestão. Escolheram-se as quatro técnicas citadas

acima para que seja possível atingir principalmente os problemas relacionados a

comunicação e fluxo de trabalho demasiadamente alto. Com a utilização do quadro

Kanban, busca-se alcançar o limite do WIP da equipe e conseguir promover melhora no

ambiente de desenvolvimento. Também se pretende eleger um Product Owner oriundo

da equipe de criação de projetos, com o intuito de estreitar o relacionamento entre as

equipes.

Referências

Ryan Polk. (2011) “Agile & Kanban in Coordination”,

http://www.agilemethod.csie.ncu.edu.tw/agileMethod/download/2011papers/2011%20

Agile_Kanban_In_Coordination/Agile_Kanban_In_Coordination.pdf

Jeff Patton. (2009) “Kanban Development Oversimplified”,

http://jpattonassociates.com/kanban_oversimplified/

Kazuhiro Matsuo, Shota Anzawa (2010) "Work in progress - Project practices of agile

software development for undergraduate students", http://www.fie-

conference.org/fie2010/papers/1074.pdf

Page 12: Desenvolvimento ágil e práticas Lean

Laurie Williams (2001) "The Costs and Benefits of Pair Programming",

http://collaboration.csc.ncsu1.edu/laurie/Papers/XPSardinia.PDF

Melvin E. Conway (1968) "Lei de conway",

http://www.melconway.com/research/committees.html

Vinicius Manhães Teles (2004) “Extreme Programming”,

http://www.novateceditora.com.br/livros/extreme/ p.21

"Agile Manifesto" (2004), http://agilemanifesto.org/

Ken Schwaber, Jeff Sutherland (1995) "SCRUM", http://www.scrum.org/