1 of 122

Engenharia de Software Moderna

Cap. 2 - Processos

Prof. Marco Tulio Valente

https://engsoftmoderna.info

1

Licença CC-BY; permite copiar, distribuir, adaptar etc; porém, créditos devem ser dados ao autor dos slides

2 of 122

Engenharia Tradicional

  • Civil, mecânica, elétrica, aviação, automobilística, etc
  • Projeto com duas características:
    • Planejamento detalhado (big upfront design)
    • Sequencial
  • Isto é, Waterfall, há milhares de anos

2

3 of 122

Natural que ES começasse usando Waterfall

3

4 of 122

No entanto: Waterfall não funcionou com software!

4

5 of 122

Software é diferente

  • Engenharia de Software ≠ Engenharia Tradicional
  • Software ≠ (carro, ponte, casa, avião, celular, etc)
  • Software ≠ (produtos físicos)
  • Software é abstrato e "adaptável"

5

6 of 122

Dificuldade 1: Requisitos

  • Clientes não sabem o que querem (em um software)
    • Funcionalidades são "infinitas" (difícil prever)
    • Mundo muda!
  • Não dá mais para ficar 1 ano levantando requisitos, 1 ano projetando, 1 ano implementando, etc
  • Quando o software ficar pronto,

ele estará obsoleto!

6

7 of 122

Dificuldade 2: Documentações Detalhadas

  • Verbosas e pouco úteis
  • Na prática, desconsideradas durante implementação
  • Plan-and-document não funcionou com software

7

8 of 122

Manifesto Ágil (2001)

8

9 of 122

Ideia central: desenvolvimento iterativo

9

Waterfall

Ágil

10 of 122

Desenvolvimento iterativo

  • Suponha um sistema imenso, complexo etc
  • Qual o menor "incremento de sistema" eu consigo implementar em 15 dias e validar com o usuário?
  • Validar é muito importante!
  • Cliente não sabe o que quer!

10

11 of 122

Reforçando: ágil = iterativo

11

12 of 122

Outros pontos importantes (1)

  • Menor ênfase em documentação
  • Menor ênfase em big upfront design
  • Envolvimento constante do cliente

12

13 of 122

Outros pontos importantes (2)

  • Novas práticas de programação
    • Testes, refactoring, integração contínua, etc

13

14 of 122

Métodos Ágeis

14

15 of 122

Agilidade = aprendizado + geração de valor contínuos

15

16 of 122

16

Devs

Clientes

aprendizado

valor

(resolver problemas

usando software)

17 of 122

Métodos Ágeis que Vamos Estudar

  • Extreme Programming (XP)
  • Scrum
  • Kanban

17

18 of 122

Extreme Programming (XP)

18

19 of 122

Extreme Programming

19

Kent Beck

1999

2004

20 of 122

XP = Valores + Princípios + Práticas

20

21 of 122

Valores

  • Comunicação
  • Simplicidade
  • Feedback
  • Coragem
  • Respeito
  • Ambiente de Trabalho

21

22 of 122

Valores ou cultura são fundamentais em software!

22

23 of 122

XP = Valores + Princípios + Práticas

23

24 of 122

Princípios

  • Viabilidade econômica
  • Melhorias Contínuas
  • Falhas Acontecem
  • Baby Steps
  • Responsabilidade

24

25 of 122

XP = Valores + Princípios + Práticas

25

26 of 122

26

Iremos estudar em Scrum

Testes e TDD = Cap. 8

CI = Cap. 10

27 of 122

Pair Programming

27

28 of 122

Exercício

  • Quais as vantagens de pair programming?
  • E a principal desvantagem?

28

29 of 122

Mob Programming

  • Time inteiro trabalhando na mesma tarefa de programação
  • Qual o principal “caso de uso” de mob programming?

29

30 of 122

Pull Requests + Revisão de Código (assíncrona)

30

31 of 122

31

Junho de 2021, logo antes do ChatGPT

32 of 122

Pareamento com IA (via auto-complete)

32

33 of 122

33

34 of 122

34

Programação Pareada

Revisão de

Código

GitHub Copilot

Revisão de Código com IA

Síncrono

Assíncrono

Humanos

Automatizada

35 of 122

Contratos de Software

  • Contratos de software podem ser de dois tipos:
    • Escopo Fechado
    • Escopo Aberto (defendidos por XP)

