Post on 21-Dec-2014
description
Métodos ágeis de desenvolvimento de software
Élvio Viçosa
Jerônimo Madruga
Mauro Kade
Súmario• Introdução
• Scrum
• FDD
• XP
Introdução
• Sobre os métodos tradicionais– São baseados na produção de uma grande quantidade
de documentação– São considerados métodos pesados
• Sobre os métodos ágeis– São o contraponto dos métodos tradicionais, sendo
considerados métodos leves– As pesquisas sobre eles ainda são relativamente novas– Nem todas as práticas relacionadas aos métodos ágeis
são novas
Introdução
• O manifesto ágil:– Satisfação do cliente através de entregas mais cedo e
contínuas, utilizando ciclos de iteração menores– Aceitação e acomodação de requistos em qualquer
tempo do desenvolvimento– Desenvolvedores e usuários trabalhando juntos– Times motivados e em ambientes apropriados– Minimização de documentação e maximização de troca
de informação face-a-face– Encorajamento de atitudes reflexivas e contínuo
aprendizado
Origem das idéias dos métodos agéis
Métodos ágeis
• Scrum
• Feature Driven Development (FDD)
• Extreme Programming (XP)
Scrum
• O termo Scrum é uma metáfora para uma situaçãoem um jogo de Rugby. Esta situação envolve um grupo denso de pessoas, lutando pela posse dabola.
• O Scrum não é um método completo. Não requerque seja utilizada nenhuma prática ou técnica parao desenvolvimento de software
• Utiliza pequenos grupos• É um método para gerenciamento de um projeto
de software
Scrum
• Processos definidos X processos empíricos :– Um processo definido usa uma base de conhecimento
sobre o processo: são descritos como reproduzíveis– Um processo empírico envolve atividades complicadas,
não reproduzíveis e com resultados imprevisíveis
• As atividades envolvidas no desenvolvimento de software são complexas e poucas geram resultadosrepetidos
• O Scrum é baseado nos métodos utilizados nasfábricas químicas, que utilizam muito inspeções e ajustes.
Scrum
• Principais conceitos da metodologia Scrum: – Time: máximo 7 pessoas– Backlog do Produto– Sprint: ciclo de desenvolvimento mensal– Sprint Backlog– Reunião de Planejamento do Sprint– Reunião do Scrum diário– Comunicação e retroalimentação– ScrumMaster: lider responsável– Incremento de produto potencialmente entregável:
funcionalidades implementadas, testadas e com performance adequada
Diagrama de atividades do Scrum
Feature Driven Development (FDD)
• Baseado em modelos e guiado por características e implementado em ciclos curtos de iterações
• Os ciclos de implementação de uma característicasão de no máximo 2 semanas
• Interessante para desenvolvedores pois estão permanentemente recebendo novas tarefas
• Interessante para os clientes pois vêem osresultados rapidamente
Feature Driven Development (FDD)
• Busca-se focar os esforços nasfuncionalidades que sejam úteis aos olhosdos clientes...
• Procura-se restringir a lista de funcionalidades (características) àquelasque os usuários podem entender
Feature Driven Development (FDD)
• Uma feature ou característica é uma função com valor parao cliente e que pode ser implementada em duas semanas oumenos e é descrita da seguinte forma:– <ação><artigo><resultado><preposição><artigo><objeto>
• Exemplos:– calcular o total de uma venda– calcular o total de compras de um cliente
• As features podem ser agrupadas. Neste caso são assimdescritas:– <ação - verbo no particípio><artigo><objeto>
• Exemplos:– Comprando um produto– Efetivando um pagamento
Feature Driven Development (FDD)
• Papéis no FDD:– Papéis chaves
• Gerente de projeto, arquiteto-chefe, gerente de desenvolvimento, programador-chefe, dono-de-classe, especialista no negócio
– Papéis de suporte• Gerente de liberações, gerente de configuração, administrador
de rede, especialista na ferramenta, testador, documentador
– Papéis adicionais• outros...
Feature Driven Development (FDD)
• Práticas no FDD– Modelagem dos objetos de negócio– Desenvolver por características– Posse de classes de código fonte
• Cada classe tem um responsável e ele é responsável por suaconstrução e manutenção
– Time de características• Cada feature tem um responsável
– Builds regulares– Visible Progress Report– Inspeções
Feature Driven Development (FDD)
•Processos no FDD
Extreme Programming (XP)
• XP é considerado o mais importante movimento entre os métodos ágeis atualmente
• XP não é uma idéia totalmente terminada• Os limites de sua aplicação ainda não estão bem
definidos• As práticas do método não precisam ser adotadas
como um conjunto• O principal objetivo do XP é reduzir o ciclo de
desenvolvimento de alguns anos para alguns dias ou horas
Extreme Programming (XP)Tempo
Escopo
Clássico Iterativo XP
Extreme Programming (XP)
Extreme Programming (XP)
• As práticas do XP:– Jogo de planejamento
• As decisões sobre os prazos e escopo são tomadas pelos clientes
– Pequenas liberações• Devem ser feitas liberações o mais rápido possível para o
ambiente de produção
– Metáfora• É definida uma metáfora para o objetivo do sistema
– Projeto simplificado• O código deve ser sempre o mais simples possível
Extreme Programming (XP)
• As práticas do XP:– Testes
• Os testes unitários são escritos pelos programadores com bastante freqüência. Os clientes escrevem os testes de aceitação. Os resultados dos testes são publicados e ficam visíveis para todos da equipe
– Redesenho• O código vai sendo melhorado aos poucos
– Programação em pares• Todo o código é escrito por um par de programadores
– Integração contínua• Novas classes e métodos são integrados imediatamente
– Propriedade coletiva do código• Qualquer programador, a qualquer momento, pode alterar qualquer
porção do código fonte
Extreme Programming (XP)
• As práticas do XP:– Cliente disponível
• O cliente ou usuário fica integralmente disponível para a equipe
– Semana de 40 horas• Se houver necessidade de trabalho extra, é sinal que há
problemas
– Ambiente aberto• O time trabalha em um ambiente bastante espaçoso. O grupo
de programação trabalha em estações de trabalho localizadas no centro do ambiente
– Somente regras• As regras podem ser adaptadas e melhoradas, de acordo com a
necessidade.
Extreme Programming (XP)
• Processo proposto pelo XP:– Ele se inicia com o cliente escolhendo as funcionalidades que serão
implementadas. Estas funcionalidades são chamadas de estórias dousuário (user stories). A escolha leva em conta a estimativa de custo/tempo feita pelos programadores
– O desenvolvimento é fortemente guiado a testes (TDD: Test-Driven Development). Os programadores escrevem testes unitários, que são classes que automatizam sequências de testes sobre outras classes. São escritos antes do código estar completo
– Normalmente no par de programadores procura-se unir um com muita experiência em TDD e outro com pouca ou nenhuma experiência nesta técnica.
TDD: Test-Driven Development
TestDrivenDevelopment
Análise
Extreme Programming (XP)
• Estórias dos usuários:– Uma estória do usuário é uma unidade funcional– Ela deve ser entendida pelos clientes e usuários, deve ser testável,
deve ter valor para o cliente e deve ser pequena o bastante para que os programadores possam construir dúzias delas em um ciclo de iteração
– Ela é formada por uma ou duas sentenças que descrevem algo com valor para o cliente:
• O sistema deve verificar se o CPF do cliente é um número válido...
– Os programadores deverão ser capazes de estimar o custo/tempo para implementar a estória. Caso isto não seja possível, a estória deve ser subdividida em estórias menores, para que possam ser então estimadas
– As estórias do usuários devem ser criadas pelos clientes e usuários. Os desenvolvedores concentram-se nas decisões técnicas
Extreme Programming (XP)
• Estórias dos usuários:– O principal critério de ordenamento das estórias é o
valor para o negócio
– Não existe consenso nisto
– O consenso é negociado quando houver problemas de priorização.
Exemplo de estória
Cadastro de usuário
Acessando-se o menu principal, administradores do sistema
têm privilégio de acesso ao módulo de cadastro de usuário.
O módulo consiste num formulário simples que permite o cadas-
tramento de informações como: nome, sobrenome, endereço,
e-mail, telefone, estado e cidade.
Após o cadastramento, é exibida uma página com a listagem
de usuários.
O evento de cadastramento é registrado em log de atividades.
Everest
01 08 2005
Marcos
1 10
02 08 2005
Marcio
2
04 08 2005
Juliano
05 08 200505 08 200505 08 200505 08 2005
1,51,51,51,5
Extreme Programming (XP)
• Reportando o progresso de um projeto XP:
– O progresso de cada iteração é medido e reportado por uma pessoa chamada tracker
– A cada programador, o tracker faz duas perguntas básicas:
• Quantos dias você já trabalhou nesta tarefa?
• Mais quantos dias você precisa para completar a tarefa?
Extreme Programming (XP)
• Reportanto o progresso de um projeto XP:– Se o tracker descobre que um programador não vai
conseguir terminar sua tarefa, ele tenta redistribuir o encargo para outro programador que esteja com alguma folga. Caso isto não seja possível, o cliente deve ser informado
– As iterações no XP terminam na data estimada. As estórias implementadas, são apresentadas aos clientes, que decidirá se está adequada, a qual, neste caso, será considerada completa. As estórias incompletas serão consideradas para a próxima iteração
Considerações finais
• Outros Métodos Ágeis– ASD (Adaptive Software Development)
• Mission-driven, component-driven (results), time-limited, timeboxed; risk driven; change tolerant
– Crystal Clear• Strong communications; frequent deliveries; reduce overhead;
management by milestones and risk lists
– DSDM (Dynamic Systems Development Model)• User involvement, stakeholder collaboration; empowered
team; frequent delivery; backtracking to reverse changes; high-level requirements baselining; iterative and incremental development; integrated lifecycle testing;
ABORDAGEM TRADICIONAL
Preditiva: detalhar o que ainda não é bem conhecida
Rígida: seguir especificação predefinida a qualquer custo
Burocrática:controlar sempre, para alcançar objetivo planejado
Orientado a processos: seguí-lospossibilita garantir a qualidade
Documentação: é a garantia de confiança
Sucesso: é entregar o planejado
Gerência: sinônimo de “comando-controle”, voltada para o trabalho em massa com ênfase no papel do gerente, com planejamento e disciplina fortes
ABORDAGEM ÁGIL
Adaptativa: conhecer o problema e resolver o crítico primeiro
Flexível: adaptar-se a requisitos atuais, que podem mudar
Simplista: fazer algo simples de imediato, e alterar no futuro se for necessário
Orientado a pessoas: motivadas, comprometidas e produtivas
Comunicação: é a garantia de confiança
Sucesso: é entregar o desejado
Gerência: sinônimo de “liderança-orientação”, voltada para o trabalho do conhecimento, com ênfase na criatividade, flexibilidade e atenção às pessoas
Considerações finais
Comparação das metodologias
InformaçãoConstrução do
Banco de DadosEngenharia da
Informação
Funções com valor para o cliente
Implementação contínua de funções
Métodos Ágeis
ObjetosConstrução de
ComponentesAnálise Orientada a
Objeto
ProcedimentosConstrução de
sistemasAnálise Estruturada
PRIORIZADIRIGIDA AMETODOLOGIA
Métodos ágeis de desenvolvimento de software
Élvio Viçosa
Jerônimo Madruga
Mauro Kade