From 76dead2d77d6fb4d4ede672aaf42338c88e1b59c Mon Sep 17 00:00:00 2001 From: gabrielm2q Date: Thu, 19 Dec 2024 17:27:57 -0300 Subject: [PATCH] docs(fga-eps-mds/2024.2-ARANDU-DOC#87): adds methodology and tools description to wiki Co-authored-by: dartmol203 --- docs/projeto/metodologias_e_ferramentas.md | 77 ++++++++++++++++++++++ mkdocs.yml | 3 +- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 docs/projeto/metodologias_e_ferramentas.md diff --git a/docs/projeto/metodologias_e_ferramentas.md b/docs/projeto/metodologias_e_ferramentas.md new file mode 100644 index 0000000..d943012 --- /dev/null +++ b/docs/projeto/metodologias_e_ferramentas.md @@ -0,0 +1,77 @@ +# Metodologias e Ferramentas + +## Versionamento + +| **Versão** | **Data** | **Modificação** | **Responsável** | +| :-: | :-: | :-: | :-: | +| 0.1 | 18/12/24 | Criação do documento e definição do Scrum | Gabriel Mariano e André Corrêa | +| 0.2 | 19/12/24 | Definição das demais metodologias e das ferramentas | Gabriel Mariano | + +*Tabela 1: Versionamento* + +--- + +## Objetivo + +Ao decorrer do projeto, é proposto o uso de diversas metodologias ágeis em prol da organização, eficiência e adaptabilidade do desenvolvimento. Deste modo, este artefato visa documentar as principais metodologias utilizadas no projeto, para além das principais ferramentas utilizadas neste. + +## Metodologias, Frameworks e Workshops + +### Scrum + +Conforme proposto por Schwaber e Sutherland (2020), o Scrum é um *framework* que visa guiar o desenvolvimento de maneira adaptável, incremental e colaborativa. O Scrum se baseia fundamentalmente em um conjunto de papéis e ritos. + +Dentre os papeis, o Scrum cita o *Product Owner (P.O.)*, o *Scrum Master (S.M.)* e o *Scrum Team*, sendo o *P.O.* pela formação do *backlog*, o *S.M.* o responsável pela execução dos ritos e o *S.T.* a equipe responsável pela execução e validação das atividades que geram valor ao projeto. + +Dentre os ritos, pode-se citar a *Sprint Planning* (onde há a construção do *backlog* da *sprint* e uma definição dos responsáveis), a *Sprint Review* (onde há uma revisão - ou inspeção - geral dos artefatos entregues) e a *Sprint Retrospective* (onde há uma discussão geral de fatores positivos, negativos e possíveis melhorias com base na *sprint* passada). + +No contexto do projeto, buscamos realizar todos os ritos supracitados nas *sprints* ao decorrer do projeto, para além de reuniões presenciais (*standups*) em dias pré-definidos, sendo geralmente no intervalo entre as aulas da presente disciplina. Com relação aos papéis, há uma divisão "natural" seguindo algumas das propostas da disciplina, com a definição de um *P.O.*, a definição de um *Scrum Master* responsável pelos ritos e a consequente definição de um *Scrum Team*. + +### Extreme Programming (XP) + +Voltada para o desenvolvimento de software, o *Extreme Programming (XP)* - criado por Kent Beck nos anos 90 - é, aliado às outras metodologias, um importante *framework* que auxiliará no desenvolvimento do projeto. Através do estabelecimento de boas práticas e princípios, o XP nos permite o desenvolvimento de um bom produto de *software* de maneira adaptável e cíclica. + +No contexto do atual projeto, são utilizadas práticas como o *Pair Programming*, o desenvolvimento iterativo com validação do cliente, o estabelecimento de histórias de usuário validadas pelo P.O. e há constante validação dos artefatos produzidos. Como pode ser visto no [**Planejamento de Comunicação**](../equipe/planejamento_de_comunicacao.md), também há uma valorização da comunicação, um dos valores propostos pelo *XP*. + +### Kanban + +Surgindo no meio industrial do Japão na década de 40, o Kanban é um método comumente utilizado em paralelo à outras metodologias ágeis em prol da definição de um fluxo linear de trabalho, facilitando a organização, acompanhamento e visualização do mesmo. O Kanban se baseia em um quadro composto por raias e cartões, onde cada cartão representa uma tarefa a ser executada, sendo alocado em uma raia que, por sua vez, representa o "estado atual" da atividade em questão. Uma estrutura básica de raias é composta por: "A fazer", "Em andamento" e "Concluído". + +Em nosso projeto, o *Kanban* é aplicado através da ferramenta *ZenHub*, a qual será melhor detalhada na seção de "Ferramentas". + +### Lean Inception + +O *Lean Inception* é um workshop definido por Caroli (2018, p. 16) como "uma sequência de atividades para a criação de produtos de forma enxuta fortemente influenciadas por Design Thinking e Lean Startup". Em nosso contexto, o *workshop Lean Inception*, seguindo a abordagem proposta por Caroli (2018) e dando continuidade à [visão de produto proposta pela equipe do semestre anterior](https://fga-eps-mds.github.io/2024.1-CALCULUS-DOC/lean/canvas_mvp/), foi de fundamental relevância para a evolução e definição de nossa visão de produto, obtendo como resultado a definição de nosso [*Minimum Viable Product (MVP)*](../Lean_Inception/canvas_mvp.md). + +Todas as etapas do *workshop* realizado pela equipe estão documentados nos artefatos da aba "*Lean Inception*". + +## Ferramentas + +Para a evolução do projeto, são utilizadas diversas ferramentas com fins específicos ou não. Abaixo, são listadas algumas dessas em conjunto com sua(s) finalidade(s). As ferramentas utilizadas para a comunicação do grupo estão listadas no [**Planejamento de Comunicação**](../equipe/planejamento_de_comunicacao.md). + +| **Ferramenta** | **Objetivo** | +| :-: | :-: | +| [*Visual Studio Code*](https://code.visualstudio.com/) | Editor de código, utilizado para o desenvolvimento de *software*. | +| [*Neovim*](https://neovim.io/) | Editor de texto/código *CLI* baseado em *Vim*. | +| [*Android Studio*](https://developer.android.com/studio?hl=pt-br) | *Ambiente de Desenvolvimento Integrado* para aplicações mobile. Compatível com o [*Flutter*](https://docs.flutter.dev/). | +| [*Mongo Atlas*](https://www.mongodb.com/pt-br/atlas) | Plataforma *cloud* para o uso do banco de dados *Mongo*. | +| [*Render*](https://render.com/) | Plataforma *cloud* para o *deploy* dos microserviços. | +| [*MongoDB Compass*](https://www.mongodb.com/pt-br/products/tools/compass) | Ferramenta *GUI desktop* para acesso ao banco de dados *Mongo*. | +| [*Insomnia*](https://insomnia.rest/) (ou [*Postman*](https://www.postman.com/)) | Ferramentas para, dentre outras funcionalidades, envio de requisições *HTTP* para os microserviços. | +| [*Docker*](https://www.docker.com/) | Plataforma para a conteinerização de aplicações. Usada juntamente com a ferramenta **Docker-Compose**, cujo objetivo é realizar a "orquestração" dos conteineres. | +| [*Zenhub*](https://www.zenhub.com/) | Plataforma para a gestão de projetos capaz de se integrar ao *GitHub*. Conta com um quadro *Kanban* para o acompanhamento das histórias (e demais atividades) desenvolvidas. | +| [*Github*](https://github.com/) | Plataforma para o armazenamento e gestão de repositórios. | + +*Tabela 2: Ferramentas* + +## Fontes + +SCHWABER, K.; SUTHERLAND, J. **O Guia do Scrum: O Guia Definitivo para o Scrum**. Scrum Guides, 2020. Disponível em: . + +LambdaTest. **Extreme Programming Tutorial: Comprehensive Guide With Best Practices**, por Irshad Ahamed. Disponível em: . + +Nimble. **What Is Extreme Programming (XP)? It's Values, Principles, And Practices**, por Marjan Venema (2024). Disponível em: . + +Atlassian. **Kanban: Como a metodologia Kanban é aplicada ao desenvolvimento de software**. Disponível em: . + +CAROLI, Paulo. **Lean Inception: como alinhar pessoas e construir o produto certo**. Primeira edição atualizada. São Paulo: Editora Caroli, 2018. diff --git a/mkdocs.yml b/mkdocs.yml index 0b43e65..aed6df0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -82,16 +82,17 @@ nav: - Sequenciador: 'Lean_Inception/sequencia.md' - Canvas MVP: 'Lean_Inception/canvas_mvp.md' - Documentação Técnica: - - Estrutura Analítica do Projeto: 'projeto/estrutura_analitica.md' - Documento de Arquitetura: 'projeto/arquitetura.md' # - Termo de Abertura do Projeto: 'organizacoes/tap.md' # - Visão de Dados: 'organizacoes/visao-de-dados.md' # - Visão de Endpoints: 'organizacoes/visao-de-endpoints.md' # - Manual de Instruções: 'organizacoes/manual_de_instruções.md' - Gestão do Projeto: + - Estrutura Analítica do Projeto: 'projeto/estrutura_analitica.md' - Plano de Qualidade: 'projeto/qualidade.md' - Plano de Custos: 'projeto/custos.md' - Plano de Riscos: 'projeto/planejamento_de_risco.md' + - Metodologias e Ferramentas: 'projeto/metodologias_e_ferramentas.md' # - EVM: 'organizacoes/EVM.md' # - Dojos: # - Dojo Markdown: 'dojo/dojo-markdown.md'