35

36 of 122

Contratos com Escopo Fechado

  • Cliente: requisitos ("fecha escopo")
  • Empresa: preço + prazo

36

37 of 122

Contratos com Escopo Aberto

  • A empresa CONTRATADA fornecerá [x] programadores para desenvolver um sistema [y] para a empresa CONTRATANTE, ao custo de [z] reais por mês.
  • Este contrato será renovado a cada mês, a não ser que uma das partes decida cancelá-lo.

37

38 of 122

Contratos com Escopo Aberto

  • Exige maturidade e acompanhamento do cliente
  • Vantagens:
    • Privilegia qualidade
    • Não vai ser enganado ("entregar por entregar")
    • Pode mudar de fornecedor

38

39 of 122

Exercícios sobre XP

39

40 of 122

  1. Por que XP é um método voltado apenas para projetos de software?

40

41 of 122

Scrum

41

42 of 122

Scrum

  • Proposto por Jeffrey Sutherland e Ken Schwaber

42

OOPSLA 1995

43 of 122

Scrum

  • Scrum é uma indústria: livros, consultoria, certificações, etc

43

44 of 122

Principal evento: Sprints

44

Sprint 1

Sprint 2

Sprint 3

Sprint 4

Sistema

Sistema

Sistema

novas

funcionalidades

15 dias

45 of 122

O que se faz em um sprint?

  • Implementa-se algumas histórias dos usuários
  • Histórias = funcionalidades do sistema
  • Exemplo: fórum de perguntas e respostas

45

46 of 122

Quem escreve as histórias?

  • Product Owner (PO)
  • Papel obrigatório em times Scrum
  • Especialista no domínio do sistema

46

47 of 122

Antes: Waterfall

47

Linguagem natural

(poderia levar anos para ficar pronto)

Stakeholders

Analista de Requisitos

Devs

consulta

escreve

implementa

48 of 122

Hoje: Scrum

  • Durante sprint, PO explica histórias para devs
  • Troca-se documentação formal/escrita por informal/verbal
  • Conversas entre PO e devs

48

PO

Devs

Stakeholders

49 of 122

Hoje ...

Product Owner senta junto dos desenvolvedores e explica requisitos para eles

PO

Devs

50 of 122

Funções de um PO

  • Escrever histórias dos usuários
  • Explicar histórias para os devs
  • Definir "testes de aceitação" de histórias
  • Priorizar histórias

50

51 of 122

Backlog do Produto

  • Lista de histórias do usuário
  • E outros itens de trabalho importantes
  • Duas características:
    • Priorizada: histórias do topo têm maior prioridade
    • Dinâmica: histórias podem sair e entrar…

51

52 of 122

Resumindo

  • Iteração: sprint
  • Papéis: PO e Devs
  • Artefato: backlog do produto

52

53 of 122

Quais histórias vão entrar no próximo sprint?

  • Decisão tomada no início do sprint
  • Em uma reunião chamada de planejamento do sprint
  • PO propõe histórias que gostaria de ver implementadas
  • Devs decidem se têm velocidade para implementá-las

53

54 of 122

Importante

  • Em um time Scrum, todos têm o mesmo nível hierárquico
  • PO não é o chefe dos Devs
  • Devs têm autonomia para dizer que não vão conseguir implementar tudo que o PO quer em um único sprint

54

55 of 122

Voltando ao Planejamento do Sprint

  • 1a parte da reunião:
    • Definem-se as histórias do sprint
  • 2a parte da reunião:
    • Histórias são quebradas em tarefas
    • Tarefas são alocadas a devs

55

56 of 122

Exemplo: fórum de perguntas e respostas

56

57 of 122

Backlog do Produto

57

58 of 122

Histórias do Sprint

58

59 of 122

Backlog do Sprint

  • Lista de tarefas do sprint (com responsáveis e duração)

59

60 of 122

Sprint está pronto para começar!

60

61 of 122

Times e Papéis de Scrum

61

62 of 122

Times Scrum

  • Pequenos (time de basquete a um time de futebol)
  • 5 a 11 membros, sendo 1 PO e 1 Scrum Master

62

63 of 122

Times Scrum

  • Multidisciplinares: devs, designers, cientistas de dados, etc
  • Times ágeis são chamados, com frequência, de squads

63

