Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Prof. MSc. Tarcísio Peres
UNIDADE II
Gerenciamento de 
Projetos de Software
 Priorização de backlog e roadmaps ágeis.
 Ciclos de desenvolvimento iterativos: sprints.
 Daily stand-ups e sincronização de equipe.
 Gestão de backlogs e iterações.
 Integração Contínua (CI) e Entrega Contínua (CD).
 Testes automatizados e TDD (Test Driven Development).
 Deployment e monitoramento em ambientes ágeis.
Conteúdo da Unidade II 
 O planejamento, a execução e a gestão ágil se destacam como abordagens essenciais para 
garantir a entrega de valor contínuo e adaptativo às necessidades do cliente.
 A priorização de backlog e a elaboração de roadmaps ágeis são etapas cruciais neste 
processo, permitindo que a equipe se concentre nas funcionalidades e melhorias que trazem 
maior benefício ao produto final.
 A definição de um backlog claro e bem priorizado é fundamental para direcionar os esforços 
da equipe, assegurando que os itens de maior valor sejam trabalhados primeiro.
 Os ciclos de desenvolvimento iterativos, conhecidos como 
sprints, são a espinha dorsal das metodologias ágeis, 
permitindo ajustes rápidos e respostas ágeis às mudanças.
Planejamento e Execução Ágil
 As reuniões diárias ou daily stand-ups desempenham um papel vital na sincronização da 
equipe durante os sprints, permitindo a comunicação contínua e transparente.
 O backlog do produto é frequentemente revisitado e reavaliado à medida que novos insights 
e feedbacks são obtidos, com o Product Owner tomando decisões informadas sobre 
as prioridades.
 Ao final de cada sprint, uma revisão detalhada é realizada para avaliar o trabalho concluído e 
identificar áreas de melhoria.
 A integração das práticas de priorização de backlog, ciclos de 
desenvolvimento iterativos, daily stand-ups e gestão contínua 
de backlogs e iterações constitui o núcleo da gestão ágil.
Sincronização e Comunicação
 O backlog do produto é uma lista ordenada de tudo o que é necessário para o produto, 
contendo funcionalidades, melhorias, correções e requisitos técnicos.
 A priorização é feita de maneira que os itens de maior valor e impacto sejam trabalhados 
primeiro, com base em critérios como valor de negócio, feedback de usuários, urgência e 
viabilidade técnica.
 Métodos comuns como a matriz de Eisenhower e o WSJF (Weighted Shortest Job First) são 
utilizados na priorização de backlog, garantindo que as tarefas com maior impacto relativo 
sejam abordadas primeiro.
 A matriz de Eisenhower organiza as tarefas com base em 
urgência e importância, enquanto o WSJF avalia tarefas pelo 
valor ao usuário, criticidade do tempo e redução de risco.
Priorização de Backlog
Priorização de Backlog
Fonte: autoria própria.
 O roadmap é uma representação visual e estratégica do planejamento de longo prazo do 
desenvolvimento do produto, oferecendo uma visão de alto nível dos principais objetivos 
e entregas.
 Um roadmap ágil é flexível e adaptável, permitindo ajustes conforme necessário e 
destacando marcos importantes ao longo do tempo.
 A principal diferença entre o backlog e o roadmap está no nível de detalhe e no propósito, 
sendo o backlog mais detalhado e operacional, enquanto o roadmap é mais abstrato 
e estratégico.
 Integrando backlog e roadmap, as equipes ágeis conseguem 
planejar e executar o desenvolvimento de maneira eficiente, 
garantindo o alinhamento com os objetivos do negócio.
Roadmap e Alinhamento Estratégico
Roadmap
Fonte: imagem produzida pelo próprio autor com tecnologia DALL-E, uma 
ferramenta de inteligência artificial desenvolvida pela OpenAI.
 Perspectiva artística 
 Os sprints são períodos de tempo fixos durante os quais a equipe trabalha para completar 
um conjunto específico de tarefas do backlog, permitindo que o produto evolua de maneira 
incremental e adaptativa.
 A técnica de time boxing, utilizada nos sprints, ajuda a criar um ritmo sustentável de trabalho, 
