# data[].attributes.body
Sugere uma abordagem sequencial e sistemática para o desenvolvimento de software, suas etapas são, aquisição de requisitos, planejamento, modelagem, construção e desenvolvimento.Possui uma varição que busca checar a qualidade das etapas conhecido como modelo-V.

O modelo de cascata é o mais antigo paradigma para engenharia de software. Contudo, nas últimas décadas, as criticas feitas á esse modelo fizeram com que até os maiores defensores desse modelo questionassem sua eficiência. [Han95].

VANTAGENS:

O mais simples e intuitivo.

DESVANTAGENS:

Dificuldade de se estabelecer todos os requisitos no início de um processo.

Em caso de alteração de requisitos, existe dificuldade na adequação do processo, pois cada etapa depende da conclusão da anterior.

CONTEXTO DE UTILIZAÇÃO: É indicado o uso em projetos onde os requisitos são muito bem definidos e a possibilidade de mudança é quase nenhuma.

ETAPAS:

1. Planejamento

2. Análise

3. Projeto

4. Implementação

5. Teste

6. Implantação

7. Manutenção

# data[].attributes.body
Proposto por Barry Boehm [Boe88] é um processo evolucionário de software, com natureza iterativa de prototipação que segue o mesmo rigor sistemático que o modelo cascata. Ele cria a possibilidade de um desenvolvimento mais rápido e com possibilidade de gerar versões mais completas do software.

O modelo é uma série evolucionária de versões, cada ciclo do espiral gera novas especificações e permite com que o software seja um pouco mais flexível. É uma abordagem realista do processo de produção de softwares de grande escala.

VANTAGENS:

Riscos são gerenciados ainda na fase de análise e em todo o processo

Utiliza-se prototipação.

Erros/falhas são descobertas cedo, facilitando o ajuste

DESVANTAGENS:

Por utilizar prototipação, acaba se elevando o custo na fase de Análise

CONTEXTO DE UTILIZAÇÃO: Indicado para direcionamento de riscos e planejamento.

ETAPAS:

1. Determinar objetivos, alternativas e restrições

2. Avaliar alternativas, identificar, resolver riscos

3. Desenvolver, verificar produto de próximo nível

4. Planejar próxima fase

# data[].attributes.body
Procura entender os requisitos do usuário para aplicar ao sistema, possibilita que o desenvolvedor crie um protótipo do software final e é dividido nas fases de obter requisitos, elaborar projeto rápido, construir protótipo, avaliar protótipo e refinar protótipo gerando um ciclo de desenvolvimento que por fim de a fase construção do produto.

VANTAGENS:

O usuário tem o "sentimento" de estar utilizando um sistema real

O time consegue "entender" a solução e construir "algo" em curto prazo

DESVANTAGENS:

O usuário imagina estar usando a versão de produção

Concessões equivocadas

O descartamento de protótipos pode ser vista como trabalho jogado fora pelo usuário

CONTEXTO DE UTILIZAÇÃO: Indicado para desenvolvimento de uma versão inicial rápida, liberando-a ao usuário e recebendo feedbacks que serão utilizados para melhoria/refinamento do resultado.

ETAPAS:

Comunicação

Plano rápido

Projeto rápido

Construção do protótipo

Avaliação do protótipo

Refinamento do protótipo

# data[].attributes.body
É o conjunto de atividades bem definidas com responsáveis, entrada/saída, ordem de execução, descrição sistemática e utilizando diagramas de UML. E um processo iterativo incremental, guiado por casos de uso, baseado na arquitetura do sistema, organizado em fases, iterações, fluxos, atividades e passos.

VANTAGENS:
União das vantagens dos modelos Sequencial e Iterativo/Incremental

DESVANTAGENS:
União das desvantagens dos modelos Sequencial e Iterativo/Incremental

CONTEXTO DE UTILIZAÇÃO:
Em projetos onde é essencial a separação das fases e disciplinas.

ETAPAS:

Modelagem de Negócios

Requisitos

Análise e Design

Implementação

Teste

Implantação

Gerenciamento de Configuração e Mudança

Gerenciamento de projeto

Ambiente

# data[].attributes.body
O manifesto ágil surgiu com a intenção de substituir as antigas práticas de produção de software. Como no mercado atual é difícil prever o processo de evolução de um software, a abordagem utilizada deve ser flexível o bastante para possibilitar as mudanças de maneira rápida e eficiente.

“Indivíduos e interações antes de processos e ferramentas

Software funcionando antes de documentação clara

