Top Banner
Professional Scrum Developer Aplicando Scrum em Equipes
91

Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Aug 29, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Professional Scrum DeveloperAplicando Scrum em Equipes

Page 2: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Sobre o curso

• Expande e foca na função de Scrum Developer

• Atribuições da Equipe

• Desenvolvimento de Qualidade• Bugs • Testes• Refinamento e Estimativas• Padrões de Desenvolvimento

• Desafios da Equipe com Scrum

Page 3: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

IntroduçãoMetodologia Scrum

Page 4: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

História do Scrum

• Jeff Sutherland e Ken Schwaber conceberam Scrum em 1995• Scrum – jogo de Rugby• Metodologia com base no livro ‘O Novo Novo Jogo de Desenvolvimento de Produtos’

de Takeuchi e Nonaka• Equipes obtém sucesso quando recebem objetivos e não tarefas• As melhores equipes são aquelas que recebem direção e liberdade de criar suas

próprias táticas• Criação da Aliança Scrum em 2002• Publicação do Guia Scrum em 2010• Mais de 1000 livros publicados sobre Scrum

Page 5: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Metodologia Ágil

“Desenvolvimento Agile” é um termo geral para várias metodologias de

desenvolvimento de software iterativas e incrementais. As metodologias ágeis

mais populares incluem Extreme Programming (XP), Scrum, Crystal, Dynamics

System Development Method (DSDM), Lean Development, e Feature-Driven

Development (FDD).

https://www.versionone.com/agile-101/

Page 6: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Metodologias Ágeis

• Extreme Programming (XP)

• Scrum

• Crystal

• Dynamics System Development

• Lean Development

• Feature-Driven Development

Page 7: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Conhecimento Tácito vs Explítico

• Tácito = adquirido por experiência,

difícil de documentar ou verbalizar

• Explícito = adquirido através de

documentação, compartilhamento

verbal ou treinamentos

Page 8: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Scrum vs Métodos Tradicionais

• Escopos incertos ou desconhecidos

• Requisitos mudam constantemente

• Atividades não são muito bem definidas

• Processo iterativo com dependência no anterior

• Sucesso = satisfação do cliente

• Resultados de valor

Page 9: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Manifesto Ágil

Page 10: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Manifesto Ágil

Indivíduos e Interações Ao invés de Processos e Ferramentas

Software que funciona Ao invés de Documentação Extensiva

Colaboração do Cliente Ao invés de Negociações de contrato

Responder às mudanças Ao invés de Seguir um plano

Estamos descobrindo melhores meios de desenvolver programas enquanto

criamos e ajudamos outros a desenvolverem. Aprendemos a valorizar:

Isso significa que, embora exista valor nos itens da direita, damos mais valor

aos itens da esquerda.

Page 11: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Funções Scrum

Page 12: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Product Owner

• Gerencia o Product Backlog (Backlog do

Produto)

• Gerencia os lançamentos ou releases

• Gerencia os Stakeholders

(envolvidos/interessados)

• Trabalha de perto à Equipe Scrum

Page 13: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Scrum Master

• Líder-servo da equipe

• Equipe escolhe o Scrum Master

(recomendado)

• Remove impedimentos

• Treina a equipe

• Intermediação da comunicação entre

Stakeholders, Product Owner e Equipe

Page 14: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Equipe Scrum

• Seguem meta comum

• Seguem normas e regras

• Demonstram respeito uns com os

outros

Page 15: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Geralmente 3 Sprints para amadurecimento

Entregas previsíveis

Trabalho e velocidade constante

Integração Profissional

Page 16: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Compartilham as mesmas normas e regras

Toda equipe é responsável pela entrega

A equipe tem autoridade

Trabalha com toda autonomia possível

Características

Page 17: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

A equipe se auto organiza

As habilidades da equipe são equilibradas

A equipe é pequena e não tem nenhuma subequipe

As pessoas dentro da equipe trabalham integralmente

para sua equipe

Membros da equipe trabalham no mesmo local físico

Características

Page 18: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Tempo e local do Scrum Diário

A Definição de “Pronto” usada para decidir se o trabalho

foi completado ou não

Guias de codificação

Ferramentas a serem usadas

Manutenção do ALM do projeto

Regras

Page 19: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Toda equipe compartilha responsabilidade pelos

sucessos e fracassos da equipe

