# data[].attributes.body
Teve sua criação em 1997, possui fiéis adeptos, e outros que não acreditam na sua utilidade (talvez não sejam tão extremistas).
É um método de desenvolvimento leve, não é prescritivo, e tem em mente basear suas práticas em um conjunto de valores.
Pode ser adotado por devs plenos não apenas, seniors, como erroneamente é pensado.

# data[].attributes.body
A ideia que envolve toda a metodologia é maximizar as boas práticas de desenvolvimento, repetindo elas incessantemente ao longo do projeto.

Testar é necessário? Então, faça testes ao longo de todo o projeto.

Revisar é necessário? Então, revise ao longo de todo o projeto.

Teste de integração é necessário? Então, integre ao longo de todo o projeto.

Simplicidade é o melhor? Então, faça somente o feijão com Arroz.

Se iterações curtas é bom, então mantenha-as realmente curtas.

# data[].attributes.body
https://youtu.be/ALvpFMcL-dI

# data[].attributes.attachment_link.title
Extreme Programming — Metodologia XP: o que é? como funciona?

# data[].attributes.body
O que é DSDM?

Criada por um conjunto de especialistas e consultores em engenharia de software, no Reino Unido, a DSDM foi feita para que se desenvolvessem projetos de alta qualidade, mesmo que estivessem limitados por prazos e por orçamentos.

A intenção desse grupo era criar projetos robustos, rápidos e responsivos. Dessa maneira, um dos focos da DSDM é manter uma aproximação entre usuários finais e equipe de desenvolvimento.

Atualmente é mantida pela organização Agile Business Consortium, anteriormente chamado de DSDM Consortium, que é responsável pela atualização das versões, além de disponibilizar diversos materiais informativos e gratuitos. A versão atual da DSDM é a 4.0.

É uma metodologia de desenvolvimento incremental e iterativa, isto é, a cada nova etapa são feitas melhorias nas versões anteriores. Além disso, baseia-se na ideia de que 80% dos resultados dependem de 20% do tempo.

# data[].attributes.body
1. Focar na necessidade do negócio

2. Entregar dentro do prazo

3. Colaborar

4. Nunca comprometer a qualidade

5. Construir incrementalmente a partir de bases sólidas

6. Desenvolver iterativamente

7. Comunicar de forma contínua e clara

8. Demonstrar controle.

# data[].attributes.body
Pré-Projeto

1. Identificação

2. Orçamentos

3. Contratos

Ciclo De Vida

1. estudo de viabilidade estudo do negócio

2. iteração de modelos funcionais

3.  iteração de projeto e desenvolvimento

4.  implementação.

Pós-Projeto

1. Melhorias & Ajustes

2. Manutenção

# 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
A metodologia Scrum Agile propõe que um projeto seja dividido em diversos (pequenos) ciclos de atividades, com reuniões frequentes para que a equipe possa alinhar o que vem fazendo e pensar formas de melhorar o processo com agilidade.

# data[].attributes.body
Sprints: é o nome dado para os ciclos de cada projeto. Em geral são ciclos mensais e são determinados para que as tarefas sejam realizadas.

Product Backlog: é o nome dado para o conjunto de objetivos de um projeto. No caso de um projeto de desenvolvimento de software (para o qual o Scrum foi pensado inicialmente), é o nome dado ao pacote de funcionalidades a serem desenvolvidas em um projeto.

Sprint Planning Meeting: são reuniões periódicas que acontecem no início de cada sprint, ou ciclo, para planejar e priorizar os itens do Product Backlog que serão desenvolvidos naquele período.

Sprint Backlog: é como se chamam as tarefas específicas que serão realizadas e desenvolvidas em cada ciclo, ou sprint.

Daily Scrum: essa é uma reunião diária para acompanhamento do projeto. A ideia é que toda a equipe se reúna diariamente para discutir as atividades desenvolvidas, disseminar conhecimento, identificar impedimentos e priorizar o trabalho daquele dia. Um ponto interessante é que o Scrum propõe que estas reuniões sejam realizadas com os participantes em pé, exatamente para serem rápidas e objetivas.

Sprint Review Meeting: essa é a reunião que acontece ao final de cada sprint para que a equipe apresente o que foi realizado e os resultados do trabalho daquele ciclo. A ideia é que depois dessa etapa, todos sigam para o próximo ciclo.

# data[].attributes.body
Product Owner

É o ponto central com poderes de liderança sobre o produto (objeto final do projeto).
Ele é o único responsável por decidir o que será feito e em qual a ordem de prioridade.

Scrum Master

O Scrum Master é responsável por ajudar a todos os envolvidos a entender e abraçar os valores, princípios e práticas do Scrum.
Ela age como uma espécie de coach, executando a liderança do processo e ajudando a equipe Scrum (e o resto da organização) a desenvolver sua própria abordagem do Scrum, que tenha o melhor desempenho, respeitando as particularidades da organização.

Time de DEVS

Na metodologia Scrum é definido o papel do Time de Scrum, que é simplesmente a junção de todas essas pessoas em uma equipe multidisciplinar e são responsáveis pela concepção, construção e testes do produto final do projeto.

A ideia principal é que a equipe se autogerencie para determinar a melhor maneira de realizar o trabalho para atingir a meta estabelecida pelo Product Owner.

# data[].attributes.body
FDD surgiu em Singapura, entre os anos de 1997 e 1999 com base no método Coad (Criado por Peter Coad – 1980/1990) e nos processos interativos e lean já utilizados por Jeff de Luca.

# data[].attributes.body
O FDD busca o desenvolvimento por funcionalidade, ou seja, por um requisito funcional do sistema. É pratico para o trabalho com projetos iniciais ou projetos com codificações existentes. Apesar de ter algumas diferenças entre o FDD e o XP, é possível utilizar as melhores práticas de cada metodologia.

# data[].attributes.body
1. Desenvolvimento de Modelo abrangente (POO)

2. Criação de lista de funcionalidades

3. Planejamento Incremental (por funcionalidade)

4. Detalhe Por Funcionalidade (Desenho orientado ao Objeto)

5. Programação e Teste Orientado Ao Objeto.

# data[].attributes.body
Levantamento do domínio da aplicação = 1%;

Projeto = 40%;

Inspeção do projeto = 3%;

Desenvolvimento = 45%;

Inspeção do código = 10%;

Integração = 1%.

# data[].attributes.body
TDD é uma sigla para Test Driven Development, ou Desenvolvimento Orientado a Testes.

# 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
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. É também uma propriedade de sistemas adaptativos.

# 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
Criação de um conjunto de “histórias de usuários”
descrevendo as características e funcionalidades requeridas
pelo software que será construído.

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

# data[].attributes.body
<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.body
Tendo como características, se focar na missão, se orientar a riscos e ser tolerante a mudanças

# data[].attributes.headline
DAS (Desenvolvimento Adaptativo de Software)

# data[].attributes.subject
DAS (Desenvolvimento Adaptativo de Software)

# data[].attributes.body
O Objetivo do DAS é que equipes de desenvolvimento se adaptem mais rapidamente ao que o mercado de trabalho exige, reagindo assim melhor a mudanças. também possui características marcantes, sendo elas:
- Focar na missão;
- Se orientar a riscos;
- Ser tolerante a mudanças;

# data[].attributes.body
No Java o mais comum é fazer com JUnit.
EXAMPLE Sor Antonio
Criação de Classe Calculadora
E Classe de Teste
geração de erro

# data[].attributes.body
Criar app Java AplicativoNotas

Criar classe Nota
com dois métodos
media simples (double) 2 param n1, n2
double media = n1+n2/2
return media

# data[].attributes.body
Media media = new Media();
String strNota1 = JOptionPane.showInputDialog(null, "Digite a media")
String strNota2 = JOptionPane.showInputDialog(null, "Digite a media")
double nota1 = Double.valueOf(strNota1);
double nota2 = Double.valueOf(strNota2);
double mediaFinal = media.mediaSimples(nota1, nota2);
JOptionPane.showMessageDialog(null, "Meida final: " + mediaFinal);

# data[].attributes.body
double n1, double n2, double n3

double mediaPonderada = n1 +(n2*2) + (n3*3)/6
return mediaPonderada;

# data[].attributes.body
Media media = new Media();
String strNota1 = JOptionPane.showInputDialog(null, "Digite a media")
String strNota2 = JOptionPane.showInputDialog(null, "Digite a media")
double nota1 = Double.valueOf(strNota1);
double nota2 = Double.valueOf(strNota2);
double nota2 = Double.valueOf(strNota3);
double mediaFinal = media.mediaPonderada(nota1, nota2, nota3);
JOptionPane.showMessageDialog(null, "Meida final: " + mediaFinal);

# data[].attributes.body
Libaries:

1. JUnit

2. Hancrest

Sempre método void nos testes
Add anotação @Test
assert Equals (valorEsperado, resultado, 0(valor  de tolerância)

usar fail() para incluir mensagem de erro