Estamos construindo um CRM para um cliente. Agora que a primeira fase principal foi concluída e a segunda concordada, o cliente gostaria de pegar parte do trabalho, fazendo pequenas alterações no esquema do banco de dados e nos processos de negócios na primeira fase enquanto construímos a segunda .
Não sei se isso é prático, mas, supondo que seja, gostaria de algumas dicas sobre quais medidas podem ser tomadas para tornar isso viável. Aqui está o que eu tenho até agora:
Até agora, o cliente via principalmente o projeto do ponto de vista do usuário; claramente, um seminário de duas partes deve ocorrer onde o apresentamos ao funcionamento interno:
- primeiro, mostrando o esquema do banco de dados existente e, a título de exemplo, estendendo-o,
- em seguida, mostrando algum código de amostra e gravando um novo processo de negócios para o aprimoramento do esquema.
- O código atualmente reside em um repositório interno do Subversion. Embora possamos configurar um ou um público em sua rede (na qual podemos VPN), acho que um sistema distribuído funcionaria melhor. Parece que sou o único que se sente assim, para poder usar alguns bons argumentos convincentes.
Não sei como determinar / garantir que o código executado na produção seja confirmado. Parece que "x fez uma mudança crítica e sem documentos, pouco antes de sair de férias; agora você está tentando descobrir esse bug que ocorre desde que" os desastres são inevitáveis. Idealmente, todas as alterações, antes da implantação, seriam:
- ser documentado em um sistema de rastreamento de problemas,
- ocorrer primeiro em um ambiente de teste separado e
- precisa passar por testes automatizados.
Infelizmente, duvido que a disciplina para qualquer uma delas prevaleça.
Suponha que uma arquitetura de plug-in ou projeto separado não sejam opções viáveis, porque 1) o primeiro não existe e 2) o último proibiria o cliente de examinar e possivelmente modificar o código existente, uma capacidade que acredito que ele insistir em.