64 of 122

Scrum Master

  • Especialista em Scrum: ajuda o time a adotar Scrum
  • Removedor de impedimentos não-técnicos
    • Exemplo: desenvolvedores não têm máquinas boas
  • Coletar métricas de processo
  • Não é o chefe do time, mas um “líder servidor”
  • Pode pertencer a mais de um time

64

65 of 122

Mais alguns eventos

65

66 of 122

Reuniões Diárias

  • 15 minutos de duração. Cada participante diz:
    • o que ele fez ontem
    • o que pretende fazer hoje
    • e se está tendo alguma dificuldade
  • Objetivos:
    • Melhorar comunicação
    • Antecipar problemas

66

Os eventos Scrum são às vezes chamados, por alguns times, de rituais.

67 of 122

Sprint termina com dois eventos:

Review e Retrospectiva

67

68 of 122

Revisão do Sprint

  • Time mostra o resultado do sprint para PO e stakeholders
  • Implementação das histórias pode ser:
    • Aprovada
    • Aprovada parcialmente
    • Reprovada
  • Nos dois últimos casos, história volta para o backlog do produto

68

69 of 122

Retrospectiva

  • Último evento do sprint
  • Time se reúne para decidir o que melhorar
    • O que deu certo?
    • Onde precisamos melhorar?
  • Modelo mental: melhorias constantes
  • Não é para "lavar a roupa suja"

69

70 of 122

Exercícios

  1. Por que Scrum é definido como sendo um framework?

Por exemplo, veja a definição do Scrum Guide: "Scrum é um framework leve que ajuda pessoas, equipes e organizações a gerar valor por meio de soluções adaptativas para problemas complexos."

70

71 of 122

Exercícios

2.

(a) Quais são os 2 papéis mandatórios em times Scrum?

(b) Quais são os 4 eventos mandatórios em um sprint Scrum?

(c) Quais são os 2 artefatos mandatórios em Scrum?

71

72 of 122

Mais alguns conceitos de Scrum

72

73 of 122

Time-box

  • Eventos têm uma duração bem definida

73

74 of 122

74

75 of 122

Critérios para Conclusão de Histórias (done criteria)

  • Critérios internos para considerar histórias prontas
  • Exemplos:
    • Testes de unidade com cobertura ≥ 75%
    • Revisão de código por outro dev do time
    • Atualizar documentação (se alguma API mudou)
    • Teste de performance (para certas histórias)

75

76 of 122

Scrum Board

76

77 of 122

Exemplo: projeto da Mozilla (usando GitHub Projects)

77

78 of 122

Story Points

78

79 of 122

Story Points

  • Usados para estimar o tamanho de histórias
  • Ajudar a definir o que vai “caber” no sprint
  • Uso não é obrigatório em Scrum
  • Definição de story points é empírica

79

80 of 122

Escala de story points

  • Mais comum: 1, 2, 3, 5, 8, 13, …
  • Time possui uma velocidade: número de story points que consegue implementar em um sprint

80

81 of 122

Exemplo

81

Definido pelos devs do time

82 of 122

Resumo em 1 slide

82

fonte: https://www.scrum.org/resources/scrum-framework-reduce-risk-and-deliver-value-sooner

83 of 122

Exercícios sobre Scrum

83

84 of 122

  1. Qual a diferença entre as histórias do topo e do fundo do backlog do produto?
  2. Suponha que você vai escrever um livro e pretende usar Scrum para gerenciar esse projeto.
    • Qual seria o objetivo dos sprints?
    • Quais os itens do backlog do produto?
    • Quais os itens do backlog do sprint?
    • Faria sentido ter “sprint review”? Se sim, como?
    • Faria sentido ter um PO?

84

85 of 122

3. Suponha dois times, A e B, atuando em projetos diferentes, contratados por empresas distintas:

    • Ambos adotam sprints de 15 dias
    • Ambos possuem 5 devs
    • O time A considera que sua velocidade é de 24 pontos
    • Já o time B possui uma velocidade de 16 pontos

Pode-se afirmar que A é 50% mais produtivo que B? Justifique sua resposta.

85

86 of 122

4. Suponha um editor de textos com duas histórias:

    • Abrir arquivo (H1)
    • Editar arquivo (H2)

O PO priorizou, de forma bastante firme, H2 para um sprint e H1 para um sprint seguinte.

    • O que faria nesse caso? Seguiria a prioridade do PO?
    • Se sim, como implementaria a edição de um arquivo (H2), sem antes implementar a sua abertura (H1)?

86

87 of 122

Kanban

87

88 of 122

Kanban

  • Origem na década de 50 no Japão
  • Sistema de Produção da Toyota
  • Manufatura lean, produção just-in time, etc

88

89 of 122

kanban = "cartão visual"

89

90 of 122

Kanban em Desenvolvimento de Software

90

91 of 122

Kanban vs Scrum

  • Kanban é mais simples
  • Não existem sprints
  • Não é obrigatório usar papéis e eventos, incluindo:
    • Scrum master
    • Daily Scrum, retrospectivas, revisões
  • Time define os papéis e eventos

91

92 of 122

Kanban

92

Backlog

Especificação

WIP

Implementação

WIP

Revisão de Código

WIP |

em espec.

especificadas

em implementação

implementadas

em revisão

revisadas

"Grandes" colunas do quadro:

Passos

1a sub-coluna:

em andamento

2a sub-coluna:

concluídas

Fluxo de trabalho (tempo)

Iremos explicar daqui a pouco o que significa WIP

93 of 122

Kanban

  • Ideia central: sistema pull
  • Membros "puxam" trabalho:
    1. Escolhem uma tarefa para trabalhar
    2. Concluem tarefa (movem ela para frente no quadro)
    3. Voltam para o passo (a)

93

94 of 122

94

Backlog

Especificação

WIP

Implementação

WIP

Revisão de Código

WIP |

🗅

em espec.

especificadas

em implementação

implementadas

em revisão

revisadas

tempo

95 of 122

95

Backlog

Especificação

WIP

Implementação

WIP

Revisão de Código

WIP |

🗅

em espec.

especificadas

em implementação

implementadas

em revisão

revisadas

Backlog

Especificação

WIP

Implementação

WIP

Revisão de Código

WIP |

em espec.

🗅

especificadas

em implementação

implementadas

em revisão

tempo

96 of 122

96

Backlog

Especificação

WIP

Implementação

WIP

Revisão de Código

WIP |

🗅

em espec.

especificadas

em implementação

implementadas

em revisão

revisadas

Backlog

Especificação

WIP

Implementação

WIP

Revisão de Código

WIP |

em espec.

🗅

especificadas

em implementação

implementadas

em revisão

Backlog

Especificação

WIP

Implementação

WIP

Revisão de Código

WIP |

em espec.

especificadas

🗅 🗅 🗅 🗅

em implementação

implementadas

em revisão

revisadas

tempo

97 of 122

97

Backlog

Especificação

WIP

Implementação

WIP

Revisão de Código

WIP |

em espec.

especificadas

🗅 🗅 🗅 🗅

em implementação

implementadas

em revisão

revisadas

tempo

Backlog

Especificação

WIP

Implementação

WIP

Revisão de Código

WIP |

em espec.

especificadas

🗅 🗅 🗅

em implementação

🗅

implementadas

em revisão

revisadas

Backlog

Especificação

WIP

Implementação

WIP

Revisão de Código

WIP |

em espec.

especificadas

🗅 🗅🗅

em implementação

implementadas

🗅

em revisão

98 of 122

Exemplo 2

98

99 of 122

Ontem no final do dia

99

100 of 122

Ontem no final do dia

Hoje no final do dia

100

101 of 122

Kanban: Limites WIP

101

102 of 122

Limites WIP (Work in Progress)

102

103 of 122

Limites WIP (Work in Progress)

  • Número máximo de tarefas em um passo, contando tarefas em andamento e concluídas

103

4

0

104 of 122

Objetivos dos Limites WIP

  • Criar um fluxo de trabalho sustentável
  • Evitar que o time fique sobrecarregado de trabalho
  • WIP = "acordo" entre o time e a organização
  • Capacidade de trabalho de um time

104

105 of 122

Frase comum em Kanban:

pare de começar e comece a terminar

105

106 of 122

Mais um exemplo: Implementação no limite

  • Logo, é o momento de revisar algumas tarefas

106

Backlog

Especificação (2)

Implementação (5)

Revisão (3)

X

X

X

X

X

107 of 122

