¿Hay alguna razón para no aceptar un software entregable como una máquina virtual?

40

Esta es una pregunta sobre logística, no una pregunta técnica.

Mi empresa ha subcontratado algunos trabajos de software integrado. Específicamente, le hemos pagado a un contratista para que desarrolle un sistema integrado ya que no tenemos el conocimiento interno adecuado para hacerlo nosotros mismos (solo tenemos desarrolladores de aplicaciones de escritorio).

Por lo tanto, los contratistas han finalizado el software y han preguntado si pueden enviárnoslo en una máquina virtual. La VM es una máquina con Windows 8 que contiene el IDE CodeWarrior preconfigurado con el código fuente como un proyecto CodeWarrior. La idea es que esto nos permitirá realizar cambios en el código dentro de la VM que ya está configurada para un mayor desarrollo de este proyecto.

¿Hay algún inconveniente en hacer esto en lugar de que nos guíen a través de cómo configurar nuestras propias máquinas de desarrollo para hacer cambios de código en el proyecto? El único problema que puedo prever es que la máquina virtual se ejecute lentamente y se demore mucho en reconstruir el proyecto cuando realizamos cambios de código. Pero, por otro lado, me gusta la idea de obtener un entorno de desarrollo de sistema integrado preconfigurado, por lo que no tengo que agregar otro IDE en mi máquina de desarrollo de aplicaciones de escritorio.

Realmente no puedo pensar en una buena razón para no aceptar una entrega de VM, pero solo quería ejecutar esta comunidad en caso de que falte algo.

    
pregunta CFL_Jeff 18.03.2013 - 16:16

11 respuestas

66

El problema que veo es que el conocimiento de la configuración y configuración de la máquina virtual no es interno, y si la configuración no es trivial, dependerá de la otra compañía cuando el software deba configurarse para Diferentes versiones del sistema operativo / bibliotecas / hardware / lo que sea. Aceptar la máquina virtual está bien para comenzar a funcionar más rápido, pero insistiría en obtener información detallada sobre cómo configurar su propio sistema para un futuro mantenimiento.

    
respondido por el FrustratedWithFormsDesigner 18.03.2013 - 16:20
36

No veo un inconveniente masivo con eso, pero diría que aceptar una VM con el código fuente debería implicar la misma paranoia que aceptar un envío de una máquina con el software y el entorno dev instalado. así que asegúrese de que no haya nada mal instalado en la VM antes de activarlo en un entorno que tenga acceso a su red interna.

Si / cuando tienes la VM en funcionamiento, deberías poder plegar el código fuente en tus repositorios de código normales, como lo habrías hecho (probablemente) con solo un archivo de código fuente entregado.

    
respondido por el Vatine 18.03.2013 - 16:45
18

Me preocuparía que haya algo configurado en la máquina que no esté documentado, sea difícil de reproducir o no sea aceptable en su configuración estándar.

Ymmv, pero realmente no considero el desarrollo realizado hasta que se pueda demostrar que el proyecto se basa en las máquinas de desarrollo estándar y se implementa en los servidores / clientes de productos básicos.

    
respondido por el Bill 18.03.2013 - 16:55
10

En algunos de mis proyectos, tuve que luchar mucho para que el software se entregara de esta manera. Es un formato excelente.

Asegúrate de que:

  1. Obtenga el código fuente de cada versión que reciba del contratista y fíjelo en su propio sistema de control de fuente
  2. Obtenga documentación sobre la configuración del entorno de la máquina virtual y puede reproducirla internamente. Agregue también la documentación a su control de código fuente

Beneficios adicionales:

  1. Si archiva los lanzamientos en formato de máquina virtual (guarde el .vhd o algo así), es mucho más fácil ponerlos en funcionamiento varios años después, incluso si el equipo original está fragmentado o desaparecido.
  2. Es mucho más fácil ejecutar diferentes versiones una al lado de la otra.
  3. Con alguna integración de VMWare (también podría ser posible con HyperV), puede integrarlos en una compilación de CI automáticamente.
  4. Ahorra tiempo al desarrollador (al principio), porque hay poca o ninguna configuración de entorno.

Yo diría que vayan por ello.

    
respondido por el Zachary Yates 18.03.2013 - 16:23
6

Ese es realmente el tipo de cosa que debería haberse resuelto en el contrato original. Es posible que ya estén yendo más allá. No esperaría recibir instrucciones de configuración sin pagar extra, porque requiere más trabajo por su parte.

He estado en una situación similar a la tuya antes. Nuestro entorno de desarrollo es Windows / Cygwin y tuvimos una visita de un proveedor durante una semana para escribir un código de interfaz con nosotros. Principalmente utilizan Linux, por lo que nos configuramos con máquinas virtuales Linux para la semana que estuvieron aquí. Funcionó bastante bien mientras estuvieron aquí y tuvimos pocos problemas para trasladarnos a Cygwin después de que se fueron.

Me parece que estás subestimando tus propias habilidades. Configurar un IDE no es tan difícil, incluso sin un ejemplo funcional con el que compararlo. Me preocuparía más la violación de los acuerdos de licencia de Windows y CodeWarrior. Si tiene la licencia adecuada, debería poder obtener asistencia de Freescale para cualquier problema de configuración.

    
respondido por el Karl Bielefeldt 18.03.2013 - 18:31
4

Como FrustratedWithFormsDesigner dijo , necesita saber cómo configurar la máquina por sí mismo. Sin embargo, me gustaría agregar que potencialmente podría pedirles que proporcionen un script que configure la máquina para usted, en lugar de una máquina virtual completa. Si el script está escrito lo suficientemente bien, tendrá una documentación exacta y actualizada de cómo configurar la máquina (leyendo el código fuente), además del script lo hará por usted, lo que le ahorrará tiempo cada vez que necesite un nueva máquina.

