Existe alguma razão para não aceitar uma entrega de software como uma máquina virtual?

40

Esta é uma questão sobre logística, não uma questão técnica.

Minha empresa terceirizou algum trabalho de software incorporado. Especificamente, pagamos a um contratado para desenvolver um sistema embarcado para nós, já que não temos conhecimento interno adequado para fazer isso por nós mesmos (só temos desenvolvedores de aplicativos de desktop).

Assim, os contratados concluíram o software e perguntaram se poderiam enviá-lo para nós em uma máquina virtual. A VM é uma máquina do Windows 8 que contém o IDE CodeWarrior pré-configurado com o código-fonte como um projeto CodeWarrior. A ideia é que isso nos permitirá fazer alterações no código dentro da VM que já está configurada para desenvolvimento adicional 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 no código do projeto? O único problema que posso prever é a VM rodando lentamente e demorando muito tempo para reconstruir o projeto quando fizermos alterações no código. Mas, por outro lado, gosto da idéia de obter um ambiente de desenvolvimento de sistema embarcado pré-configurado para que eu não tenha que adicionar outro IDE em minha máquina de desenvolvimento de aplicativos de desktop.

Eu não consigo pensar em uma boa razão para não aceitar uma entrega de VM, mas eu só queria executá-la por essa comunidade caso algo esteja faltando.

    
por CFL_Jeff 18.03.2013 / 16:16
fonte

11 respostas

66

O problema que vejo é que o conhecimento de configuração e configuração da máquina virtual não é interno e, se a configuração não for trivial, você dependerá da outra empresa quando o software precisar ser configurado para diferentes versões do OS / libraries / hardware / whatever. Aceitar a VM é bom para se levantar e correr mais rápido, mas eu insistiria em obter instruções passo a passo sobre como configurar seu próprio sistema para manutenção futura.

    
por 18.03.2013 / 16:20
fonte
36

Eu não vejo uma grande desvantagem, mas eu diria que aceitar uma VM com o código-fonte deve implicar a mesma paranóia de aceitar o envio de uma máquina com o software e o ambiente de desenvolvimento instalados. por isso, 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 instalada e funcionando, você poderá dobrar o código-fonte em seus repositórios de código normais, como você (provavelmente) teria feito com apenas um arquivo de código-fonte entregue.

    
por 18.03.2013 / 16:45
fonte
18

Eu ficaria preocupado se há algo configurado na máquina que não está documentado, é difícil de reproduzir ou não é aceitável em sua configuração padrão.

Ymmv, mas eu realmente não considero o desenvolvimento feito até que se possa demonstrar que o projeto é construído a partir das máquinas de desenvolvimento padrão e implementado nos servidores / clientes de commodity.

    
por 18.03.2013 / 16:55
fonte
10

Em alguns dos meus projetos, tive que lutar muito para que o software fosse entregue dessa forma. É um excelente formato.

Verifique se você:

  1. Obtenha o código-fonte de cada versão que você recebe do contratado e mescle-o em seu próprio sistema de controle de origem
  2. Obtenha documentação sobre a configuração do ambiente da VM e pode reproduzi-la internamente. Adicione a documentação ao seu controle de origem também

Benefícios adicionais:

  1. Se você arquivar os lançamentos no formato VM (salvar o arquivo .vhd ou algo assim), será muito mais fácil colocá-los em funcionamento por vários anos, mesmo que a equipe original esteja fragmentada ou tenha sido eliminada.
  2. É muito mais fácil executar versões diferentes lado a lado.
  3. Com alguma integração VMWare (também pode ser possível com o HyperV), você pode integrá-los em uma construção de CI automaticamente.
  4. Economiza tempo do desenvolvedor (no começo), porque há pouca ou nenhuma configuração de ambiente.

Eu diria que vá em frente.

    
por 18.03.2013 / 16:23
fonte
6

Esse é realmente o tipo de coisa que deveria ter sido trabalhada no contrato original. Eles já podem estar indo acima e além. Eu não esperaria obter instruções de configuração sem pagar extra, 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 fornecedor por uma semana para criar um código de interface conosco. Eles usam principalmente o Linux, então nos instalamos com máquinas virtuais Linux para a semana em que estiveram aqui. Funcionou muito bem enquanto eles estavam aqui e tivemos pouco trabalho em migrar para o Cygwin depois que eles saíram.

Parece-me que você está subestimando suas próprias habilidades. Configurar um IDE não é tão difícil, mesmo sem um exemplo de trabalho para compará-lo. Eu ficaria mais preocupado em violar os contratos de licenciamento do Windows e do CodeWarrior. Se você está devidamente licenciado, você deve ser capaz de obter suporte da Freescale para qualquer problema de configuração.

    
por 18.03.2013 / 18:31
fonte
4