WIP do Passo de Especificação

  • Número de histórias em especificação + número de grupos de tarefas especificadas (linhas do quadro)
  • Tarefas na mesma linha = resultantes da mesma história

107

0

+1

+1

108 of 122

WIP de Revisão de Código

  • Conta apenas tarefas na primeira coluna (em revisão)

108

1

Não contam para

fins de WIP

109 of 122

Comentários Finais sobre Kanban

  • Kanban é mais simples do que Scrum
  • Kanban é mais adequado para times maduros
  • Talvez, começar com Scrum e depois ir para Kanban

109

110 of 122

Exercícios sobre Kanban

110

111 of 122

1. Qual é o erro que existe no seguinte quadro Kanban?

111

Backlog

Especificação (2)

Implementação (5)

Validação (3)

X

X

X

X

X

X

112 of 122

2. É possível voltar com o cartão em um quadro Kanban? Se sim, descreva uma situação na qual isso pode ocorrer.

3. Um dos problemas comuns em times de software é o excesso de trabalho. Como Kanban pode ajudar a resolver esse problema?

4. Um outro problema em times de software são desenvolvedores que "correm" para entregar histórias, mas sem o devido nível de qualidade. Como Kanban pode ajudar a resolver esse problema?

112

113 of 122

Antes de concluir

  • Processos não são adotados 100% igual ao manual
    • Bom senso é importante
    • Experimentação é importante

113

114 of 122

Exercícios

114

115 of 122

1. O seguinte slide resume métodos ágeis em três áreas: processos, excelência técnica e cultura. No entanto, em cada uma delas, existe uma característica que NÃO é compatível com os princípios de agilidade. Indique tais características.

115

116 of 122

2. Suponha que você trabalha em um Banco X e ficou encarregado pela implantação do PIX no mesmo. Então, sua primeira decisão foi montar um squad para ficar responsável por essa funcionalidade. Você decidiu também que esse squad deveria usar Scrum. Responda então:

(a) Quais profissionais você deve contratar ou convidar para esse squad? Qual a responsabilidade deles?

(b) Suponha que o projeto foi concluído com sucesso. Meses depois, o Banco Central baixou a seguinte regra: transferências via PIX entre 20:00 e 06:00 devem obedecer ao limite de R$ 1.000,00. Qual seria o papel de cada membro do time na implementação dessa nova regra? Descreva de forma simplificada.

116

117 of 122

3. Suponha que a UFMG pretende migrar para um novo sistema de apoio ao ensino, que irá substituir o Moodle. Ela está cogitando três estratégias:

(a) construir o novo sistema internamente, usando devs que são funcionários da universidade.

(b) terceirizar o desenvolvimento com uma agência ou fábrica de software.

(c) comprar ou assinar algum produto disponível no mercado.

Suponha que o sistema nas três alternativas será (ou foi) desenvolvido usando Scrum. Então, descreva o perfil de PO (Product Owner) mais adequado para cada uma delas.

117

118 of 122

4. Ao comentar sobre os itens dos backlogs de Scrum, demos ênfase a histórias de usuários. Porém, elas não são os únicos itens possíveis em um backlog.

Descreva então outros itens de trabalho que podem fazer parte do backlog do produto.

118

119 of 122

5. Existem quatro variáveis importantes em contratos de software:

  • Escopo (requisitos)
  • Tempo (prazo)
  • Custo
  • Qualidade

XP argumenta que é impossível fixar todas essas quatro variáveis por meio de um contrato, pois surpresas vão acontecer durante o projeto.

Suponha então um contrato com escopo fechado. Se ocorrer uma surpresa ao longo do projeto, qual dessas variáveis tende a ser sacrificada pela empresa contratada a fim de evitar multas?

119

120 of 122

6. Suponha que você é o líder técnico (tech lead) de um time.

E os desenvolvedores estão reclamando que não conseguem usar certos módulos do sistema devido à documentação desatualizada da interface pública dos mesmos.

Ao investigar a questão, você descobriu que os devs, com frequência, alteram a interface dos módulos, porém não atualizam a documentação.

Supondo que o time usa Scrum, qual medida você tomaria para evitar a ocorrência desse problema?

120

121 of 122

7. Em Engenharia de Software, anti-patterns são padrões não recomendados para um certo problema.

Descreva então três anti-patterns de Product Owner (PO).

121

122 of 122

Fim

122