Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da...

57
Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP www.agilcoop.org.b r

Transcript of Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da...

Page 1: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

Desenvolvendo Software com

Qualidade e Agilidade

Prof. Dr. Fabio KonDepartamento de Ciência da Computação

IME - USP

www.agilcoop.org.br

Page 2: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

2 Copyleft Agilcoop 2007

CHAOS Report

• Resultado dos projetos (2004):

18%

29%53%comproblemas

sucesso

falham

Page 3: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

3 Copyleft Agilcoop 2007

CHAOS Report

1994 2004

Projetos não concluídos------------ 31%

Projetos bem sucedidos----- 16%

Estouro médio de custo-----------------------> 180%

Estouro médio de prazo-----------------------> 164%

Projetos não concluídos------- 18%

Projetos bem sucedidos----------- 29%

Estouro médio de custo----------------- 56%

Estouro médio de prazo------------------------- 84%

Page 4: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

4 Copyleft Agilcoop 2007

Qual software?

64%Funcionalidades

nunca ou

raramenteutilizadas

Jim Johnson, 2000

Page 5: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

5 Copyleft Agilcoop 2007

A grande mentira

Requisitos

Análise

Implementação

Arquitetura eDesign

Testes

Produção

Page 6: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

6 Copyleft Agilcoop 2007

Jacobson, agosto/2007

Page 7: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

7 Copyleft Agilcoop 2007

Como extrair valor de TI?

• Processos tradicionais:

tempo-$$?

+$???

Gasto: -30$ 0$ 0$ 0$ 0$ 0$

Lucro: 0$ 0$ 0$ 0$ 0$ 20$

Saldo: -30$ -30$ -30$ -30$ -30$ -10$

Page 8: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

8 Copyleft Agilcoop 2007

Como extrair valor de TI?

• Métodos Ágeis:

tempo

Gasto: -5$ -5$ -5$ -5$ -5$ -5$

Lucro: 0$ 2$ 4$ 9$ 15$ 20$

Saldo: -5$ -8$ -9$ -5$ 5$ 20$

Page 9: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

9 Copyleft Agilcoop 2007

Processos tradicionais:

Valor = software funcionando

O que é valor?

Page 10: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

10 Copyleft Agilcoop 2007

Ou seja...

Software funcionandoé mais importante que

documentação abrangente

Page 11: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

11 Copyleft Agilcoop 2007

Então não documenta?• Documentação é uma excelente forma de armazenar o histórico de

decisões de um projeto. Quando algo dá errado, é importante poder rastrear tais decisões para descobrir o que deu errado. Além disso, um documento é escrito numa linguagem muito mais formal e, portanto, mais correta, evitando ambigüidades de sentido. É importante manter toda a documentação sincronizada com o resto do projeto. Por exemplo, um documento de design ou arquitetura do sistema precisa refletir a realidade implementada. Outro tipo de documentação comumente escrita ao desenvolver software como um produto, é um manual técnico ou guia de uso para o usuário final. No entanto, é preciso lembrar que produzir documentação é uma tarefa que exige esforço e, portanto, toma tempo da equipe. A quantidade de tempo gasta produzindo documentação desnecessária é desperdício para o projeto e para o cliente. A equipe deve colaborar com o cliente para determinar o real valor da produção de um documento, levando em conta pontos como custo, benefício, precisão, manutenção e linguagem utilizada...

Entenderam?

Page 12: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

12 Copyleft Agilcoop 2007

Comunicação

• “Telefone sem fio”

• “Documento sem fio”

A B

A ?

Page 13: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

13 Copyleft Agilcoop 2007

Documente o necessário

• Bom senso:

– O que a equipe julgar necessário

– O que o “dono” do projeto exige

• Tratada como funcionalidade

Page 14: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

14 Copyleft Agilcoop 2007

Então...

Indivíduos e interaçõessão mais importantes queprocessos e ferramentas

Page 15: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

15 Copyleft Agilcoop 2007

Então não usa processos e ferramentas?

Page 16: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

16 Copyleft Agilcoop 2007

Fazer certo o software

Carne assada e vagem com bacon,

uma delícia.Seguindo a receita vai

ficar muito gostoso!

Sem dúvida vai ser um sucesso!!

Page 17: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

17 Copyleft Agilcoop 2007

Fazer o software certo

Voilá!Mas eu sou

vegetariana!!

Page 18: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

18 Copyleft Agilcoop 2007

E como fazer o software certo?

• Investindo na bolsa:

Page 19: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

19 Copyleft Agilcoop 2007

É preciso gerenciar riscos

Software é arriscado

Page 20: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

20 Copyleft Agilcoop 2007

Feedback

Por enquantotudo bem

Page 21: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

21 Copyleft Agilcoop 2007

Isto é...

Colaboração com o clienteé mais importante que

negociação de contratos

Page 22: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

22 Copyleft Agilcoop 2007

Então não tem contrato?

• Contratos “tradicionais”incentivam comportamentos não produtivos

• Faça um contrato de benefício mútuo

Page 23: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

23 Copyleft Agilcoop 2007

Contrato de Escopo Negociável

• Cliente:– Tem a oportunidade de mudar de idéia– Pode interromper o desenvolvimento a

qualquer momento– Custo e Prazo fixos

• Desenvolvedores:– Motivados a produzir o melhor sistema– Receita previsível

Page 24: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

24 Copyleft Agilcoop 2007

Se não houver interação...

• Perguntas:– Faça sua lista de compras de 2008– Seu investimento vai render quanto em 2010?– Quanto tempo demora para pedalar até o RJ?

• Somos ruins para planejar a longo prazo!

Page 25: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

