CodeGym /Blogue Java /Random-PT /Tudo o que você precisa saber sobre metodologias de desen...
John Squirrels
Nível 41
San Francisco

Tudo o que você precisa saber sobre metodologias de desenvolvimento de software: tendências, princípios e armadilhas para iniciantes

Publicado no grupo Random-PT
O desenvolvimento de software é um processo de negócios complexo. Isso significa que os profissionais de TI precisam falar a linguagem da otimização, planejamento e custos. Uma compreensão dos conceitos de gerenciamento dá aos empregadores e desenvolvedores uma grande vantagem e ajuda a levar a colaboração para o próximo nível. Tudo o que você precisa saber sobre metodologias de desenvolvimento de software: tendências, princípios e armadilhas para iniciantes - 1

Atenção, iniciantes! Modelos, metodologias e confusão geral

Para começar, precisamos fazer um esclarecimento importante: modelos de desenvolvimento de software e metodologias de desenvolvimento de software são separados e distintos. Os modelos prevêem como um sistema se comportará. Metodologias são necessárias para que o sistema funcione como deveria. Confundir modelos e metodologias de desenvolvimento de software é um procedimento operacional padrão para todos os novatos em TI, portanto, isso não é considerado um grande erro. Um exemplo de modelo é o clássico modelo em cascata , com sua progressão linear, definição clara de objetivos para cada etapa e controle rígido de prazos. Outro modelo é o modelo espiral, com foco na detecção precoce e mitigação dos riscos do projeto. O desenvolvimento em espiral começa pequeno, primeiro resolvendo problemas locais e depois progredindo para problemas mais complexos. Finalmente, outro modelo é o desenvolvimento iterativo e incremental (IID) , no qual o ciclo de vida do projeto é dividido em uma série de iterações, cada uma das quais se assemelha a um "miniprojeto". Em geral, um modelo é uma descrição do processo de desenvolvimento de software . Mas as metodologias são sistemas para controlar, avaliar e monitorar o trabalho em tarefas atribuídas. As metodologias são o bastão e a cenoura da era moderna, necessárias para controlar cada etapa do processo de desenvolvimento. Eles são escolhidos com base no direcionamento do projeto, seu orçamento e os prazos para a implementação do produto final. Além disso, as metodologias podem ser selecionadas com base no temperamento do líder do projeto e de sua equipe. Mesmo com base na filosofia da empresa ou cliente. Vamos dar uma olhada nas metodologias mais populares.

1. Scrum

Scrum é um método ágil de gerenciamento de projetos. Baseia-se em "sprints", ou iterações curtas, estritamente limitadas no tempo (normalmente 2-4 semanas). Isso minimiza a duração das reuniões, mas aumenta sua frequência. Cada sprint consiste em uma lista de tarefas a serem concluídas até o final da iteração, e cada uma delas tem seu próprio “peso”. Durante as reuniões, a equipe discute o que os membros da equipe fizeram, o que planejam fazer e quais problemas existem. O Scrum usa um backlog para planejamento. Nessa abordagem, as equipes geralmente têm um scrum master. Essa pessoa ajuda a equipe a trabalhar sem interrupção e cria um ambiente confortável para a equipe. O projeto também terá alguém na função de proprietário do produto. Essa pessoa é o chefe de desenvolvimento, monitora o produto e atua como o principal elo entre o que o cliente solicita e o que a equipe produz.

Prós:

  • capacidade de lançar rapidamente um projeto com o menor orçamento possível;
  • monitoramento diário do progresso, demonstrações frequentes de projetos;
  • a capacidade de fazer ajustes durante o projeto.

Contras:

  • dificuldades na celebração de contratos devido à falta de um orçamento fixo;
  • não funciona para uma equipe inexperiente ou quando os prazos ou o orçamento são subestimados;
  • a capacidade de fazer alterações constantemente entre os sprints pode criar confusão.

para quem é isso?

Um sistema como este é adequado para projetos de até dez pessoas, sejam independentes ou existentes dentro de grandes empresas. Isso é conveniente se a equipe tiver uma grande quantidade de trabalho e um longo ciclo de vida que os obrigue a mudar e se adaptar às novas condições do mercado.

2. Kanban

A característica mais importante do Kanban é a visualização do ciclo de vida do projeto. São criadas colunas para executar itens de trabalho. Os itens de trabalho são tratados individualmente. As colunas são marcadas com status como: A fazer, Em andamento, Revisão de código, Em teste, Concluído (obviamente, os nomes das colunas podem variar). A meta de cada membro da equipe é reduzir o número de itens de trabalho na primeira coluna. A abordagem do Kanban é intuitiva e ajuda você a entender onde estão os problemas. A estrutura do Kanban não é fixa de forma definitiva e irrevogável: dependendo das especificidades do projeto, você pode adicionar colunas improvisadas. Por exemplo, algumas equipes usam um sistema no qual você precisa definir regras concluídas para um item de trabalho antes de executá-lo. Nesse caso, duas colunas são adicionadas: Especificar (especificar os parâmetros) e Implementar (começar a trabalhar).

Prós:

  • flexibilidade no planejamento. A equipe se concentra apenas no trabalho atual, a prioridade de uma tarefa também é definida;
  • visibilidade. Quando todos os participantes têm acesso aos dados, os problemas globais são mais fáceis de detectar;
  • alto envolvimento no processo de desenvolvimento. A visualização dos processos aumenta a auto-organização e o autocontrole.

