CodeGym /Blogue Java /Random-PT /Metodologias de desenvolvimento de software
John Squirrels
Nível 41
San Francisco

Metodologias de desenvolvimento de software

Publicado no grupo Random-PT
Em muitas entrevistas, você provavelmente será questionado sobre metodologias. Esta não é a pergunta mais importante ou difícil, mas ter uma folha de dicas seria bom. Neste artigo, tentaremos transmitir o que é uma metodologia de desenvolvimento e compará-los. Uma metodologia de desenvolvimento de software é um processo utilizado para desenvolver um determinado produto, ou seja, é uma forma de organizar o desenvolvimento por uma equipe de desenvolvedores. Existem muitos modelos de desenvolvimento diferentes, cada um dos quais define sua própria abordagem. Não se pode dizer que qualquer um deles deva ser usado para todos os projetos. A abordagem correta depende inteiramente da situação. Pretendo considerar três deles com mais detalhes.

Cachoeira

A metodologia em cascata é uma das mais antigas e envolve uma implementação estritamente sequencial: cada etapa deve ser concluída antes do início da próxima. Em outras palavras, uma transição para a próxima etapa significa que o trabalho da etapa anterior está 100% concluído. A imagem mostra como funciona: primeiro analisamos o problema (documentamos as tarefas, discutimos os desafios), depois desenhamos (a estrutura do projeto toma forma nesta fase) e depois codificamos e testamos. Não é permitido retornar aos estágios anteriores. Essa abordagem é recomendada para pequenos projetos em que os requisitos são conhecidos com antecedência e é improvável que mudem. Metodologias de desenvolvimento de software - 2Vantagens:
  • Documentação completa e consistente em cada etapa
  • Fácil de usar
  • Requisitos estáveis
  • Orçamentos e prazos são pré-definidos
Desvantagens:
  • Uma grande quantidade de documentação
  • Não muito flexível
  • O cliente não pode ver uma versão de demonstração do produto
  • Sem opção de retroceder

Scrum

Scrum é uma metodologia de desenvolvimento de software que divide todo o processo em iterações. Ao final de cada interação, a equipe está pronta para fornecer uma versão de demonstração do produto. A figura mostra que a equipe percorre todas as etapas de desenvolvimento em paralelo, possibilitando ter uma parte do projeto finalizada ao final de cada iteração. Metodologias de desenvolvimento de software - 3Vou tentar explicar brevemente a essência da metodologia usando palavras simples, mas há muita terminologia. Acho que o mais importante é entender a essência. Você se lembrará da terminologia com a experiência. Todo o desenvolvimento é dividido em sprints (geralmente de 2 a 3 semanas). Há um atraso(lista de tarefas) para todo o período de desenvolvimento e para cada sprint separado. Cada tarefa tem seu próprio ponto de história (taxa de dificuldade). Cada participante do processo tem um papel:
  • A equipe scrum consiste nos profissionais (desenvolvedores, testadores, designers) que trabalham em um projeto.
  • O scrum master é a pessoa que garante que os princípios do scrum sejam respeitados.
  • O dono do produto é o cliente.
Essa metodologia depende da comunicação, por isso há um grande número de reuniões:
  • Stand-up – É uma reunião curta, realizada todos os dias, da qual participam todos os membros da equipe. Cada participante responde a 3 perguntas: O que eu fiz? O que vou fazer? E quais problemas de bloqueio existem?
  • Reunião de planejamento – Esta reunião é realizada no início do sprint. Nesta reunião são identificadas as tarefas que devem ser executadas no próximo sprint.
  • Retrospectiva - Esta reunião é realizada no final do sprint e tem como objetivo identificar o que foi bem feito e o que pode ser melhorado.
Vantagens:
  • O cliente pode ver os resultados durante o processo de desenvolvimento
  • Acompanhamento diário do processo de desenvolvimento
  • Capacidade de fazer ajustes durante o desenvolvimento
  • Comunicação estabelecida com todos os membros da equipe
  • Uma pequena quantidade de documentação
Desvantagens:
  • Difícil avaliar mão de obra e outros custos necessários para o desenvolvimento
  • Difícil identificar gargalos antes do início do desenvolvimento
  • A necessidade de envolver todos no trabalho de outros membros da equipe.

Kanban

Kanban é um método baseado na visualização do progresso feito na conclusão das tarefas da equipe. A ideia principal é reduzir o número de tarefas que estão sendo executadas no momento (na coluna "Em andamento"). No scrum, a equipe está focada em concluir os sprints com sucesso. No Kanban, a tarefa ocupa a posição de destaque. Isso é bom para projetos em fase de manutenção, onde a funcionalidade básica já foi implementada e ainda restam melhorias mínimas e correção de bugs. No Kanban, as tarefas são atribuídas individualmente. Uma tarefa passa por todas as etapas do quadro, independente de outras tarefas, e uma vez concluída pode ser mostrada ao cliente. Um quadro Kanban consiste em colunas, cada uma representando um processo de desenvolvimento separado. Algumas colunas (por exemplo, "Em andamento" ) limitam o número de tarefas que podem conter. Isso ajuda a encontrar áreas problemáticas de maneira rápida e fácil na distribuição de tarefas. A imagem mostra um exemplo de tal placa. O número de colunas e seus nomes podem variar. Vou apresentar os mais comuns: Metodologias de desenvolvimento de software - 4
  • To Do – A lista de tarefas que devem ser feitas
  • Em andamento - Tarefas sendo trabalhadas no momento
  • Revisão de código – Tarefas que foram concluídas e enviadas para revisão
  • Em teste – Tarefas prontas para teste
  • Concluído – Tarefas concluídas
Vantagens:
  • Fácil de usar
  • Visibilidade (ajuda a localizar gargalos, simplifica o entendimento)
  • Alto envolvimento da equipe no próprio processo
  • Desenvolvimento altamente flexível
Desvantagens:
  • Uma lista de tarefas instável
  • Difícil de aplicar em projetos de longo prazo
  • Falta de prazos rígidos

Uma palavra final sobre metodologias de desenvolvimento de software

As pessoas que ocupam ou aspiram a cargos de gerenciamento devem entender completamente as metodologias de desenvolvimento de software, mas todos precisam entender pelo menos o básico. As metodologias são parte integrante do processo de desenvolvimento e são usadas não apenas na esfera de TI. Obrigado por tomar o tempo para ler o meu artigo. Espero que tenha sido útil para você. Tentei descrever apenas os pontos-chave da maneira mais acessível e concisa possível. Como resultado, este artigo não é exaustivo. Eu ficaria feliz em ouvir sua opinião sobre isso e responder às suas perguntas. Tudo de bom!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION