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
Alternativas a Pair Programming
30
Pull Requests + Revisão de Código (assíncrona)
31
AI Pairing (via auto-complete)
32
AI Pairing (via revisão de código)
33
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
Contratos de Software
34
Contratos com Escopo Fechado
35
Contratos com Escopo Aberto
36
Contratos com Escopo Aberto
37
Exercícios sobre XP
38
39
Scrum
40
Scrum
41
OOPSLA 1995
Scrum
42
Principal evento: Sprints
43
Sprint 1
Sprint 2
Sprint 3
Sprint 4
…
Sistema
Sistema
Sistema
novas
funcionalidades
15 dias
O que se faz em um sprint?
44
Quem escreve as histórias?
45
Antes: Waterfall
46
Linguagem natural
(poderia levar anos para ficar pronto)
Stakeholders
Analista de Requisitos
Devs
consulta
escreve
implementa
Hoje: Scrum
47
PO
Devs
Stakeholders
Hoje ...
Product Owner senta junto dos desenvolvedores e explica requisitos para eles
PO
Devs
Funções de um PO
49
Backlog do Produto
50
Resumindo
51
Quais histórias vão entrar no próximo sprint?
52
Importante
53
Voltando ao Planejamento do Sprint
54
Exemplo: fórum de perguntas e respostas
55
Backlog do Produto
56
Histórias do Sprint
57
Backlog do Sprint
58
Sprint está pronto para começar!
59
Times e Papéis de Scrum
60
Times Scrum
61
Times Scrum
62
Scrum Master
63
Mais alguns eventos
64
Reuniões Diárias
65
Os eventos Scrum são às vezes chamados, por alguns times, de rituais.
Sprint termina com dois eventos:
Review e Retrospectiva
66
Revisão do Sprint
67
Retrospectiva
68
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."
69
Mais alguns conceitos de Scrum
70
Time-box
71
72
Critérios para Conclusão de Histórias (done criteria)
73
Scrum Board
74
Exemplo: projeto da Mozilla (usando GitHub Projects)
75
Story Points
76
Story Points
77
Escala de story points
78
Exemplo
79
Definido pelos devs do time
Resumo em 1 slide
80
fonte: https://www.scrum.org/resources/scrum-framework-reduce-risk-and-deliver-value-sooner
Exercícios sobre Scrum
81
82
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.
83
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.
84
Kanban
85
Kanban
86
kanban = "cartão visual"
87
Kanban em Desenvolvimento de Software
88
Kanban vs Scrum
89
Kanban
90
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
91
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
|
tempo
93
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
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
|
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
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
|
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
96
Ontem no final do dia
97
Ontem no final do dia
Hoje no final do dia
98
Kanban: Limites WIP
99
Limites WIP (Work in Progress)
100
Limites WIP (Work in Progress)
101
4
0
Objetivos dos Limites WIP
102
Frase comum em Kanban:
“pare de começar e comece a terminar”
103
Mais um exemplo: Implementação no limite
104
Backlog | Especificação (2) | Implementação (5) | Revisão (3) | |||
|
| | X X | X X X | | |
WIP do Passo de Especificação
105
0
+1
+1
WIP de Revisão de Código
106
1
Não contam para
fins de WIP
Comentários Finais sobre Kanban
107
Exercícios sobre Kanban
108
1. Qual é o erro que existe no seguinte quadro Kanban?
109
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?
110
Outros Processos (não ágeis)
111
Transição de Waterfall para Ágil
112
Modelo em Espiral
Proposto por Barry Boehm
Iterações: 6 a 24 meses (logo, mais que em XP ou Scrum)
113
Rational Unified Process (RUP)
114
CASE (Computer-Aided Software Engineering)
115
Nome vem de sistemas de CAD (usados em engenharia tradicional)
Antes de concluir
116
117
Exercícios
118
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.
119
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.
120
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.
121
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. Por exemplo, suponha os seguintes tipos de bugs:
(a) Um bug detectado durante a implementação de uma história de um sprint.
(b) Um bug não crítico reportado por um usuário do sistema.
(c) Um bug crítico que está impactando diversos usuários do sistema.
Como esses bugs deveriam ser tratados por um time que usa Scrum?
122
5. Essa questão é semelhante à anterior, porém focando em refatorações. Suponha então os seguintes tipos de refatorações:
(a) Uma refatoração que pode ser realizada em menos de uma hora.
(b) Uma refatoração complexa que envolve mudanças no projeto e arquitetura do sistema.
Como esses tipos de refatorações deveriam ser tratados por um time que usa Scrum?
123
6. 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?
124
7. 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?
125
8. 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).
126
Fim
127