Criar o Backlog da Sprint

Reunião de Scrum Diário;

Garantir produto completo entregue;

Atualizam projeto e esforço para gerar o gráfico

Burndown

Responsabilidade

Page 20: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Artefatos Scrum

Page 21: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Backlog do Produto

• Lista de itens a serem desenvolvidos, com estimativas

• Substitui artefatos tradicionais de especificação

• Product Owner gerencia

• Itens escritos em forma de estórias de usuário

• Valor agregado

• Ordenados por prioridade e valor

• Nível de detalhes varia

• Não há itens de ação

• DOCUMENTO VIVO

Page 22: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Estórias de Usuário

• Breve narrativa do propósito da funcionalidade• Seguem estrutura de Ator, Ação e Conquista

Como um [ator], Eu [quero/preciso] [ação] para que [conquista]Ou, numa versão mais curta:

Como um [ator], Eu [quero/preciso] [conquista]

Page 23: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Estimativa de Esforço

• Itens do Backlog do Produto são priorizados e estimados

• Estimativa mais comum com a sequência Fibonacci (1,2,3,5,8,13,21,34,etc)

• Estimativa deve ser compartilhada entre os membros da equipe

• Estimativas não são horas!

Page 24: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Planning Poker®

• Baralho numerado com a sequência Fibonacci

• Após ouvir a explicação e/ou esclarecimentos sobre os requisitos / estórias de usuário

• Equipe escolhe carta com numeração equivalente ao esforço estimado

• Unanimidade ou maioria definem o esforço

• Se há confusão, estimativa não será homogênea nem unânime

Page 25: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Burndown

• Gráfico de medição de

trabalho

• Velocidade ≈ ritmo de

progresso

0

5

10

15

20

25

30

35

1 2 3 4 5 6 7 8 9 1 0 1 1

BURNDOWN DO PRODUTOBurndown Estimado Burndown Real Velocidade

Page 26: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Sprint Backlog

• Lista de itens do Backlog do Produto que serãoentregues durante a Sprint

• Atividades relacionadas aos itens de Backlogdo Produto

• Atualizado diariamente pela equipe e ScrumMaster

• Pode ser colocado em um quadro para facilitaro acompanhamento

Page 27: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Definição de Pronto

• Itens necessários para considerar um item do Backlog do Produto

100% finalizado

• Diferentes níveis da definição de pronto podem existir

• Backlog

• Sprint

• Lançamentos

• Etc.

Page 28: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Eventos Scrum

Page 29: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Sprint

• Atividades necessárias

para completar os itens

comprometidos

• Normalmente entre 2 a 4

semanas

Requisitos

dos Stakeholders

Lançamento

Atualizar Backlog

do Produto

Sessão

Planejamento da

Sprint

Scrum Diário

Sessão Revisão da

Sprint

Produto

potencialmente

entregável

Retrospectiva da

Sprint

Page 30: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Processo Sprint

• Planejamento da Sprint

• 8 horas para cada 4 semanas de Sprint

• Sessão planejamento do que será entregue

• Sessão planejamento de como será entregue

Page 31: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Planejamento da Sprint – O que

• Planejamento da Sprint

• O Product Owner define a Meta da Sprint

• Com base na meta os itens relevantes do Backlog do Produto

são escolhidos pelo Product Owner

• Os itens são atualizados e divididos em estórias menores

para que sejam completadas durante uma Sprint

• Os itens são estimados e priorizados

• A equipe define sua capacidade para a Sprint

Page 32: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Planejamento da Sprint - Como

• Identificar tarefas necessárias

• Discutir quaisquer impedimentos ou necessidades relacionadas

Page 33: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Scrum Diário

Reunião curta e diária de acompanhamento

Reunião da Equipe, não de gestor e equipe

Geralmente 15 minutos

O que ele/ela completou desde a última reunião de

Scrum Diário?

O que ele/ela irá completar até a próxima reunião de Scrum diário?

Quais são os impedimentos para que ele/ela complete suas tarefas?

Page 34: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Revisão da Sprint

• Geralmente 4 horas para cada 4 semanas de Sprint

• Reunião informal e simples

• Apresentação do que foi completado

• Geralmente inclui o PO, Scrum Master

Page 35: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Retrospectiva

• Geralmente 3 horas para cada 4 semanas de Sprint

• O que deu certo