Contras:

  • não trabalha com equipes de mais de cinco pessoas;
  • não destinado ao planejamento de longo prazo;
  • não é adequado para uma equipe desmotivada. Kanban não tem prazos para cada item de trabalho. A metodologia também não estipula penalidades para atrasos.

para quem é isso?

O Kanban funciona muito bem em empresas onde a equipe está motivada para crescer e alcançar resultados. Já deve ser óbvio - isso é para uma equipe pequena. Talvez até um destacamento ou parte de uma equipe.

3. Rational Unified Process (RUP)

A metodologia RUP usa um modelo de desenvolvimento iterativo. Ao final de cada iteração (que leva de 2 a 6 semanas), a equipe deve atingir as metas planejadas e obter uma versão funcional, ainda que temporária, do projeto. O RUP exige a divisão do projeto em quatro fases . Em cada fase, é realizado o trabalho na próxima geração do produto: concepção, elaboração, construção e transição. No final de uma fase, um marco do projeto é alcançado. O momento em que a equipe avalia seus resultados pode ser considerado um marco do projeto. Isso significa que a metodologia implica que os recursos principais sejam lançados na primeira fase e os acréscimos sejam adicionados nas fases subsequentes.

Prós:

  • permite lidar com tarefas em constante mudança, tanto do cliente quanto das mudanças que surgem no decorrer do trabalho;
  • garante a melhoria contínua do produto. Durante as iterações, você pode avaliar o projeto escrupulosamente;
  • permite identificar e eliminar riscos nas fases iniciais da obra, bem como controlar eficazmente a qualidade do desenvolvimento.

Contras:

  • Esta metodologia é bastante complexa e difícil de implementar em uma pequena equipe ou empresa;
  • depende da habilidade dos especialistas em definir tarefas;
  • precisa de documentação excessiva de requisitos.

para quem é isso?

Grandes projetos com requisitos claramente estabelecidos e riscos bem compreendidos, quando o produto precisa ser lançado o mais rápido possível. Mesmo à custa da funcionalidade, para ocupar rapidamente o seu nicho e só depois dar os retoques finais.

Existem muitas metodologias, mas uma tendência

Além do scrum e do Kanban, que são inegavelmente populares e baseados em princípios ágeis , bem como a robusta e iterativa metodologia RUP, as empresas usam muitas variações de metodologias. Uma empresa pode estar mais próxima da programação extrema e tomar as decisões mais rápidas e simples. Outro pode estar mais próximo do desenvolvimento orientado a testes. Outro ainda pode preferir o desenvolvimento rápido de aplicativos (RAD). Dito isso, há uma forte e inquestionável tendência ao uso simultâneo de várias metodologias. Ou ainda combinar modelos e metodologias em um único sistema de gestão. As empresas de hoje se esforçam para eliminar as barreiras burocráticas e criar uma atmosfera de trabalho em equipe unificada dentro da organização, sem transferir responsabilidades entre departamentos e unidades organizacionais. De acordo com a Scrum Alliance, 70% das empresas de TI usam scrum. Entre eles estão gigantes como Google, Amazon, Salesforce, Microsoft e Adobe. Startups e projetos jovens são mais inclinados ao Kanban, mas a Toyota e, por exemplo, os jogadores da Wargaming também o usam. O Scrum é uma ferramenta de planejamento, enquanto o Kanban é para monitorar o progresso. Quanto ao RUP, ele é usado com mais frequência por empresas ocidentais com 50 a 200 funcionários e receitas de US$ 1 a 10 milhões. No entanto, a IBM modificou o RUP para se aproximar dos princípios ágeis, lançando a metodologia OpenUP (RUP, mas ágil). Essa metodologia ágil alardeada está agora conduzindo o mundo da TI . Isso não é apenas uma moda passageira - ainda é inovador e, de fato, é utilizado em muitas grandes empresas. Agile é usado no Vale do Silício. Facebook e Uber usam.

A linha de fundo

Cada projeto tem sua própria metodologia de desenvolvimento de software, que depende da equipe, financiamento, prazos e requisitos do cliente. Não existe uma técnica de gerenciamento universal: mesmo a popular metodologia ágil não pode garantir a melhor abordagem para o processo de desenvolvimento. Como resultado, as metodologias são escolhidas com cuidado, às vezes até por princípio. Tanto que podemos tirar conclusões sobre uma empresa em si ou sobre seus clientes observando sua metodologia. Metodologias são misturadas, complementadas com modelos e adaptadas. Tanto que dão origem a novas abordagens. Dito isso, o domínio do gerenciamento permanece nas mãos do scrum e do Kanban, com elementos inesperados do modelo em cascata ou da metodologia RUP iterativa.
Mais leitura:
Sites: Livros:
  • Andrew Stelman, Jennifer Greene: "Aprendendo Agile";
  • Per Kroll, Bruce MacIsaac: «Agilidade e Disciplina Facilitadas: Práticas de OpenUP e RUP";
  • Mike Cohn: "Sucedendo com Agile: Desenvolvimento de Software Usando Scrum";
  • Robert C. Martin: "Desenvolvimento Ágil de Software: Princípios, Padrões, Práticas";
  • Marcus Hammarberg, Joakim Sunden: "Kanban em Ação";
  • I. Jacobson, G. Booch, J. Rumbaugh: "Processo Unificado de Desenvolvimento de Software".
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION