Transcript

Métodos Ágeis: FDD

“Desenvolvimento de software é uma cadeia com diversos elos” Kent Beck – Criador do eXtreme Programing (XP)

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

André VidalFundador e Sócio Diretor da Agile Think, com 20 anos de experiência na

área de Tecnologia. Atualmente trabalha como Gerente de Projetos e

Agile Coach. É pesquisador, ministra cursos técnicos e de

especialização nas áreas de Tecnologia da Informação. Articulista das

revistas Engenharia de Software e Java Magazine da Devmedia.

ESCRITOR

Autor do livro Agile

Think® Canvas,

Editora Brasport

AGILE COACH

Agile Coach e Gerente

de Projetos pela

empresa Abu

Consultoria

CONSULTOR

Gestão de Projetos,

Governança,

Processos, Negócios e

Quality Assurance

CERTIFICAÇÕES: MBA Gestão de Projetos,

PMI-ACP, CSM - Scrum Alliance, EXIN-ASF e

SAFe

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

O que é Desenvolvimento Lean

LEANÉ a aplicação em desenvolvimento de software do modelo “lean manufacturing”, cujos

princípios e práticas para o desenvolvimento de domínio de software foram adaptados do

Sistema Toyota de Produção – (http://en.wikipedia.org/wiki/Lean_software_development)

O Lean é uma subcultura da

comunidade Ágil, com foco na

criação e sustentação de sistemas

de produção de software.

Princípios Lean

1. Eliminar o desperdício no

desenvolvimento de sistemas

2. Amplificar aprendizagem dos envolvidos

no processo

3. Decidir o mais tarde possível!

4. Entregar o mais rápido possível!

5. Capacitar a equipe

6. Construir integridade agregando valores

pessoais e ativos de conhecimento

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

O que é Agile?AGILEAgile é realmente uma cultura que gera processos e não

apenas um processo. Isso deve afetar diretamente o nosso

modo de ensinar aos outros como adotar Agile.

Jeff Patton – (http://www.agileproductdesign.com/)

• O objetivo de uma metodologia ágil é minimizar riscos

inerentes ao desenvolvimento de software.

• A Agile Alliance define os seguintes princípios em

seu Manifesto Ágil, o qual é base para os demais

métodos:

1. Gerar satisfação no cliente pelo atendimento rápido e contínuo no fornecimento de software

2. Entregar software com freqüência semanal, ao invés de longas esperas

3. O software é a principal medida de progresso dos trabalhos

4. Mesmo que tardia, as mudanças nos requisitos são bem-vindas

5. Propiciar diariamente a cooperação entre desenvolvedores e clientes

6. Conversar face a face é a melhor forma de comunicação

7. Os projetos são construídos em torno de pessoas motivadas, confiáveis e que devem ter

atenção contínua, propiciando a excelência técnica e um bom design

8. Simplicidade

9. Auto-organizar equipes

10. Adaptar-se à evolução do negócio www.agilethink.com.br ©2017

Agile Think® - Todos os direitos reservados

Benefícios e Desafios

Desafios

Existe dificuldade ao

atendimento do que é

solicitado, até que o time

e gerência tenham

absorvido o conhecimento

necessário para resolver

o paradigma. Inicialmente

a performance da

ferramenta pode ter

resultados que

desapontam os

investidores.

Benefícios

Os requisitos iniciais de

produtividade e qualidade

são definidos para os time

boxes, propiciando o

entendimento das

necessidades do negócio,

fornecendo mais

visibilidade ao Líder de

Projeto e Time de

desenvolvimento.

Características do Uso de Lean, Agile, SCRUM e FDDCurto Prazo

Baseado no artigo:

FREDDY BALLE & MICHAEL BALLE, "Lean or Six Sigma," www.lean.org/library/leanorsigma.pdf.

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Desafios

O retorno de

investimento, até que

seja entendido, deve

passar por algumas

barreiras, que são

Implementar uma

mudança de programa

Vencer o cinismo de

empregados mais

experientes.

Benefícios

Time boxes

quantificáveis ou

projetados por classes

de negócio, que

podem ser executadas

paralelamente (“on the

side”).

Benefícios e Desafios

Baseado no artigo:

FREDDY BALLE & MICHAEL BALLE, "Lean or Six Sigma," www.lean.org/library/leanorsigma.pdf.

Características do Uso de Lean, Agile, SCRUM e FDDCurto Médio Prazo

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Baseado no artigo:

FREDDY BALLE & MICHAEL BALLE, "Lean or Six Sigma," www.lean.org/library/leanorsigma.pdf.

Desafios

Requer investimento

intelectual e constante

comprometimento com

resultados com o alto

gerenciamento. Para ter

sucesso na mudança de

modelo da empresa, o

alto gerenciamento tem

que estar comprometido

de forma mais incisiva,

sendo muito mais do que

apenas dar uma benção

distante e assinar o

cheque

Benefícios

Mudança de perspectiva,

que leva a uma

transformação de como

se enxerga o negócio,

sendo a análise uma

fonte fundamental de

vantagem competitiva.

Também aumenta as

barreiras para com os

concorrentes, pois o

modelo tem maior valor

agregado a ele.

Benefícios e Desafios

Características do Uso de Lean, Agile, SCRUM e FDDMédio Prazo

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Desafios

Romper com a falta de

sinergia entre os focos

de ação e ao que levou

à resultados

desapontadores.

Combater apatia e por

fim a falta de interesse

no programa.

Benefícios

Alguns benefícios de

longo prazo que levam

ao abandono do

programa anterior em

substituição por uma

versão mais

atualizada.

Benefícios e Desafios

Baseado no artigo:

FREDDY BALLE & MICHAEL BALLE, "Lean or Six Sigma," www.lean.org/library/leanorsigma.pdf.

Características do Uso de Lean, Agile, SCRUM e FDDLongo Prazo

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

O que é FDD?Feature Driven DevelopmentÉ um processo de engenharia de software que tem por foco principal a entrega

freqüente de software funcional ao cliente.

• A FDD não foca a programação ou a definição de um modelo bem

definido, mas faz uso de um planejamento iterativo, que tem por

objetivo abstrair e atender as principais necessidades do negócio, que

determinará a forma de atuação da equipe de desenvolvimento.

• É uma metodologia ágil voltada ao

desenvolvimento de software.

• A FDD favorece de maneira incisiva o

envolvimento de clientes (internos ou externos) ao

processo de planejamento e desenvolvimento do

software.

• A FDD está baseada num processo de desenvolvimento de software iterativo

e incremental.

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Como Funciona FDD

Desenvolver Modelo

Construir Lista

de

Funcionalidades

Planejar Por

Funcionalidade

Detalhar Por

Funcionalidade

Desenvolver

Por

Funcionalidade

• Entendimento do

Negócio

• Construção de

Modelo Conceitual

Dedicar 1/6 do tempo do Projeto Iteração de Duas Semanas

• Construção da FBS

• Definição das User

Histories

• Atualização do Kanban

• Criação do Burndown

• Diagrama de Classes

• Diagrama de Seqüência

• Código

• Plano de Teste Unitário

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Artefatos

Atividades

• FBS: Feature Breakdown

Structure

• Diagrama de Classes

• Critérios de Aceitação

• Reunião de entendimento do problema,

contando com os membros efetivos do

Time e Cliente.

• Confecção das User Histories

• Analista de Negócios

• Arquiteto

• Analista de Sistemas

• Desenvolvedores

• Tester

Time

Desenvolver Modelo

Construir Lista

de

Funcionalidades

Planejar Por

Funcionalidade

Detalhar Por

Funcionalidade

Desenvolver

Por

Funcionalidade

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Artefatos

Atividades

• FBS: Feature Breakdown Structure

• Diagrama de Classes

• User Histories (Negócios e Critérios de

Aceitação)

• Definir os responsáveis por cada um dos

modelos, agrupados por Features.

• Construir a Lista de Funcionalidades

• Analista de Negócios

• Arquiteto

• Analista de Sistemas

• Desenvolvedores

• Testes

Time

Desenvolver Modelo

Construir Lista

de

Funcionalidades

Planejar Por

Funcionalidade

Detalhar Por

Funcionalidade

Desenvolver Por

Funcionalidade

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Artefatos

Atividades

• FBS: Feature

Breakdown Structure

• Diagrama de Classes

• User Histories (Negocio)

• Definir Seqüência de Desenvolvimento.

• Atribuir Atividades de Negócio

• Atribuir Classes de Desenvolvimento por

Responsável

• Analista de Negócios

• Arquiteto

• Analista de Sistemas

• Desenvolvedores

• Testes

Time

Desenvolver Modelo

Construir Lista

de

Funcionalidades

Planejar Por

Funcionalidade

Detalhar Por

Funcionalidade

Desenvolver

Por

Funcionalidade

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Artefatos

Atividades

• FBS: Feature

Breakdown Structure

• Diagrama de Classes e

Seqüência

• Storyboard

• Definir Seqüência de Desenvolvimento.

• Atribuir Atividades de Negócio

• Atribuir Classes de Desenvolvimento por

Responsável

• Analista de Negócios

• Arquiteto

• Analista de Sistemas

• Desenvolvedores

Time

Desenvolver Modelo

Construir Lista

de

Funcionalidades

Planejar Por

Funcionalidade

Detalhar Por

Funcionalidade

Desenvolver

Por

Funcionalidade

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Artefatos

Atividades

• Código

• Diagrama de Classes

• Diagrama de Seqüência

• Testes Unitários

• Implementar Classes e Métodos.

• Efetuar Revisão do Código

• Gerar Evidências de Testes Unitários

• Analista de Sistemas

• Desenvolvedores

• Tester

Time

Desenvolver Modelo

Construir Lista

de

Funcionalidades

Planejar Por

Funcionalidade

Detalhar Por

Funcionalidade

Desenvolver

Por

Funcionalidade

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Story-Writing Workshops

• São reuniões que incluem desenvolvedores,

usuários, cliente, product owner e qualquer

pessoa que possa contribuir no processo de

descoberta de stories;

• Durante este workshop os participantes

escrevem a quantidade de stories que

conseguirem;

• Prioridades não são associadas;

• Bons workshops combinam os melhores

elementos de brainstorming e prototipação de

desenho;

User Stories - Requisitos

• Quem

• O quê?

• Porque?

O que deve conter nas stories?

Como um <Perfil> eu posso /

devo / consigo <FUNÇÃO>

atender ao <VALOR DE NEGOCIO>

Como CLIENTE consigo

COMPRAR e pagar meu pedidoCOM CARTÃO DE CRÉDITO.

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Documentação inicial de Análise e Design

Criação de Features

Home-page

Pesquisar Produtos

Selecionar produto e por

no carrinho

Pagar pela compra

Reservar Produtos

Cadastrar Clientes

Pagar com cartão de

crédito

Pagar com boleto

bancário

Efetuar a organização das user stories em features, facilita a

visualização do que deve ser feito pelo time!www.agilethink.com.br ©2017

Agile Think® - Todos os direitos reservados

Documentação de Análise e Design

Documentação do Processo

Pesquisar Produtos

Reservar Produtos

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Documentação testes e qualidade

Testes de Aceitação

• Quem?

• O quê?

• Porque?

• Qual

o critério?

Como CLIENTE cadastrado

no site eu consigo EFETUAR

O PAGAMENTO do meu

pedido COM CARTÃO DE

CRÉDITO.

Aceitar

pagamento com

Visa e Mastercard

Verificar cartões

com prazo

expirado (falhar)

Aceitar

pagamento de

Pessoa Física e

Pessoa Jurídica

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

• Prevenindo defeitos com vários tipos de teste:

Testes de HistóriasInteresse de Negócio

(Design do Produto)

Testes de Usabilidade

Testes Exploratórios

Testes de UnidadeInteresse do programador

(Design do Código)

Testes de PropriedadeSegurança, Carga,

Combinatório

Perspectiva do Negócio

Perspectiva da Tecnologia

Su

po

rte à

Pro

gra

maç

ão

Crític

a a

o P

rod

uto

Qualidade de Testes

Documentação testes e qualidade

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Sincronizando FDD ao SCRUM

Semana 1 Semana 2 Semana 3 Semana 4

Funcionalidade 1

Funcionalidade 2

Funcionalidade 3

Como sincronizar desenvolvimento novo à manutenção?

• Rotação de pessoas

• Alocar uma parte do dia para revisão de código

• Triagem agressiva + atendimento imediato a manutenções

urgentes

• Implantação semanal + tratar manutenção como funcionalidades

do release

Adotando Métodos Ágeis em Conjunto

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

FIM

Dúvidas!

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Facilitando a vida...

... e priorização por parte do time

• Os participantes da reunião são:

Product Owner, Scrum Master e

todos os membros do time;

• Certifique-se que o Product

Backlog esteja priorizado;

• Certifique-se que há disponível

um conjunto de cartas para a

prática do Planning Poker;

• Certifique-se que há tempo

disponível – sem interrupções –

para a realização da reunião.

A priorização do Product Backlog

por parte do Product Owner...

• Sessões de Facilitação

• Brainstorm

• Mapas mentais

• Desenvolvimento de modelo visual

abrangente (FDD facilita ter esse tipo

de visão)

•Conhecer user stories profundamente

Apêndice 1

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados

Facilitando a vida...Daily Meeting

• Os participantes da reunião são:

Scrum Master e todos os membros do

time. Caso necessário, pode ser

solicitada a presença do Product

Owner;

• Certifique-se de que o local e

horário do Daily Meeting esteja claro

para todo o time;

• Certifique- se de que o quadro de

acompanhamento esteja visível no

ambiente físico em que será realizada

e reunião

• O que fiz desde a última reunião?

• O que pretendo fazer até a

próxima reunião?

• Estou tendo algum impedimento?

Se sim, adicione-o ao Impediments

Sprint Planning Meeting

• O Product Owner deve falar ao time

sobre a visão do produto;

• O Product Owner e o time devem

definir a meta da Sprint;

• O time deve realizar a estimativa dos

itens do backlog que não estejam

estimados;

• O Product Owner e o time, em

consenso, escolhem os itens que irão

fazer parte do próximo Sprint, estes

itens selecionados são chamados de

Selected Product Backlog.

Apêndice 2

www.agilethink.com.br ©2017 Agile Think® - Todos os direitos reservados