evitando a sobrecarga e promovendo um ciclo contínuo de entrega de valor.
 A duração fixa dos sprints facilita a previsão e o planejamento, permitindo que a equipe e os 
stakeholders compreendam claramente o que pode ser realizado dentro de cada ciclo.
 Ao final de cada sprint, há uma oportunidade para revisar o 
trabalho realizado, coletar feedback e ajustar o plano conforme 
necessário, promovendo uma abordagem iterativa 
e incremental.
Ciclos de Sprints
 As reuniões do sprint no Scrum incluem o planejamento do sprint, a reunião diária (daily 
stand-up), a revisão do sprint e a retrospectiva do sprint, cada uma desempenhando um 
papel essencial na eficácia do processo.
 O planejamento do sprint envolve a seleção dos itens do backlog que serão trabalhados, com 
a equipe definindo uma meta clara e criando um plano detalhado para atingir essa meta.
 Práticas comuns como os “Scrum Buts” podem comprometer a eficácia dos sprints, 
especialmente quando a equipe não consegue completar as tarefas planejadas ou quando o 
escopo é alterado durante o sprint.
 A estrutura do “Scrum But” envolve três componentes 
principais: a prática original do Scrum, a modificação ou 
omissão feita e o impacto dessa mudança.
 “Fazemos Scrum, mas nossos sprints são flexíveis e podem 
ser estendidos se não completarmos o trabalho”. 
 “Fazemos Scrum, mas nossas reuniões diárias geralmente 
duram 30 minutos ou mais porque discutimos detalhes 
técnicos extensivamente”. 
Rituais e Cerimônias do Scrum
 Durante o sprint, as daily stand-ups mantêm todos sincronizados e identificam problemas 
rapidamente, sendo essencial que essas reuniões permaneçam rápidas e focadas.
 Ao final do sprint, a equipe realiza duas reuniões importantes: a revisão do sprint e a 
retrospectiva do sprint, garantindo o alinhamento com as expectativas e necessidades 
dos stakeholders.
 A revisão do sprint permite que a equipe apresente o trabalho concluído e colete feedback, 
sendo crucial a participação ativa dos principais stakeholders.
 A retrospectiva do sprint oferece uma oportunidade para a 
equipe refletir sobre o processo, discutir o que funcionou bem 
e identificar áreas de melhoria para os próximos sprints.
 Ignorar ou minimizar a retrospectiva pode levar à repetição de 
erros e à estagnação no desenvolvimento de práticas 
mais eficazes.
Rituais e Cerimônias do Scrum
 Os sprints promovem uma cultura de entrega contínua e de alta qualidade, incentivando a 
equipe a manter altos padrões em todas as etapas do desenvolvimento.
 Cada incremento do produto deve ser funcional e potencialmente utilizável, assegurando que 
o trabalho esteja sempre alinhado com as expectativas do cliente.
 A abordagem iterativa e incremental dos sprints ajuda a gerenciar o risco, permitindo que a 
equipe detecte e resolva problemas rapidamente.
 A combinação dessas práticas ágeis resulta em um ambiente 
de trabalho dinâmico, adaptável e centrado no cliente, focado 
na entrega de valor contínuo e na melhoria contínua do 
produto final.
Entrega Contínua e Qualidade
Na priorização de backlog, qual técnica avalia as tarefas com base em urgência e importância?
a) WSJF (Weighted Shortest Job First)
b) Matriz de Eisenhower
c) Scrum
d) Daily stand-up
e) Sprint review
Interatividade
Na priorização de backlog, qual técnica avalia as tarefas com base em urgência e importância?
a) WSJF (Weighted Shortest Job First)
b) Matriz de Eisenhower
c) Scrum
d) Daily stand-up
e) Sprint review
Resposta
 O principal objetivo das daily stand-ups é garantir que todos na equipe estejam cientes do 
que está acontecendo e possam colaborar de forma mais eficaz.
 Cada membro da equipe responde a três perguntas fundamentais: o que fizeram desde a 
última reunião, o que planejam fazer até a próxima e se há algum impedimento.
 A prática de realizar essas reuniões em pé visa reforçar a brevidade e a objetividade 
