Processos de desenvolvimento de software
Histórico de Revisão
Data | Versão | Descrição | Autores |
---|---|---|---|
25/09/2023 | 0.1 | Adicionando os processos de desenvolvimento | Júlia Yoshida |
25/09/2023 | 0.2 | Atualizando atividades de engenharia de requisitos | Júlia Yoshida, Luana Ribeiro, Yasmim Oliveira e Yan Luca |
25/09/2023 | 0.3 | Detalhando o uso do Sommervile | Júlia Yoshida |
14/11/2023 | 0.4 | Correção Scrum | Luana Rbeiro |
Metodologias
Abordagem | Ciclo de vida | Processo |
---|---|---|
Ágil | Iterativo/Incremental | Scrum/XP |
No processo de desenvolvimento de uma aplicação, é importante ter em mente que o êxito do projeto não se restringe apenas à codificação. O sucesso depende igualmente da identificação das características da aplicação, para que a partir disso, possamos escolher as metodologias que melhor atendem às nossas necessidades.
A grande diferença entre uma abordagem dirigida à plano para uma ágil é a limitação que cada projeto possui, para o Matriculaí suas limitações estão no tempo e nos recursos financeiros o que direciona o projeto para uma abordagem ágil. Ao afunilar o universo de processo de desenvolvimento após a escolha da abordagem, o ciclo de vida se atém ao contato constante (ou não) com o cliente que, particularmente, se dispôs a ter um contato frequente com a equipe. O processo se deu ao utilizar o framework Sommerville que é um conjunto de perguntas de cárater técnico, organizacional e humano que nos proporcionou a segurança para eleger o Scrum/XP além de fatores como a familiaridade da equipe, o foco em feedback constante e entregas de valor.
Sommervile
A escolha da abordagem foi feita a partir dos critérios propostos pelo framework Sommervile. Para isso, respondemos às seguintes perguntas:
Perguntas técnicas
- Qual é o tamanho do sistema que está sendo desenvolvido? Pequeno.
- Que tipo de sistema está sendo desenvolvido? Solução Web.
- Qual é a vida útil prevista para o sistema? Indefinido.
- O sistema está sujeito a controle externo? Não.
Perguntas humanas
- Qual é o nível de competência dos projetistas e programadores do time de desenvolvimento? Júnior.
- Como está organizado o time de desenvolvimento? Scrum Master, Dev Back e Front, CI Tester (responsabilidade compartilhada).
- Quais são as tecnologias disponíveis para apoiar o desenvolvimento do sistema? ReactJs, GitHub, Notion, Google Meet, MySQL, NodeJs.
Perguntas organizacionas
- É importante ter uma especificação e um projeto (design) bem detalhados antes de passar para a implementação — talvez por motivos contratuais? Não.
- É realista uma estratégia de entrega incremental, na qual o software é entregue aos clientes ou outros stakeholders e um rápido feedback é obtido? Sim.
- Os representantes do cliente estarão disponíveis e dispostos a participar do time de desenvolvimento? Sim.
- Existem questões culturais que possam afetar o desenvolvimento do sistema? Não.
Atividades da engenharia de requisitos
Na tabela a seguir estão as atividades de engenharia de requisitos que serão realizadas durante o desenvolvimento do software:
Nome da atividade | Método | Momento na Sprint | Ferramenta | Entrega |
---|---|---|---|---|
Elicitação e Descoberta | - Reuniões com o cliente | - Sprint Review- Sprint Planning | - Google Meet- Notion | - Diagrama de Ishikawa- Documentação da reunião com o cliente |
Análise e Consenso | - Estudo individual e reunião entre a equipe - Reunião de confirmação com o stakeholder | - Sprint Planning- Entre a Planning e a Review- Sprint Review | - Google Meet - Notion | - Backlog de requisitos- Backlog da sprint- Documentação da validação do cliente |
Declaração | - História de usuário | - Sprint Planning- Durante a sprint caso necessário | - Notion | - Backlog de requisitos com histórias de usuário |
Representação | - Prototipação | - Sprint Planning- Sprint Review | - Figma | - Protótipo |
Verificação e Validação | - Testes na aplicação e de validação do cliente- Reunião com o cliente | - Testes durante a sprint- Sprint Review | - Google forms- Ferramentas de teste | - Documentação dos testes - Documentação do feedback do cliente |
Organização e Atualização | Listagem dos requisitos- Reuniões entre a equipe- Reuniões com o stakeholder | - Sprint Planning- Sprint Review- Atividades durante a sprint | - Notion- Discord - Google Meet | - Documentação atualizada - Aplicação atualizada |
Configurações do processo de engenharia de requisitos: Participativo
Escolhemos o processo de engenharia de requisitos participativo, por estarmos trabalhando com uma metodologia ágil em um contexto em que temos um cliente específico e em que o foco é explorar os requisitos em uma série de iterações, tendo contato constante com o cliente.
Alvo | Propósito | Tempo |
---|---|---|
Cliente específico | Exploratório | Iterativo |
SCRUM
Evento | Descrição |
---|---|
Daily Scrum | Reunião diária com duração máxima de 15 minutos, na qual os membros da equipe devem discutir o progresso de trabalho da Sprint desde a última reunião diária. No caso deste projeto, serão realizadas trocas de mensagens diárias no grupo da equipe, para deixar todos a par das atividades semanais |
Sprint Planning | Reunião realizada no inicio de cada sprint com o intuito de definir as entregas da sprint em questão. |
Sprint Retrospective | Essa reunião ocorrerá ao fim de cada sprint e terá como objetivo analisar a dinâmica de trabalho da equipe e das ferramentas utilizadas, procurando melhorar se algo deixar a desejar. |
Sprint Review | Durante a Sprint Review, faremos a revisão dos resultados da Sprint, a validação do que foi implementado, o alinhamento de expectativas e atualização do Product Backlog com a presença do cliente. |
Product Backlog | Lista priorizada dos requisitos do produto que precisam ser desenvolvidos para atender aos objetivos do projeto. |
Estratégias eXtremme Programming
Estratégia | Descrição |
---|---|
Propriedade Coletiva | Qualquer membro da equipe pode alterar qualquer parte do código da aplicação a qualquer momento. |
Ritmo Sustentável | Evita a sobrecarga de trabalho e o esgotamento dos membros da equipe. |
Metáfora | Explicar o projeto de forma simples auxilia o time e o cliente a entender os elementos do sistema. |
Refatoração | Melhorar o código existente sem alterar sua funcionalidade. |
Programação em Pares | É uma abordagem colaborativa em que dois desenvolvedores trabalham juntos em um único código, compartilhando conhecimentos e habilidades para melhorar a qualidade e eficiência do desenvolvimento de software. |
Jogo de Planejamento | Será utilizado no início de cada Sprint da metodologia SCRUM para priorizar as funcionalidades e definir as tarefas que serão realizadas. |
Toda a Equipe | Fomenta a colaboração entre todos os membros da equipe para resolver problemas e atingir os objetivos do projeto, o que resulta em maior produtividade e na redução de conflitos entre os membros. |
Pequenas Versões | Tornam o acompanhamento do progresso do projeto mais claro e objetivo, facilitando a identificação mais rápida de problemas tanto para a equipe quanto para o cliente. |
Padrões de codificação | Uma codificação padronizada facilita a comunicação, encoraja a posse coletiva e evita problemas na programação. |