Ir para o conteúdo

Metodologia

Histórico de revisões

Data Versão Descrição Autor
11/09/2020 1.0 Criação da página e adição da primeira versão da metodologia Arthur Rodrigues
23/09/2020 1.1 Alteração na metodologia Arthur Rodrigues
20/11/2020 1.2 Atualização das referencias João Gabriel Antunes

1. Introdução

Metodologia de desenvolvimento ágil é uma forma de construir software que possibilita obter as vantagens do sistema antes de ele estar pronto. Também encoraja os desenvolvedores a se aprimorarem constantemente. Com isso, seus colaboradores menos experientes são treinados com a mão na massa, pelos profissionais mais experientes. O uso de metodologia de desenvolvimento ágil de software está cada dia mais popular.

Também conhecidas como Métodos Ágeis, essas metodologias incentivam a comunicação. Deste modo, os diversos agentes envolvidos no processo de desenvolvimento de um software interagem. Todos devem ser incluídos no processo de desenvolvimento: desde o cliente final até os técnicos de infraestrutura, passando por programadores, analistas, testadores e usuários. [2]

2. Objetivos e vantagens

Velocidade nas entregas

Existe uma maior agilidade e eficiência na execução dos processos e, consequentemente, nas entregas do projeto, tendo em vista que o cliente consegue acompanhar e validar o projeto em várias etapas. Dessa maneira, se ocorrer algum erro na solução, ele é facilmente identificado e apenas a etapa com falha precisa ser corrigida.

Qualidade do serviço

Como a interação entre a empresa e o cliente é maior, períodos de teste e validação podem ser realizados, aumentando assim a qualidade do produto final e garantindo a satisfação e a fidelização do cliente.

Independência e produtividade

As equipes de produção não precisam mais se preocupar com processos burocráticos, já que a simplificação desses procedimentos garante que todos os esforços sejam voltados para a criação de uma solução mais completa. Além disso, os membros da equipe têm uma independência muito maior, podendo buscar alternativas para solucionar problemas e erros de forma mais efetiva. [3]

3. Breve resumo sobre algumas das principais metodologias

Scrum

O Scrum é uma das formas de utilizar métodos ágeis em seus projetos e tem como principal objetivo auxiliar na gestão e no desenvolvimento de projetos que tenham um prazo curto de entrega. Ele é um dos métodos mais populares e é comumente confundido com o conceito da metodologia em si.

Na prática, o Scrum funciona criando ciclos, conhecidos como sprints, que são os intervalos de tempo para o desenvolvimento de cada etapa. Ao final de cada etapa, existe uma revisão do produto para validação. É só depois disso que a equipe inicia o próximo sprint.

As funcionalidades a serem implementadas em um projeto são mantidas em uma lista que é conhecida como Product Backlog. No início de cada Sprint, faz-se um Sprint Planning Meeting, ou seja, uma reunião de planejamento na qual o Product Owner prioriza os itens do Product Backlog e a equipe seleciona as atividades que ela será capaz de implementar durante o Sprint que se inicia. As tarefas alocadas em um Sprint são transferidas do Product Backlog para o Sprint Backlog.

A cada dia de uma Sprint, a equipe faz uma breve reunião (normalmente de manhã), chamada Daily Scrum. O objetivo é disseminar conhecimento sobre o que foi feito no dia anterior, identificar impedimentos e priorizar o trabalho do dia que se inicia.

Ao final de um Sprint, a equipe apresenta as funcionalidades implementadas em uma Sprint Review Meeting. Finalmente, faz-se uma Sprint Retrospective e a equipe parte para o planejamento do próximo Sprint. Assim reinicia-se o ciclo.

Kanban

O método Kanban é composto por checklists e oferece uma ótima visão de todo o projeto que está sendo desenvolvido. Ele é um dos métodos mais ágeis e simples utilizados atualmente.

Essa metodologia ganhou posição de destaque nos últimos anos por ser uma maneira de realizar o gerenciamento de projetos, com um poder de adaptação para qualquer tipo de negócio.

O principal objetivo desse método é buscar a evolução e não a revolução, permitindo que a organização dos processos seja feita de uma forma visual.

É preciso criar um quadro e dividi-lo da seguinte forma:

  • To Do — atividades que precisam ser realizadas;
  • Doing — atividades que estão sendo realizadas;
  • Done — atividades que já foram finalizadas, avaliadas e aprovadas pela equipe.

Acompanhar essa lista de atividades é vital para o bom funcionamento do método, de forma que todos os integrantes da equipe atualizem os dados inseridos constantemente. Ele também mantém um ritmo sustentável de produção, evitando gargalos e atrasos no processo.

Lean

O método Lean foi difundido no cenário das startups e é indicado para projetos reduzidos e mais objetivos. Seu foco principal é identificar e eliminar de forma eficiente os desperdícios dentro de uma organização ou na realização de algum projeto.