das discussões.
 A sincronização de equipe promovida pelas daily stand-ups é 
vital para osucesso das metodologias ágeis.
Daily Stand-ups e Sincronização de Equipe
 As daily stand-ups melhoram a comunicação e a colaboração, criando um ambiente de 
transparência e responsabilidade.
 Elas permitem que a equipe identifique rapidamente desvios do plano original e ajuste suas 
ações conforme necessário.
 A daily stand-up ajuda a construir confiança dentro da equipe 
e assegurar o comprometimento com os objetivos do sprint.
 Para entender a criticidade da sincronização, o termo "Scrum" 
no desenvolvimento ágil deriva do jogo de rúgbi, que exige 
intensa coordenação e trabalho em equipe.
Benefícios das Daily Stand-ups
Fonte: imagem produzida pelo próprio autor com 
tecnologia DALL-E, uma ferramenta de inteligência 
artificial desenvolvida pela OpenAI.
 No Scrum ágil, o sucesso de um projeto depende da capacidade da equipe de colaborar 
efetivamente, ajustar-se às mudanças e focar em entregas incrementais.
 As cerimônias e os papéis definidos no Scrum promovem a comunicação contínua, inspeção 
e adaptação.
 O termo "Scrum" foi popularizado no contexto de desenvolvimento de produtos por Hirotaka 
Takeuchi e Ikujiro Nonaka em 1986.
 Ferramentas de software são utilizadas para auxiliar na 
condução de daily stand-ups, melhorando a comunicação e a 
visibilidade das reuniões.
Scrum e Metodologias Ágeis
 Preparar uma reunião diária é crucial; a reunião deve ser breve, estruturada e focada na 
comunicação clara.
 Para ser eficaz, é importante evitar que a reunião se estenda além do tempo alocado ou que 
participantes não venham preparados.
 A preparação garante que o tempo seja usado eficientemente e que todos os pontos 
importantes sejam cobertos.
 A preparação ajuda a identificar impedimentos rapidamente, 
promovendo a responsabilidade e o compromisso com as 
tarefas atribuídas.
Preparação para Daily Stand-ups
 Um backlog é uma lista organizada e priorizada de tarefas, requisitos, melhorias e 
funcionalidades para um projeto de software.
 O Product Backlog é gerenciado pelo Product Owner e é dinâmico, sendo atualizado 
continuamente.
 O Sprint Backlog é uma lista mais específica, gerenciada pela equipe de desenvolvimento, 
detalhando as tarefas para a iteração.
 A boa gestão do backlog envolve a definição clara dos itens, 
garantindo que cada item seja compreensível e estimável 
pela equipe.
Gestão de Backlogs e Iterações
 User stories são descrições curtas e informais de funcionalidades do sistema, escritas do 
ponto de vista do usuário final.
 Elas são escritas em linguagem simples, evitando jargões técnicos, para que todos 
compreendam as necessidades do usuário.
 As user stories são centradas nas necessidades dos usuários finais, promovendo 
comunicação e colaboração entre a equipe.
 Cada user story deve incluir critérios de aceitação claros e específicos que definem as 
condições para ser considerada completa.
 Como [tipo de usuário], eu quero [ação ou funcionalidade], 
para que [benefício ou valor].
 Como um comprador online, eu quero poder salvar itens no 
meu carrinho de compras, para que eu possa continuar 
comprando mais tarde sem perder minha seleção.
User Stories no Desenvolvimento Ágil
 Revisões regulares do backlog ajudam a manter a qualidade dos itens e ajustar as 
prioridades conforme necessário.
 O backlog grooming, agora muitas vezes chamado de backlog refinement, envolve 
esclarecer requisitos, priorizar itens e remover itens obsoletos.
 Estimações e identificação de dependências durante o refinamento são cruciais para o 
planejamento eficaz e a mitigação de riscos.
 Um backlog bem organizado e priorizado facilita a 
comunicação e o planejamento dentro da equipe.
Refinamento e Priorização do Backlog
 Exemplo de backlog
