Escolar Documentos
Profissional Documentos
Cultura Documentos
de Software
Capítulo 1. Contexto Desenvolvimento de Software Ágil
Apresentação.
Próximas Aulas.
Abordagens Ágeis de
Desenvolvimento
de Software
Próximas Aulas
01. 03.
Contexto. Práticas Necessárias.
02. 04.
Manifesto Ágil. Mitos do Desenvolvimento.
Abordagens Ágeis de Desenvolvimento
de Software
Aula 1.2. Contexto
Contextualização.
Métodos Tradicionais.
Métodos Ágeis.
Contexto Ágil
1. Modelos Tradicionais.
2. Modelos Ágeis.
3. E o Desenvolvimento? Muda?
Tradicional X Ágil
https://www.inovalab.net.br/post/metodologia-%C3%A1gil-tudo-que-voc%C3%AA-precisa-saber-antes-de-come%C3%A7ar-a-usar
Tradicional X Ágil
https://www.inovalab.net.br/post/metodologia-%C3%A1gil-tudo-que-voc%C3%AA-precisa-saber-antes-de-come%C3%A7ar-a-usar
Desenvolvimento Ágil
1. Processo Cíclico.
2. Documentação Inteligente.
3. Comunicação Intensa.
4. Adaptabilidade.
Conclusão
• Agilidade é EVOLUÇÃO
Próximas Aulas
01. 03.
Manifesto Ágil. Mitos do Desenvolvimento.
02. 04.
Práticas Necessárias. Papel do Desenvolvedor.
Abordagens Ágeis De Desenvolvimento
de Software
Aula 1.3. Manifesto Ágil
Manifesto Ágil:
Valores;
Princípios.
Boas Práticas Anos 90
1. Crystal Methods
2. Refactoring
3. DSDM
4. Scrum & Programação em Pares
5. FDD
6. Adaptative SW (XP)
7. ...
8. 2001 (MANIFESTO ÁGIL)
Manifesto Ágil - Valores
Manifesto Ágil - Princípios
Conclusão
• Manifesto Ágil.
• Agilidade é ADAPTAÇÃO.
Próximas Aulas
01. 03.
Práticas Necessárias. Papel do Desenvolvedor.
02. 04.
Mitos do Desenvolvimento. ...
Abordagens Ágeis De Desenvolvimento
de Software
Aula 1.4. Práticas Necessárias
Dificuldades técnicas.
Práticas Necessárias.
Características Desenvolvimento Ágil
1. Entrega Frequente
3. Versões
4. Integração constante
5. ...
Dificuldades Técnicas
Desenvolvimento Ágil
4. ...
Dívida Técnica
1. Processo de Qualidade
2. Integração Contínua
1. Verificação
2. Validação
3. Conhecimento técnico
4. Apoio Ferramental
5. Automatização
6. ...
Integração Contínua
3. Padrões de Projeto
5. Ritmo Sustentável
6. Padrão de Nomenclatura
7. Gestão de Equipes
8. ...
Conclusão
• Métodos Ágeis não é sinal de felicidade.
• Integração Contínua.
Próximas Aulas
01. 03.
Mitos do Desenvolvimento. ...
02. 04.
... Papel do Desenvolvedor.
Abordagens Ágeis De Desenvolvimento
de Software
Aula 1.5. Mitos do Desenvolvimento Ágil
Falso Ágil.
Ágil ou Caos?
01. 03.
Papel do Desenvolvedor. Testes de Software.
02. 04.
Abordagens Ágeis. ...
Abordagens Ágeis De Desenvolvimento
de Software
Aula 1.6. Papel do Desenvolvedor
Colaboração;
Times Ágeis;
Escopo de Atuação.
Desenvolvimento Tradicional x Ágil
TRADICIONAL:
• Desenvolvedor apenas codifica requisitos.
• Atuação limitada.
• Sem liberdade.
ÁGIL:
• Mais que codificar.
• Dinamismo.
• Maior liberdade.
• Envolvimento.
• Qualidade.
• Times autogerenciáveis
Funções do Desenvolvedor Ágil
Colaboração e envolvimento!!!!
• Estimativas.
• Antecipação de problemas.
• Identificação de modelos ideais.
• Sugerir boas práticas de programação.
• Verificação e envolvimento quando necessário na validação.
• Implantação.
Conclusão
01. 03.
Metodologias Ágeis. Testes de Software.
02. 04.
TDD. ...
Abordagens Ágeis De Desenvolvimento
de Software
Capítulo 2. TDD
Definição:
Critérios de Qualidade de Software.
Automação.
Agile Testing.
Testes de Software
1. Agilidade
2. Custos
3. Simplicidade
4. Segurança
5. Antecipação dos erros
Agile Testing
https://www.amazon.com/Agile-Testing-Practical-Guide-Testers/dp/0321534468
Agile Testing
Testes F.I.R.S.T
• FAST
• INDEPENDENT
• REPEATABLE
• SELF-VALIDATING
• TIMELY
Benefícios Agile Testing
• Software correto
• Alta Qualidade
• Prazos e Custos
• Adaptação a Mudança
Conclusão
• Tipos de testes.
• Regressão é importantíssima.
• Automação é essencial.
• ...
Próximas Aulas
01. 03.
TDD. REFACTORING.
02. 04.
TDD. BDD.
Abordagens Ágeis De Desenvolvimento
de Software
Aula 2.2.1. Conceitos Gerais TDD (Parte 1)
Ciclo de Desenvolvimento;
Vantagens;
Limitações;
Ferramentas;
Leitura complementar.
TDD - Test Driven Development
• Qualidade no ciclo
• XP
• Testes de Unidade
• Testes de Componentes
• Regressão
• Automação
TDD – Ciclo de Desenvolvimento
• TEST-FIRST
• Manutenção
• Regras de negócio
• Validação
• Custo
• Rapidez no Desenvolvimento
• Modularização do código
• Requisitos funcionais
• Suporte Gerencial
• Lacunas
• Visibilidade de código
● C– Cunit
● .NET – NUnit
● PHP – PHPUnit
● Python – PyUnit
Leituras Complementares
• https://www.devmedia.com.br/testes-com-jasmine-melhore-a-qualidade-do-javascript/26957
• http://www.franciscosouza.com.br/2009/07/24/testes-unitarios-com-pyunit/
• https://www.devmedia.com.br/introducao-ao-desenvolvimento-guiado-por-teste-tdd-com-
junit/26559
• https://www.devmedia.com.br/test-driven-development-tdd-simples-e-pratico/18533
• https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530
Conclusão
01. 03.
TDD. BDD.
02. 04.
REFACTORING. ...
Abordagens Ágeis De Desenvolvimento
de Software
Aula 2.2.2. Conceitos Gerais TDD (Parte 2)
Testes de Unidade.
Refactoring:
Code Smell;
Boas práticas.
Dublês.
Conclusão.
Testes de Unidade
• Independência.
• Dados simples.
• Baby Steps.
• Facilidade de correção.
• Melhoria da Qualidade.
• Code Smell.
• Refatoração.
• ...
Próxima Aula
01. 03.
REFACTORING. ...
02. 04.
TDD. ...
Abordagens Ágeis De Desenvolvimento
de Software
Aula 2.3. REFACTORING
O Que É?
Tipos.
Conclusão.
Próxima Aula.
REFACTORING
• Ferramenta prática.
• Check-lists Direcionados.
• Ferramentas Automatizadas.
Próxima Aula
01. 03.
BDD. ...
02. 04.
... ...
Abordagens Ágeis De Desenvolvimento
de Software
Aula 2.4. BDD (Behavior Driven Development)
Definição.
Princípios.
Como Funciona?
User Stories.
Vantagens.
BDD e TDD.
Conclusão.
BDD – Behavior Driven
Development
“Abordagem ágil de desenvolvimento de software que
encoraja colaboração entre as partes envolvidas no processo,
utilizando-se de técnicas de verificação e validação.”
* Resposta ao TDD
BDD - Princípios
• Linguagem Úbiqua (DSL).
• Agilidade é qualidade.
• ...
Como funciona?
Necessidade de implantação
de uma funcionalidade do
Backlog
Definição dos testes
funcionais automatizados
como base nos exemplos.
CONVERSAS
CRITÉRIOS DE ACEITAÇÃO
User Stories
Padrão INVEST
• Independente
• Negociável
• Valor
• Estimável
• Simples/Pequeno
• Testável
User Stories
Story Map
User Stories
Exemplo
REQUISITO:
O sistema permite pesquisar candidatos por função,
especialidade e região geográfica.
A função de um candidato pode ser uma entre
analista, responsável técnico, programador e web designer.
A especialidade de um candidato pode ser uma entre
SOX, Agile, UX e Microsoft.
A região geográfica de um candidato é a cidade e,
opcionalmente, num raio medido em kms da cidade indicada.
O raio é de 50 kms por omissão.
User Stories
Exemplo
USER STORY: quem, o quê e porquê
Título:
Pesquisa de candidatos por função.
Descrição:
Enquanto usuário, quero pesquisar candidatos
cadastrados por função, para poder analisar os perfis.
Critério de Aceitação:
A pesquisa retorna uma lista de candidatos ou uma
mensagem indicando que não há resultados.
User Stories
Notação Gherkin (DSL)
BDD - Vantagens
• Nivela o conhecimento entre as partes.
• Given-Then-When.
• ...A
BDD x TDD
• Conhecimento da ferramenta
• Ferramentas de Automação...
Conclusão
• BDD realidade com apoio ferramental.
• INVEST.
• ...
Próxima Aula
01. 03.
Testando manualmente. ...
02. 04.
Apoio Ferramental. ...
Abordagens Ágeis De Desenvolvimento
de Software
Capítulo 3. FDD (Feature Driven Development)
CARACTERÍSTICAS;
PROCESSOS.
FDD - Feature Driven Development
• Relatórios Gerais.
Plan by Feature
FDD – Processos Principais
• Ciclos de 2 semanas
FDD – PADRÃO EVTX
• EXEMPLOS:
• Cadastrar dados do usuário.
• Realizar compra de livro.
• Solicitar aluguel do veículo.
• Calcular desconto de uma venda.
FDD – Processos Principais
• Concepção e Planejamento:
• Desenvolver um modelo abrangente: Análise Orientada a Objetos;
• Construir a lista de funcionalidades: Decomposição Funcional;
• Planejar por funcionalidade: Planejamento Incremental.
• Construção:
• Detalhar por funcionalidade: Design/Projeto OO;
• Construir por funcionalidades: Implementação e Testes.
FDD – (1) Desenvolvendo um Modelo
Abrangente
• O que é?
Modelagem completa e abrangente do projeto.
• Quem participa?
Especialistas de negócio, programadores experientes, arquitetos...
• Como?
• São realizadas pequenas reuniões, onde os especialistas de negócio
apresentam as funcionalidades que o sistema deve ter (DOMAIN Walkthrough).
• Após a reunião são formados pequenos grupos, que constroem um modelo
provável.
• Os modelos são avaliados, e é escolhido o melhor, ou uma junção entre as
propostas.
• Processo se repete, até que todo o escopo dos requisitos esteja modelado.
FDD – (1) Desenvolvendo um Modelo
Abrangente
Camadas do Modelo:
1. ÁREA DE NEGÓCIO
2. ATIVIDADE DE NEGÓCIO
3. AUTOMATIZAÇÃO DA ATIVIDADE (funcionalidade)
• Quem participa?
Equipe da LISTA DE FUNCIONALIDADES, composta pelos
programadores líderes que participaram da fase anterior.
• Como?
Fazendo a decomposição funcional de cada um dos requisitos da fase
anterior.
Categorização da lista por Área, Atividades de Negócio e Funcionalidades.
FDD – (3) Planejar por Funcionalidades
• O que é?
Plano de Desenvolvimento do Software.
• Quem participa?
Equipe de Planejamento: Gerente do Projeto, Gerente do
Desenvolvimento e os Programadores Chefes.
• Como?
Avaliando as funcionalidades e definindo a ordem baseado em critérios.
PLANO DE DESENVOLVIMENTO
CRONOGRAMA DE IMPLEMENTAÇÃO DE FUNCIONALIDADES
PROGRAMADORES CHEFES ATRÍBUIDOS AS FUNCIONALIDADES
LISTA DE CLASSES E SEUS PROPRIETÁRIOS
FDD – (4) Detalhar por Funcionalidades
• O que é?
Detalhamento do processo de implantação de cada funcionalidade.
• Quem participa?
Programador Chefe e programadores.
• Como?
Atribuição das classes a seus responsáveis.
Construção do Diagrama de Sequência.
Refino do Modelo de Classes.
Inspeção final da modelagem.
PACOTE DE TRABALHO
MODELO DE CLASSES
DIAGRAMAS DE SEQUÊNCIA
REQUISITOS DE IMPLEMENTAÇÃO
FDD – (5) Construir por Funcionalidades
• O que é?
Implementação do modelo.
• Quem participa?
Equipe de desenvolvimento.
• Como?
Base no Pacote de Trabalho.
Após a construção do código o mesmo deve ser testado e inspecionado.
Se os testes obtiverem sucesso, o pacote vira uma release.
• Geração de valor.
01. 03.
FDD. DDD.
02. 04.
PRIORIZANDO REQUISITOS. DAD.
Abordagens Ágeis De Desenvolvimento
de Software
Aula 3.1.2. Conceitos Gerais FDD (Parte 2)
BOAS PRÁTICAS;
CONCLUSÃO;
LEITURAS COMPLEMENTARES.
FDD – Processos Principais
Develop and overall
model
Plan by Feature
FDD – Cargos e Responsabilidades
• ...
FDD – Cargos e Responsabilidades
• “Ferramenteiro” (Toolsmith)
• Técnicos:
• Testatores (Testers)
• Instaladores (Deployers)
• Resulta em um arcabouço
• Equipe de Funcionalidades
• Métodos de correção
• http://www.featuredrivendevelopment.com/files/CSCIE275_CP_G
uide.pdf
• http://www.featuredrivendevelopment.com/files/FeatureDrivenDev
elopment_0.pdf
Conclusão
• Possibilidade de uso com o Scrum.
• Geração de valor.
01. 03.
Priorizando requisitos. DDD.
02. 04.
UML. DAD.
Abordagens Ágeis De Desenvolvimento
de Software
Aula 3.2. Priorizando Requisitos
Priorizar requisitos?
Conclusão.
Próximas Aulas.
FDD – Priorizar requisitos?
Contexto de Desenvolvimento Ágil:
• Alta Qualidade
• Envolvimento do Cliente
Como Conseguir?
• Preencha uma lista Inicial de requisitos com base nas reuniões iniciais.
• Opções.
• Piscina.
• Opção são classificadas em classes de serviço.
• O Objetivo é limitar o trabalho em progresso (WIP).
• Eliminação de Itens antigos.
FDD – Qual estratégia utilizar?
01. 03.
DDD. ...
02. 04.
DAD. ...
Abordagens Ágeis De Desenvolvimento
de Software
Capítulo 4. DDD (Domain Driven Development)
Definição.
Princípios.
MDD.
Elementos.
Conclusão.
Próxima Aula.
DDD – Domain Driven
Development
DOMÍNIO: é o Core Business do sistema. Baseado
em ideias, conhecimento e processos de negócio.
“RAZÃO DO SOFTWARE EXISTIR”.
• Mínimo de acoplamento
• Independência de Tecnologia
DDD – Princípios
• Linguagem Ubíqua.
Se durante uma conversa com um cliente do
sistema de cobrança, por exemplo, ele disser:
“Temos que emitir a fatura para o cliente antes da
data limite”, vamos ter no nosso código alguma coisa do
tipo:
• Uma classe para a entidade Cliente;
• Uma classe para a entidade Fatura;
• Algum serviço que tenha um método emitir;
• Algum atributo com o nome de data limite.
DDD – Princípios
• Uso de modelagem conceitual (MDD).
• Participação de todos (dev e users)
• Hands On Modelers.
• ...
DDD – Princípios
• MODEL DRIVEN DESIGN
DDD – Elementos do Modelo
• Entidades
• Objetos de Valor
• Factories
• Serviços
• Repositórios
Conclusão
• Participação de todos.
01. 03.
DDD. ...
02. 04.
DAD. ...
Abordagens Ágeis De Desenvolvimento
de Software
Aula 4.1.2. DDD (Domain Driven Development) (Parte 2)
Dificuldades DDD.
Bounded Contexts.
Contexts Maps.
Conclusão.
Próxima Aula.
DDD – Domain Driven
Development
• Sistemas complexos
• ...
• CONTEXTOS DELIMITADOS
DDD – Bounded Contexts
• Caminhos separados
• Núcleo Compartilhado
• ...
DDD – Context Maps
DDD – Context Maps
NÚCLEO DO DOMÍNIO
Conclusão
• Uso de Padrões.
• Mínimo Acoplamento.
• Desenvolvimento em paralelo.
Próxima Aula
01. 03.
DAD. ...
02. 04.
... ...
Abordagens Ágeis De Desenvolvimento
de Software
Capítulo 5. Disciplined Agile Delivery
Contexto Ágil.
Definição.
Características.
Camadas.
Princípios.
Papéis.
Conclusão.
DAD – Disciplined Agile Delivery
Qual o melhor método?
• Equipes heterogêneas.
• Sistemas distintos.
• Projetos diferentes.
• Cases de Sucesso/Insucesso.
Características:
• Eliminar indecisões.
• Abordagem híbrida.
• Interativo e Incremental.
• Eliminar indecisões.
• Abordagem híbrida
• Interativo e Incremental
• Product Owner
• Team Member
• Architecture Owner
• Stake Holder
DAD – Papéis Primários
• Specialist
• Independent Tester
• Domain Expert
• Technical Expert
• Integrator
Conclusão
• Governança.
• Empresas resilientes.
• Processo definido.
• Abordagem híbrida.
Próxima Aula
01. 03.
DAD. ...
02. 04.
... CONCLUSÃO GERAL.
Abordagens Ágeis De Desenvolvimento
de Software
Aula 5.1.2. Disciplined Agile Delivery (Parte 2)
Ciclos de Vida.
Certificação.
Leituras Complementares.
Conclusão.
DAD – Disciplined Agile Delivery
CICLO DE VIDA
• Inception
• Construction
• Transition
DAD – Disciplined Agile Delivery
DAD – Disciplined Agile Delivery
DAD – Disciplined Agile Delivery
DAD – Disciplined Agile Delivery
DAD – Disciplined Agile Delivery
DAD – Disciplined Agile Delivery
Leitura Complementar
• CHOOSE YOUR WOW.
Certificações
Conclusão
• Abordagem prática.
• Melhoria continua.
• Grandes empresas.
• Adaptabilidade do Software.
• Adaptabilidade do processo.
• Abordagem híbrida.
Próxima Aula
01.
Conclusão Geral.
Abordagens Ágeis De Desenvolvimento
de Software
Capítulo 6. Revisão Teórica
Contexto Ágil.
Manifesto Ágil.
TDD.
FDD.
DDD.
DAD.
Conclusão.
Contexto Ágil
• Evolução tecnológica
ATDD
BDD
FDD – Feature Driven Development
DDD – Design Driven Development
DAD – Disciplined Agile Delivery
Conclusão
• Manifesto ágil.
Próxima Aula
01. 03.
Atividades práticas. Atividades práticas.
02. 04.
Atividades práticas. Atividades práticas.