Dessa forma, existe uma redução de custos, diminuição na complexidade das tarefas realizadas — o que resulta em melhora nas entregas — aumento de produtividade da equipe e um melhor compartilhamento de informações.

Esse método é indicado para a validação de ideias e hipóteses e é constituído por três passos:

  • Construir;
  • Medir;
  • Aprender.

XP

O XP é um método de desenvolvimento de software, leve, não é prescritivo, e procura fundamentar as suas práticas por um conjunto de valores. O XP, diferentemente do que muito pensam, também pode ser adotar por desenvolvedores médios e não apenas por desenvolvedores experientes.

O objetivo principal do XP é levar ao extremo um conjunto de práticas que são ditas como boas na engenharia de software. Entre elas podemos citar o teste, visto que procurar defeitos é perda de tempo, nós temos que constantemente testar. O XP se baseia nos seguintes princípios:

  • Já que testar é bom, que todos testem o tempo todo;
  • Já que revisão é bom, que se revise o tempo todo;
  • Se projetar é bom, então refatorar o tempo todo;
  • Se teste de integração é bom, então que se integre o tempo todo;
  • Se simplicidade é bom, desenvolva uma solução não apenas que funcione, mas que seja a mais simples possível;
  • Se iterações curtas é bom, então mantenha-as realmente curtas;

As boas práticas do XP:

  • O cliente sempre disponível;
  • Uso de metáforas no projeto;
  • Planejando o jogo;
  • Pequenas versões;
  • Testes de Aceitação;
  • Primeiro os testes;
  • Integração Contínua;
  • Simplicidade de Projeto
  • Refatoração - melhoria constante do código;
  • Programação em dupla;
  • Rodízio de pessoas;
  • Propriedade coletiva - O código é de todos da equipe;
  • Padronização do código;
  • Otimizando as jornadas de trabalho.

Portanto, como podemos notar todas as coisas boas são levadas ao extremo no XP.

[3, 7]

4. Metodologias Híbridas

Atualmente existem diversos frameworks ágeis como, por exemplo, os vistos no tópico acima. Todas seguem a filosofia ágil, mas possuem peculiaridades que as diferenciam, com o intuito de apoiar o gerenciamento de projetos, de diferentes áreas de conhecimento e complexidade. Observa-se que elas têm em comum a busca por uma melhoria de performance, diminuição de incertezas e a satisfação do cliente [Barcaui 2017].

Diante de todas essas opções surge o problema: Qual metodologia de desenvolvimento software mais adaptável a diferentes contextos para conseguir maior produtividade sem perder a qualidade do produto?

Sabe-se que o uso de uma única metodologia sem utilização advinda de outras tem se mostrado raro, sendo difícil encontrar organizações que seguem todos os preceitos da metodologia adotada [Sbrocco e Macedo 2012] . Sabe-se ainda que, devido a mudanças rotineiras e constantes nos requisitos de qualquer projeto de software, demandados pela equipe de desenvolvimento, gerente de projeto e o cliente final, é importante que a equipe de desenvolvimento de software conheça uma metodologia de gerenciamento de software dinâmica e adaptativa, capaz de garantir um alinhamento consistente das demandas, pois projetos de software são afetados constantemente, por diversos fatores, como custo, escopo, qualidade, e seus critérios de sucesso variam de um projeto para outro [Sommerville 2011]. Sendo assim, o uso sistematizado de melhores práticas reunidas de vários modelos e frameworks pode ser uma opção para aumentar a produtividade e melhorar a qualidade do produto final.

[5]

5. Definição da Metodologia

Conhecendo o perfil do time

Membros Projetos em equipe que atuou Quando atuou Metodologias utilizada
André Eduardo GamesBI 2018 Scrum + Kanban + XP
Arthur Rodrigues GamesBI 2018 Scrum + Kanban + XP
João Antunes CarDefense 2018 Scrum + Kanban + XP
Marco Antônio GamesBI 2018 Scrum + Kanban + XP
Thallys Braz Ludum 2019 Scrum + Kanban + XP

Decisão das metodologias

Com base na experiência dos membros do grupo, ficou claro que o Scrum, Kanban e o XP foram as metodologias mais utilizadas. A partir dessas informações o grupo decidiu aplicar estas 3 metodologias em conjunto para o desenvolvimento do POMO.

Recursos utilizados de cada metodologia