Backlog
Fonte: autoria própria.
ID Título Descrição
Priori-
dade
Estima-
tiva
Status
Critérios de 
Aceitação
Respon-
sável
Data de 
Criação
1
Login de 
usuário
Como um 
usuário, eu 
quero fazer 
login no 
sistema para 
acessar minhas 
informações 
pessoais.
Alta 5 Novo
Usuário pode 
fazer login com 
credenciais 
válidas, ver 
mensagem de 
erro para 
credenciais 
inválidas.
João 01/04
2
Página 
inicial
Como um 
usuário, eu 
quero ver 
informações
relevantes na 
página inicial 
para facilitar 
a navegação.
Média 3
Em 
andamento
Página inicial
carrega em 
menos de dois 
segundos, exibe 
informações 
personalizadas.
Maria 01/04
3
Carrinho de
compras
Como um 
usuário, eu 
quero adicionar 
itens ao meu 
carrinho.
Alta 8 Novo
Usuário pode 
adicionar e 
remover itens do 
carrinho, ver 
resumo do 
carrinho.
Carlos 02/04
 A transformação do backlog de produto em backlog da sprint é um processo essencial no 
Scrum, envolvendo seleção e priorização de itens.
 Durante a Sprint Planning, o Product Owner apresenta os itens prioritários do backlog de 
produto para o time de desenvolvimento.
 O time de desenvolvimento seleciona os itens que acredita ser capaz de concluir durante a 
sprint, formando o backlog da sprint.
 O progresso do backlog da sprint é monitorado por meio de práticas como reuniões diárias, 
gráficos de burndown e quadros Kanban.
Transformação do Backlog de Produto em Backlog da Sprint
Fonte: autoria própria.
50
45
40
35
30
25
20
15
10
5
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
 Gráficos de burndown são usados para mostrar o progresso da sprint, exibindo a quantidade 
de trabalho restante ao longo do tempo.
 Quadros Kanban ajudam a visualizar o fluxo de trabalho durante a sprint, promovendo a 
entrega contínua e a melhoria contínua.
 Limitar o trabalho em progresso (WIP) no Kanban impede que a equipe se sobrecarregue e 
ajuda a identificar gargalos no processo.
 O uso de quadros Kanban e gráficos de burndown facilita o 
monitoramento e a visualização do progresso do 
backlog da sprint.
Visualização e Monitoramento da Sprint
 Exemplo de quadro Kanban.
Kanban
Fonte: autoria própria.
Implementar
gateway de
pagamento
Otimizar
carregamento
de páginas
Corrigir bug
no cálculo de
frete
Integrar
sistema de
feedback dos
clientes
Redesign da
página de
checkout
Atualizar
políticas de
privacidade
Adicionar
recomenda-
ções de 
produtos
M
a
r
k
e
t
i
n
g
D
e
s
i
g
n
D
e
v
e
l
o
p
m
e
n
t
 No final de cada sprint, a Sprint Review permite inspecionar o incremento do produto e 
adaptar o backlog conforme necessário.
 A Sprint Review envolve stakeholders e coleta feedback, que é essencial para ajustar o 
backlog e alinhar o desenvolvimento às expectativas.
 A Sprint Retrospective é uma reunião interna do Scrum Team focada na melhoria contínua 
do processo de trabalho.
 A retrospectiva permite identificar o que funcionou bem e o 
que precisa ser melhorado, influenciando o backlog e as 
próximas sprints.
Revisão e Retrospectiva da Sprint
O que é um backlog no contexto do desenvolvimento ágil?
a) Uma lista de bugs que precisam ser corrigidos.
b) Um cronograma detalhado das entregas do projeto.
c) Uma lista organizada e priorizada de tarefas, requisitos, melhorias e funcionalidades a 
serem desenvolvidas.
d) Um relatório diário de progresso do projeto.
e) Um documento que descreve as políticas de desenvolvimento da empresa.
Interatividade
O que é um backlog no contexto do desenvolvimento ágil?
a) Uma lista de bugs que precisam ser corrigidos.
b) Um cronograma detalhado das entregas do projeto.
c) Uma lista organizada e priorizada de tarefas, requisitos, melhorias e funcionalidades a 
serem desenvolvidas.
d) Um relatório diário de progresso do projeto.
e) Um documento que descreve as políticas de desenvolvimento da empresa.
Resposta
 Qualidade é definida como a capacidade de um produto ou serviço atender às expectativas 