Colaboração com cliente antes de negociação de contrato

Responder a uma mudança antes de seguir um plano

Existe valor nos termos da direita, mas nós valorizamos mais os da esquerda.”

# data[].attributes.body
Concebido por Jeff Sutherland e seu time nos anos 1990, os princípios do scrum são compatíveis com o manifesto ágil e é um guia para a aplicação das seguintes atividades: requerimentos, analise, design, evolução e entrega. Cada atividade ocorre em um padrão de processo chamado sprint, que por sua vez ocorre um numero variado de vezes dependendo do tamanho ou complexidade do software.

O Scrum procura enfatizar o uso de padrões que se provaram efetivos para projetos com curto período de duração e com muitas alterações, e se baseia em atividades de desenvolvimento, são elas:

Backlog, é uma lista dos requerimentos e características que agregam valor ao software para o cliente, itens podem ser adicionados a qualquer momento ao product backlog pelo product manager que também gerencia a ordem de prioridade.

Sprints consiste em um ciclo de trabalho necessário para concluir os requerimentos do backlog. As mudanças geralmente não são introduzidas durante um sprint. O sprint permite que uma equipe trabalhe em um ambiente estável mesmo que seja por um curto período de tempo.

Encontros, são pequenas (15 min) reuniões mantidas diariamente pelo time scrum, onde são feitas três perguntas:

- O que vocês fizeram desde o último encontro?

- Quais obstáculos foram encontrados?

- O que você planeja executar até o próximo encontro?

Um lider do time, o Scrum master, lidera o encontro que serve para prevenir problemas e socializar o time.

Demos, é uma entrega do software funcionando para que a funcionalidade que foi adicionada possa ser apresentada ao cliente e avaliada por ele.

“Scrum assume logo de cara a existência do caos...”

VANTAGENS:

Entregas periódicas ao cliente.

Maior participação do cliente no processo de desenvolvimento.

Maior facilidade de integração da equipe e das diferentes áreas.

Gerencia de problemas e dificuldades frequentes.

DESVANTAGENS:

Difícil de implementar em equipes com poucos integrantes.

Depende do comprometimento do cliente.

O bom funcionamento depende da experiência do Scrum Master.

Custo de implementação.

Depende da adaptação da equipe.

CONTEXTO DE UTILIZAÇÃO:
O Scrum é recomendado para equipes com diferentes funções e que possuam conhecimento sobre os padrões de processos.

ETAPAS:

1. Planejamento da Release

2. Planejamento da Sprint

3. Reunião diária

4. Revisão da Sprint

5. Retrospectiva da Sprint

# data[].attributes.body
Usa uma abordagem orientada a objetos como paradigma preferido e define uma série de regras e praticas no contexto de quatro frameworks de atividades, são elas:

Planejamento, é a atividade responsável pela aquisição de requisitos, começa com uma comunicação com o cliente onde os requisitos são passados á equipe por meio de uma história contada pelo cliente a qual deve ser interpretada por meio do próximo lançamento ou versão.

Design, procura como regra buscar sempre a simplicidade no modelo XP, sempre um design simples é preferido á um complexo. É um guia de desenvolvimento para a história e geralmente é feito com o uso de cartas CRC, além disso é tido como um processo contínuo, que acontece antes e depois do desenvolvimento.

Desenvolvimento, são desenvolvidos uma série de testes nos quais é destrinchada a história, o código é gerado para estritamente passar nos teste e assim que o código é implementado é iniciada uma fase de testes, gerando assim um feedback instantâneo para o desenvolvedor. Além disso a fase de programação é feita por uma dupla de programadoras, já que além de duas mentes programarem melhor do que uma, facilita a integração com o time.

Teste, a unidade de testes deve ser implementada com um framework que automatiza os teste que dá um indicador contínuo de progresso para o time do XP, “Consertar problemas pequenos a cada poucas horas é mais fácil que resolver um problema grande logo antes do lançamento” [Wel99].

VANTAGENS:

Processo de desenvolvimento e todo documentado

Código é implementado baseado em testes

histórias de usuário levam em conta a utilização do software

DESVANTAGENS:

Necessita do cliente para construir as histórias

Dificuldade para calcular a velocidade de implementação

CONTEXTO DE UTILIZAÇÃO:
ETAPAS:

1. Planejamento

2. Projeto

3. Codificação

4. Teste

# data[].attributes.body
PRESSMAN, R.; MAXIM, B. Software Engineering: A Practitioner’s Approach. 8th edition.McGraw-Hill, 2014