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

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
- Utiliza OO como paradigma de desenvolvimento;

- Inclui um conjunto de regras e práticas com base nas
seguintes atividades:

Planejamento

Projeto

Codificação

Teste

# data[].attributes.body
- 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;

Implementação.

# data[].attributes.body
- 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:

1.  Time

2. Product owner

3.  Scrum master

# 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.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.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
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
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
TDD é uma sigla para Test Driven Development, ou Desenvolvimento Orientado a Testes.

# data[].attributes.body
Escreva um Teste unitário que inicialmente irá falhar

Crie um código que resolva este teste

Refatore o Código

Execute novamente o Teste

# 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.