dos stakeholders.
 Gestão da qualidade no PMI envolve planejamento, garantia e controle daqualidade.
 Qualidade de software inclui requisitos funcionais e não funcionais, como segurança 
e usabilidade.
 Gold plating é a prática de adicionar funcionalidades extras não solicitadas, o que pode 
introduzir riscos e comprometer a qualidade.
Qualidade no PMI e Abordagem Tradicional
 CMMI (Capability Maturity Model Integration) define a qualidade de software como a 
capacidade de atender às necessidades dos usuários.
 O CMMI foca a melhoria contínua dos processos de desenvolvimento e a confiabilidade 
do produto.
 Práticas como gerenciamento de requisitos e verificação são fundamentais para a qualidade 
no CMMI.
 O modelo CMMI é metodológico e detalhado, fornecendo uma 
estrutura clara para garantir alta qualidade no desenvolvimento 
de software.
Qualidade de Software e CMMI
 Nas metodologias ágeis, a qualidade é integrada ao longo de todo o processo 
de desenvolvimento.
 Os problemas são identificados e corrigidos mais cedo, reduzindo o risco de defeitos.
 O gold plating é rigorosamente evitado, mantendo o foco nas necessidades reais do cliente.
 A agilidade promove a entrega contínua de valor ao cliente e a adaptação rápida às 
mudanças de requisitos.
Agilidade e Expansão dos Conceitos de Qualidade
 Os CMMI V2.0 e V3.0 incorporaram práticas ágeis como entregas incrementais e 
feedback contínuo.
 O modelo reconhece a necessidade de adaptação rápida e priorização com base no valor 
entregue ao cliente.
 Retrospectivas ágeis e reuniões diárias são alinhadas com os requisitos do CMMI.
 CMMI V3.0 introduziu novos domínios focados em dados e pessoas, integrando ainda 
mais a agilidade.
Integração de Práticas Ágeis no CMMI
 Testes no ágil são contínuos e integrados em cada iteração do desenvolvimento.
 BDD (Behavior Driven Development) e TDD (Test Driven Development) são métodos que 
garantem que o código atenda aos requisitos desde o início.
 A garantia de qualidade é uma responsabilidade compartilhada entre toda a equipe 
de desenvolvimento.
 A integração contínua de testes melhora a qualidade do produto final e facilita a adaptação 
às mudanças.
Testes Contínuos no Contexto Ágil
 A CI propõe a integração frequente de código em um repositório central, facilitando a 
detecção precoce de problemas.
 Pipelines de CI/CD automatizam a compilação, testes e implantação do código.
 A automação reduz a necessidade de intervenção manual e minimiza o risco de 
erros humanos.
 Ferramentas como Jenkins permitem a personalização dos pipelines para atender às 
necessidades específicas dos projetos.
Integração Contínua (CI) e Melhoria da Qualidade
 CD garante que o código esteja sempre pronto para ser implantado em produção.
 Pequenas alterações no código são testadas e integradas continuamente, facilitando a 
identificação rápida de problemas.
 A automação do processo de lançamento reduz riscos e aumenta a eficiência.
 CD permite uma resposta rápida às necessidades dos clientes e melhora a colaboração 
dentro da equipe de desenvolvimento.
Entrega Contínua (CD) e Feedback Rápido
 Exemplo pipeline CI/CD
Integração Contínua (CI) e Melhoria da Qualidade
Fonte: autoria própria.
Commit e 
Detecção de 
Mudanças
• Quando um desenvolvedor faz um commit de código em um repositório, o 
pipeline é acionado automaticamente. Ferramentas como Jenkins, GitLab 
CI, ou CircleCI monitoram o repositório em busca de mudanças.
Construção
• O código-fonte é compilado em um formato executável. Dependendo da 
linguagem de programação e do projeto, isso pode envolver ferramentas 
de construção com Maven, Gradle, ou Make.
Testes 
Automatizados
• Uma série de testes automatizados são executados para garantir que o 
novo código não quebre funcionalidades existentes. Isso pode incluir 
testes unitários, testes de integração e testes de sistema.
Análise de
Qualidade de
Código
• Ferramentas de análise estática de código, como SonarQube, podem ser 
usadas para verificar a qualidade do código, buscando padrões de código 
ruim, vulnerabilidades de segurança e aderência a padrões de codificação.
 Exemplo pipeline CI/CD