Scrum:

  • Sprint:

    Em reunião com a equipe ficou acordado que as sprints durariam de 10 a 15 dias.

  • Sprint Planning:

    Durante essa reunião, que será no ínicio de cada módulo da disciplina, serão levantadas as funcionalidades, artefatos de maior prioridade que devem ser entregues naquela sprint e também será definido os responsáveis por cada uma delas.

    Geralmente essas reuniões têm duração de 2 horas e são feitas pela plataforma Teams. Utilizamos o Telegram para verificar qual o melhor horário para todos possam estar presentes.

    A partir dessa reunião será gerado um relatório de planejamento da sprint em questão, esse relatório conterá informações como os principais pontos debatidos, os papéis, se houve pareamento e etc.

    Ficou decidido que a cada sprint um membro da equipe será responsável por fazer esse relatório.

    Serão criadas também todas as issues no repositório de documentação, independente se for issue de backend ou frontend, pois, conforme decidido pela equipe, agrupar todas em um único repositório facilita a visualização.

    As issues servirão como nossas atividades no kanban da equipe.

  • Sprint Review:

    Essa reunião, que será no final de cada módulo, terá o objetivo de levantar os principais aspectos alcançados naquela sprint e também o que ficou faltando. Será levado em consideração os feedbacks dos membros.

    Geralmente essas reuniões têm duração de 2 horas e são feitas pela plataforma Teams. Utilizamos o Telegram para verificar qual o melhor horário para todos possam estar presentes.

    Assim como no Sprint Planning, será gerado um relatório que conterá informações como: feedback dos membros, presença nas reuniões (Plannig e Review), tarefas finalizadas e dívidas técnicas.

    O membro que fizer o relatório da Sprint Planning também será responsável de produzir o relatório da Review.

  • Product Backlog:

    É um artefato muito importante onde contém todas as funcionalidades desejadas para o software. Nas reuniões de planejamento ele poderá ser alterado de acordo com as necessidades dos membros.

    O nosso backlog pode ser encontrado aqui.

Kanban

Será feita a utilização de uma ferramenta para gerenciar os três tipos de estados das atividades. Os estados são:

  • To Do (Para fazer)
  • Doing (Fazendo)
  • Done (Feito)

A utilização dessa ferramenta será de grande utilidade para a equipe ter noção do andamento das atividades.

Utilizaremos a ferramenta Zenhub para manter o nosso quadro, onde as atividades serão as issues (como dito no tópico de Sprint Planning). Os membros devem interagir através das issues para se manterem informados a respeito do andamento da tarefa.

XP

  • Integração Contínua:

    Serão utilizadas ferramentas para a execução de testes unitários, auxiliando na prevenção de erros de código e facilitando a implementação da solução

  • Programação em dupla:

    Para nivelar o conhecimento da equipe colocando um membro que entenda mais com um que entenda menos lado a lado no desenvolvimento. Ajuda também na prevenção de erros de código.

  • Padronização do código:

    Todo código é desenvolvido seguindo um padrão, qualquer que seja, mas toda equipe deve seguir o mesmo padrão. Dessa forma, todos da equipe terão a mesma visão do código.

Representação em notação BPMN

Pode ser encontrado aqui

Considerações

Esperamos aliar boas práticas de cada metodologia a fim de obter bons resultados no processo de desenvolvimento do POMO. Estamos dispostos a alterar esse modelo híbrido, de acordo com a realidade do projeto, se for de necessidade para a melhoria do processo no momento em questão. Feedbacks dos membros, a respeito do método empregado, serão muito bem-vindos ao longo das etapas, o que contribuirá para uma possível alteração da metodologia, buscado aumentar o desempenho da equipe.

6. Referências

Módulo Processos/Metodologias/Abordagens (Apresentação) da disciplina Arquitetura e Desenho de Software. VideoAulas [03a até 03h] - DSW - Metodologia. Professora Milene Serrano. Universidade de Brasília.

GONÇALVES, Débora. Metodologias ágeis de desenvolvimento de software: saiba mais sobre o assunto, feveireiro de 2019. Cronapp Blog. Disponível em https://blog.cronapp.io/metodologias-ageis-de-desenvolvimento-de-software/. Acesso em: 11/09/2020.

VINAL, Victor. Metodologias Ágeis: o que são, como implementar as 4 principais, janeiro de 2020. Rock Content. Disponível em https://rockcontent.com/br/blog/metodologias-ageis/#:~:text=1.,conceito%20da%20metodologia%20em%20si.. Acesso em: 11/09/2020.

Higor. Introdução ao Extreme Programming (XP), 2013. DevMedia. Disponível em https://www.devmedia.com.br/introducao-ao-extreme-programming-xp/29249. Acesso em: 11/09/2020.

SANTOS, Francisco Alan de O.; SANTOS, Márcio Fabiano O. M.; REIS, Ednelson M.; COSTA, Anderson de O.; Metodologias Híbridas de Desenvolvimento de Software: Uma Opção Viável para Gestão de Projetos. Disponível em https://sol.sbc.org.br/index.php/eripi/article/download/5187/5093/. Acesso em: 11/09/2020.

Scrum. Desenvolvimento Ágil. Disponível em https://www.desenvolvimentoagil.com.br/scrum/. Acesso em: 11/09/2020.

Manoel. Extreme Programming – Conceitos e Práticas, 2006. DevMedia. Disponível em https://www.devmedia.com.br/extreme-programming-conceitos-e-praticas/1498. Acesso em: 11/09/2020.