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
Engenharia Tradicional
2
Natural que ES começasse usando Waterfall
3
No entanto: Waterfall não funcionou com software!
4
Software é diferente
5
Dificuldade 1: Requisitos
ele estará obsoleto!
6
Dificuldade 2: Documentações Detalhadas
7
Manifesto Ágil (2001)
8
Ideia central: desenvolvimento iterativo
9
Waterfall
Ágil
Desenvolvimento iterativo
10
Reforçando: ágil = iterativo
11
Outros pontos importantes (1)
12
Outros pontos importantes (2)
13
Métodos Ágeis
14
Agilidade = aprendizado + geração de valor contínuos
15
16
Devs
Clientes
aprendizado
valor
(resolver problemas
usando software)
Métodos Ágeis que Vamos Estudar
17
Extreme Programming (XP)
18
Extreme Programming
19
Kent Beck
1999
2004
XP = Valores + Princípios + Práticas
20
Valores
21
Valores ou cultura são fundamentais em software!
22
XP = Valores + Princípios + Práticas
23
Princípios
24
XP = Valores + Princípios + Práticas
25
26
Iremos estudar em Scrum
Testes e TDD = Cap. 8
CI = Cap. 10
Pair Programming
27
Exercício
28
Mob Programming
29
Pull Requests + Revisão de Código (assíncrona)
30
31
Junho de 2021, logo antes do ChatGPT
Pareamento com IA (via auto-complete)
32
33
34
Programação Pareada | Revisão de Código |
GitHub Copilot | Revisão de Código com IA |
Síncrono
Assíncrono
Humanos
Automatizada
Contratos de Software
35
Contratos com Escopo Fechado
36
Contratos com Escopo Aberto
37
Contratos com Escopo Aberto
38
Exercícios sobre XP
39
40
Scrum
41
Scrum
42
OOPSLA 1995
Scrum
43
Principal evento: Sprints
44
Sprint 1
Sprint 2
Sprint 3
Sprint 4
…
Sistema
Sistema
Sistema
novas
funcionalidades
15 dias
O que se faz em um sprint?
45
Quem escreve as histórias?
46
Antes: Waterfall
47
Linguagem natural
(poderia levar anos para ficar pronto)
Stakeholders
Analista de Requisitos
Devs
consulta
escreve
implementa
Hoje: Scrum
48
PO
Devs
Stakeholders
Hoje ...
Product Owner senta junto dos desenvolvedores e explica requisitos para eles
PO
Devs
Funções de um PO
50
Backlog do Produto
51
Resumindo
52
Quais histórias vão entrar no próximo sprint?
53
Importante
54
Voltando ao Planejamento do Sprint
55
Exemplo: fórum de perguntas e respostas
56
Backlog do Produto
57
Histórias do Sprint
58
Backlog do Sprint
59
Sprint está pronto para começar!
60
Times e Papéis de Scrum
61
Times Scrum
62
Times Scrum
63
Scrum Master
64
Mais alguns eventos
65
Reuniões Diárias
66
Os eventos Scrum são às vezes chamados, por alguns times, de rituais.
Sprint termina com dois eventos:
Review e Retrospectiva
67
Revisão do Sprint
68
Retrospectiva
69
Exercícios
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
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
Mais alguns conceitos de Scrum
72
Time-box
73
74
Critérios para Conclusão de Histórias (done criteria)
75
Scrum Board
76
Exemplo: projeto da Mozilla (usando GitHub Projects)
77
Story Points
78
Story Points
79
Escala de story points
80
Exemplo
81
Definido pelos devs do time
Resumo em 1 slide
82
fonte: https://www.scrum.org/resources/scrum-framework-reduce-risk-and-deliver-value-sooner
Exercícios sobre Scrum
83
84
3. Suponha dois times, A e B, atuando em projetos diferentes, contratados por empresas distintas:
Pode-se afirmar que A é 50% mais produtivo que B? Justifique sua resposta.
85
4. Suponha um editor de textos com duas histórias:
O PO priorizou, de forma bastante firme, H2 para um sprint e H1 para um sprint seguinte.
86
Kanban
87
Kanban
88
kanban = "cartão visual"
89
Kanban em Desenvolvimento de Software
90
Kanban vs Scrum
91
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
Kanban
93
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
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
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
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
| |
Exemplo 2
98
Ontem no final do dia
99
Ontem no final do dia
Hoje no final do dia
100
Kanban: Limites WIP
101
Limites WIP (Work in Progress)
102
Limites WIP (Work in Progress)
103
4
0
Objetivos dos Limites WIP
104
Frase comum em Kanban:
pare de começar e comece a terminar
105
Mais um exemplo: Implementação no limite
106
Backlog | Especificação (2) | Implementação (5) | Revisão (3) | |||
|
| | X X | X X X | | |
WIP do Passo de Especificação
107
0
+1
+1
WIP de Revisão de Código
108
1
Não contam para
fins de WIP
Comentários Finais sobre Kanban
109
Exercícios sobre Kanban
110
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 | | |
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
Antes de concluir
113
Exercícios
114
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
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
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
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
5. Existem quatro variáveis importantes em contratos de software:
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
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
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
Fim
122