Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/raulbatalha/sprint_planner
O Sprint Planner é uma ferramenta para alocar histórias de usuário de maneira otimizada dentro de uma equipe, utilizando um algoritmo genético para distribuir as tarefas de acordo com a senioridade dos membros da equipe.
https://github.com/raulbatalha/sprint_planner
gere planning planning-poker scrum scrum-agile scrum-board scrum-master scrum-poker scrum-poker-cards sprint team-integration user-story
Last synced: 5 days ago
JSON representation
O Sprint Planner é uma ferramenta para alocar histórias de usuário de maneira otimizada dentro de uma equipe, utilizando um algoritmo genético para distribuir as tarefas de acordo com a senioridade dos membros da equipe.
- Host: GitHub
- URL: https://github.com/raulbatalha/sprint_planner
- Owner: raulbatalha
- License: mit
- Created: 2024-11-30T12:30:42.000Z (22 days ago)
- Default Branch: main
- Last Pushed: 2024-11-30T12:49:12.000Z (22 days ago)
- Last Synced: 2024-11-30T13:35:03.612Z (22 days ago)
- Topics: gere, planning, planning-poker, scrum, scrum-agile, scrum-board, scrum-master, scrum-poker, scrum-poker-cards, sprint, team-integration, user-story
- Language: Python
- Homepage:
- Size: 320 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Sprint Planner - Planejamento de Sprint com Algoritmo Genético
O **Sprint Planner** é uma ferramenta para alocar histórias de usuário de maneira otimizada dentro de uma equipe, utilizando um algoritmo genético para distribuir as tarefas de acordo com a senioridade dos membros da equipe. A proposta é encontrar a melhor alocação possível para que o tempo total da sprint seja minimizado, respeitando um prazo determinado.
## Estrutura do Projeto
O projeto é organizado da seguinte forma:
```
sprint_planner/
│
├── config/
│ └── __init__.py
│ └── config.py
│
├── docs/
│ └── apresentação_planejamento_scrum.pdf
│ └── relatório_planejamento_scrum.pdf
│
├── evaluation/
│ └── __init__.py
│ └── evaluation.py
│
├── genetic_algorithm/
│ └── __init__.py
│ └── genetic_algorithm.py
│
├── resultados/
│ └── planejamento_sprint_scrum_equipe_maior.txt
│ └── planejamento_sprint_scrum_equipe_menor.txt
│ └── planejamento_sprint_scrum_equipe_normal.txt
│
├── utils/
│ └── __init__.py
│ └── utils.py
│
├── main.py
├── requirements.txt
└── README.md
```## Como Usar
1. Clone este repositório em sua máquina local:
```bash
git clone [email protected]:raulbatalha/sprint_planner.git
cd sprint_planner
```2. Instale as dependências necessárias:
```bash
pip install -r requirements.txt
```3. Execute o arquivo principal para calcular o planejamento da sprint:
```bash
python main.py
```Isso irá gerar o planejamento da sprint, exibindo as alocações das tarefas e o tempo total da sprint. O arquivo `planejamento_sprint_scrum_equipe_normal.txt` será gerado com os resultados. Caso queira gerar com equipe maior ou menor faça a mudança de quantidade de membros no arquivo `config.py`.
## Como Funciona
O algoritmo genético utilizado neste projeto funciona da seguinte maneira:
1. **População Inicial**: A população inicial é gerada aleatoriamente, com cada indivíduo representando uma possível alocação das histórias de usuário para os membros da equipe.
2. **Avaliação (Fitness)**: A função de avaliação calcula o tempo total da sprint com base na carga de trabalho de cada membro da equipe, considerando sua senioridade.
3. **Seleção**: Utiliza o torneio para selecionar os indivíduos mais aptos para a próxima geração.
4. **Crossover (Cruzamento)**: O crossover é feito por um ponto de cruzamento aleatório para combinar duas alocações de tarefas.
5. **Mutação**: A mutação altera aleatoriamente a alocação de tarefas de um membro.
6. **Execução**: O algoritmo genético é executado por várias gerações até encontrar a melhor solução para alocação das tarefas dentro do tempo da sprint.## Arquitetura
### Módulos
- **`config.py`**: Contém as configurações iniciais, como as histórias de usuário, membros da equipe, e tabelas de senioridade.
- **`evaluation.py`**: Implementa a função de avaliação (fitness function) que calcula o tempo total da sprint com base na alocação das tarefas.
- **`genetic_algorithm.py`**: Implementa o algoritmo genético, que realiza o cruzamento, mutação e seleção dos indivíduos para otimizar o tempo da sprint.
- **`utils.py`**: Contém funções auxiliares para exibir os resultados e salvar o planejamento em um arquivo.## Exemplo de Saída
Após a execução, o planejamento da sprint será impresso no terminal e salvo em um arquivo de texto. O conteúdo do arquivo `planeamento_sprint_scrum_equipe_normal.txt` será algo como:
```
+---------------------+-----------+------------+
| História de Usuário | Membro | Complexidade |
+---------------------+-----------+------------+
| 1 | Membro A | 5 |
| 2 | Membro B | 8 |
| 3 | Membro C | 3 |
| ... | ... | ... |
+---------------------+-----------+------------+Tempo Total da Sprint: 42
A sprint será concluída dentro do prazo estipulado.
```## Contribuições
Contribuições são bem-vindas! Se você tiver alguma sugestão ou correção, sinta-se à vontade para abrir uma *issue* ou enviar um *pull request*.
## Licença
Este projeto está licenciado sob a [MIT License](LICENSE). MIT © [Raul Batalha ](https://github.com/raulbatalha)