Como FrustratedWithFormsDesigner disse , você precisa saber como configurar a máquina para você. No entanto, gostaria de acrescentar que você poderia pedir a eles que forneçam um script que configure a máquina para você, em vez de uma VM inteira. Se o script estiver bem escrito, você terá a documentação exata e atualizada de como configurar a máquina (lendo o código-fonte), além disso, o script fará isso para você, economizando tempo toda vez que você 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 é Chocolatey .

Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind.

Você pode criar seus próprios pacotes Chocolatey com facilidade e criar um script do PowerShell que instalará e configurará praticamente tudo.

    
por 18.03.2013 / 17:30
fonte
3

O ambiente em execução lenta não deve ser um problema, apenas jogue memória e CPU nele. A sobrecarga da VM moderna para o trabalho tipo desktop, como a maioria dos SWs, é muito pequena, ela é salva muitas vezes por não precisar fazer nenhuma configuração ao alterar o hardware.

    
por 18.03.2013 / 16:33
fonte
3

Eu teria pensado que o contrato de desenvolvimento estipularia as entregas e as obrigações do contratado para você.

No mínimo, eu estaria solicitando uma apresentação e documentação de como a configuração funciona e o que é vital para que você possa recriar o projeto, construí-lo e implantá-lo por conta própria.

Em termos de ter algo pronto para funcionar, acho que a VM é perfeitamente aceitável.

Eu definitivamente estaria pressionando pela documentação. Eu ficaria hesitante sem isso, a menos que você tenha um alto nível de compreensão de como isso funciona, você pode ficar no barril no futuro, especialmente se precisar dar suporte ao aplicativo por conta própria.

    
por 18.03.2013 / 23:19
fonte
2

Mesmo para sistemas embarcados desenvolvidos internamente, é importante ter um documento descrevendo como configurar o ambiente de criação. Você também precisa arquivar todos os binários / arquivos de instalação de ferramentas e bibliotecas necessárias para configurar o ambiente de construção.

    
por 18.03.2013 / 23:01
fonte
1

Eu não aceitaria a VM como um código de entrega porque dificulta a atualização. Você tem que ter essa VM como uma imagem de ouro para fazer o trabalho de desenvolvimento. Isso dificulta a criação de mods. Um desenvolvedor precisa reformatar ou obter uma nova máquina, eles precisam instalar uma VM e puxar a VM.

Quando você faz edições, precisa confirmar uma nova "cópia de ouro" da VM. Por que você deseja gerenciar um arquivo binário grande como esse no controle de origem? Não é possível diferenciar e, na minha experiência, tentar controlar a fonte de uma cópia dourada de qualquer coisa binária não termina bem. A menos que você possa manter um controle rigoroso sobre quem edita a cópia de ouro, você acabará com coisas que não estão documentadas e que ninguém conhece.

Se um desenvolvedor quisesse enviar o software para mim nesse formulário, eu encontraria um desenvolvedor diferente. Isso me diz que eles não são profissionais o suficiente para fazer o script de suas dependências, ou pelo menos documentá-los.

Eu também os teria:

  1. Crie um arquivo de texto que seja verificado no controle de origem com o código. Ele lista todas as dependências que você precisa para colocar o projeto em funcionamento, que não fazem parte do repositório de controle de origem (por exemplo, CodeWarrior, qualquer ferramenta de linha de comando ou outros aplicativos externos dos quais você depende).

  2. 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ê não tenha pacotes de chocolate, você pode fazer. 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, que estão com todos os recursos, e podem ser desbloqueadas inserindo uma chave de licença. Então é possível que a mesma coisa possa ser feita com o CodeWarrior, e quaisquer outras dependências que você tenha para o seu ambiente de desenvolvimento.

Talvez o seu desenvolvedor seja realmente bom o bastante para continuar trabalhando com ele / ela, mas não é bom nessas coisas de automação. Tudo bem também, se fosse esse o caso, eu mesmo faria a parte de automação, trabalhando com ele / ela para identificar as dependências e fazer o script funcionar, ou conseguiria outro desenvolvedor que fosse bom na automação para fazer isso . Isso deve ser feito no início do projeto. Uma cópia limpa e simples de uma VM Win8 ainda seria útil, pois você pode usá-la para testar seu script com aparência de chocolate.

    
por 22.03.2013 / 19:19
fonte
0

Eu não acho que haja um problema com isso, eu vi sistemas de gerenciamento de conteúdo que são instalados como VMs e, a partir do que você diz, os contratados lhe deram a capacidade de manter e estender o aplicativo por conta própria.

No entanto, como outros pôsteres notaram, há duas coisas que eu gostaria de fazer. Primeiro, certifique-se de que, ao instalar a VM, coloque-a em uma máquina separada da sua rede. Você não iria baixar um EXE desconhecido da internet e instalá-lo em sua máquina.

Segundo, se possível, mantenha esta cópia isolada como referência para definir a versão interna. Eu digo, se possível, porque eu não conheço as pressões de negócios que você está sob. Em última análise, serão os departamentos / programadores de TI da sua empresa que serão responsáveis por esta aplicação. Então, quanto mais você souber sobre isso, melhor.

    
por 19.03.2013 / 22:41
fonte