是否有任何理由不接受可作为虚拟机交付的软件?


40

这是有关物流的问题,而不是技术问题。

我公司已将一些嵌入式软件工作外包。具体来说,由于我们没有足够的内部知识来自己完成这项工作(我们只有桌面应用程序开发人员),因此我们已经向承包商支付了开发嵌入式系统的费用。

因此,承包商已经完成了软件,并询问是否可以通过虚拟机将其交付给我们。VM是一台Windows 8计算机,其中包含预配置的CodeWarrior IDE,并将源代码作为CodeWarrior项目。想法是,这将使我们能够在已配置用于该项目进一步开发的VM中更改代码。

与让他们逐步引导我们如何配置自己的开发机器以对项目进行代码更改相比,这样做有什么弊端吗?我可以预见的唯一问题是VM运行缓慢,并且在进行代码更改时重建项目需要很长时间。但是另一方面,我喜欢获得预配置的嵌入式系统开发环境的想法,因此不必在台式机应用程序开发计算机上添加另一个IDE。

我真的想不起来为什么不接受VM交付的很好的理由,但是我只是想由这个社区来运行它,以防万一我丢失了某些东西。


24
虚拟机上Windows软件的许可即将浮现。
罗伯特·哈维

6
@RobertHarvey Windows的完整版本包含两个虚拟机的许可权。而且,如果您拥有Windows数据中心的许可证,则可以运行该服务器支持的虚拟机数量,请访问虚拟化许可网站以获取更多信息。
迈克尔·布朗

19
这是解决“在我的机器上工作”的一种方法。问题。
MichaelHouse

2
我怀疑代码是否有错误,但仅在一台计算机上有效。开发人员不知道他们在做什么,并且无法重新创建使之起作用的设置,因此他们只是制作了一个磁盘映像并将其放入VM中。
MGOwen

您拥有的任何许可都将涵盖由外部方提供给您的VM(可能没有分发Windows VM的权利)吗?
Burhan Ali 2013年

Answers:


66

我看到的问题是,设置和配置虚拟机的知识不是内部的,如果配置很简单,那么当需要为不同版本的虚拟机配置软件时,您将依赖另一家公司。操作系统/库/硬件/其他。接受VM可以使它更快地启动和运行,但是我坚持要逐步了解如何配置自己的系统以进行将来的维护。


9
+1,最可怕的部分是您六年来可能遇到的“黄金形象”问题。
Wyatt Barnett

8
如果承包商还可以提供安装指南(应进行测试),那么我不会有任何问题。
杰米

2
@Jamie:但是,如果您测试安装指南,则不再需要VM,
mattnz

10
术语是“冷启动”过程,这意味着如果您是从冷机启动的,那么您需要做什么才能获得正在运行的映像?他们可能对配置进行了一些更改,安装了未记录的软件,甚至可能包含后门,这也使我感到困扰。我想知道那台机器上的所有内容。
ipaul

我也同意这个答案。可以做一个示范演示,但是如果我要接受该产品,我会要求描述/进行环境设置的文档/ shell脚本。
茨威托米尔·迪米特洛夫

36

我没有看到它的巨大缺点,但是我想说,接受带有源代码的虚拟机应该与接受装有软件和开发环境的机器的发货有相同的偏执,所以请在可以访问内部网络的环境中启动虚拟机之前,请确保在虚拟机上没有安装任何恶意软件。

如果/当虚拟机启动并运行时,您应该能够将源代码折叠到常规代码存储库中,就像(可能)只交付源代码归档文件一样。


11
我给出的答案不是唯一的+1,而是提到将代码引入内部版本控制的唯一答案。我希望虚拟机也包括一个存储库,但是我不会打赌,它可能只有代码的发行版本。
Mike Sherrill'Cat Recall'13

18

我会担心机器中配置的某些内容未记录,难以复制或在您的标准配置中不可接受。

是的,但是我真的不认为开发已经完成,直到可以证明该项目以标准开发机为基础并部署在商用服务器/客户端上为止。


1
+1确保虚拟机只是一项便利功能。否则,您可能最终只能在该VM上构建某些东西,因为它依赖于某些未记录,修补的编译器或链接器版本或同样可怕的东西。
ptyx

10

在我的一些项目中,我不得不努力争取以这种方式交付软件。这是一种出色的格式。

确保你:

  1. 从承包商那里获得每个发行版的源代码,并将其合并到自己的源代码控制系统中
  2. 获取有关虚拟机环境设置的文档,并可以在内部复制它。将文档也添加到您的源代码管理中

额外的好处:

  1. 如果以VM格式存档发布(保存.vhd之类的文件),即使原始团队支离破碎或消失了,也可以轻松启动并运行几年。
  2. 并排运行不同版本要容易得多。
  3. 通过某些VMWare集成(HyperV也可能),您可以将它们自动集成到CI构建中。
  4. 因为几乎没有环境设置,所以它节省了开发人员的时间(一开始)。

我会说去。


嗯 好点。
MGOwen

1
与随时间推移降低性能相比,环境设置时间便宜。我们内部有一个这样的VM,我们在其上生成发行版,但是对于日常使用而言,VM方法太迟钝了,您只能使用一个屏幕(在大多数情况下)。这更像是1000刀的死亡与一个很好的干净的斩首。
boatcoder 2013年

@ Mark0978我认为#4是YMMV的情况,我们花了三周的时间对文档中的环境设置进行反向工程,因为我们再也无法访问原始服务器设置(IIS 6+一堆第三方库/ http处理程序) 。我的观点是,有一个可行的例子会很有用。我听到的大多数批评通常是因为VM主机不够好。哈哈-“好干净的斩首”。
Zachary Yates