• O que não deu certo

• O que deve ser feito para melhorar a próxima Sprint

• Inspecionar e Adaptar

• NÃO É HORA DE LAVAR ROUPAS SUJAS

Page 36: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Planejamento de Lançamentos

• Não é obrigatória, genérica e de alto nível

• Define o que será publicado / enviado ao cliente de acordo com

• Uma lista priorizada do Backlog do Produto

• A velocidade (estimada) da Equipe Scrum

• Condições de satisfação (metas para a agenda, escopo e

recursos)

Page 37: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Atividade 1Estrutura Scrum

Page 38: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Estudo de CasoAplicando Scrum

Page 39: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Alessandro Product Owner

• Estudo de caso páginas 32 - 36

Page 40: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Atividade 2Retrospectiva Scrum

Page 41: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Scrum em práticaAplicando Scrum no seu projeto

Page 42: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Todos têm a mesma responsabilidade

Equipe multifuncional

Não há hierarquia, podendo haver líder técnico

Equipe trabalha em conjunto para completar a definição de pronto

Equipe possui autonomia para se auto organizar e auto gerenciar

Equipe se mantém junta do início ao fim do projeto

Equipe Scrum

Page 43: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Definindo e Garantindo Qualidade

Page 44: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Qualidade pode ser definida como...

Melhoria contínua

Definição de pronto

Aumentar a qualidade em cada Sprint

Ser realista

Abolir Show de Ego

Satisfação do Cliente

Page 45: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Quanto mais cedo defeitos forem encontrados e mitigados, menor o trabalho posterior para consertá-los

Motivos para bugs:

Falta de conhecimento do sistema

Falta de conhecimento técnico

Falta de motivação

Falta de tempo

Falta de coordenação

Apontando Bugs

Page 46: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

5 15

60

120

480

0

100

200

300

400

500

Refinamento de Backlog Código e Testes Unitários Testes de Integração Testes de UAT e Staging Go-Live

Minutos gastos para consertar um Bug

Evitar Bugs é Vital

Page 47: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Refinamento do Backlog

• Esquecer tudo que for presumido sobre o Backlog

• Questionar o Product Owner e esclarecer

• Bugs são eliminados antes do código ser escrito

Page 48: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Código e Testes Unitários

• Testes pequenos que validam código

• Rodar testes sempre que novo código é criado

• Evitar bugs antes do merge/build

Page 49: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Testes de Integração

• Quando bugs se escondem mas causam problemas

com outros códigos da solução

Page 50: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Testes manuais e aceite

• Quando o código está muito bem disfarçado

• É encontrado “sem querer” pelo cliente

• Esforço para duplicar o problema e encontrar o código

infrator

Page 51: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Depois do Go-Live

• Código já está sendo vendido ou usado em produção

• Cliente encontra o problema enquanto tenta usar o

aplicativo

• Frustração e insatisfação

• Afeta a marca, organização e projeto

Page 52: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Atividade 3Como evitar Bugs

Page 53: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Como lidar com Bugs

Page 54: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Bugs dentro e fora da Sprint

• Scrum Master e Product Owner definem prioridade e criticidade

• Aconselha-se incluir bugs na próxima Sprint

• Evitar cascata

• Planejar Bugs, não reagir

• Estimar Bugs

• Como estórias reservadas

• Buffer de dias da Sprint

Page 55: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Atividade 4Qualidade de Código e Ferramentas Favoritas

Page 56: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Boas Práticas e Padrões

Page 57: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Estimativas Ágeis

• Estudo de caso de estimativas em horas vs estimativas em esforço

• Páginas 44 - 48

Page 58: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Testes Ágeis

• Existem vários tipos de testes• Micro testes• Testes unitários• Testes manuais• Testes automatizados (incluindo CodedUI)• Testes exploratórios• Testes de aceite

• Desenvolver com testes (TDD)

• Estrutura AAA

Page 59: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Análise de Cobertura de Código

• Porcentagem de código com testes correspondentes

• Entre 60% - 80%

• Nem tudo precisa de testes

Page 60: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Arquitetura emergente e Desenvolvimento Evolutivo

Page 61: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Aptos para o Propósito

• Parafraseando John F. Kennedy:

Não é o que o projeto pode fazer por você, mas o que você pode fazer pelo projeto!

• Sair da zona de conforto

