Existem alternativas importantes para o Waterfall e o Agile? [fechadas]

35

Estou curioso para saber se alguém conhece alguma metodologia significativamente diferente (não uma recombinação) e gostaria especialmente de alguém que tenha apresentado alguma experiência com alternativas.

Morgan Herlocker
fonte

Respostas:

47

A Wikipedia lista estes como metodologias / processos de desenvolvimento :

  • Ágil - com base no desenvolvimento iterativo e incremental, onde requisitos e soluções evoluem através da colaboração entre equipes multifuncionais e auto-organizadas.

  • Sala limpa - o foco do processo da sala limpa é a prevenção de defeitos, em vez da remoção de defeitos.

  • Iterativo - um processo de desenvolvimento de software cíclico desenvolvido em resposta às fraquezas do modelo em cascata. Começa com um planejamento inicial e termina com a implantação com as interações cíclicas intermediárias.
    diagrama iterativo

  • RAD - usa um planejamento mínimo em favor da prototipagem rápida. O "planejamento" do software desenvolvido usando o RAD é intercalado com a criação do próprio software.

  • RUP - O Rational Unified Process (RUP) é uma estrutura de processo de desenvolvimento de software iterativo adaptável, que deve ser customizada selecionando os elementos do processo que são apropriados.

  • Espiral - combinando elementos de projeto e prototipagem em etapas, em um esforço para combinar as vantagens dos conceitos de cima para baixo e de baixo para cima. Esse modelo de desenvolvimento combina os recursos do modelo de prototipagem e do modelo em cascata.
    diagrama do modelo em espiral

  • Cachoeira - seqüencial nas fases de concepção, iniciação, análise, projeto, construção, testes e manutenção.
    diagrama em cascata

  • Lean - uma tradução dos princípios e práticas Lean manufacturing e Lean IT para o domínio de desenvolvimento de software; tudo o que não agrega valor ao cliente é considerado desperdício.

  • Modelo V - Em vez de descer de maneira linear, as etapas do processo são dobradas para cima após a fase de codificação, para formar a forma típica de V. O modelo V demonstra as relações entre cada fase do ciclo de vida de desenvolvimento e sua fase de teste associada.
    diagrama do modelo v

  • TDD - depende da repetição de um ciclo de desenvolvimento muito curto: primeiro o desenvolvedor grava um caso de teste automatizado com falha que define uma melhoria ou nova função desejada, depois produz código para passar no teste e, por fim, refatora o novo código para padrões aceitáveis.

Peter Boughton
fonte
Obrigado por uma resposta tão clara e sucinta. Eu sou tão velha escola, nunca ouvi muitos dos termos sendo lançados no P.SE.
Michael Riley - AKA Gunny
7
Ótima lista, exceto TDD. Isso não é um ciclo de vida, mas uma prática de desenvolvimento.
Michael
18

Codificação de Cowboy

Puro desenvolvimento não estruturado, não gerenciado e de forma livre. Pode ser útil para pequenos projetos de hobby que não têm prazo ou até uma meta clara, mas provavelmente não funcionará em um ambiente corporativo.

Bruce Alderman
fonte
2
yay! bang-bang!
mlvljr
3
"provavelmente não funcionará em um ambiente corporativo". Diz você! ;)
Bobby Tables
+1 Aaa, legal! Eu faço isso às vezes, mas eu não sabia como nomear este "processo" :)
Zzz
yeeee-haw padnah!
ybakos
Em ambientes corporativos maduros formais verdade. No entanto, em pequenas empresas, pode haver um pouco de mentalidade de "apenas faça e pronto".
perfil completo de JB King
4

O Modelo Espiral

O modelo espiral é um processo de desenvolvimento de software que combina elementos de projeto e prototipagem em etapas, em um esforço para combinar vantagens dos conceitos de cima para baixo e de baixo para cima. Também conhecido como modelo de ciclo de vida em espiral (ou desenvolvimento em espiral), é um método de desenvolvimento de sistemas (SDM) usado em tecnologia da informação (TI). Esse modelo de desenvolvimento combina os recursos do modelo de prototipagem e do modelo em cascata. O modelo espiral é destinado a projetos grandes, caros e complicados.

- Wikipedia texto alternativo

Ryan Hayes
fonte
1

Plano

Sente-se com o cliente (ou usuário final) e crie uma série de casos de uso.

desenhar

Coloque o sistema em papel / quadro branco com algumas cervejas e pizzas. Ria quando algo parece fálico.

confirme

Confirme o design com o cliente (ou usuário final) e congele os requisitos.

Código

Auto-explicativo.

Josh K
fonte
"Requisitos de congelamento" é o maior mais fácil de dizer do que nunca.
Justin Schier 23/02
1

Esse argumento em cascata existe há algum tempo e é usado pelos líderes ágeis do pensamento desde o início. Eles também encontraram a "realidade" da cachoeira como um "alerta vermelho".

Quando você começa a trabalhar em um projeto de desenvolvimento de software, descobre rapidamente que a metodologia de desenvolvimento usada terá um papel importante a desempenhar na velocidade e na qualidade do código desenvolvido. Desde que a metodologia Agile é tão amplamente usada, é importante que você entenda as vantagens e desvantagens do ágil, para que você possa determinar se é o mais adequado para as entregas do seu projeto.

O desenvolvimento ágil de software é uma estrutura conceitual para a execução de projetos de engenharia de software. A maioria dos métodos ágeis tenta minimizar o risco desenvolvendo software em caixas de tempo curtas, chamadas iterações, que geralmente duram de uma a quatro semanas. Cada iteração é como um projeto de software em miniatura próprio e inclui todas as tarefas necessárias para liberar o mini incremento de novas funcionalidades: planejamento, análise de requisitos, design, codificação, teste e documentação.

É um bom processo para a empresa, pois inclui o cliente no processo de desenvolvimento e o responsabiliza pela entrega do produto. Por outro lado, os clientes ficam felizes porque se consideram participantes no desenvolvimento do produto.

Deméritos para Agile:

  • O Agile é muito focado em programadores, deixando claro como equilibrar o trabalho em uma organização.
  • Se você não sabe para onde está indo, o Agile não o levará até lá!
  • Criação de frameworks sem necessidades claras.
  • Uso excessivo de recursos de idioma (inadequadamente).
  • Nenhuma mentalidade de primeiro teste.

Bem, para uma metodologia interessante que pode funcionar como uma alternativa para o AGILE, pode ser melhor visualizada nesses três links:

Kanban como implementação alternativa ágil

Desenvolvimento de software Kanban

Desenvolvimento de software enxuto na nuvem

Tony
fonte
3
Se você não sabe para onde está indo, a cachoeira não o levará até lá!
Eric Wilson