# data[].attributes.body
Técnica de desenvolvimento de software que baseia em um
ciclo curto de repetições:
 O desenvolvedor escreve um caso de teste automatizado
que define uma melhoria desejada ou uma nova
funcionalidade.
 É produzido código que possa ser validado pelo teste para
posteriormente o código ser refatorado para um código
sob padrões aceitáveis.

 Kent Beck, considerado o criador da técnica, declarou em 2003
que TDD encoraja designs de código simples e inspira
confiança.
 Através de TDD, programadores podem aplicar o conceito de
melhorar e depurar código legado desenvolvido a partir de
técnicas antigas.

# data[].attributes.body
 Apresenta princípios coerentes com os do Manifesto Ágil;
 Desenvolvido na década de 90 por Jeff Sutherland.
 Enfatiza o uso de um conjunto de “padrões de processo de
software” ideais para projetos com prazos apertados,
requisitos mutantes e negócios críticos;
 Baseado em ciclos de 30 dias (chamados de Sprints), o Scrum
trabalha para alcançar objetivos bem definidos;
 Os objetivos são representados no Product Backlog, que é
uma lista de atividades a serem realizadas;
 Papéis:
 Time
 Product owner
 Scrum master

# data[].attributes.body
 Escreva um teste, antes mesmo de escrever o código que este teste
consome.
 Faça o teste funcionar, escrevendo o código do qual o teste
depende, mesmo que seja um código ruim.
 Refatore, eliminando duplicações de código, tanto nos 🤬 quanto
nas implementações.

# data[].attributes.body
 Time
 grupo pequeno, normalmente, entre 5 e 9 pessoas;
 deve ser comprometido com o trabalho a fim de atingir a
meta de um Sprint;
 desenvolve e produz com qualidade;
 deve ser cada vez mais auto-gerenciável e multidisciplinar.
 Product Owner
 faz o intermédio entre o cliente e o fornecedor do produto
 boa noção do produto e das necessidades do cliente;
 responsável por atualizar o Product Backlog.
 Scrum Master
 um líder, mediador e facilitador;
 remove impedimentos da equipe assegurando que as
práticas Scrum estão sendo executadas com eficiência.

# data[].attributes.body
É uma metodologia ágil para equipes pequenas e médias que desenvolvem software baseado em requisitos vagos e que se modificam rapidamente

# data[].attributes.body
O processo inicia por um plano geral, ou seja, entender o problema como um todo, mas sem muitos detalhes e, posteriormente, reparte o problema em partes, para dar início ao seu desenvolvimento.

Criação de um conjunto de “histórias de usuários” descrevendo as características e funcionalidades requeridas pelo software que será construído.

# data[].attributes.body
É um sistema para organização de atividades que proporciona agilidade no processo.

# data[].attributes.body
O Trello usa o kanban como seu conceito central, permitindo fazer tudo isso de uma forma automatizada, podendo verificar métricas, transformar quadros em calendários e cronogramas, notificar pessoas, mudar datas e responsáveis por tarefas, criar checklists e muito mais.

# data[].attributes.body
Segue rigorosamente o KIS (keep it simple);

Estimula o uso de cartões CRC (Classe, Responsabilidade e Colaboração) para a identificação e organização das classes OO relevantes para o incremento do software;

Cartões CRC permitem a descrição dos conceitos identificados na metáfora na forma de classes;

Responsabilidades são identificadas para cada classe;

As colaborações determinam as interações entre classes;

Os cartões permitem que o todo o time possa colaborar
com o design;

Os cartões CRC são o único produto de trabalho do projeto;

Caso seja identificado um problema difícil na história,
recomenda-se a criação imediata de um protótipo operacional daquela parte do projeto. Denominado Solução de Ponta.

Encoraja a refatoração.

Técnica que altera a estrutura do sistema sem modificar o comportamento externo.

# data[].attributes.body
 Depois que as histórias forem desenvolvidas e o início do
projeto for feito, recomenda-se não iniciar a programação;
 Elemento chave do XP.

 É recomendado realizar 🤬 unitários sobre cada uma das
histórias que serão incluídas na versão atual.

 Depois de os 🤬 unitários terem sido criados, o
desenvolvedor está focado no que deve ser implementado.

 Programação em pares:
 duas pessoas trabalhando juntas na mesma máquina;
 cada pessoa fica encarregada de uma atividade;
 quando o trabalho dos programadores é completado, é
feita uma integração com o trabalho de outros;
 existe uma equipe responsável pela integração.

# data[].attributes.body
 São aplicados os 🤬 unitários.

 Os 🤬 de aceitação (ou teste de cliente) são especificados
sob a ótica do cliente e abrangem as características e as
funcionalidades do sistema global visíveis e passíveis de
revisão.

 “Resolver pequenos problemas a cada intervalo de umas
poucas horas leva menos tempo do que resolver grandes
problemas perto da data de entrega”, Wells (1999) apud
Pressman(2010).

# data[].attributes.body
Acrônimo de Desenvolvimento Adaptativo de Software ou, ASD
(Adaptative Software Development).

