Documento de setup do projeto
Setup
Histórico da Revisão
Data | Versão | Descrição | Autor |
---|---|---|---|
18/03/2021 | 0.1 | Criação do documento | Ana Carolina Carvalho |
Documento de início de projeto
A finalidade deste documento é de registrar as primeiras e principais decisões do time Violeta.
Apresentação do time de EPS e MDS
Apresentação dos membros e alinhamento de expectativas quanto as disciplinas de MDS e EPS. Nesta reunião, o time de EPS se apresentou para o time de MDS e alinhou as expectativas, apresentou a proposta da disciplina e definiu alguns combinados. Dentre os combinados estão:
- Transparência na comunicação;
- Abertura para a tirada de dúvidas;
- Comprometimento nas entregas;
- Disponibilidade dos finais de semana;
- Feedbacks contínuos.
Definir tema do projeto
Definir qual será o tema do projeto junto ao professor Hilmer. Neste momento, alguns temas foram lenvatados com base nos cards da ONU.
Card 3: Saúde e Bem-Estar: Aplicativo de monitoramento e melhoria de hábitos
Card 4: Educação de Qualidade: Plataforma de aulas da UnB
Card 8: Trabalho decente e crescimento econômico: Plataforma de publicação de vagas de empregos
Nenhum desses temas teve a aprovação do professor, por este motivo, novos temas foram levatados:
-
Um webapp onde coloca o tipo de planta que você tem e vai marcando os sintomas e ele dá uma parcial do que pode ser o problema com sua Planta.
-
Aplicativo onde a mulher coloca todos os aspectos que aconteceram com ela depois dela sentir que foi violentada ou injustiçada de alguma forma. Ali ela preenche todas as etapas do formulario e ao final o webapp dá o veredito juridico das coisas que ela pode fazer e o caminho a recorrer.
-
Webapp que mostra todas as micro e pequenas empresas próximas para incentivar a produção e mercado local.
A ideia aprovada pelo professor foi o tópico 2 da segunda rodada de sugestões. Foi essa a inspiração para o escopo do projeto Violeta.
Definir tecnologia usada no projeto
Definir com os times de EPS e MDS qual tecnologia se encaixa no projeto. Quais tecnologias atendem as necessidades do escopo.
Após decidirmos qual seria o escopo do projeto pudemos pensar em qual tecnologia se encaixaria nas nossas necessidades de desenvolvimento. Além de levar em consideração o requisito de microsserviços levantado pelo professor da matéria.
Neste momento, ainda não era a hora de criar o documento de arquitetura. Apenas escolhemos quais linguagens seriam usadas, até mesmo para o time de MDS já ir estudando e o time de EPS preparar Dojos.
Por isso, para o back-end, escolhemos Django REST para a construção da nossa API. O Django Rest Framework (DRF)é uma biblioteca para o Framework Django que disponibiliza funcionalidades para implementar APIs Rest de forma extremamente rápida. Para o front-end, escolhemos React JS. O React, que também é conhecido como React.js ou ReactJS, é uma biblioteca JavaScript opensource com foco em criar interfaces de usuário em páginas web.
O tema é melhor abordado no documento de arquitetura.
Definir ritos de metodologia ágil
Definir qual ou quais frameworks ágeis usar e quais ritos aplicar com o time durante o decorrer da disciplina.
Os métodos ágeis são uma abordagem de modelo de gestão que diferente do tradicional, onde tínhamos o desenvolvimento de um produto divido por etapas bem definidas e inflexíveis, o ágil se organiza em iterações curtas, onde o produto é constantemente incrementado e o resultado é medido conforme essas entregas.
Em outro documento abordaremos melhor as metodologias ágeis. Num geral, escolhemos usar abordagens do XP (Extreme Programming), Kanban, Scrum e Lean Inception. Além disso, o Lean também foi aplicado, sendo este um conceito. Ainda sobre o Lean, ele não pode ser considerado simplesmente como uma metodologia ágil. Seria mais preciso classificá-lo como uma filosofia que foi aplicada na construção de metodologias como o Agile e o Kanban.
Do XP adotamos:
- Programação pareada (pair programming): o desenvolvimento do código feito em duplas, preferencialmente composta por alguém pouco mais experiente e outra pessoa sem experiência, no mesmo computador. No nosso caso, as duplas estão sendo alteradas toda sprint.
- Padronização do código (coding standards): o time de desenvolvimento de MDS definiu padrões para a construção do código, pois isso fará com que o código fique uniformizado e mais compreensível. Para isso foi criado uma folha de estilo do projeto.
- Integração contínua (continuous integration): depois que uma funcionalidade for testada ela deve ser imediatamente sincronizada entre a equipe, evitando conflitos.
- Design simples (simple design): entregar apenas o que o cliente pediu, em vez de tentar reinventar a roda.
- Jogo de planejamento (planning game): priorizar quais funcionalidades serão desenvolvidas antes de cada ciclo, também realizamos a pontuação da tarefa neste momento de priorização. O qual chamamos de Planning Poker.
- História de usuário (User Story): Uma história de usuário é uma narrativa escrita sobre a utilização de um sistema na visão de um determinado usuário.
Do Scrum adotamos:
- Sprint: As iterações do Scrum são chamadas de Sprints, ciclos completos de desenvolvimento que percorrem do planejamento à entrega (idealmente), incluindo ainda inspeção e adaptação de processos para garantir a melhoria contínua.
- As cerimônias:
- Sprint Planning: A Sprint Planning é o rito de planejamento da Sprint, que deve ocorrer no primeiro dia da mesma. Nesta cerimônia defini-se o objetivo da sprint, o escopo de trabalho e alinha-se como que este trabalho será realizado.
- Daily Meeting: A Daily Scrum é uma cerimônia de alinhamento. Ela possui algumas regras que garantem a sua celeridade, o seu objetivo e ao aproveitamento de todos, são elas:
- Ela acontece todos os dias;
- No máximo deve durar 15 minutos e todos devem estar em pé;
- Sempre acontece no mesmo lugar e no mesmo horário, combinado com todos;
- cada pessoa tem a sua vez de falar e os demais ouvem;
- Cada pessoa fala para os demais membros do time, não há um chefe aqui e isso não é uma "prestação de contas";
- Não discute-se detalhes de nenhuma atividade durante a Daily, apenas depois. Daily consiste em cada membro do time responder a apenas três perguntas:
- o que eu fiz desde a última Daily?
- o que eu vou fazer depois da Daily?
- tem algo bloqueando o trabalho?
- Sprint Review: É a apresentação do trabalho planejado x trabalho realizado e quais serão os próximos passos do Time de Desenvolvimento, alé do que o Product Owner está planejando para a próxima sprint.
- Sprint Retrospective: A Sprint Retrospective é um rito que deve acontecer sempre no último dia da sprint ou release, no caso da Violeta acontece ao final da Release, para "fechar" a mesma. É uma cerimônia com duração máxima de três horas para cada trinta dias de sprint e é facilitada pelo Scrum Master. Nesta cerimônia que todo o Time Scrum deve participar, o objetivo é analisar tudo o que aconteceu nesta sprint que está encerrando e propor melhorias para a próxima.
- Os papéis:
- O Product owner é o responsável por gerenciar o backlog do produto, isto é, o conjunto de funcionalidades e características que o produto deve ter.
- O scrum master é o responsável por disseminar o scrum pela organização, garantindo que ele esteja sendo aplicado de forma correta. Portanto, atua como um facilitador.
- O development team é a equipe de desenvolvedores responsável por entregar as funcionalidades do produto e o produto final.
Uma importante observação nos papéis do projeto, nosso Scrum Master é, na verdade, um agile coach. Já o Agile Coach é um profissional, que não só entende do framework ágil Scrum, mas como outros frameworks ágeis como, por exemplo, Kanban e XP.
Do Kanban adotamos:
- Quadro de status das tarefas. Ele possui 04 princípios:
- Visibilidade. Deve deixar visível o trabalho em progresso, os limites, as prioridades, atrasos e bloqueios.
- Fluxo puxado. Comece a terminar e pare de começar, você deve terminar tudo que começa e somente depois iniciará novas tarefas.
- Colaboração. É necessário que as pessoas colaborem para o andamento das tarefas dentro do fluxo do quadro.
- Melhoria contínua. Entregas constantes e evolução nas entregas com os feedbacks gerados.
- Cartão. O cartão é a menor parte do kanban. Trata-se de uma tarefa ou ação que precisa ser tomada para que o resultado final seja entregue.
- Colunas. As colunas representam os status dos cartões. Um kanban geralmente possui três colunas: A Fazer, Em Execução e Feito, mas essas colunas podem mudar de acordo com a necessidade da equipe de trabalho. No caso do nosso time, adicionamos o backlog, review, icebox e closed.
- Métricas de contagem para as atividades do projeto.
- Apresentado no documento de métricas do projeto.
Quadro de conhecimento
Preparação do quadro de conhecimento que será aplicado ao time de MDS. O objetivo é o time de EPS compreender o nível de conhecimento em determinadas áreas do time de MDS, podendo criar estratégias e ajudá-los a alcançar o conhecimento necessário para se desenvolver bem no decorrer da disciplina.
Link do quadro de conhecimento: https://docs.google.com/spreadsheets/d/1xdwLbPowugM50JLVIR9dDqhSS_JmXJTy8zT5Fq9tGqU/edit#gid=0
Criar tabela para acompanhar horas trabalhadas de MDS
Criação de uma planilha para mapear a quantidade de horas que cada membro do time de MDS está dedicando à disciplina. Tabela foi criada pelo time de MDS
https://docs.google.com/spreadsheets/d/1z720pFwdU7ZzPJK8j9-ugRUWoRUai1vWbkM4DXLDNA4/edit?usp=sharing