A abordagem adotada neste projeto é fundamentada no SCRUM, uma metodologia ágil que visa aprimorar a especificação e a execução de projetos. Essa metodologia permite uma melhor organização das equipes, fragmentando tarefas e buscando maior eficiência no desenvolvimento.
O SCRUM baseia-se na entrega incremental do produto, em períodos curtos e regulares conhecidos como sprints. Com isso, promovemos a colaboração de todos, incentivando a contribuição de ideias e habilidades. Essa abordagem facilita a resolução do problema central, otimizando cada fase do desenvolvimento e execução.
A ferramenta de controle de versão adotada no projeto foi o Git, sendo que o Github foi utilizado para hospedagem do repositório.
O projeto segue a seguinte convenção para o nome de branches:
main
: versão estável já testada do softwareunstable
: versão já testada do software, porém instáveltesting
: versão em testes do softwaredev
: versão de desenvolvimento do software
Quanto à gerência de issues, o projeto adota a seguinte convenção para etiquetas:
documentation
: melhorias ou acréscimos à documentaçãobug
: uma funcionalidade encontra-se com problemasenhancement
: uma funcionalidade precisa ser melhoradafeature
: uma nova funcionalidade precisa ser introduzida
A metodologia ágil escolhida para o desenvolvimento deste projeto foi o SCRUM. Nós optamos por este método devido à sua flexibilidade, que nos permite adaptar rapidamente às mudanças nos requisitos, uma situação comum em projetos. O SCRUM se baseia em princípios iterativos e incrementais, permitindo entregas contínuas e a adaptação ao longo do processo (SCHWABER; SUTHERLAND, 2017). Além disso, ele favorece a realização de ciclos curtos de trabalho, possibilitando entregas frequentes de funcionalidades.
A divisão de papéis dentro de nossa equipe, que utilizará o método ágil SCRUM como base para definir os processos de desenvolvimento, é fundamental para garantir a eficiência e a clareza nas responsabilidades. Por isso, a equipe está organizada da seguinte forma:
• Scrum Master: Ariane Moura.
• Product Owner: Raphael Rodrigues.
• Equipe de Desenvolvimento: Ariane Moura, Alexsander, Leticia, Raphael, Vinicius, Breno Marques, Marytom.
• Equipe de Design: Ariane Moura, Raphael Rodrigues.
Essa estrutura assegura que cada membro tenha um papel claro, promovendo assim a colaboração e alinhamento com os objetivos do projeto. O Scrum Master será responsável por facilitar o processo e remover obstáculos, enquanto o Product Owner definirá as prioridades do backlog e irá assegurar que as entregas atendam às expectativas dos stakeholders (Clientes). As equipes de desenvolvimento e design trabalharão em conjunto para implementar as funcionalidades e criar soluções visuais que atendam às necessidades do projeto.
Para a implementação do SCRUM, seguimos uma série de práticas que garantem a eficiência e a organização do nosso trabalho:
- Cerimônias do SCRUM:
⁃ Sprint Planning: No início de cada Sprint, a equipe realiza uma reunião para selecionar itens do Backlog do Produto e planejar as atividades para a Sprint.
⁃ Daily Standup: Reuniões diárias de curta duração, onde os membros da equipe compartilham o progresso, os obstáculos e as próximas tarefas.
⁃ Sprint Review: Ao final de cada Sprint, a equipe apresenta o trabalho concluído ao Product Owner e outros stakeholders, obtendo feedback para a próxima iteração.
⁃ Sprint Retrospective: Uma reunião após a Sprint Review, onde a equipe reflete sobre o processo e identifica maneiras de melhorar a eficiência e a qualidade.
Para organização e distribuição das tarefas do projeto, a equipe está utilizando o GitHub Project, por meio do Quadro Kanban, organizado da seguinte forma:
■ Product Backlog: Recebe as tarefas a serem trabalhadas e representa o Backlog do produto. Todas as atividades identificadas no decorrer do projeto são incorporadas a esta lista.
■ To Do: Esta lista representa o Sprint Backlog que está sendo trabalhado.
■ In progress: Lista das tarefas iniciadas.
■ Done: Nesta lista são colocadas as tarefas finalizadas e as que passaram pelos testes e controle de qualidade, prontas para serem entregues aos usuários.
1.1 Planejamento: Nesta etapa inicial, foi discutido e definido o problema central a ser abordado: a otimização da gestão e operação de usinas de energia, com foco em eficiência energética e sustentabilidade. Foram estabelecidos os objetivos do projeto,. Além disso, foram propostos os Requisitos Funcionais e Não-Funcionais necessários, e as restrições técnicas e regulatórias que a solução deverá observar.
Como parte do planejamento, foi desenvolvida uma apresentação com a abordagem geral do projeto e um vídeo que sintetiza os principais pontos e propósitos da solução proposta. Após a formação da equipe, foram estabelecidos canais de comunicação e planejamento de reuniões semanais por meio das plataformas Microsoft Teams, além de um grupo no WhatsApp para discussões rápidas e troca de ideias.
Por fim, foi elaborada e entregue a documentação referente a esta fase inicial, contendo as seções de Documentação do Contexto e a Especificação do Projeto, que detalha os principais aspectos técnicos e operacionais.
1.2 Execução: Durante a fase de execução, foram realizados encontros semanais com o orientador para direcionamento e orientação quanto à documentação, o uso do GitHub. O orientador também sugeriu melhorias e correções, que foram implementadas no decorrer dos encontros.
As reuniões da equipe ocorreram de uma a duas vezes por semana no Teams, devido à natureza crítica das definições desta etapa. Cada encontro resultou na distribuição de tarefas entre os membros, visando o avanço e refinamento das documentações e diagramas técnicos.
1.3 Evidências: Para garantir o registro de todas as definições e decisões, foram realizados encontros e reuniões da equipe, documentados em atas, que cobriram discussões sobre objetivos, perfis de usuário, requisitos, restrições, e outros pontos essenciais para o desenvolvimento do projeto. Essas atas serviram como base para a divisão de tarefas e organização do trabalho em equipe.
Além das atas, foram produzidos materiais documentais, a logo do projeto, e a apresentação oficial da Etapa 1, que incluiu os principais pontos discutidos e definidos até o momento.
➤ GitHub: É utilizado como plataforma de hospedagem de repositórios de código-fonte. O GitHub permite que a equipe mantenha todos os arquivos do projeto organizados. Através dele, os membros realizam commits regulares e criam branches para desenvolver novas funcionalidades ou corrigir bugs. Além disso, o GitHub é utilizado para gerenciar um quadro Kanban, facilitando a organização e o acompanhamento das tarefas do projeto.
➤ Microsoft Teams: Foi adotado por nós como principal ferramenta de comunicação e colaboração, o Microsoft Teams facilita a realização de reuniões virtuais e o compartilhamento de arquivos e documentos importantes. Além disso, mantém uma comunicação eficaz entre todos os membros do grupo.
➤ WhatsApp: Mesmo não sendo a ferramenta principal, o WhatsApp nos serve como um canal complementar para comunicação rápida e informal. É utilizado para comunicações urgentes, atualizações imediatas e para manter a equipe conectada, mesmo fora dos dias de reunião no teams.
➤ Figma: O Figma é a ferramenta escolhida para o design de interfaces e prototipagem de telas. Com ele, os designers podem criar Wireframes e fluxogramas, permitindo uma colaboração eficiente e uma melhor compreensão das necessidades do projeto.
➤ Ambiente de Trabalho: Cada membro da equipe utiliza seu próprio ambiente de trabalho, geralmente composto por computadores pessoais ou notebooks com sistemas operacionais compatíveis com as ferramentas de desenvolvimento adotadas.
➤ Gestão Ágil: A equipe adota uma abordagem ágil para o gerenciamento de projetos, utilizando o SCRUM. Metodologia que orienta a divisão do trabalho em sprints, realização de reuniões regulares e a manutenção de um backlog priorizando tarefas, garantindo eficiência e adaptação contínua às necessidades do projeto.
➤ Visual Studio Code (VS Code): O VS Code é utilizado como ambiente de desenvolvimento pela equipe. Ele oferece recursos avançados de edição de código, integração com o GitHub e da suporte a diversas linguagens de programação, facilitando o desenvolvimento e a colaboração entre os membros da equipe.
➤ Diagrams: Ferramenta utilizada para criar diagramas e visualizar fluxos de trabalho, facilitando a compreensão e comunicação de processos e arquitetura do sistema.
Todos os artefatos relacionados a implementação e visualização dos conteúdos do projeto da aplicação foram inseridos no Código Fonte.