Integração Contínua (CI) e Melhoria da Qualidade
Empacotamento 
e Criação de 
Artefatos
• O código construído e testado é empacotado em artefatos que podem ser 
distribuídos, como arquivos JAR, WAR, ou contêineres Docker.
Implantação em 
Ambientes de 
Teste
• Os artefatos são implantados em ambientes de teste para verificações 
adicionais. Isso pode envolver a configuração de ambientes de teste 
semelhantes ao ambiente de produção.
Testes de 
Aceitação
• Testes de aceitação do usuário (UAT) e outros testes finais são realizados para 
garantir que o software atenda aos requisitos especificados.
Implantação em 
Produção
• Após a aprovação final, o software é implantado no ambiente de produção. Isso 
pode ser feito de forma automática ou manual, dependendo das políticas 
da organização.
Fonte: autoria própria.
 A IA é utilizada para otimizar testes de software e análise de código estático na CI.
 Algoritmos de aprendizado de máquina podem prever falhas e priorizar testes críticos.
 A IA facilita a gestão de recursos e a escalabilidade do ambiente de CI.
 A análise preditiva da IA melhora a estabilidade do código e a confiabilidade do processo 
de desenvolvimento.
Inteligência Artificial e CI/CD
Como as metodologias ágeis tratam o conceito de qualidade ao longo do ciclo de 
desenvolvimento?
a) A qualidade é verificada apenas na fase final do desenvolvimento.
b) A qualidade é tratada como uma responsabilidade de um único membro da equipe.
c) A qualidade é integrada de forma contínua ao longo de todo o processo de 
desenvolvimento.
d) A qualidade é garantida somente por meio de testes de aceitação ao final do projeto.
e) A qualidade é assegurada por meio de revisões externas ao final de cada sprint.
Interatividade
Como as metodologias ágeis tratam o conceito de qualidade ao longo do ciclo de 
desenvolvimento?
a) A qualidade é verificada apenas na fase final do desenvolvimento.
b) A qualidade é tratada como uma responsabilidade de um único membro da equipe.
c) A qualidade é integrada de forma contínua ao longo de todo o processo de 
desenvolvimento.
d) A qualidade é garantida somente por meio de testes de aceitação ao final do projeto.
e) A qualidade é assegurada por meio de revisões externas ao final de cada sprint.
Resposta
 Testes automatizados são programas que verificam se outras partes do software estão 
funcionando como esperado.
 Eles são fundamentais para garantir a qualidade e a robustez do software durante seu 
desenvolvimento e manutenção.
 A automação dos testes garante que o software continue funcionando como esperado 
mesmo após múltiplas alterações e atualizações.
 Existem várias categorias de testes automatizados, cada uma 
focada em diferentes aspectos do software.
Importância dos Testes Automatizados
 Os testes unitários verificam partes individuais do código, como funções ou métodos de 
forma isolada.
 Testes de integração verificam se diferentes partes do sistema funcionam bem juntas.
 Testes de sistema ou testes end-to-end verificam o software como um todo, simulando o 
comportamento do usuário.
 Testes de regressão são testes que verificam se novas alterações ou adições ao código não 
introduziram novos erros.
Tipos de Testes Automatizados
 Ferramentas como JUnit, PyTest e Selenium são populares para a criação e execução de 
testes automatizados.
 Um exemplo prático é a aplicação de cupons de desconto em uma aplicação web de vendas, 
testando desde o cálculo do desconto até o checkout.
 A automação desses testes significa que toda vez que uma mudança é feita no código, todos 
os testes são executados automaticamente.
 Isso proporciona uma confiança significativa de que o software 
funciona conforme esperado, mesmo após múltiplas 
alterações e atualizações.
Ferramentas e Exemplos de Testes Automatizados
 O papeldo QA (Quality Assurance) é fundamental no contexto dos testes automatizados, 
