Skip to content

Commit

Permalink
docs(#87): adds methodology and tools description to wiki
Browse files Browse the repository at this point in the history
Co-authored-by: dartmol203 <[email protected]>
  • Loading branch information
gabrielm2q and dartmol203 committed Dec 19, 2024
1 parent 150cd67 commit 76dead2
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 1 deletion.
77 changes: 77 additions & 0 deletions docs/projeto/metodologias_e_ferramentas.md
Original file line number Diff line number Diff line change
@@ -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: <https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-PortugueseBR-3.0.pdf>.

LambdaTest. **Extreme Programming Tutorial: Comprehensive Guide With Best Practices**, por Irshad Ahamed. Disponível em: <https://www.lambdatest.com/learning-hub/extreme-programming>.

Nimble. **What Is Extreme Programming (XP)? It's Values, Principles, And Practices**, por Marjan Venema (2024). Disponível em: <https://www.nimblework.com/agile/extreme-programming-xp/>.

Atlassian. **Kanban: Como a metodologia Kanban é aplicada ao desenvolvimento de software**. Disponível em: <https://www.atlassian.com/br/agile/kanban#:~:text=O%20m%C3%A9todo%20Kanban%20%C3%A9%20uma,e%20transpar%C3%AAncia%20total%20de%20trabalho.>.

CAROLI, Paulo. **Lean Inception: como alinhar pessoas e construir o produto certo**. Primeira edição atualizada. São Paulo: Editora Caroli, 2018.
3 changes: 2 additions & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down

0 comments on commit 76dead2

Please sign in to comment.