O processo de desenvolvimento de um sistema, de forma geral, é formado por um conjunto de ações que se repetem durante sua execução. O desenvolvimento pode ser longo, durando meses ou até anos. Por este motivo, se faz necessária um divisão do todo em etapas menores, que possam ser executadas iterativamente até que o todo esteja concluído. Estas etapas são chamadas de Marcos.
Um Marco pode ser definido como sendo uma etapa de um processo de desenvolvimento. Cada Marco é composto por um conjunto de tarefas, chamadas de tickets, que indicam todas as tarefas que serão executadas por um desenvolvedor. De forma geral, um requisito pode ser derivado em N tarefas de desenvolvimento. Cada tarefa possui uma priorização e um tipo (defeito, melhoria e análise).
Durante o desenvolvimento de um Marco, diversas ações são executadas. Este processo inclui as seguintes ações:
Com exceção da primeira ação, que costuma ser executada apenas uma vez no início do processo de desenvolvimento, todas as outras são executadas iterativamente enquanto existirem Marcos.
1.Preparação do ambiente de desenvolvimento
A ação de preparar o ambiente consiste em deixar um desenvolvedor apto a desenvolver os tickets contidos em um Marco. Esta ação em geral é executada uma vez ao início do processo de desenvolvimento, e costuma não ser mais necessária durante o resto do processo.
O primeiro passo necessário é fazer uma cópia do repositório principal para a conta do desenvolvedor. Essa cópia é chamada de fork e é realizada no servidor remoto. Uma vez que esta cópia foi realizada, o passo seguinte é baixar o repositório do servidor remoto para o computador que será utilizado para o desenvolvimento.
Neste passo de preparação também estão inclusos a instalação da IDE a ser utilizada para o desenvolvimento, bem como a preparação das bibliotecas de terceiros que serão utilizadas durante o processo.
2.Aceitação da tarefa e seu desenvolvimento
Uma vez que o ambiente de desenvolvimento está pronto, a ação seguinte consiste em aceitar uma tarefa dentre as tarefas disponíveis e realizar o seu desenvolvimento. Em geral, existe sempre um Marco corrente ao qual os desenvolvedores devem focar seu desenvolvimento. Porém não é incomum a necessidade de desenvolver tarefas de correções em Marcos anteriores, ou até tarefas que estão previstas somente para Marcos posteriores.
O desenvolvimento começa com a aceitação de uma tarefa por parte de um desenvolvedor. Esse passo irá indicar ao grupo que determinado desenvolvedor passou a ser o responsável pelo desenvolvimento de determinada tarefa. Em seguida o desenvolvimento se inicia. Ao final do desenvolvimento da tarefa, caberá ao desenvolvedor executar os devidos testes para verificar se tudo está correto e se a tarefa está realmente completa.
Quando a tarefa estiver completa, o passo seguinte é o de integrar este desenvolvimento ao repositório principal. Primeiramente, o desenvolvedor integrará as modificações aos repositórios existentes na sua conta, e em seguida requisitar a revisão e integração das modificações ao repositório principal.
3.Revisão e integração
Antes que um código desenvolvido seja integrado ao repositório principal, existe a necessidade de que ele seja analisado e revisado. Esta ação pode conter tanto revisões atendidas quanto por revisões automáticas. De forma geral, as revisões automáticas dizem respeito à testes de compilação, testes unitários e análise estática, mas podem conter outras formas. Já a revisão atendida é realizada por um desenvolvedor experiente onde ele irá analisar a sintaxe, semântica, formatação e boas práticas.
Caso seja necessário, o desenvolvedor irá modificar o código a partir das sugestões levantadas na revisão. Logo após todas as sugestões terem sido desenvolvidas, o código é então integrado ao repositório principal.
4.Testes de usuário e estabilização
Quando todas as tarefas de um marco estão finalizadas, ação seguinte é o início da fase de testes de usuário e estabilização. O objetivo desta fase é verificar se todas as tarefas que foram desenvolvidas atendem aos requisitos aos quais elas estão associadas. Um usuário com experiência nas regras de negócio do sistema irá realizar testes e analisar os resultados. Este usuário pode qualquer stakeholder, tanto interno quanto externo, e de forma geral deve conhecer as regras de negócio do sistema.
Se durante a fase de testes alguma inconsistência for encontrada, como por exemplo falha na execução, ou um resultado diferente do esperado, a tarefa será reaberta para que o desenvolvedor possa efetuar as devidas adaptações e correções. Este processo iterativo de testes e ajustes é chamado de estabilização.
5.Finalização de uma versão
Uma vez que os testes realizados verificaram que todos as tarefas do Marco foram atendidas, o Marco é dado como estabilizado. Neste momento, inicia-se o desenvolvimento de um novo Marco.
Além do início de um novo Marco, outros processos são realizados. O principal deles é a manutenção de uma cópia exata do estado de desenvolvimento ao final do desenvolvimento de cada Marco. Isso se faz necessário uma vez que podem haver entregas de versões, e pode ser preciso efetuar correções pontuais nesta versão entregue. Como não é desejável que aumentemos a instabilidade, essas correções devem ser realizadas no próprio Marco que havia sido finalizado.
Dependendo do projeto, podem ocorrer entregas de versões nessa etapa. Consequentemente, pode ser necessário o empacotamento do sistema e de outros arquivos que compõem as entregas.