25 Copyleft Agilcoop 2007

Portanto...

Adaptação a mudançasé mais importante que

seguir um plano

Page 26: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

26 Copyleft Agilcoop 2007

Então não planejamos?

• Mudando um pouco a história:– Faça a lista de compras para mês/semana

que vem.– Quanto de lucro teremos mês que vem?– Quanto tempo demora para pedalar de casa

até o trabalho?

Page 27: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

27 Copyleft Agilcoop 2007

Pelo contrário...

Planejamos

SEMPRE

Page 28: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

28 Copyleft Agilcoop 2007

Planejamos para o curto, médio e longo prazos

Planejamento Ágil

Page 29: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

29 Copyleft Agilcoop 2007

Pêndulo do Planejamento

• No mundo não-Ágil:

NenhumPlano

Excesso dePlanos

Planejar sempre, em ciclos pequenos

Page 30: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

30 Copyleft Agilcoop 2007

Ciclos pequenos

Dia

Iteração

Release W

S

A

O

R

F

E

T

A

Page 31: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

31 Copyleft Agilcoop 2007

Retrospectivas

Page 32: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

32 Copyleft Agilcoop 2007

Guiado por Feedback

Page 33: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

33 Copyleft Agilcoop 2007

Estimativas - Quiz

• Qual a vazão média das Cataratas do Iguaçu?– 1.500 m3/s

• Qual a área do Brasil?– 8.514.877 km2

• Que dia foi a Tomada da Bastilha?– 14/Jul/1789

• Quando foi a primeira transmissão em cores no Brasil?– 31/Mar/1972

• Qual a altura do Cristo Redentor?– 38 m

• Qual a distância média da Terra à Lua?– 384.403 km

Page 34: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

34 Copyleft Agilcoop 2007

Somos péssimos estimadores

Page 35: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

35 Copyleft Agilcoop 2007

Estimar é difícil

• Como um projeto atrasa 2 anos?

• 80% pronto

Estimativas não são compromissos!

Já está chegandoem casa?

Faltam só 2 quarteirões

Page 36: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

36 Copyleft Agilcoop 2007

Boas estimativas

• Tamanho ≠ Duração

1

1

222

2

4

4

4

4

8 16

16

2 Total = 58

Page 37: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

37 Copyleft Agilcoop 2007

Acompanhamento

Velocidade = Pontos Entregues / Iteração

Page 38: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

38 Copyleft Agilcoop 2007

Área de Trabalho Informativa

Page 39: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

39 Copyleft Agilcoop 2007

Área de Trabalho Informativa

Page 40: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

40 Copyleft Agilcoop 2007

Requisito ≠ Obrigação

• Planos por priorização:

Page 41: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

41 Copyleft Agilcoop 2007

Novo conceito: Pronto

Seu quartoestá pronto!

? ? ?

Page 42: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

42 Copyleft Agilcoop 2007

Equipe completa

Page 43: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

43 Copyleft Agilcoop 2007

Indo para o lado técnico…

Visão do Sistema Decomposição por especialidade

Page 44: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

44 Copyleft Agilcoop 2007

Integração Tardia

Page 45: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

45 Copyleft Agilcoop 2007

Integração Contínua

Page 46: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

46 Copyleft Agilcoop 2007

Criando Conhecimento

• Código Compartilhado• Programação Pareada• Padronização de Código

Page 47: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

47 Copyleft Agilcoop 2007

Qualidade leva à agilidade

“Work smarter, not harder”-- Tom de Marco, “Slack”

“Inspecionar para previnir defeitos é bom; Inspecionar para encontrar defeitos é desperdício”-- Shigeo Shingo, “The Toyota Production System”

Qualidade é sempre alta!

Page 48: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

48 Copyleft Agilcoop 2007

Previnindo defeitos

• Auto-inspeção (mistake proof)

Testes são a especificação!

Page 49: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

49 Copyleft Agilcoop 2007

Testes automatizados

• Testes de unidade– Programadores

• Testes de aceitação– Clientes

Page 50: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

50 Copyleft Agilcoop 2007

Constante manutenção

• Evitando débito técnico:– Refatoração e Design Simples

Complexidade é o inimigo invisível!

Page 51: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

51 Copyleft Agilcoop 2007

Recapitulando…

• Manifesto Ágil:– Indivíduos e interações são mais

importantes que processos e ferramentas– Software funcionando é mais importante

que documentação completa e detalhada– Colaboração com o cliente é mais

importante que negociação de contratos– Adaptação a mudanças é mais importante

que seguir um plano

Page 52: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

52 Copyleft Agilcoop 2007

Metodologias

• Scrum:– Planejamento ágil– Ciclos pequenos– Retrospectiva– Equipe completa– …

Page 53: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

53 Copyleft Agilcoop 2007

Metodologias

• Scrum + XP:– Integração Contínua– Testes Automatizados– Refatoração e Design Simples– Área de Trabalho Informativa– Programação Pareada– …

Page 54: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

54 Copyleft Agilcoop 2007

Metodologias

A melhor metodologia é a sua metodologia

Page 55: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

55 Copyleft Agilcoop 2007

Ser Ágil = Vencer medos

• Escrever código• Mudar de idéia• Ir em frente sem saber tudo sobre o futuro• Confiar em outras pessoas• Mudar a arquitetura de um sistema em

funcionamento• Escrever testes

Page 56: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

56 Copyleft Agilcoop 2007

Onde começar?

• Comece onde está• Use Retrospectivas• Procure desperdícios

Page 57: Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP .

57 Copyleft Agilcoop 2007

Dúvidas?

[email protected]

?www.agilcoop.org.br

(artigos + agilcast)