agile vs waterfall which is best methodology
melhor conversor de youtube para mp3 seguro
Aprenda tudo sobre as metodologias Agile e Waterfall, os diferentes tipos de modelos SDLC e as diferenças entre os modelos Waterfall e Agile de desenvolvimento, bem como os testes:
Leia este artigo informativo para decidir qual é o modelo mais adequado para o seu projeto com base nos prós e contras de cada um.
O modelo em cascata e o modelo ágil são os tipos de ciclo de vida de desenvolvimento de software (SDLC). Esses são os processos usados pela indústria de software para projetar, desenvolver e testar o software.
Seguindo o SDLC, podemos atingir as expectativas do cliente, concluir o projeto dentro de determinados prazos e estimar o custo.
O que você aprenderá:
- Cachoeira e fluxos de trabalho de modelo ágil
- Modelo de Cachoeira
- Fluxo de Trabalho Ágil
- Diferença entre os modelos Agile vs. Waterfall
- Diferenças entre o teste ágil e o teste em cascata
- Conclusão
Cachoeira e fluxos de trabalho de modelo ágil
Em inglês simples, Agile significa 'capaz de se mover com rapidez e facilidade' e, portanto, é isso que significa quando se trata de Metodologia de desenvolvimento ágil .
Ágil é um método de gerenciamento de projetos representado pela divisão das tarefas em segmentos mais curtos de trabalho com revisões frequentes e adaptação de planos.
Da mesma forma, a palavra cachoeira denota um fluxo vertical de água ou o fluxo de água através de uma série de quedas íngremes. O modelo em cascata é um modelo sequencial linear no qual o progresso flui majoritariamente em uma direção para baixo, através das fases de coleta de requisitos, análise, design, desenvolvimento, teste, implantação e manutenção.
Esta mesma ilustração se aplica ao conceito de gerenciamento de projetos quando se trata de modelo em cascata . É um método de gerenciamento de projetos representado por etapas seriais e um plano de trabalho fixo.
[imagem fonte ]
Antes de discutir o fluxo de trabalho Waterfall e o fluxo de trabalho Agile, vamos dar uma olhada na definição do Ciclo de Vida de Desenvolvimento de Software e seus requisitos.
Qual é o ciclo de vida de desenvolvimento de software?
É um procedimento passo a passo para desenvolver o software de forma sistemática. Para isso, selecionamos diferentes tipos de ciclos de vida de desenvolvimento de software em diferentes empresas. Com base no requisito, um ciclo de vida apropriado é selecionado.
O modelo em cascata é um dos tipos de SDLC e é um processo antigo de desenvolvimento de software. O modelo ágil é o mais recente e avançado. O Agile é derivado de outro ciclo de vida de desenvolvimento de software.
Outros SDLC incluem o modelo espiral, modelo V e V, modelo protótipo. Com base na necessidade e compatibilidade dos requisitos do negócio, escolheremos o melhor modelo para desenvolver o aplicativo de software.
[imagem fonte ]
Por que o ciclo de vida de desenvolvimento de software é necessário?
O SDLC é necessário para gerenciar o projeto de forma estruturada. Ele fornece um certo nível de controle e define as funções e responsabilidades dos membros da equipe. Ele fornece o escopo e o prazo para cada fase no SDLC.
É como um guia do usuário para que os membros da equipe sigam todas as etapas para desenvolver e entregar o produto de qualidade. Ajuda a gestão da equipe a definir e avaliar os objetivos e requisitos. Também ajuda no agendamento e estimativa das tarefas. Ele estabelece a linha de comunicação entre o cliente e a equipe de desenvolvimento e cria as funções e responsabilidades de cada um deles.
Tipos de ciclo de vida de desenvolvimento de software
Vejamos uma breve introdução aos tipos de SDLC usados no processo de desenvolvimento de software.
# 1) Modelo de cachoeira
Conforme discutido anteriormente, o modelo em cascata é o primeiro ciclo de vida de desenvolvimento de software introduzido. É a forma sequencial de desenvolver software. Muito poucas empresas seguem essa abordagem. Quando o projeto for muito simples e não houver mais mudanças de requisitos, seguiremos essa abordagem.
Discutiremos mais sobre o modelo em cascata neste tutorial.
# 2) Modelo Agile
Um fluxo de trabalho ágil é uma abordagem avançada para o processo de desenvolvimento de software, que é usado na maioria das empresas. Agile é definido como o ciclo de vida de desenvolvimento de software baseado em sprint.
Nas próximas seções, podemos discutir mais sobre o fluxo de trabalho do Agile.
# 3) Modelo Espiral
É a maneira de construir e testar o software, dividindo e adicionando o requisito em ordem incremental. Este modelo ajudará em projetos onde os requisitos não param de mudar. Este modelo em espiral é a combinação do processo de desenvolvimento iterativo e do processo de desenvolvimento linear sequencial.
Essa abordagem nos permitirá em lançamentos incrementais do produto. Aqui, não é necessário aguardar a conclusão de todos os módulos do software para o lançamento.
O modelo sequencial linear significa que é uma abordagem sequencial sistemática de desenvolvimento de software que começa no nível do sistema e avança através da análise, design, codificação, teste e suporte.
O modelo iterativo significa que é uma implementação particular de um ciclo de vida de desenvolvimento de software que se concentra em uma implementação inicial simplificada, que então ganha progressivamente mais complexidade e um recurso mais amplo é definido até que o sistema final esteja completo.
# 4) Modelo de protótipo
Este modelo inclui o processo de construção e teste do software de forma que, primeiro desenvolvemos o modelo fictício e se for viável e atinja todos os requisitos do negócio, então implementamos o modelo de trabalho real.
Aqui, primeiro construímos e testamos o protótipo e, em seguida, construímos o modelo real com as especificações exatas do sistema. A prototipagem de software é a atividade de criação de protótipos de aplicativos de software.
# 5) Modelo V e V
É o modelo de verificação e validação. Aqui, durante o desenvolvimento do software, usamos para verificar e validar tudo em cada fase do SDLC. O modelo V é considerado uma extensão do modelo em cascata.
Portanto, todos os tipos de SDLC têm seus recursos e características. Com base nos requisitos, necessidades, viabilidade e duração do projeto, podemos escolher o ciclo de vida de desenvolvimento de software específico para desenvolver o aplicativo de software.
Agora, discutiremos os ciclos de vida de desenvolvimento de software em cascata e Agile em detalhes.
Modelo de Cachoeira
No modelo em Cachoeira, cada fase deve ser concluída antes de iniciar outra fase. Não podemos operar várias fases ao mesmo tempo. Isso foi introduzido em 1970 por Winston Royce. O modelo em cascata é dividido em diferentes fases.
[imagem fonte ]
O modelo em cascata inclui as seguintes fases:
- Coleta de requisitos
- Estudo de viabilidade
- Projeto
- Codificação
- Testando
- Manutenção
# 1) Análise de Requisitos
Aqui, o analista de negócios obterá a especificação do requisito. O requisito estará no formato CRS (Customer Requirement Specification). O CRS explica como o fluxo de negócios deve funcionar e como o aplicativo deve funcionar de acordo com o requisito especificado. Os analistas de negócios converterão o CRS em SRS (Software Requirement Specification).
Em seguida, o analista de negócios discute as especificações do requisito com a equipe de desenvolvimento e teste em detalhes e entende o requisito do ponto de vista de teste e desenvolvimento. Esta é a fase de discutir e analisar os requisitos para construir o software aplicativo com base nos requisitos reais.
Aqui, tudo deve ser documentado no documento de especificação de requisitos de software. No modelo em cascata, cada entrega / resultado / saída de cada fase é a fonte de entrada para as próximas fases.
Em uma indústria baseada em serviços, um Analista de Negócios pode trazer o requisito.
Em uma empresa baseada em produto, o Analista de Produto traz o requisito.
# 2) Estudo de Viabilidade
A equipe de gestão fará o estudo de viabilidade. Ou seja, a equipe analisará parâmetros como, se este requisito / aplicação pode ser desenvolvido em nosso ambiente ou não, o recurso disponível é suficiente ou não, o custo e muitos outros fatores são viáveis ou não e verificar se temos condições de cobrir todos os fluxos de negócios ou não.
Nesta reunião / análise, o Gerente de Projeto, Analista de Negócios, Gerente Financeiro, RH, Líder de Projeto fará parte da discussão.
# 3) Design do sistema
Aqui, o arquiteto de projeto preparará o design do sistema. Ele especificará o hardware, os requisitos do sistema e projetará a arquitetura do aplicativo. Existem 2 partes no design do sistema: design de alto nível e design de baixo nível. No design de alto nível, projetamos os diferentes blocos do aplicativo. No design de baixo nível, escrevemos o pseudo-código.
# 4) Codificação
Aqui, os desenvolvedores começam a codificação exata de cada função e interface do usuário do aplicativo usando diferentes métodos e lógicas diferentes. Eles podem usar qualquer linguagem de programação como Java, Python ou qualquer outra linguagem para construir o aplicativo.
Assim que a codificação for concluída para cada funcionalidade do módulo específico do aplicativo, o desenvolvedor fará o teste de unidade. Se o código funcionar bem, o desenvolvedor implantará o código no ambiente de teste e fornecerá a compilação ao testador para teste.
# 5) Teste
A partir daqui, a atividade de teste começa. Até esta fase, não teremos nenhuma tarefa no modelo em Cachoeira. Nesta fase, fazemos todos os tipos de testes. Esses tipos de teste incluem teste de fumaça, teste funcional, teste de integração, teste de sistema, teste de aceitação, teste de regressão, teste ad-hoc, teste exploratório e teste de navegador cruzado.
Começaremos a testar o aplicativo assim que obtermos a compilação. Primeiro, vamos começar com o teste de fumaça. Se nenhum problema de bloqueador for observado, continuaremos com os testes detalhados.
No teste funcional, começaremos a testar cada componente do aplicativo. Aqui, verificamos os diferentes componentes, como campos de texto, botões, links, botões de opção, botões de upload, menus suspensos e links de navegação.
A seguir, verificaremos a IU, a aparência e os testes de entrada positivos e negativos.
Em seguida, começaremos com o teste de integração. Aqui iremos verificar a integração dos dados. Verificaremos se os mesmos dados estão refletindo em diferentes páginas respectivas ou não, verificaremos a navegação do link do e-mail para as respectivas páginas. Verificaremos a integração de dados com aplicativos de terceiros e verificaremos as alterações do banco de dados no aplicativo.
A seguir, faremos testes de sistema. Verificaremos todo o aplicativo como uma única unidade. Verificaremos a funcionalidade, integração das páginas, validações de campo, mensagens de erro, mensagens de confirmação e muito mais.
Ao testar o aplicativo, registraremos os problemas na ferramenta de rastreamento de bugs. Daremos prioridade ao bug com base nos problemas. Depois de criar o bug, iremos atribuí-lo ao respectivo desenvolvedor para corrigir o problema. Verificaremos os bugs assim que os desenvolvedores os atribuírem aos testadores após corrigi-los. Se funcionar bem, o testador fechará o bug, senão os testadores atribuirão de volta ao desenvolvedor para corrigir o problema. É assim que o ciclo de vida do bug continua.
Em seguida, passamos para o teste de aceitação. Aqui testamos o aplicativo em diferentes ambientes, como preparação e UAT (Teste de Aceitação do Usuário). Esta é a fase mais importante para testar o aplicativo completamente antes de movermos o código para o ambiente de Produção.
Assim que o teste de aceitação for feito sem erros, o cliente planejará implantar o código no servidor de Produção e planejar a liberação.
# 6) Manutenção
Assim que implantarmos o código do aplicativo no servidor de produção, devemos fornecer suporte / manutenção ao aplicativo cliente. Esta fase de manutenção é para observar e corrigir os problemas de produção em tempo real, para verificar os problemas de memória, para aprimorar o aplicativo e para desenvolver as novas mudanças de requisitos.
Em quais casos podemos optar pelo modelo em cascata?
- Quando não há mudanças necessárias.
- Quando o projeto é pequeno e simples.
- Quando não há complexidade na tecnologia.
- Quando houver mais recursos disponíveis.
Prós da Cachoeira:
- Para frente e para trás planejamento e implementação são fáceis .
- O modelo em cascata é simples de usar e fácil de entender. Não requer nenhum treinamento especial para gerentes de projeto ou funcionários. Tem um curva de aprendizado fácil .
- Sendo rígido por natureza, é fácil de gerenciar o ciclo da cachoeira. Cada fase tem resultados fixos e um processo de revisão.
- Menos complexidade pois as fases não se sobrepõem. As fases são seguidas uma após a outra. Possui uma estrutura clara quando comparada às demais metodologias de desenvolvimento de software. O projeto passa por etapas sequenciais fixas a partir da coleta de requisitos e finalmente chega à manutenção.
- Devido ao desenvolvimento em fases, disciplina é aplicada , e as escalas de tempo podem ser facilmente mantidas.
- Trabalho bem para pequenos projetos onde temos requisitos fixos e claros.
- Processos e resultados são bem documentado .
- Organizar tarefas é fácil.
- Isto é fácil de medir o progresso já que os pontos inicial e final de cada fase são predeterminados.
- Quase não há mudança nos requisitos ao longo do projeto, portanto, tarefas permanecem estáveis para os desenvolvedores. Além disso, é fácil para qualquer novo desenvolvedor para aprender rapidamente e começar o trabalho.
- tem sem surpresas financeiras . Uma vez que os requisitos são fixados, o custo final pode ser calculado antes de iniciar o desenvolvimento.
- Atende a um modelo de financiamento sequencial .
- Está projeto detalhado torna o resultado final esperado muito claro para todos.
- A especificação de requisitos funcionais documentada na fase de coleta de requisitos fornece detalhes suficientes para que os testadores projetem cenários e casos de teste. Portanto, o processo de teste se torna fácil no modelo em cascata.
Contras da cachoeira:
- Como todos os requisitos devem ser claramente conhecidos antes de iniciar o desenvolvimento, atrasa o projeto .
- Requer extensa pesquisa nas necessidades do usuário.
- Na fase inicial do projeto, é um desafio para o cliente definir e conceituar claramente seus requisitos na forma de especificações funcionais. Portanto, há uma grande possibilidade de eles mudarem de ideia depois de ver o produto final. Essa mudança também pode ocorrer devido a um plano de negócios ou influência de mercado. A baixa flexibilidade neste modelo o torna difícil acomodar tais mudanças , especialmente quando o produto precisa ser reprojetado em grande medida.
- Sem modelo de trabalho é produzido até o mais tarde estágio durante o ciclo de vida em cascata.
- Tempos de entrega lentos . O cliente não consegue ver o produto até que esteja totalmente concluído.
- O cliente não tem oportunidade de se familiarizar com o sistema com antecedência. O modelo em cascata é mais um processo interno e mantém o usuário final excluído .
- O cliente não é informado bem sobre a saúde do projeto.
- Prazos podem ser perdidos se a gestão estrita e o monitoramento regular não forem mantidos.
- Há sim sem espaço para mudanças mesmo que seja visível durante o desenvolvimento, pois o produto não atenderá às necessidades do mercado.
- Teste de atrasos até após a conclusão. Além disso, grandes revisões são muito caras neste momento.
- Alto risco e incerteza estão envolvidos no modelo em cascata, pois há muito espaço para que os problemas passem despercebidos até que o projeto esteja quase concluído.
- Não é um modelo adequado para projetos longos, complexos e contínuos.
- Isso é difícil medir o progresso dentro de cada fase.
- Os testadores ficarão ociosos durante os vários estágios do projeto.
Fluxo de Trabalho Ágil
Agora veremos o ciclo de vida de desenvolvimento de software ágil. Agile é o processo de fazer o trabalho de forma rápida e fácil com mais precisão.
Este modelo está relacionado a um método de gerenciamento de projetos, utilizado principalmente para o desenvolvimento de software. É caracterizada pela divisão de tarefas em fases curtas de trabalho e frequentes reavaliações e adaptações de planos. Cada membro da equipe deve ter uma ideia dos fluxos básicos de negócios.
[imagem fonte ]
No Agile, os desenvolvedores e testadores trabalham paralelamente para desenvolver e testar o software do aplicativo. O desenvolvimento é feito em modo iterativo. Cada história de usuário de iteração requer análise, design, codificação e teste.
Testamos o requisito de maneira detalhada para verificar se ele está livre de erros e pode ser implementado ou não. Mude para a próxima iteração após o final de cada iteração e seguimos o mesmo processo para os novos / outros requisitos.
Assim, esse processo de desenvolvimento e teste do bloco de software é realizado em um curto espaço de tempo com mais precisão e flexibilidade. Portanto, mais indústrias seguem e adotam esse processo.
Primeiro, o product owner adicionará todos os requisitos ao product backlog. O backlog do produto contém todas as histórias de usuário. Digamos que de 100 a 150 histórias de usuários estejam relacionadas ao projeto completo. Agora adicione as histórias de usuário específicas ao backlog do sprint que precisamos implementar. Então, todos os desenvolvedores, QA, BA trabalharão nos itens do sprint. É assim que o fluxo do Agile funciona.
Terminologias principais usadas no Agile
Qual é o backlog do sprint?
o que é um plano de teste em teste de software
É a lista de histórias de usuário que precisamos implementar na iteração ou sprint atual.
Por exemplo, existem 20 a 30 histórias de usuário na lista de pendências do sprint. Então, essas são as histórias de usuário que precisamos implementar no sprint atual.
[imagem fonte ]
O que é um Sprint?
Sprint é a pequena duração em que precisamos implementar as histórias de usuário selecionadas dentro de uma determinada duração. A duração do sprint será de cerca de 2 a 3 semanas. Sua duração varia de empresa para empresa.
Nesta duração do sprint, a equipe deve analisar o requisito, projetar os requisitos, realizar a codificação, testar, corrigir o problema, testar novamente, testar a regressão, demonstrar e muitas outras atividades.
Reunião Daily Standup Scrum
Analista de negócios, desenvolvedor, testador e gerente de projeto fazem parte das reuniões diárias stand up scrum. Isso é feito diariamente. Não deve se estender por mais de 15 a 30 minutos.
Aqui, todos os membros da equipe compartilharão o status do trabalho diário. As principais coisas que discutimos aqui são: quais são as coisas concluídas ontem, plano para o trabalho de hoje e quaisquer desafios ou dependências que enfrentam no projeto.
Se algum membro da equipe enfrentar quaisquer desafios ou obstáculos durante o projeto, a pessoa em questão trabalhará para que isso seja feito.
Gráfico Burndown
É uma representação gráfica pictórica de tempo e trabalho. O eixo x representa o trabalho restante, o eixo y representa o tempo restante do sprint. A equipe deve criar as tarefas de trabalho em relação ao tempo disponível no sprint específico. A equipe irá queimar as horas de tarefas diariamente com base no trabalho que trabalhou e concluiu.
[imagem fonte ]
Gráfico Kanban
É um gráfico / ferramenta de gerenciamento de projetos. Com isso, podemos gerenciar as tarefas de todo o projeto. Podemos verificar o andamento do projeto e o status de trabalho dos indivíduos. Ele mostra a representação digital pictórica de itens de progresso, itens pendentes, itens acabados.
[imagem fonte ]
perguntas e respostas da entrevista de selênio java para experientes
Planejando atividades de pôquer
É um jogo entre os membros da equipe de sprint para estimar as histórias de usuários. Aqui, toda a equipe irá jogar a atividade de pôquer. Cada membro da equipe fornece a estimativa com base no ponto da história do usuário. Com base na estimativa da maioria dos votos, a equipe decidirá e alocará o intervalo de tempo.
Por exemplo , um membro da equipe de história de usuário dará uma estimativa como 3, 5, 8, 3, 1, 3. Em seguida, a equipe escolherá 3 como a estimativa. O cartão de atividade de pôquer contém 0, 1, 3, 5, 8, 13, 20, 100, pausa, dúvidas? cartões. Com base nisso, os membros da equipe irão sugerir qualquer cartão de estimativa. Assim, iremos estimar todas as histórias de usuário que estão relacionadas ao sprint em particular.
[imagem fonte ]
- 0 número de pôquer representa: nenhuma tarefa nesse item / história de usuário
- 1, 3 números representam: a tarefa é menor
- 5, 8 números representam: tarefas de nível médio
- 13, 20 número representa: tarefas de grande nível
- 100 número representa: tarefas muito grandes
- O infinito representa: A tarefa é enorme, precisa ser dividida em várias tarefas e histórias de usuário
- Quebra representa: Preciso de um descanso
- ? Representa: Dúvidas
Scrum Master
É ele quem ajuda a equipe a acompanhar o processo ágil e atender aos requisitos do projeto. Ele conduzirá a reunião sempre que necessário e ajudará a discutir a necessidade do projeto.
O Scrum master atua como uma ponte para todos os membros da equipe para resolver os desafios e as dependências que surgem no projeto. Ele acompanhará o progresso do projeto em cada sprint.
Ele está envolvido na reunião standup, reunião retrospectiva, inspeção, revisão, demonstração. É ele quem conduz as reuniões diárias em pé e faz a atualização dos membros da equipe.
Proprietário do produto
Ele é a pessoa que conduz e monitora o produto / projeto do ponto de vista do negócio. Ele continua observando como o produto é desenvolvido de acordo com as necessidades do negócio ou não. Ele é quem prioriza as histórias de usuário e moveu os requisitos da lista de pendências do produto para a lista de pendências do sprint. Ele vai estimar os prazos do projeto.
Ele sempre olha para o produto do ponto de vista do usuário. O product owner tem conhecimento completo sobre como o aplicativo deve funcionar.
História do usuário
É um bloco de requisitos. Ele contém o conjunto de casos de uso / requisitos relacionados ao mesmo módulo. Aqui definimos como cada componente de um aplicativo deve funcionar e como a IU deve ser exibida. O escopo de cada componente é definido na história do usuário.
Tarefas
Os membros da equipe criarão a tarefa para a história do usuário que é atribuída a eles. Eles precisam criar a tarefa com base nas diferentes tarefas, como tarefa de desenvolvimento, tarefa de teste, tarefa de análise de história de usuário. A duração da tarefa deve depender dos pontos da história do usuário.
Como testador, criaremos as tarefas para análise de história de usuário, preparação de caso de teste, execução, teste de regressão e muito mais.
Backlog Grooming
Esta parte envolve o gerenciamento de itens do backlog. As atividades que fazemos aqui são priorizar os itens do backlog, dividir em itens menores, criar a tarefa e atualizar os critérios de aceitação.
Iteração
Iteração é o desenvolvimento e o teste de alguns módulos / partes do aplicativo de software. Cada iteração consiste na análise do produto, projeto do produto, desenvolvimento do produto, teste do produto e demonstração do produto.
Fatores chave para adotar a metodologia ágil
- Observação: Revise o trabalho e o produto regularmente e planeje as atividades de acordo. Portanto, o processo de desenvolvimento do produto e a qualidade do produto serão bons.
- Bem-vindo às mudanças: As alterações são tratadas com muita facilidade. Não afeta muito o produto porque os módulos do software são desenvolvidos separadamente e integrados posteriormente. Portanto, não haverá retrabalho se o requisito for alterado no futuro.
- Prazo: Recebemos o cronograma de cada unidade do aplicativo. Portanto, a estimativa será precisa em relação às estimativas de tempo do projeto.
- Satisfação do cliente: A satisfação do cliente é mais porque interagimos com o cliente e acionista ao longo do projeto e faremos uma demonstração em cada nível de desenvolvimento do produto. Com isso, obtemos o feedback do cliente / cliente regularmente sobre os fluxos de negócios e o andamento do trabalho. Assim, o trabalho e o desenvolvimento do aplicativo são feitos em conformidade.
Tipos de metodologias ágeis
- Metodologia Agile Scrum
- Desenvolvimento Lean de Software
- Kanban
- Programação Extrema (XP)
- Cristal
- Método de Desenvolvimento de Sistemas Dinâmicos (DSDM)
- Desenvolvimento Orientado a Recursos (FDD)
Agile Pros:
- Uma das maiores vantagens do modelo ágil é o seu grande adaptabilidade . Adaptabilidade significa 'responder à mudança'. O Agile é muito flexível para lidar com as mudanças nas necessidades e prioridades do cliente.
- Permite refinar e priorizar constantemente o backlog geral do produto sem afetar a iteração atual na qual a equipe está focada em entregar o MVP. As mudanças podem ser planejadas para a próxima iteração, oferecendo assim uma oportunidade de trazer as mudanças dentro de algumas semanas.
- A metodologia ágil oferece um grande grau de engajamento das partes interessadas . O cliente e a equipe do projeto se encontram antes, durante e depois de cada sprint. Como o cliente está constantemente envolvido ao longo do projeto, há mais oportunidades para a equipe entender claramente a visão do cliente.
- O software funcional é entregue com antecedência e com freqüência. Isso aumenta o confiança das partes interessadas na equipe e incentiva a equipe a fique altamente comprometido para o projeto.
- Este modelo dá transparência . Tanto as partes interessadas quanto a equipe sabem bem o que está acontecendo. O cliente pode ver o trabalho em andamento.
- Sprints de cronograma fixo de uma a quatro semanas permitem entrega antecipada e previsível . Novos recursos são lançados de forma rápida e frequente de uma maneira limitada pelo tempo.
- Agile é centrado no cliente . Ele não apenas fornece a funcionalidade, mas também se concentra em fornecer o recurso que tem algum valor para o usuário. Cada história de usuário tem um critério de aceitação focado nos negócios.
- De valor feedback do cliente é ganho cedo no projeto e as alterações no produto podem ser feitas conforme necessário.
- O foco está no valor do negócio . Ele primeiro entrega o que é mais importante para o cliente.
- Melhora a qualidade dos resultados . Ao contrário da cascata, o teste é feito de forma contínua e frequente em um projeto Ágil e isso, por sua vez, ajuda a detectar e corrigir os problemas antecipadamente.
- Ágil suporta abordagem TDD (Test Driven Development) o que fornece tempo suficiente para criar testes de unidade para os recursos que serão lançados por meio do MVP.
- Além disso, ao produzir construções frequentes , qualquer desalinhamento com os requisitos do cliente também pode ser detectado e corrigido antecipadamente.
- Como nós começamos feedback imediato do usuário após cada lançamento do MVP, o o risco de falha do projeto é baixo, quando você está trabalhando de forma ágil.
- Ágil promove o trabalho em equipe . Existe uma grande colaboração, interação, harmonia e entusiasmo entre os membros da equipe Agile.
- As estimativas de custo e cronograma de cada sprint são comunicadas ao cliente antes do início do sprint. este melhora a tomada de decisão pois o usuário pode entender o custo de cada recurso e priorizar de acordo.
- Em um projeto ágil, há espaço para melhoria continua . As lições aprendidas com os sprints anteriores podem ser aplicadas nos sprints seguintes.
- Ele se concentra na tarefa específica em cada estágio do projeto.
Contras Agile:
- Muitas vezes é visto que as equipes Agile têm um tendência de negligenciar a documentação . Isso ocorre porque o manifesto Agile se concentra mais no software funcional do que na documentação abrangente. No entanto, as equipes devem manter o equilíbrio certo entre o código e a documentação.
- Como requer um alto grau de envolvimento do cliente, pode às vezes pode ser problemático para os clientes que não têm muito tempo e interesse em participar do projeto.
- Não funciona bem se falta empenho e dedicação à equipa. A cascata requer envolvimento, no entanto, Agile requer comprometimento.
- Se a arquitetura e o design iniciais forem fracos, então refatoração frequente é necessário.
- Quando comparado à cachoeira, o Agile é difícil de praticar . Os membros da equipe devem ser bem versados nos conceitos do Agile. Requer muita disciplina e comprometimento para praticar o Agile.
- Devido à nova priorização, é menos previsível do que o que será entregue no final do sprint.
- Devido à entrega limitada e à redefinição de prioridades, há chances de alguns recursos não serem entregues no cronograma alocado. Isso pode levar a sprints adicionais e custos adicionais . Isso também pode levar ao problema de linhas do tempo nebulosas .
- Falta de estrutura em relação à cachoeira, exige equipes autodisciplinadas, altamente proficientes e multifacetadas . Sem isso, o projeto pode ser realmente desafiador.
- Disponibilidade é menos de um projeto do produto final .
- Às vezes o as partes interessadas externas não podem resistir a seguir a abordagem ágil . Nesses casos, o treinamento e a educação sobre o Agile são necessários para um público amplo.
- Todos os membros da equipe devem estar envolvidos no gerenciamento do Projeto.
- A documentação é menos detalhada.
Diferença entre os modelos Agile vs. Waterfall
As diferenças entre os ciclos de vida de desenvolvimento de software em cascata e Agile estão listadas abaixo.
Cachoeira | Ágil |
---|---|
O processo é tratado como um único projeto, que é dividido em diferentes fases. | O processo é dividido em vários projetos e cada projeto tem uma iteração de diferentes estágios. |
A metodologia em cascata é um modelo no qual cada estágio do ciclo de vida do produto ocorre em uma sequência. O progresso do projeto flui gradualmente para baixo através dessas fases, lembrando uma cachoeira. | A metodologia ágil é um modelo que segue uma abordagem iterativa. |
Este modelo acredita na entrega maciça de uma só vez. O produto é entregue no final do SDLC. | Este modelo acredita em vários pequenos pedaços de entrega em intervalos de tempo definidos. Um MVP (Produto Mínimo Viável) é entregue no final de cada sprint. |
É uma abordagem tradicional e antiquada. | É uma abordagem nova e moderna. |
Um único ciclo e lançamento único. | Número repetitivo de iterações e várias versões. |
Ele divide o ciclo de vida de desenvolvimento de software em diferentes fases. | Ele divide o ciclo de vida de desenvolvimento de software em sprints. |
Modelo estruturado e rígido. É difícil alterar a descrição, especificação e design do projeto. | Este modelo é conhecido por sua flexibilidade. Podemos fazer alterações em qualquer fase do projeto a qualquer momento. |
Escala de planejamento de longo prazo. | Escala de planejamento de curto prazo. |
Existe uma longa distância entre o cliente e o desenvolvedor. | Existe uma curta distância entre o cliente e o desenvolvedor. |
Muito tempo entre especificação e implementação. O analista de negócios coleta e prepara o requisito antes do início do projeto. | Tempo curto entre especificação e implementação. O product owner prepara os requisitos e atualizações para a equipe em cada sprint. |
Demora muito para descobrir problemas. | Os problemas são descobertos rapidamente. |
Alto risco de cronograma do projeto. | Baixo risco de cronograma do projeto. |
Menos capacidade de responder rapidamente às mudanças. | Alta capacidade de responder rapidamente às mudanças. |
A fase de teste ocorre somente após a conclusão da fase de desenvolvimento. | Os testes geralmente são realizados em paralelo com o desenvolvimento para garantir a qualidade continuamente. |
O cliente está envolvido apenas na fase de coleta de requisitos e, depois disso, não há envolvimento do cliente. Ele entra em cena apenas no momento da entrega do produto. | O cliente está envolvido em todo o projeto e o feedback é obtido do cliente de tempos em tempos para garantir a satisfação do cliente. |
Adequado para projetos que possuem requisitos claramente definidos e aqueles que não estão esperando mudanças. | Adequado para projetos que precisam evoluir e que envolvem mudanças de requisitos. |
Processo estritamente sequencial. | O processo de desenvolvimento de software altamente colaborativo leva a melhores esforços da equipe e rápida resolução de problemas. |
Exibe uma mentalidade de projeto. | Apresenta uma mentalidade de produto e, portanto, é mais focada no cliente. Demandas e mudanças fazem parte do processo |
Formal e hierárquico. O gerente de projeto é o tomador de decisões. | É informal. Toda a equipe é responsável pela tomada de decisões. |
Este modelo prevê que não haverá mudanças nos requisitos ao longo do projeto. | Este modelo é baseado na adaptação e abrange mudanças. |
Necessidade de criar documentos manuais para verificar o status do trabalho do indivíduo e o andamento do projeto. | Segue o gráfico Kanban e o gráfico Burn Down para verificar o progresso do projeto e o status do trabalho do indivíduo. |
Já discutimos o suficiente sobre as diferenças entre as metodologias Agile e Waterfall e os benefícios e desafios de cada uma. Vamos agora explorar as diferenças entre o teste ágil e o teste em cascata.
Diferenças entre o teste ágil e o teste em cascata
Do ponto de vista do teste de software, é importante para nós ter uma boa ideia sobre como o teste Agile é diferente do teste em cascata.
Teste em Cachoeira | Teste Ágil |
---|---|
As equipes de teste e de desenvolvimento são separadas por um limite claro e há uma comunicação estrita e formal entre elas. | A equipe de teste e as equipes de desenvolvimento são integradas como uma única equipe e há um fluxo livre de comunicação entre elas. |
O teste começa após a conclusão das fases de desenvolvimento e construção. | O teste começa simultaneamente com a fase de desenvolvimento. |
O planejamento é feito apenas uma vez antes da fase de teste. | O planejamento é feito antes do início do projeto e geralmente durante o projeto. |
O plano de teste raramente é revisado durante o projeto. | O plano de teste é revisado após cada sprint. |
É um desafio silencioso para a equipe de teste propor quaisquer mudanças nos requisitos. | A equipe de teste participa ativamente da coleta de requisitos e do processo de mudança. |
Os casos de teste são criados uma vez para todas as funcionalidades. | Os casos de teste são criados sprint a sprint para as funcionalidades que precisam ser liberadas em cada sprint. |
O teste de aceitação é executado uma vez pelo cliente após a liberação. | O teste de aceitação pode ser feito após cada iteração e antes da entrega por um analista de negócios ou equipe de teste. Posteriormente, isso é feito pelo cliente após cada liberação. |
Documentação de teste detalhada e extensa. | A documentação do teste é feita apenas o necessário. |
As estimativas e atribuições de teste geralmente são de responsabilidade do gerente de teste. | As estimativas e atribuições de teste são de responsabilidade compartilhada da equipe e dos engenheiros de teste que estão envolvidos em fornecer as estimativas e escolher suas tarefas. |
O teste de regressão raramente é feito e envolve a execução de todos os casos de teste. | O teste de regressão é feito após cada iteração e envolve apenas os casos de teste necessários. |
Conclusão
Neste artigo, aprendemos as diferenças exatas entre a abordagem Agile moderna e o método tradicional em cascata de desenvolvimento e teste de software com uma tabela de comparação cobrindo os prós e contras de cada modelo.
Considerando todos os fatores listados neste artigo, podemos selecionar o modelo de ciclo de vida de desenvolvimento de software correto para desenvolver o aplicativo de software. Não há dúvida de que as metodologias Agile são preferidas ao modelo em cascata. 90% das empresas preferem e seguem o fluxo de trabalho Agile para desenvolver o aplicativo de software.
A metodologia ágil é boa para todos os tipos de projetos. Muito poucas empresas seguem a metodologia em cascata. Esta metodologia é adequada apenas se a aplicação for pequena, simples e não houver alterações no requisito.
Em alguns casos, também optamos por outras abordagens chamadas Espiral, V e V e Protótipo, com base nas necessidades.
Espero que esta informação seja útil para você decidir qual é o melhor modelo para seu projeto. Você também pode ir para o modelo híbrido removendo os contras de cada método - discutido aqui.
Leitura recomendada
- Estudo de caso: como eliminar falhas dos processos de desenvolvimento em cascata e Agile usando um modelo híbrido
- O que é o SDLC Waterfall Model?
- Revisão da ferramenta de gerenciamento de teste Zephyr Enterprise - Como usar ativos de modelo em cascata na ferramenta ágil
- Tutorial VersionOne: Guia da Ferramenta de Gerenciamento de Projetos Ágil Tudo-em-um
- Jira Portfolio Tutorial: Agile Project Portfolio Management Plug-in para JIRA (revisão)
- TOP 10 melhores ferramentas de gerenciamento de projetos ágeis em 2021
- Técnicas de estimativa ágil: uma estimativa verdadeira em um projeto ágil
- 4 etapas para desenvolver a mentalidade de teste ágil para uma transição bem-sucedida para o processo ágil