Page 62: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Evitar Requisitos e Design Iniciais

• Projetos evolutivos,

requisitos evolutivos

• Funcionalidades sem uso

• Liberdade Criativa!

• Criar o necessário, não o

que se quer

45%

19%

16%

13%7%

Funcionalidades sem uso

Nunca

Raramente

Algumas Vezes

Frequentemente

Sempre

Page 63: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Desenvolver em Fatias

• Desenvolver todas as camadas

de uma certa funcionalidade

• Exemplo Login:

• Tabela do DB

• Lógica de Login

• Tela de Login

Aplicação Cliente

Servidor

Banco de Dados

Fatia 1 Fatia 2 Fatia 3 Fatia 4 Fatia 6

Page 64: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Requisitos, Lançamentos e Entregas

Page 65: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Qualidade no Código = Qualidade no Software• Padrão de qualidade definido pela equipe

• Funcionalidades que suprem necessidades, causam satisfação

• Livre de deficiências (Bugs, defeitos, etc.)

Page 66: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Boas Práticas

• Solid

• Single Responsiblity

• Open-Close

• Liskov

• Interface

• Dependencia

Page 67: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Boas Práticas

• Código Limpo

• Compreensão do fluxo

• Compreensão dos objetos

• Compreensão das

responsabilidades

• Compreensão do comportamento

• Compreensão do propósito

Page 68: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Boas Práticas

• Código Putrefato• Inchado• Abusa do OOP• Dispensável• Acoplador

Page 69: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Suporte ao Código de Qualidade

• Gerenciar o código

• Repositório de código

• 1000 a 100000 linhas

Page 70: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Análise, Métricas e Clonagem de Código

• Análise de Código (revisão)

• Visual Studio

• Métrica de código

• Visual Studio

• Código Clonado

• Visual Studio

Page 71: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Integração Contínua

• Merges pequenos

• Redução de Risco

• Integração diária

• Build

• Check-in

• Testes automatizados

Page 72: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Atividade 5Padrões de Desenvolvimento

Page 73: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Dívida Técnica

• Código cheio de pendências

e problemas postergados

• Quanto maior a dívida,

maior o custo de pagamento

Page 74: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Atividade 6Dívida Técnica

Page 75: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Outras boas Práticas

• KISS

• MVVM

• DRY

Page 76: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Atividade 7Regras de Qualidade da Equipe

Page 77: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Desafios ScrumPor que é tão difícil?

Page 78: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Finalizar e evitar trabalho sem conclusão

• Herói do código

• Guerra de Ego

• Trabalho em equipe

• Estimativa em equipe

• Comprometimento em equipe

• Feedback do Cliente

Page 79: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Renegociação do Escopo

• Não é culpa de ninguém

• Presuma inocência

• Não é falta de profissionalismo

Page 80: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Criando Experimentos (Spikes)

• Criar pequenos apps (console)

• Testar pequenas funcionalidades

• Código improvisado

• Experimento descartável

• Compartilhe seus resultados

Page 81: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Todos são iguais

Conhecimento de todas as funções

Ninguém é insubstituível

Todos são responsáveis

Compartilhar o conhecimento

Comunicação transparente

União e trabalho em equipe

Colaboração

Page 82: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Não adulterar o Scrum

Page 83: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Ausência de Confiança

Medo de Conflito

Falta de Compromisso

Fuga da responsabilidade

Falta de atenção

Problemas comuns

Page 84: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Lidando com gente difícil

Page 85: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Não existe receita!

Inspeção e adaptação

Respeito ao indivíduo

Consenso em equipe

Regras de equipe

Ambiente de equipe

Melhorando a produtividade

Page 86: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Domina suas estimativas

Seguem a metodologia

Transparente

Comprometidos

Trabalham juntos (sem competição ou imaturidade)

Comprometidos com o sucesso do projeto

Equipes de alto desempenho

Page 87: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Atividade 8Melhorias Contínuas

Page 88: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Atividade 9Planejamento da Scrum

Page 89: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Atividade 10Tarefas e Projeção

Page 90: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

RevisãoDúvidas e esclarecimentos

Page 91: Aplicando Scrum em Equipes - zuEuz · “Desenvolvimento Agile” é um termo geral para várias metodologias de desenvolvimento de software iterativas e incrementais. As metodologias

Avaliação

10 Questões para validar seus conhecimentos