1
实际上,我实际上认为这是对开发环境的惩罚(可能不是要提出的要求),始终让开发人员慢下来是不值得的。我们所有的生产服务器都在托管设施中的VM上运行,但它们都是非图形服务器。
boatcoder 2013年

1
@ Mark0978我喜欢那个人的写作方式。我想我对#4的观点还不清楚。我不是在提倡慢速VM。当您需要花费一两天的时间来完成环境的设置时,只需使用虚拟机即可。您必须了解整个情况。
Zachary Yates

6

这确实是应该在原始合同中解决的问题。他们可能已经超越了。我不希望在不支付额外费用的情况下获得配置说明,因为这需要更多的工作。

我和你以前的处境相似。我们的开发环境是Windows / Cygwin,我们拜访了供应商一周以与我们共同编写一些接口代码。他们主要使用Linux,因此我们在使用Linux虚拟机的那一周就开始使用。他们在这里的时候效果很好,他们离开后,我们可以很轻松地将其移植到Cygwin。

在我看来,您在低估自己的能力。设置IDE并不困难,即使没有可比较的示例。我将更担心违反Windows和CodeWarrior许可协议。如果您已获得适当的许可,则应该能够就任何安装问题从飞思卡尔获得支持。


4

正如FrustratedWithFormsDesigner所说,您需要知道如何为自己设置机器。但是,我想补充一点,您可能会要求他们提供一个脚本来为您配置计算机,而不是整个VM。如果脚本编写得足够好,您将获得有关如何设置机器的确切最新文档(通过阅读源代码),加上脚本将为您完成,从而在每次需要时节省时间新机器。

我正在尝试用来帮助标准化/自动设置新Windows计算机的工具是Chocolatey

Chocolatey NuGet是一个机器软件包管理器,有点像apt-get,但是考虑到Windows的构建。

您可以很容易地构建自己的Chocolatey软件包,然后创建一个PowerShell脚本,该脚本将安装和配置几乎所有内容。


据我了解,有一个名为Vagrant的工具专门用于此任务。
M. Dudley

3

运行缓慢的环境应该不是问题,只需向其投入内存和CPU。像大多数SW开发一样,用于桌面类型工作的现代VM的开销非常小,由于在更改硬件时无需进行任何设置,因此节省了很多倍。


3

我本以为开发合同会规定承包商的交付成果和承包商对您的义务。

至少我将要求提供一个演练和文档,以介绍配置的工作原理以及对于您可以自己重新创建,构建和部署项目的关键点。

就准备就绪而言,我认为VM是完全可以接受的。

我肯定会推动文档。如果没有它,我会犹豫,因为除非您对它的工作原理有一个高水平的了解,否则将来可能会很费力,特别是如果您需要自己支持该应用程序时。


不幸的是,签订合同时我不在这家公司。我没有访问权限,因为我不是管理人员,所以我不确定它的规定。
CFL_Jeff 2013年

2

即使对于内部开发的嵌入式系统,拥有描述如何设置构建环境的文档也很重要。您还需要归档工具的所有二进制文件/安装文件,以及设置构建环境所需的库。


1

我不接受将VM作为可交付的代码,因为它使更新变得困难。您必须将VM作为黄金映像来进行开发工作。这使得制作mod变得更加困难。开发人员必须重新格式化或购买新计算机,他们必须安装VM并拉动VM。

进行编辑时,必须提交虚拟机的新“黄金副本”。为什么要在源代码管理中管理类似的大二进制文件?这是不可能的,以我的经验,尝试对任何二进制文件进行黄金控制都不能很好地完成。除非您可以严格控制由谁编辑黄金副本,否则您最终将获得其中没有文献记载且没人知道的东西。

如果开发人员想以这种形式向我提供软件,我会找其他开发人员。这告诉我他们不够专业,无法脚本化他们的依赖关系,或者至少记录下来。

我要它们之一:

  1. 创建一个文本文件,使用该代码将其检入源代码管理。它列出了启动和运行项目所需的所有依赖关系,这些依赖关系不是源代码控制存储库的一部分(例如CodeWarrior,任何命令行工具或您依赖的其他外部应用程序)。

  2. 用于安装依赖项的脚本。由于您使用的是Windows,因此创建Chocolatey脚本来自动化开发环境的安装应该不会太困难。您可以建立任何尚未包含巧克力包的依赖项。例如,您可以通过Chocolatey安装重型商业工具,例如Visual Studio和SQL Server。这些软件包安装了功能齐全的试用版,可以通过输入许可证密钥来解锁。因此,使用CodeWarrior以及开发环境所具有的任何其他依赖关系,可能会完成相同的事情。

也许您的开发人员确实非常优秀,您仍然希望与他/她一起工作,但是在自动化方面却不那么擅长。也可以,如果是这样的话,我要么自己做自动化部分,与他/她一起确定依赖性并让脚本工作,要么让另一位擅长自动化的开发人员来做。它应该在项目开始时完成。干净,准系统的Win8 VM副本仍然有用,因为您可以使用它来测试您的巧克力脚本。


0

我认为这没有问题,我看到过内容管理系统可以作为虚拟机安装,从您所说的承包商的角度来看,您可以自行维护和扩展应用程序。

但是,正如其他张贴者所指出的,我要做两件事。首先,请确保在安装VM时,将其放在与网络分离的计算机上。您不会从互联网上下载未知的EXE并将其安装在您的计算机上。

其次,如果可能的话,请保留此独立副本作为设置内部版本的参考。我说可能的话,因为我不知道您所承受的业务压力。最终,将由您公司的IT部门/程序员负责此应用程序。因此,您对其了解的越多越好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.