garantindo que o software atenda aos padrões de qualidade desejados.
 A integração de QA com testes automatizados começa no início do ciclo de desenvolvimento 
em ambientes ágeis.
 Desenvolvimento Orientado por Testes (TDD) é uma abordagem que prioriza a criação de 
testes antes do código, seguindo etapas de "vermelho-verde-refatorar".
 Refatorar o código após passar nos testes é crucial para 
garantir que ele seja limpo, eficiente e fácil de manter.
Papel do QA e Desenvolvimento Orientado por Testes (TDD)
 O processo de TDD começa escrevendo um teste automatizado antes mesmo de escrever o 
código da funcionalidade.
 O teste inicialmente falha porque a funcionalidade ainda não foi desenvolvida, marcando o 
estágio "vermelho".
 Depois de escrever o código para fazer o teste passar, o estágio "verde" é atingido, 
indicando que a funcionalidade básica está correta.
 A refatoração do código melhora sua estrutura e eficiência, 
garantindo que todos os testes continuem passando.
Implementação e Benefícios do TDD
 Um exemplo concreto é o desenvolvimento de um aplicativo de delivery, no qual o valor total 
de um pedido é calculado após se aplicar um cupom de desconto.
 Refatorar o código envolve aprimorar sua estrutura interna sem alterar seu comportamento 
externo, seguindo boas práticas de programação.
 Melhorar a eficiência do código pode incluir reescrever loops ineficientes para usar 
algoritmos mais eficientes, reduzindo o tempo de execução.
 A remoção de duplicação de código durante a refatoração é 
uma prática que melhora a reutilização e reduz erros.
Aplicação Prática de TDD e Refatoração
 Exemplo em C#, usando 
NUnit para testes.
Vermelho
Fonte: autoria própria.
 Exemplo em C#, usando 
NUnit para testes.
Verde
Fonte: autoria própria.
 Exemplo em C#, usando 
NUnit para testes.
Refatorado
Fonte: autoria própria.
 Deployment em ambientes ágeis envolve a entrega do software desenvolvido para um 
ambiente de produção de forma contínua e rápida.
 O ambiente de desenvolvimento é o lugar onde os programadores escrevem e testam o 
novo código.
 O ambiente de teste é onde o software é submetido a testes rigorosos para garantir que 
funcione conforme o esperado.
 O ambiente de homologação, ou pré-produção, permite uma 
última verificação antes da implantação definitiva no ambiente 
de produção.
Deployment e Ambientes de Desenvolvimento
 O monitoramento é crucial para garantir a qualidade e desempenho contínuos do software 
em produção.
 A cultura DevOps integra as práticas de desenvolvimento e operações, promovendo uma 
colaboração mais estreita entre essas áreas.
 O monitoramento contínuo e feedback rápido são essenciais para identificar e resolver 
problemas mais rapidamente.
 Ferramentas de integração contínua e entrega contínua 
automatizam o processo de build, teste e implantação 
do software.
Monitoramento e Cultura DevOps
Qual das seguintes ferramentas é amplamente utilizada para testes de integração e de 
sistema?
a) Junit
b) PyTest
c) Selenium
d) Jenkins
e) Nunit
Interatividade
Qual das seguintes ferramentas é amplamente utilizada para testes de integração e de 
sistema?
a) Junit
b) PyTest
c) Selenium
d) Jenkins
e) Nunit
Resposta
 BECK, K. Test driven development: by example. Boston: Addison-Wesley Professional, 2021.
 COHN, M. Agile estimating and planning. 1. ed. Londres: Pearson, 2005.
 CRISPIN, L.; GREGORY, J. Agile testing: a practical guide for testers and agile teams. 
Boston: Addison-Wesley Professional, 2009.
 PMI. Project Management Institute, 2024. Disponível em: https://www.pmi.org/. Acesso em: 
01 maio 2024.
 TAKEUCHI,H. ; NONAKA, I. The New New Product Development Game. Harvard Business 
Review, v. 64, n. 1, p. 137-146, jan. 1986.
Referências
ATÉ A PRÓXIMA!

Mais conteúdos dessa disciplina