2. O que são?
• São processos de desenvolvimento iterativo e incremental para
gerenciamento de projetos. Muito utilizados para desenvolvimento ágil de
software, mas com conceitos e práticas aplicáveis a várias outras
indústrias. É utilizado para trabalhos complexos nos quais é impossível (ou
muito difícil) predizer tudo o que irá ocorrer.
• Via de regra, demandam aumento da comunicação e interação da equipe,
organização diária para o alcance da meta definida, buscando evitar falhas
na elaboração, respostas rápidas às mudanças e entregas em tempos
menores.
• Algumas vezes caracterizados como o oposto de metodologias guiadas
pelo planejamento ou disciplinadas. Uma distinção mais acurada é dizer
que os métodos existem em um contínuo do adaptativo até o preditivo.
Métodos ágeis existem do lado adaptativo deste contínuo.
3. Métodos adaptativos
• Métodos adaptativos buscam a adaptação rápida a mudanças da
realidade. Quando uma necessidade de um projeto muda, uma
equipe adaptativa mudará também. Um time adaptativo terá
dificuldade em descrever o que irá acontecer no futuro. O que
acontecerá em uma data futura é um item de difícil predição para um
método adaptativo. Uma equipe adaptativa pode relatar quais tarefas
se iniciarão na próxima semana. Quando perguntado acerca de uma
implantação que ocorrerá daqui a seis meses, uma equipe adaptativa
deve ser capaz somente de relatar a instrução de missão para a
implantação, ou uma expectativa de valor versus custo.
4. Métodos preditivos
• Métodos preditivos, em contraste, colocam o planejamento do futuro
em detalhe. Uma equipe preditiva pode reportar exatamente quais
aspectos e tarefas estão planejados para toda a linha do processo de
desenvolvimento. Elas porém tem dificuldades de mudar de direção.
O plano é tipicamente otimizado para o objetivo original e mudanças
de direção podem causar a perda de todo o trabalho e determinar
que seja feito tudo novamente. Equipes preditivas frequentemente
instituem um comitê de controle de mudança para assegurar que
somente as mudanças mais importantes sejam consideradas.
5. Princípios
• Garantir a satisfação do consumidor entregando rapidamente e continuamente
software funcionais;
• Até mesmo mudanças tardias de escopo no projeto são bem-vindas para garantir
a vantagem competitiva do cliente;
• Software funcionais são entregues frequentemente (semanas, ao invés de
meses);
• Cooperação diária entre pessoas que entendem do 'negócio' e desenvolvedores;
• Projetos surgem através de indivíduos motivados, entre os quais existe relação de
confiança.
• A maneira mais eficiente e efetiva de transmitir informações é conversar cara a
cara;
• Software funcionais são a principal medida de progresso do projeto;
6. Princípios
• Processos ágeis promovem desenvolvimento sustentável. Os
patrocinadores, desenvolvedores e usuários devem ser capazes para
manter um ritmo constante indefinidamente.
• Design do software deve prezar pela excelência técnica;
• Simplicidade é essencial;
• As melhores arquiteturas, requisitos e projetos emergem de equipes
auto-organizadas;
• Em intervalos regulares, a equipe reflete sobre como para tornar-se
mais eficaz, então sintoniza e ajusta seu comportamento
apropriadamente.
7. Métodos são ferramentas
• Métodos são meios para se chegar a um objetivo. São como
ferramentas que podem ser utilizadas em determinados contextos.
• Nem toda a ferramenta serve para toda a necessidade, e muitas
vezes, mais de uma ferramenta se faz necessária para resolver um
problema.
8. Alguns dos principais tipos de métodos ágeis
• Feature Driven Development (FDD)
• eXtreme Programming (XP)
• Microsoft Solutions Framework (MSF)
• Dynamic System Development Model (DSDM)
• Scrum
9. Feature Driven Development (FDD)
• Criado em Cingapura, entre 1997 e 1999, o FDD é um método ágil que reúne as melhores práticas de outros
métodos, como o Coad. Sua premissa básica é focada em funcionalidades, o que permite à equipe do
projeto realizar um planejamento incremental, isto é, por fases. Esse tipo de atuação ajuda a dar agilidade
ao desenvolvimento de soluções em ambientes de extrema incerteza, em que as mudanças são inevitáveis.
• A programação por FDD começa com a visão global do negócio, já que esse método considera a soma de
tudo mais importante do que cada uma das partes separadamente. Passa-se, então, para o detalhamento do
produto com a subdivisão por áreas a serem modeladas, culminando na descrição de cada funcionalidade.
• Por se tratar de uma ferramenta focada no desenvolvimento, o FDD pode ser perfeitamente integrado ao
Scrum, outro método ágil muito utilizado que também é focado no planejamento e na execução do projeto.
E assim como todos os demais métodos ágeis, o FDD também possui melhores práticas que visam criar o
ambiente ideal para o desenvolvimento de projetos. São elas:
• Desenvolvimento por funcionalidades;
• Um único programador é responsável pela funcionalidade desenvolvida;
• Controle de qualidade em todas as fases do projeto;
• Gerenciamento de configurações;
• Integração contínua das funcionalidades;
• Planejamento incremental;
• Teste de software.
10. eXtreme Programming (XP)
• Também criado em meados da década de 90, o eXtreme Programming,
carinhosamente chamado de XP, é um método ágil focado no desenvolvimento
de softwares que tem três pilares como base: agilidade no desenvolvimento da
solução, economia de recursos e qualidade do produto final.
• Para chegar à excelência nos serviços prestados, uma equipe XP deve se basear
em valores, isto é, um contrato de atitudes e comportamentos que levam ao
sucesso. Esses comportamentos e atitudes norteiam as ações da equipe XP em
cada atividade a ser desempenhada, garantindo a integração e a sinergia
necessárias para um bom desempenho. No caso, esses valores são:
• Comunicação;
• Simplicidade;
• Feedback;
• Coragem;
• Respeito.
11. eXtreme Programming (XP)
• Além dos valores, o método ágil XP também leva em consideração
melhores práticas de trabalho, que têm como objetivo garantir a
efetividade do trabalho da equipe XP, assim como a satisfação do cliente
durante todo o processo de desenvolvimento. São elas:
• Cliente sempre à disposição;
• Uso de metáforas;
• Reuniões de planejamento (planning game);
• Reuniões diárias, de 15 minutos, para alinhamento (stand up meeting);
• Integração contínua dos módulos desenvolvidos;
• Mudanças incrementais;
• Entregas frequentes ao cliente (small releases);
• Design simples e funcional;
• Testes de aceitação;
• Refatoração ou melhoria contínua.
12. Microsoft Solutions Framework (MSF)
• O MSF é um dos métodos ágeis mais usados por se destinar ao desenvolvimento de soluções tecnológicas por equipes reduzidas,
focando na diminuição de riscos para o negócio e no aumento da qualidade do produto final. O propósito é identificar as falhas
mais comuns em projetos de tecnologia, mitigando-as e aumentando as taxas de sucesso de cada iniciativa. Dessa forma, assim
como o Scrum, o MSF está mais focado na gestão do projeto do que no desenvolvimento da solução em si.
• Suas premissas são:
• Alinhamento da tecnologia desenvolvida aos objetivos de negócio do cliente;
• Escopo bem estruturado e detalhado;
• Desenvolvimento iterativo;
• Gerenciamento de riscos;
• Agilidade na resposta a mudanças.
• Assim como os outros métodos ágeis, o MSF também possui melhores práticas que devem ser observadas pela equipe para
atingirem os níveis de excelência buscados:
• Comunicação aberta e transparente entre todos os envolvidos;
• Visão compartilhada do negócio;
• Equipe capacitada;
• Atribuição de papéis e responsabilidades desde o início do projeto;
• Entregas incrementais;
• Flexibilidade para mudar sempre que necessário;
• Qualidade das entregas;
• Aprendizado constante com as experiências adquiridas;
• Parceria com clientes internos e externos.
13. Dynamic System Development Model (DSDM)
• O DSDM é um dos métodos ágeis mais antigos empregados não só no
desenvolvimento de projetos como no meio tecnológico. Um tanto quanto
diverso dos demais métodos ágeis, ele é destinado ao desenvolvimento de
projetos com orçamento fixo e prazos curtos, levando em consideração que o
cliente não tem como saber quanto custará a solução final.
• Entre suas melhores práticas estão o desenvolvimento incremental e iterativo, a
colaboração entre cliente e equipe, além da integração de funcionalidades, o que
também vemos nos demais métodos ágeis.
• Vale ressaltar que o DSDM diverge dos demais métodos ágeis tanto em sua
estrutura, que é composta por processos interligados de modelagem, concepção,
construção e implementação, assim como na gestão do tempo, que não é flexível,
até permitindo que as funcionalidades mudem, mas desde que os prazos de
execução continuem os mesmos.
14. Scrum
• O Scrum é, sem dúvida, o método ágil mais usado nos dias de hoje, principalmente
porque pode ser integrado a outros métodos ágeis com facilidade, aplicando-se não só
ao desenvolvimento de softwares como a qualquer ambiente de trabalho. Focado na
gestão do projeto, o Scrum tem como base o planejamento iterativo e incremental, que,
como você já sabe, se dá por fases, chamadas de sprints.
• Define-se, desde o início do projeto, a lista de funcionalidades a serem desenvolvidas,
também chamada, no caso, de product backlog. Dando andamento ao processo, cada
funcionalidade se torna um sprint, cujos detalhes a serem criados e desenvolvidos
passam do product backlog para o sprint backlog. Do sprint backlog as atividades são
distribuídas entre os membros do Scrum Team, que devem desenvolvê-las dentro de um
prazo que geralmente não leva mais que quatro semanas. Ao final de cada sprint é
realizada a sprint review meeting, uma reunião de alinhamento sobre o que foi entregue.
A partir daí, começa-se a planejar o próximo sprint. Essas etapas acontecem
sucessivamente até que o produto final esteja pronto para a entrega.
15. Scrum
• Diferentemente dos demais métodos ágeis, o Scrum possui pelo menos três
papéis muito bem definidos e absolutamente essenciais para o sucesso do
projeto:
• Product Owner: é o CEO do projeto, quem faz a ponte entre cliente e Scrum Team. É o
responsável pelos resultados do projeto e por gerar valor para o cliente.
• Scrum Master: é o coach do Scrum Team, a pessoa responsável por orientar os profissionais
em relação às melhores práticas Scrum, remover barreiras e motivar.
• Scrum Team: são os profissionais que efetivamente executam o desenvolvimento do projeto.
• As melhores práticas Scrum estão baseadas no Manifesto para o
Desenvolvimento Ágil de Softwares, levando em consideração atitudes e
comportamentos como:
• Indivíduos e interação mais do que processos e ferramentas;
• Software em funcionamento mais do que documentação;
• Colaboração com o cliente mais do que contratos e negociações;
• Respostas a mudanças mais do que planejamento.
16. Como funciona
• Product Backlog: As funcionalidades a serem implementadas
no projeto são mantidas em uma lista que é conhecida como
Product Backlog. No início de cada Sprint, faz-se um Sprint
Planning Meeting (uma reunião de planejamento), na qual o
Product Owner (quem representa os envolvidos) prioriza
todos os itens do Product Backlog e a equipe seleciona as
funcionalidades que ela será capaz de implementar durante o
Sprint que se inicia. As funcionalidades alocadas em um
Sprint são transferidas do Product Backlog para o Sprint
Backlog.
• Sprint: No Scrum, os projetos são divididos em ciclos
(tipicamente mensais) chamados de Sprints. O Sprint
representa um tempo definido dentro do qual um conjunto
de atividades deve ser executado. Metodologias ágeis de
desenvolvimento de software são iterativas, ou seja, o
trabalho é dividido em iterações, que no Scrum são
chamadas de Sprints e geralmente duram de 2 a 4 semanas.
17. • Burn Down Chart: O Burndown
é um simples gráfico, com dois
eixos X e Y, baseado nas
atividades que não ultrapassem
um dia de trabalho. O eixo X
indica o número de tarefas
existentes no Sprint e o eixo Y
os dias que representam o
tamanho do Sprint.
• Kanban (Quadro de Trabalho): O time também
pode possuir um “quadro de trabalho”, também
chamado de Kanban, para organizar as atividades
dos itens de Backlog da Sprint, separando-as em
basicamente em quatro estados (isso pode variar
de projeto a projeto): A fazer, Em andamento, Em
Testes e Concluído. Esse “quadro” é muito
produtivo, pois basta olhar para ele para realizar a
leitura do progresso da Sprint.
18. • Daily Scrum: Diariamente, em uma Sprint, a equipe faz uma breve reunião de no máximo
15 minutos com todos os participantes em pé, chamada Daily Scrum. O objetivo é cada
integrante dizer o que fez no dia anterior, o que pretende fazer no dia que se inicia e se
existe algum impedimento que está atrapalhando o seu trabalho.
• Sprint Review Meeting: Ao final de um Sprint, a equipe apresenta as funcionalidades
implementadas em uma Sprint Review Meeting onde o time mostra o que foi alcançado
neste sprint. Finalmente, faz-se uma Sprint Retrospective para identificar o que
funcionou bem e o que pode ser melhorado e a equipe inicia o planejamento do próximo
Sprint.
19. Papéis e Responsabilidades
• Product Owner
• Define os requisitos do produto, decide a data de release e o que deve conter
nela.
• É responsável pelo retorno financeiro (ROI) do produto.
• Prioriza os requisitos de acordo com o seu valor de mercado.
• Pode mudar os requisitos e prioridades a cada Sprint.
• Aceita ou rejeita o resultado de cada Sprint.
20. Papéis e Responsabilidades
• Scrum Master
• Garante que o time esteja totalmente funcional e produtivo.
• Facilita a colaboração entre as funções e áreas e elimina os impedimentos do
time.
• Protege o time de interferências externas.
• Garante que o processo está sendo seguindo. Participando das reuniões
diárias, revisão da Sprint, e planejamento.
• Scrum Team
• Multifuncional, entre 5-9 membros.
• Seleciona, entre os itens priorizados, os que irão ser executados durante a
Sprint.
• Tem todo o direito de realizar o que quiser dentro da Sprint
21. Principais características do Scrum
1 – Clientes devem estar definitivamente interessados nas entregas, desta
forma eles se tornam parte da equipe de desenvolvimento.
2 – No Scrum, os pacotes de trabalho do projeto são divididos em ciclos (que
podem estar divididos em semanas ou meses) denominados Sprints. O Sprint
significa um Time Box, dentro do qual um conjunto de tarefas deve ser
executado. Uma das grandes diferenças do Scrum para as metodologias
tradicionais é que seus desenvolvimentos são iterativos, ou seja, o trabalho é
dividido em iterações, o que estimula o constante feedback conforme as
entregas vão sendo realizadas. Com isso, o cliente passa a entender melhor o
produto e assim consegue evoluir com base em algo real.
22. Principais características do Scrum
3 – Torne as entregas frequentes e intermediárias. Não significa entregar
pela metade, significa que cada produto gerado deve entregar valor, ou seja,
estar 100% prontas.
4 – Evolução do projeto e da equipe devem ser discutidos diariamente e de
forma produtiva. No lugar de longas reuniões uma vez por semana, o Scrum
adota reuniões diárias, que devem começar sempre no mesmo horário e não
devem durar mais de 15 minutos. Nestas reuniões cada membro da equipe
deve responder:
O que fiz desde ontem?
O que estou planejando fazer até amanhã?
Existe algo me impedindo de atingir minha meta?
23. Principais características do Scrum
5 – A transparência é a alma do Scrum, tudo deve estar claro e bem
entendido, caso contrário não se trata de um requisito, logo não
poderá ser estimado, planejado ou desenvolvido. Os problemas
também não devem ser ignorados e ninguém é penalizado por
reconhecer ou descrever qualquer problema não visto. Esse foco ajuda
a torná-los naturais e visíveis, proporcionando que um pequeno
incidente seja descoberto e corrigido rapidamente.
6 – Locais e horas de trabalho devem ser energizadas, no sentido de
que “trabalhar horas extras” não necessariamente significa “produzir
mais”.