métodos ágeis de desenvolvimento de software

33
Métodos ágeis de desenvolvimento de software Élvio Viçosa Jerônimo Madruga Mauro Kade

Upload: jeronimo-medina-madruga

Post on 21-Dec-2014

1.066 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Métodos ágeis de desenvolvimento de software

Métodos ágeis de desenvolvimento de software

Élvio Viçosa

Jerônimo Madruga

Mauro Kade

Page 2: Métodos ágeis de desenvolvimento de software

Súmario• Introdução

• Scrum

• FDD

• XP

Page 3: Métodos ágeis de desenvolvimento de software

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

Page 4: Métodos ágeis de desenvolvimento de software

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

Page 5: Métodos ágeis de desenvolvimento de software

Origem das idéias dos métodos agéis

Page 6: Métodos ágeis de desenvolvimento de software

Métodos ágeis

• Scrum

• Feature Driven Development (FDD)

• Extreme Programming (XP)

Page 7: Métodos ágeis de desenvolvimento de software

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

Page 8: Métodos ágeis de desenvolvimento 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.

Page 9: Métodos ágeis de desenvolvimento de software

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

Page 10: Métodos ágeis de desenvolvimento de software

Diagrama de atividades do Scrum

Page 11: Métodos ágeis de desenvolvimento de software

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

Page 12: Métodos ágeis de desenvolvimento de software

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

Page 13: Métodos ágeis de desenvolvimento de software

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

Page 14: Métodos ágeis de desenvolvimento de software

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...

Page 15: Métodos ágeis de desenvolvimento de software

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

Page 16: Métodos ágeis de desenvolvimento de software

Feature Driven Development (FDD)

•Processos no FDD

Page 17: Métodos ágeis de desenvolvimento de software

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

Page 18: Métodos ágeis de desenvolvimento de software

Extreme Programming (XP)Tempo

Escopo

Clássico Iterativo XP

Page 19: Métodos ágeis de desenvolvimento de software

Extreme Programming (XP)

Page 20: Métodos ágeis de desenvolvimento de software

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

Page 21: Métodos ágeis de desenvolvimento de software

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

Page 22: Métodos ágeis de desenvolvimento de software

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.

Page 23: Métodos ágeis de desenvolvimento de software

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.

Page 24: Métodos ágeis de desenvolvimento de software

TDD: Test-Driven Development

TestDrivenDevelopment

Análise

Page 25: Métodos ágeis de desenvolvimento de software

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

Page 26: Métodos ágeis de desenvolvimento de software

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.

Page 27: Métodos ágeis de desenvolvimento de software

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

Page 28: Métodos ágeis de desenvolvimento de software

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?

Page 29: Métodos ágeis de desenvolvimento de software

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

Page 30: Métodos ágeis de desenvolvimento de software

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;

Page 31: Métodos ágeis de desenvolvimento de software

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

Page 32: Métodos ágeis de desenvolvimento de software

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

Page 33: Métodos ágeis de desenvolvimento de software

Métodos ágeis de desenvolvimento de software

Élvio Viçosa

Jerônimo Madruga

Mauro Kade