Proposto por Highsmith para auxiliar no desenvolvimento de
sistemas e softwares complexos.

Concentra-se na colaboração humana e na auto-organização
da equipe.
- É uma propriedade de sistemas adaptativos.

# data[].attributes.body
Incorpora três fases:
Especulação
- Declara a missão do projeto;
- Identifica as restrições do projeto;
- Realiza o levantamento dos requisitos básicos.

Colaboração
- Filosofia de que pessoas motivadas trabalhando juntas multiplicam seus talentos e resultados.

Aprendizado
- Clientes/usuários informam feedback;
- Revisão dos componentes de software desenvolvidos;
- Avaliação do desempenho da equipe DAS.

# data[].attributes.body
*Acrônimo de Dynamic Systems Development Method;

*“Fornece um arcabouço para construir e manter sistemas que satisfazem às restrições de prazo apertadas por meio do uso de prototipagem incremental em um ambiente controlado de projeto”,CS3 Consulting Services apud Pressman(2010);

*O DSDM Consortium é um grupo mundial de empresas que definiu um modelo ágil de processo chamada Ciclo de vida DSDM, com as seguintes atividades:
- Estudo de viabilidade;
- Estudo do negócio;
- Iteração do modelo funcional;
- Iteração de projeto e construção e;
- Implementação.

# data[].attributes.body
Estudo de viabilidade
 Define requisitos básicos e restrições do negócio;
 Avalia se é viável desenvolver a aplicação usando DSDM.
 Estudo do negócio
 Identifica os requisitos funcionais;
 Define a arquitetura básica da aplicação;
 Identifica os requisitos de manutenibilidade da aplicação.
 Iteração do modelo funcional
 Constrói um conjunto de protótipos incrementais.
 Objetiva adquirir requisitos adicionais com feedbacks dos
usuários à medida que usam o protótipo.

 Iteração de projeto e construção
 Verifica os protótipos construídos garantindo que cada um
tenha passado por engenharia.

 Implementação
 Coloca o último incremento do software no ambiente de
produção, apesar de ele poder ainda não estar completo
e novas modificações serem solicitadas.

# data[].attributes.body
 Definição do Backlog
 funcionalidades ou mudanças no produto são feitas pelo
Product Owner no Product Backlog;
 a lista é priorizada para refletir a necessidade dos clientes
ou demandas do mercado;

 Sprints
 unidades de trabalho necessárias para atender os itens do
Product Backlog, normalmente, são 30 dias.

 Reuniões
 diárias, aproximadamente 15 minutos;
 todos os membros do time respondem às perguntas:
1. O que você fez ontem?
2. O que pretende fazer hoje?
3. Que impedimentos estão lhe atrapalhando?

 Revisões
 o time apresenta os resultados ao Product Owner e demais
interessados;
 os itens do backlog são considerados prontos e inicia-se um
novo sprint.

# data[].attributes.body
Define característica como sendo “uma função valorizada pelo cliente que pode ser implementada em duas semanas ou menos”, Coad (1999) apud Pressman (2010);

Os benefícios em se utilizar a filosofia de características são:

os usuários podem descrevê-las mais facilmente;

podem ser organizadas de forma hierárquica;

desenvolvimento a cada duas semanas;

facilidade em analisar projeto e código;

projeto e cronograma são guiados pela hierarquia de
características, ao invés de um conjunto de tarefas de
engenharia de software adotado arbitrariamente.

Definição:
<ação> o <resultado> <por|para|de|a> um <objeto>
Exemplos:

Gera o relatório de venda para um determinado período;

Exibe as especificações técnicas de um produto;

Adiciona o produto a um carrinho de compras.

# data[].attributes.attachment_link.readable_text
Para desenvolver um software com qualidade e de fácil manutenção não basta apenas dominar uma linguagem de programação, API ou framework. Também é imprescindível ter um mínimo conhecimento em gerenciamento, mas principalmente, conhecer uma metodologia de desenvolvimento. Assim, neste MeetUp, será abordada de forma detalhada uma excelente metodologia ágil para desenvolver softwares, que permite realizar entregas constantes de releases do software com qualidade e alta produtividade. A medida em que for apresentado os conceitos da eXtreme Programming, juntamente com seus papeis, valores, princípios e práticas, será percebido a profundidade deste método para auxiliar as necessidades da equipe de desenvolvimento e do projeto de software.

46:33 min
Saiba mais Veja a Série eXtreme Programming na prática

# data[].attributes.attachment_link.description
Para desenvolver um software com qualidade e de fácil manutenção não basta apenas dominar uma linguagem de programação, API ou framework. Também é imprescindível ter um mínimo conhecimento em gerenciamento, mas principalmente, conhecer uma metodologia de desenvolvimento.

# data[].attributes.body
https://youtu.be/s4thQcgLCqk

# data[].attributes.attachment_link.title
Scrum: How to do twice as much in half the time | Jeff Sutherland | TEDxAix

# data[].attributes.body
O cliente atribui uma prioridade à cada história.

Os desenvolvedores analisam cada história e atribuem um
custo a cada uma delas, com base em número de semanas
necessárias para o seu desenvolvimento.