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
Programação Pareada e
Revisão de Código com IA
31
32
Junho de 2021, logo antes do ChatGPT
Pareamento com IA (via auto-complete)
33
Pareamento com IA (via revisão de código)
34
jobs:
….
- name: Automatic PR Review
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
timeout_minutes: "60"
direct_prompt: |
Please review this pull request and provide comprehensive feedback.
Focus on:
- Code quality and best practices
- Potential bugs or issues
- Performance considerations
- Security implications
- Test coverage
- Documentation updates if needed
Executado automaticamente sempre que um novo PR for aberto em um repositório
35
36
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
37
Contratos com Escopo Fechado
38
Contratos com Escopo Aberto
39
Contratos com Escopo Aberto
40
Exercícios sobre XP
41
42
Scrum
43
Scrum
44
OOPSLA 1995
Scrum
45
Principal evento: Sprints
46
Sprint 1
Sprint 2
Sprint 3
Sprint 4
…
Sistema
Sistema
Sistema
novas
funcionalidades
15 dias
O que se faz em um sprint?
47
Quem escreve as histórias?
48
Antes: Waterfall
49
Linguagem natural
(poderia levar anos para ficar pronto)
Stakeholders
Analista de Requisitos
Devs
consulta
escreve
implementa
Hoje: Scrum
50
PO
Devs
Stakeholders
Hoje ...
Product Owner senta junto dos desenvolvedores e explica requisitos para eles
PO
Devs
Funções de um PO
52
Backlog do Produto
53
Resumindo
54
Quais histórias vão entrar no próximo sprint?
55
Importante
56
Voltando ao Planejamento do Sprint
57
Exemplo: fórum de perguntas e respostas
58
Backlog do Produto
59
Histórias do Sprint
60
Backlog do Sprint
61
Relação entre backlog do sprint e modelos de IA
62
63
Algumas dessas tarefas vão virar prompts
Backlog do sprint
Sprint está pronto para começar!
64
Times e Papéis de Scrum
65
Times Scrum
66
Times Scrum
67
Qual o impacto de IA na organização dos times Scrum?
68
Hipótese: times menores
69
Scrum Master
70
Mais alguns eventos
71
Reuniões Diárias
72
Os eventos Scrum são às vezes chamados, por alguns times, de rituais.
Sprint termina com dois eventos:
Review e Retrospectiva
73
Revisão do Sprint
74
Retrospectiva
75
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."
76
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?
77
Mais alguns conceitos de Scrum
78
Time-box
79
80
Critérios para Conclusão de Histórias (done criteria)
81
Scrum Board
82
Exemplo: projeto da Mozilla (usando GitHub Projects)
83
Story Points
84
Story Points
85
Escala de story points
86
Exemplo
87
Definido pelos devs do time
Resumo em 1 slide
88
fonte: https://www.scrum.org/resources/scrum-framework-reduce-risk-and-deliver-value-sooner
Exercícios sobre Scrum
89
90
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.
91
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.
92
Kanban
93
Kanban
94
kanban = "cartão visual"
95
Kanban em Desenvolvimento de Software
96
Kanban vs Scrum
97
Kanban
98
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
99
100
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
101
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
102
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
103
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
104
Ontem no final do dia
105
Ontem no final do dia
Hoje no final do dia
106
Kanban: Limites WIP
107
Limites WIP (Work in Progress)
108
Limites WIP (Work in Progress)
109
4
0
Objetivos dos Limites WIP
110
Frase comum em Kanban:
“pare de começar e comece a terminar”
111
Mais um exemplo: Implementação no limite
112
Backlog | Especificação (2) | Implementação (5) | Revisão (3) | |||
|
| | X X | X X X | | |
WIP do Passo de Especificação
113
0
+1
+1
WIP de Revisão de Código
114
1
Não contam para
fins de WIP
Comentários Finais sobre Kanban
115
Exercícios sobre Kanban
116
1. Qual é o erro que existe no seguinte quadro Kanban?
117
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?
118
Antes de concluir
119
Exercícios
120
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.
121
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.
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.
123
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.
124
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?
125
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?
126
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).
127
Fim
128