INSTITUTO FEDERAL CATARINENSE
Campus Ibirama
Metodologias Ágeis de Desenvolvimento
Metodologias Ágeis
● Introdução
– Manifesto Ágil
– Princı́pios do Manifesto Ágil
– Processos de Desenvolvimento Ágil
● Scrum
Metodologias Ágeis
● SCRUM – O que é o SCRUM? – Caracterı́sticas SCRUM – Ciclo do SCRUM – Papéis do SCRUM – Vantagens do SCRUM – Desvantagens do SCRUM ● eXtreme Programming ● O que é o XP? ● Práticas XPManifesto Ágil
● Indivı́duos e interações vem antes do processo e ferramentas;
● Software funcionando vem antes de documentação
abrangente;
● Colaboração do cliente vem antes de negociação de contrato;
● Resposta à modificações vem antes de um plano de
Agile Aliance
● www.agilealliance.org
● Iniciou-se em 2001
● 17 metodologistas formaram uma aliança para definir “princı́pios” para o desenvolvimento “ágil” de software
Princípios do Manifesto Ágil
● Nossa maior prioridade é satisfazer ao cliente
mediante entregas de software constantes, com qualidade e no tempo certo
● Receber bem mudanças de requisitos, mesmo em
Princípios do Manifesto Ágil
● Entregar software em funcionamento, com frequência
na menor escala de tempo possı́vel
● As equipes de negócio e desenvolvimento devem
Princípios do Manifesto Ágil
● Construa projetos ao redor de indivı́duos motivados
● A melhor maneira de levar informações para uma
equipe é em uma conversa cara-a-cara
● A principal medida de progresso é ter o software
Princípios do Manifesto Ágil
● Os desenvolvedores e clientes devem ser capazes de
manter um ritmo constante
● Atenção contı́nua à excelência técnica aumenta a
Princípios do Manifesto Ágil
● A arte de maximizar a quantidade de trabalho
não-realizado é essencial
● As melhores arquiteturas, requisitos e projetos provem
de equipes organizadas
● Regularmente a equipe deve refletir sobre como se
tornar mais eficaz e então se ajustar e adaptar seu comportamento
Processos de Desenvolvimento Ágil
● SCRUM;
● eXtreme Programming (XP);
● Feature Driven Development (FDD); ● Test Driven Development (TDD)
● Dynamic Systems Development Method (DSDM); ● Adaptive Software Development (ASD);
O que é SCRUM
● É um modelo iterativo, com o enfoque nas pessoas
envolvidas ao invés de no processo e ferramentas.
● Não é uma metodologia formal, e permite que os
membros da equipe definam o nı́vel de formalidade conforme a necessidade de cada requisito
Objetivos do SCRUM
● Garantir maior flexibilidade e habilidade para tratamento de sistemas simples e/
ou complexos, evitando problemas como:
– Entregar produto não solicitado; – Entregar o produto com falhas; – Atrasos na entrega;
● Produzir um produto tolerante a adição de novos requisitos ao longo do projeto
● Atender a novas exigências: – adição de novos requisitos;
Características do SCRUM
● Flexibilidade nos entregáveis
– Os entregáveis são definidos pelas necessidades do
ambiente (necessidade de negócio, competição, funcionalidades, recursos, cronograma, etc...)
● Flexibilidade no cronograma
– Os entregáveis podem ser requeridos mais cedo ou
Características do SCRUM
● Times pequenos
– É desejável que sejam times de até 6 pessoas. Para
equipes maiores, sugere-se dividir o grupo em vários times.
● Revisões frequentes
– A evolução, a complexidade e os riscos são revisados
Características do SCRUM
● Colaboração
– Espera-se a intra e a inter-colaboração das equipes ao
longo de todo o projeto.
● Orientação a objetos
– Cada time trabalha em um conjunto de objetos com
Ciclo do SCRUM
Planejamento Preparação
Desenvolvimento
Ciclo do SCRUM: Planejamento
● É estabelecida a visão do projeto, as expectativas e a
proposta comercial.
● O artefato gerado nesta fase é o Product Backlog; – É uma lista de requisitos das funcionalidades que o
Ciclo do SCRUM: Preparação
● É efetuado o planejamento das atividades onde os
requisitos do Product Backlog são priorizados.
● O artefato gerado nesta fase é o Release Backlog;
– É uma lista de requisitos das funcionalidades que serão
implementados em uma interação;
– A interação é chamada de Sprint e tem duração de
Ciclo do SCRUM: Desenvolvimento
● É efetuado a implementação dos requisitos.
● São realizadas as seguintes atividades:
– Planejar a próxima sprint;
– Geração do Sprint Backlog (uma lista de atividades a ser realizadas, com
duração de 4 a 16 horas de trabalho para cada um dos requisitos);
– Realização de Scrum Meetings (reuniões diárias de acompanhamento, onde são
respondidas questões sobre o andamento do projeto, resolver conflitos, trocar ideias, etc...);
– Realizar Sprint Review (Reunião de revisão geral da interação. É realizada ao
final de cada Sprint, com o objetivo de apresentar as novas funcionalidades ao cliente);
Ciclo do SCRUM: Liberação
● A liberação deve conter a implementação de todos os
requisitos listados no Release Backlog.
● Ela deve ser realizada dentro do Sprint e contempla
Papéis do SCRUM: SCRUM Team
● Equipe de desenvolvimento do projeto. Estas equipes
devem ser de no máximo 7 pessoas, e deve ser uma equipe interdisciplinar e altamente produtiva.
● As equipes devem ser capazes de se auto-organizar
e auto-gerenciar, sem a necessidade de um lı́der para resolver conflitos e problemas.
Papéis do SCRUM: SCRUM Master
● Faz parte da equipe de desenvolvimento (Srum Team)
mas desempenha função de liderança. Garante que não haja interrupções no trabalho da equipe,
providencia recursos necessários para o desenvolvimento.
● Não cabe ao Scrum Master dizer como os outros
membros da equipe (Scrum Team) devem trabalhar, nem deve gerenciá-los.
Papéis do SCRUM: Product Owner
● Usuário chave do sistema (stakeholder), que tem poder
de decisão sobre o projeto.
● Curiosidade: Pigs and Chickens;
– Os participantes do Scrum Team são chamados de Pigs
devido ao forte nı́vel de comprometimento destes com o projeto, estes podem falar durante as reuniões diárias;
– Os demais participantes do projeto são chamados de
Chickens, os quais não podem falar durante a reunião, apenas observar;
Vantagens do SCRUM
● Práticas e artefatos simples;
● Equipes auto-gerenciáveis e auto-organizáveis; ● Facilidade de adaptação às mudanças;
● Participação ativa do cliente no projeto; ● Andamento do projeto visı́vel ao cliente;
● Pode ser combinado com outras metodologias;
● Facilita a comunicação, aprendizado e agrega valor à
Desvantagens do SCRUM
● Foca nos aspectos do ciclo de vida e não se
preocupa com a engenharia de requisitos;
Exercícios
● Cite as características do SCRUM;
● Descreva o ciclo do SCRUM;
● Sobre os papéis do SCRUM, explique:
– Scrum Team; – Scrum Master; – Product Owner;
O que é XP
● Surgiu no final da década de 90 (apresentada por Kent Beck)
● Metodologia aplicada para times pequenos e médios;
● Leva as boas práticas ao extremo...
– Testar é bom, vamos testar o tempo inteiro;
– Revisar o código é bom, vamos revisar o tempo inteiro;
– Projetar é bom, fará parte das atividades de todos diariamente; – Integração é bom, vamos trocar informações o tempo inteiro;
Características de XP
● Desenvolvimento incremental;
● Cliente envolvido no projeto;
● Foco nas pessoas, não nos processos;
Práticas XP – Planejamento Integral
● Os requisitos são gerados em cartões de histórias e as
histórias que serão incluı́das em uma release (versão) são escolhidas pelo tempo disponı́vel e pela sua prioridade.
● Pessoas da área de negócio devem decidir por:
– Escopo, prioridade, composição das versões e datas de
entrega;
● Pessoas da área técnica devem decidir por:
– Estimativas, consequências, processo e cronograma
Práticas XP – Planejamento Integral
● Combine prioridades de negócio e estimativas técnicas
para determinar o escopo da próxima versão;
● Se a realidade opuser ao planejamento, atualize o
planejamento;
● Um esboço do plano não é suficiente. Para atualizá-lo,
precisamos incomodar os clientes;
● O plano deve dar uma ideia do que pode acontecer até
o final do projeto;
Práticas XP – Pequenas Releases
● Inicialmente desenvolve-se as funcionalidades principais, e a
cada nova release é adicionado novos recursos.
● Cada versão precisa ter o menor tamanho possı́vel;
● A entrega precisa fazer sentido: não adianta entregar meia
função;
● É melhor entregar em um mês ou dois, do que um ano;
● Integração constante;
Práticas XP – Projetos Pequenos
● Cada projeto é realizado para atender às
necessidades atuais.
● Executar todos os testes; ● Não ter lógica duplicada;
● Ter o menor número possı́vel de classes e métodos; ● Refatoração sempre;
Práticas XP – Test First
● São utilizados frameworks de automação de testes. Testes devem ser
elaborados antes que a funcionalidade seja implementada.
● Qualquer função do programa que não tenha um teste automatizado
simplesmente não existe;
● Não precisa escrever um método para cada teste, apenas para
aqueles que podem falhar;
● Não tenha pena de jogar código fora em virtude da experimentação; ● Os programadores vão gostar de escrever testes quando eles verem
que todos estão executando;
Práticas XP - Refatoração
● Constantemente deve-se buscar melhorar o código. A refatoração permite
que o código seja o mais simples, fácil de entender e dar manutenção.
● Incentiva os programadores a sempre pensarem em melhorar o seu
código sem mudar o comportamento do sistema;
● Todos são donos do código, e acostuma-se a refatoração;
● Existem padrões de codificação, não necessitando reformatar antes de
refatorar;
● A integração frequente permite saber logo quando estragou algo;
● Os testes já implementados garantem que todo o código só será liberado
Práticas XP – Programação em Pares
● O desenvolvimento é realizado em pares, o que ajuda gera novas
ideias, potos de vista, refatoração, assim como uma cultura de “conhecimento comum”.
● Todo o código é produzido a quatro mãos, com um teclado e um mouse; ● Os pares devem ser dinâmicos;
● O código deve seguir um padrão;
● Todo mundo precisa estar descansado e tranquilo; ● Os pares escrevem código junto;
Práticas XP – Propriedade Coletiva
● Como a programação é realizada em pares, há a possibilidade de
gerar um “conhecimento comum” na organização. Qualquer um da equipe sabe um pouco de tudo. O conhecimento é de todos.
● Qualquer um pode modificar qualquer código em qualquer lugar do
sistema a qualquer momento;
● Nem todos conhecem todas as partes bem, mas todos conhecem de
tudo um pouco;
● Para o sucesso dessa prática, precisa-se:
– integrar as mudanças constantemente; escrever e executar testes; seguir
Práticas XP – Integração Contínua
● Assim que uma tarefa/trabalho for concluı́da, é feita a
integração com o todo. Apos a integração são realizados testes para verificar o funcionamento do sistema.
● Cada vez que uma tarefa for terminada integre com o
sistema;
● Uma máquina separada alocada por baixar a versão atual,
receber as modificações, e executar 100% dos testes;
● Quem integra deve ser o responsável por garantir 100% dos
Práticas XP – Ritmo Sustentável
● Uma carga de trabalho excessiva não é aceitável. A
médio/longo prazo, uma carga excessiva reduz a qualidade do desenvolvimento.
● Nunca faça hora extra por duas semanas seguidas;
● Queremos chegar cheios de energia no outro dia de manhã, e
na segunda-feira;
● Horas extras cansam e não mantém as pessoas concentradas; ● A combinação do planejamento com testes garante a qualidade
Práticas XP – Cliente Presente
● Um representante do cliente (stakeholder) deve estar disponı́vel o tempo
todo à equipe. O cliente é um membro da equipe e é responsável por levar os requisitos do sistema para o projeto.
● Inclua um cliente real no time com todo o tempo disponı́vel para
responder perguntas;
● O que vale mais: ter o software acabado mais cedo e melhor ou acumular
o trabalho de uma ou duas pessoas?;
● Eles poderiam escrever testes funcionais e ajudar nas decisões de
escopo e sequência das iterações;
● O cliente integrado à equipe consegue responder e verificar as
Práticas XP – Outras Práticas
● Padrões de codificação;
● Reuniões diárias;
● Gráficos e métricas visı́veis nas paredes onde o
Exercícios
● Cite as características do XP;
Resolução de Exercício - Individual
● Escreva um algoritmo onde o usuário informe um
valor para determinar o tamanho da matriz. Depois de informado este valor, o programa deve solicitar
diversos valores até que esta matriz seja preenchida. No final do programa deve ser impressa a matriz
resultante da multiplicação de cada posição pela diferença entre o maior e menor valor da matriz.
Resolução de Exercício – Em Pares
● Escreva um algoritmo onde o usuário informe um
valor para determinar o tamanho da matriz. Depois de informado este valor, o programa deve solicitar
diversos valores até que esta matriz seja preenchida. No final do programa deve ser impressa a matriz
resultante da multiplicação de cada um dos valores da matriz pela soma dos elementos da diagonal principal da matriz.