Una herramienta con la que estoy experimentando para ayudar a estandarizar / automatizar la configuración de una nueva máquina con Windows es Chocolatey .

  

Chocolatey NuGet es un Administrador de paquetes de máquinas, parecido a apt-get, pero creado con Windows en mente.

Puedes crear tus propios paquetes Chocolatey con bastante facilidad y luego crear un script de PowerShell que se instalará y configurará prácticamente todo.

    
respondido por el Phil 18.03.2013 - 17:30
3

El entorno que se ejecuta lentamente no debería ser un problema, solo lance memoria y CPU. La sobrecarga de la máquina virtual moderna para el trabajo de tipo de escritorio, como la mayoría del desarrollo de software, es muy pequeña, se guarda muchas veces al no tener que hacer ninguna configuración al cambiar el hardware.

    
respondido por el hyde 18.03.2013 - 16:33
3

Pensé que el contrato de desarrollo estipularía los entregables y las obligaciones del contratista con usted.

Como mínimo, estaría solicitando un recorrido y documentación de cómo funciona la configuración y lo que es vital hasta el punto de que puede recrear el proyecto, compilarlo e implementarlo usted mismo.

En términos de tener algo listo para funcionar, creo que la máquina virtual es perfectamente aceptable.

Sin embargo, definitivamente estaría presionando para obtener documentación. No dudaría en hacerlo sin él, porque a menos que tenga un alto nivel de comprensión de cómo funciona, podría tener más de un barril en el futuro, especialmente si necesita respaldar la aplicación usted mismo.

    
respondido por el Sam 18.03.2013 - 23:19
2

Incluso para los sistemas integrados desarrollados internamente, es importante tener un documento que describa cómo configurar el entorno de compilación. También debe archivar todos los archivos binarios / de instalación de herramientas y las bibliotecas necesarias para configurar el entorno de compilación.

    
respondido por el Keith Nicholas 18.03.2013 - 23:01
1

No aceptaría VM como un código de entrega porque dificulta la realización de actualizaciones. Tienes que tener esa máquina virtual como una imagen de oro para hacer el trabajo de desarrollo. Eso hace que sea más difícil hacer mods. Un desarrollador tiene que reformatear, o obtiene una nueva máquina, tiene que instalar una máquina virtual y extraer la máquina virtual.

Cuando realice ediciones, debe enviar una nueva "copia dorada" de la máquina virtual. ¿Por qué querría administrar un archivo binario grande como ese en el control de código fuente? No es posible diferenciar, y en mi experiencia al tratar de controlar una fuente, una copia de oro de cualquier elemento binario no termina bien. A menos que pueda mantener un control estricto sobre quién edita la copia dorada, terminará con cosas allí que no están documentadas y nadie lo sabe.

Si un desarrollador quisiera enviarme un software de esa forma, encontraría un desarrollador diferente. Esto me dice que no son lo suficientemente profesionales para escribir sus dependencias, o al menos documentarlas.

Yo también los tendría:

  1. Crea un archivo de texto que se verifica en el control de fuente con el código. Enumera todas las dependencias que necesita para que el proyecto esté en funcionamiento, que no forme parte del repositorio de control de origen (por ejemplo, CodeWarrior, las herramientas de línea de comandos u otras aplicaciones externas de las que dependa).

  2. Un script para instalar las dependencias. Ya que estás en Windows, no debería ser demasiado difícil crear un script Chocolatey para automatizar la configuración del entorno dev. Cualquier dependencia que tengas que no sea ya paquetes de chocolate, puedes hacerla. Por ejemplo, puede instalar herramientas comerciales pesadas como Visual Studio y SQL Server a través de Chocolatey. Esos paquetes instalan las versiones de prueba, que tienen todas las funciones, y se pueden desbloquear ingresando una clave de licencia. Por lo tanto, es posible que se pueda hacer lo mismo con CodeWarrior y cualquier otra dependencia que tenga para su entorno de desarrollo.

Tal vez su desarrollador sea lo suficientemente bueno como para que aún quiera trabajar con él / ella, pero no es bueno en este tema de automatización. También está bien, si ese fuera el caso, yo mismo haría la parte de automatización, trabajando con él / ella para identificar las dependencias y hacer que el script funcione, o me gustaría que otro desarrollador que sea bueno en la automatización lo haga . Debe hacerse al inicio del proyecto. Una copia limpia y sencilla de una máquina virtual Win8 aún sería útil porque puede usarla para probar su script de chocolate.

    
respondido por el Giscard Biamby 22.03.2013 - 19:19
0

No creo que haya un problema con esto, he visto sistemas de administración de contenido que se instalan como máquinas virtuales, y por lo que dices, los contratistas te han dado la capacidad de mantener y extender la aplicación.

Sin embargo, como han señalado otros carteles, hay dos cosas que haría. Primero, asegúrese de que al instalar la máquina virtual, póngala en una máquina que esté separada de su red. No descargaría un EXE desconocido de Internet e instalarlo en su máquina.

Segundo, si es posible, mantenga esta copia aislada como referencia para configurar la versión interna. Digo, si es posible, porque no conozco las presiones comerciales a las que está sometido. En última instancia, será el departamento de TI / programadores de su empresa el responsable de esta aplicación. Por lo tanto, cuanto más sepa, mejor.

    
respondido por el Daniel Hollinrake 19.03.2013 - 22:41

Lea otras preguntas en las etiquetas