Esta é uma pergunta sobre logística, não uma questão técnica.
Minha empresa terceirizou alguns trabalhos de software incorporado. Especificamente, pagamos um contratado para desenvolver um sistema incorporado para nós, pois não temos conhecimento interno suficiente para fazer isso sozinhos (temos apenas desenvolvedores de aplicativos de desktop).
Portanto, os contratados concluíram o software e perguntaram se poderiam entregá-lo em uma máquina virtual. A VM é uma máquina Windows 8 que contém o CodeWarrior IDE pré-configurado com o código-fonte como um projeto CodeWarrior. A idéia é que isso nos permita fazer alterações de código na VM que já está configurada para o desenvolvimento deste projeto.
Há alguma desvantagem em fazer isso, em vez de fazer com que eles nos orientem sobre como configurar nossas próprias máquinas de desenvolvimento para fazer alterações de código no projeto? O único problema que posso prever é a VM rodando lentamente e demorando muito tempo para reconstruir o projeto quando fazemos alterações no código. Mas, por outro lado, gosto da ideia de obter um ambiente de desenvolvimento de sistema embarcado pré-configurado para não precisar adicionar mais um IDE na minha máquina de desenvolvimento de aplicativos de desktop.
Eu realmente não consigo pensar em um bom motivo para não aceitar uma entrega de VM, mas eu só queria executá-la por essa comunidade, caso faltasse algo.
fonte
Respostas:
O problema que vejo é que o conhecimento de instalação e configuração da máquina virtual não é interno e, se a configuração não for trivial, você estará confiando na outra empresa quando o software precisar ser configurado para diferentes versões do o SO / bibliotecas / hardware / o que for. Aceitar a VM é bom para começar a funcionar mais rapidamente, mas eu insisto em saber como configurar seu próprio sistema para manutenção futura.
fonte
Eu não vejo uma grande desvantagem com isso, mas eu diria que aceitar uma VM com o código-fonte deve implicar a mesma paranóia que aceitar uma remessa de uma máquina com o software e o ambiente de desenvolvimento instalados, portanto, faça verifique se não há nada de ruim instalado na VM antes de ativá-la em um ambiente que tenha acesso à sua rede interna.
Se / quando você tiver a VM em funcionamento, poderá dobrar o código-fonte em seus repositórios de código normais, como você (provavelmente) faria com apenas um arquivo de código-fonte entregue.
fonte
Eu ficaria preocupado que haja algo configurado na máquina que não seja documentado, difícil de reproduzir ou não seja aceitável na sua configuração padrão.
Sim, mas eu realmente não considero o desenvolvimento feito até que o projeto possa demonstrar as máquinas de desenvolvimento padrão e implementadas nos servidores / clientes básicos.
fonte
Em alguns dos meus projetos, tive que lutar muito para que o software fosse entregue dessa maneira. É um excelente formato.
Assegure-se de que você:
Benefícios adicionais:
Eu diria que vá em frente.
fonte
Esse é realmente o tipo de coisa que deveria ter sido elaborada no contrato original. Eles já podem estar indo além. Eu não esperaria obter instruções de configuração sem pagar mais, porque requer mais trabalho da parte deles.
Eu já estive em uma situação semelhante à sua antes. Nosso ambiente de desenvolvimento é o Windows / Cygwin e tivemos uma visita de um fornecedor por uma semana para incluir algum código de interface conosco. Eles usam principalmente o Linux, então montamos máquinas virtuais Linux para a semana em que eles estiveram aqui. Isso funcionou muito bem enquanto eles estavam aqui e tivemos poucos problemas em migrar para Cygwin depois que eles saíram.
Parece-me que você está subestimando suas próprias habilidades. A configuração de um IDE não é tão difícil, mesmo sem um exemplo prático para compará-lo. Eu ficaria mais preocupado em violar os acordos de licenciamento do Windows e do CodeWarrior. Se você estiver devidamente licenciado, poderá obter suporte da Freescale para quaisquer problemas de configuração.
fonte
Como FrustratedWithFormsDesigner disse , você precisa saber como configurar a máquina para si mesmo. No entanto, gostaria de acrescentar que você pode pedir que eles forneçam um script que configure a máquina para você, em vez de uma VM inteira. Se o script estiver escrito suficientemente bem, você terá a documentação exata e atualizada de como configurar a máquina (lendo o código-fonte), e o script fará isso por você, economizando seu tempo sempre que precisar de um nova máquina.
Uma ferramenta que estou experimentando para ajudar a padronizar / automatizar a configuração de uma nova máquina Windows é o Chocolatey .
Você pode criar seus próprios pacotes Chocolatey com bastante facilidade e criar um script do PowerShell que instalará e configurará praticamente tudo.
fonte
O ambiente em execução lenta não deve ser um problema, basta jogar memória e CPU nele. A sobrecarga da VM moderna para o trabalho de tipo desktop, como a maioria do desenvolvimento de SW, é muito pequena, é salva muitas vezes por não precisar fazer nenhuma configuração ao alterar o hardware.
fonte
Eu teria pensado que o contrato de desenvolvimento estipularia as entregas e obrigações do contratante para você.
No mínimo, eu estaria solicitando uma explicação e documentação de como a configuração funciona e o que é vital para o ponto em que você pode recriar o projeto, criar e implantar você mesmo.
Em termos de ter algo pronto, acho que a VM é perfeitamente aceitável.
Eu definitivamente estaria pressionando por documentação. Eu ficaria hesitante sem isso, porque, a menos que você tenha um alto nível de entendimento de como funciona, poderá estar acima do barril no futuro, principalmente se precisar dar suporte ao aplicativo.
fonte
Mesmo para sistemas embarcados desenvolvidos internamente, é importante ter um documento descrevendo como configurar o ambiente de construção. Você também precisa arquivar todos os binários / instalar arquivos de ferramentas e bibliotecas necessárias para configurar o ambiente de construção.
fonte
Eu não aceitaria a VM como um código de entrega, pois dificulta as atualizações. Você precisa ter essa VM como uma imagem de ouro para fazer o trabalho de desenvolvimento. Isso torna mais difícil fazer mods. Um desenvolvedor precisa reformatar ou obter uma nova máquina; ele precisa instalar uma VM e puxar a VM.
Ao fazer edições, você deve confirmar uma nova "cópia dourada" da VM. Por que você deseja gerenciar um grande arquivo binário como esse no controle de origem? Não é possível diferenciar e, na minha experiência, tentar controlar a fonte de uma cópia de ouro de qualquer coisa binária não termina bem. A menos que você possa manter um controle estrito sobre quem edita a cópia de ouro, você terminará com coisas que não estão documentadas e que ninguém sabe.
Se um desenvolvedor quisesse entregar software para mim dessa forma, eu encontraria um desenvolvedor diferente. Isso me diz que eles não são profissionais o suficiente para escrever suas dependências ou, pelo menos, documentá-las.
Eu os teria também:
Crie um arquivo de texto verificado no controle de origem com o código. Ele lista todas as dependências que você precisa para iniciar o projeto, que não fazem parte do repositório de controle de origem (por exemplo, CodeWarrior, quaisquer ferramentas de linha de comando ou outros aplicativos externos dos quais você depende).
Um script para instalar as dependências. Como você está no Windows, não deve ser muito difícil criar um script Chocolatey para automatizar a configuração do ambiente de desenvolvimento. Quaisquer dependências que você possua que ainda não sejam pacotes de chocolate, você pode criar. Por exemplo, você pode instalar ferramentas comerciais pesadas como o Visual Studio e o SQL Server via Chocolatey. Esses pacotes instalam as versões de avaliação, com todos os recursos, e podem ser desbloqueadas digitando uma chave de licença. Portanto, é possível que o mesmo possa ser feito com o CodeWarrior e outras dependências que você possui para o seu ambiente de desenvolvimento.
Talvez o seu desenvolvedor seja realmente bom o suficiente para que você ainda queira trabalhar com ele, mas não seja bom nessas coisas de automação. Tudo bem também, se esse fosse o caso, eu faria a parte da automação, trabalhando com ele para identificar as dependências e fazer o script funcionar, ou contrataria outro desenvolvedor que seja bom em automação para fazer isso . Isso deve ser feito no início do projeto. Uma cópia limpa e básica de uma VM do Win8 ainda seria útil porque você pode usá-la para testar seu script cor de chocolate.
fonte
Eu não acho que exista um problema com isso, vi sistemas de gerenciamento de conteúdo que são instalados como VMs e, pelo que você diz, os contratados deram a você a capacidade de manter e estender o aplicativo.
No entanto, como outros pôsteres observaram, há duas coisas que eu faria. Primeiro, verifique se, ao instalar a VM, coloque-a em uma máquina separada da sua rede. Você não faria o download de um EXE desconhecido da Internet e o instalaria em sua máquina.
Segundo, se possível, mantenha essa cópia isolada como referência para definir a versão interna. Digo, se possível, porque não conheço as pressões comerciais que você está enfrentando. Por fim, serão os departamentos / programadores de TI da sua empresa que serão responsáveis por esse aplicativo. Então, quanto mais você souber, melhor.
fonte