仮想マシンとして提供されるソフトウェアを受け入れない理由はありますか?


40

これは物流に関する質問であり、技術的な質問ではありません。

私の会社はいくつかの組み込みソフトウェアの仕事を外部委託しています。具体的には、社内で十分な知識を持っていないため、組み込みシステムを開発するために請負業者に支払いました(デスクトップアプリケーション開発者しかいない)。

そのため、請負業者はソフトウェアを完成させ、仮想マシンで提供するかどうかを尋ねました。VMは、ソースコードがCodeWarriorプロジェクトとして事前設定されたCodeWarrior IDEを含むWindows 8マシンです。これにより、このプロジェクトをさらに開発するためにすでに構成されているVM内でコードを変更できるようになります。

プロジェクトにコード変更を加えるために独自の開発マシンを構成する方法を説明してもらうのではなく、これを行うことには欠点がありますか?予見できる唯一の問題は、VMの実行が遅いことです。コードを変更すると、プロジェクトの再構築に時間がかかります。しかし、一方で、事前に構成された組み込みシステム開発環境を取得するというアイデアが好きなので、デスクトップアプリケーションの開発マシンに別のIDEを追加する必要はありません。

VMの成果物を受け入れない理由を考えることはできませんが、不足しているものがある場合に備えて、このコミュニティで実行したかっただけです。


24
VM上のWindowsソフトウェアのライセンスが思い浮かびます。
ロバートハーベイ

6
@RobertHarvey Windowsのフルバージョンには、2つの仮想マシンのライセンス権が含まれています。また、Windows Datacenterのライセンスを持っている場合、そのサーバーがサポートできる数のVMを実行できます。詳細については、仮想化ライセンスWebサイトをご覧ください。
マイケルブラウン

19
これは、「私のマシンで動作する」を回避する1つの方法です。問題。
マイケルハウス

2
コードにバグがあるのではないかと疑っていますが、1台のマシンでしか動作しません。開発者は自分が何をしているのかわからず、それを機能させるセットアップを再作成できないため、ディスクイメージを作成してVMに配置しただけです。
MGOwen

あなたが持っているライセンスは、外部の関係者から与えられたVMをカバーしますか(Windows VMを配布する権利がない可能性があります)?
バーハンアリ

回答:


66

私が見る問題は、仮想マシンのセットアップと構成に関する知識が社内にないことであり、構成が重要な場合、ソフトウェアを異なるバージョン用に構成する必要がある場合、他社に依存することになりますOS /ライブラリ/ハードウェア/その他。VMを受け入れることで起動と実行を高速化することは問題ありませんが、将来のメンテナンスのために独自のシステムを構成する方法を順を追って取得することを強く求めます。


9
+1、恐ろしい部分はあなたが6年で持っているかもしれない「黄金のイメージ」問題です。
ワイアットバーネット

8
請負業者もセットアップガイド(テストする必要があります)を提供できる場合、これに関する問題はありません。
ジェイミー

2
@Jamie:ただし、セットアップガイドをテストする場合は、VMが不要になります。
mattnz

10
この用語は「コールドスタート」手順であり、コールドマシンから起動した場合-実行中のイメージに到達するために何をする必要がありますか?また、構成に何らかの変更を加えたり、文書化されていないソフトウェアをインストールしたり、バックドアを含めたりする可能性があるという事実にも悩まされています。そのマシンにあるすべてのものを知りたいと思います。
-ipaul

私もこの答えに同意します。何が行われたかのデモンストレーションは問題ありませんが、この製品を受け入れようとしている場合は、環境のセットアップを説明/実行するドキュメント/シェルスクリプトをリクエストします。
ツベトミールディミトロフ

36

大規模な欠点は見られませんが、ソースコードを含むVMを受け入れることは、ソフトウェアと開発環境がインストールされたマシンの出荷を受け入れることと同じ妄想を伴うはずですので、内部ネットワークにアクセスできる環境でVMを起動する前に、VMに何も問題がないことを確認してください。

VMを起動して実行している場合、(おそらく)提供されたソースコードアーカイブだけで行うように、ソースコードを通常のコードリポジトリに折りたたむことができるはずです。


11
この質問の回答に対して私が与えた+1だけでなく、コードを社内のバージョン管理に組み込むことについて言及している唯一の回答です。VMにもリポジトリが含まれることを望みますが、それには賭けません。リリースされたバージョンのコードのみが含まれている可能性があります。
マイクシェリル 'キャットリコール'

18

文書化されていないか、再現が困難であるか、標準構成では受け入れられないものがマシンに構成されていることが心配です。

Ymmvですが、標準の開発マシンを構築し、コモディティサーバー/クライアントに展開するプロジェクトを実証できるようになるまで、開発を実際に検討することはしません。


1
VMが単なる便利な機能であることを確認する上で+1。そうしないと、ドキュメント化されていない、パッチが適用されたコンパイラまたはリンカーのバージョン、または同様に恐ろしいものに依存しているため、そのVMのみでビルドされるものになる可能性があります。
ptyx

10

私のプロジェクトのいくつかでは、この方法でソフトウェアを配信するために懸命に戦わなければなりませんでした。それは素晴らしいフォーマットです。

確認してください:

  1. 請負業者から取得した各リリースのソースコードを取得し、独自のソース管理システムにマージします
  2. VMの環境設定に関するドキュメントを入手し、社内で再現できます。ソース管理にもドキュメントを追加します

その他の利点:

  1. リリースをVM形式(.vhdなどを保存)でアーカイブすると、元のチームが断片化またはなくなったとしても、数年後にリリースするのがはるかに簡単になります。
  2. 異なるバージョンを並べて実行する方がはるかに簡単です。
  3. 一部のVMWare統合(HyperVでも可能)を使用すると、これらをCIビルドに自動的に統合できます。
  4. 環境のセットアップがほとんどないため、開発者の時間を節約できます(最初)。

私はそれに行くと言うでしょう。


うーん 良い点。
MGOwen

1
環境のセットアップ時間は、時間の経過に伴うパフォーマンスの低下に比べて安価です。リリースビルドを作成する社内にはこのようなVMがありますが、日々の使用では、VMメソッドが非常に遅く、1つの画面しか使用できません(ほとんどの場合)。それは、1000カットの死と、きれいな斬首のようなものです。
ボートコーダー

@ Mark0978#4はYMMVの状況だと思います。ドキュメントから環境設定をリバースエンジニアリングするのに3週間かかりました。元のサーバー設定(IIS 6+の多数のサードパーティライブラリ/ httpハンドラー)にアクセスできなくなったためです。私のポイントは、実用的な例を持っていると便利だということです。私が聞いた批判のほとんどは、通常、VMホストが十分ではないためです。ハハ-「きれいな斬首」。
ザカリーイェーツ

1
私は実際にそれを開発環境のペナルティと考えていました(これは求められていたものではないかもしれません)。運用サーバーはすべてホスティング施設のVMで実行されますが、すべて非グラフィカルサーバーです。
ボートコーダー

1
@ Mark0978私は男が書く方法が好きです。私は#4で私の主張を明確にしていないと思います。遅いVMで作業することを推奨していません。1〜2日分の作業があり、環境のセットアップに3週間かかる場合は、vmを使用します。あなたは全体の状況を認識しなければなりません。
ザカリーイェーツ

6

それは実際に元の契約で解決されるべきものの一種です。彼らはすでに上に行っているかもしれません。余分な支払いをせずに構成手順を取得することは期待できません。

私は以前と同じような状況にありました。開発環境はWindows / Cygwinであり、ベンダーコードを1週間訪問して、いくつかのインターフェイスコードを作成しました。彼らは主にLinuxを使用しているため、ここにいた週にはLinux仮想マシンを用意しました。彼らがここにいる間、それは非常にうまくいき、彼らが去った後、私たちはCygwinに移植するのにほとんど苦労しませんでした。

あなたは自分の能力を過小評価しているように思えます。IDEのセットアップはそれほど難しくありません。たとえ比較するための実例がなくてもです。私は、WindowsとCodeWarriorのライセンス契約に違反することをもっと心配しています。適切にライセンスされている場合は、セットアップの問題についてFreescaleからサポートを受けることができます。


4

以下のようFrustratedWithFormsDesignerが言った、あなた自身のためにマシンをセットアップする方法を知っておく必要があります。ただし、VM全体ではなく、マシンを構成するスクリプトを提供するよう潜在的に依頼できることを付け加えておきます。スクリプトが十分に記述されている場合、(ソースコードを読み取ることで)マシンをセットアップする方法の正確な最新のドキュメントがあり、さらにスクリプトがそれを行うため、必要なたびに時間を節約できます。新しいマシン。

新しいWindowsマシンのセットアップを標準化/自動化するために実験しているツールはChocolateyです。

Chocolatey NuGetはMachine Package Managerであり、apt-getに多少似ていますが、Windowsを念頭に置いて構築されています。

独自のChocolateyパッケージを非常に簡単に構築し、実質的にすべてをインストールおよび構成するPowerShellスクリプトを作成できます。


私が理解しているように、このタスク専用に作られたVagrantと呼ばれるツールがあります。
M.ダドリー

3

実行速度が遅い環境は問題ではなく、メモリとCPUを投入するだけです。ほとんどのSW開発のように、デスクトップタイプの最新のVMのオーバーヘッドは非常に小さく、ハードウェアを変更するときにセットアップを行う必要がないため、何度も節約されます。


3

開発契約は、請負業者の成果物と義務をあなたに規定すると考えていただろう。

少なくとも、構成がどのように機能するか、プロジェクトを再作成し、自分でプロジェクトを構築して展開できるようにするために重要なことについて、ウォークスルーとドキュメントを要求します。

準備が整っているという点では、VMは完全に受け入れられると思います。

私は間違いなくドキュメントをプッシュするでしょう。それがなければ、特にアプリケーションを自分でサポートする必要がある場合、それがどのように機能するかを高度に理解していない限り、将来はバレルを超える可能性があるため、私はそれをためらいます。


残念ながら、契約が成立したとき、私はこの会社にいませんでした。私は経営陣のメンバーではないため、アクセスできません。そのため、何が規定されているのかわかりません。
CFL_ジェフ

2

社内で開発された組み込みシステムの場合でも、ビルド環境のセットアップ方法を説明したドキュメントを持つことが重要です。また、ツールのすべてのバイナリ/インストールファイル、およびビルド環境のセットアップに必要なライブラリをアーカイブする必要があります。


1

更新が困難になるため、VMをコード成果物として受け入れません。開発作業を行うには、そのVMをゴールデンイメージとして持つ必要があります。これにより、MODの作成が難しくなります。開発者は、VMをインストールしてVMをプルする必要があるため、再フォーマットするか、新しいマシンを取得する必要があります。

編集するときは、VMの新しい「ゴールデンコピー」をコミットする必要があります。ソース管理でそのような大きなバイナリファイルを管理する必要があるのはなぜですか?差分を取ることは不可能であり、ソース管理を試みた私の経験では、バイナリのゴールデンコピーはうまくいきません。誰がゴールデンコピーを編集するかについて厳密な制御を維持できない限り、文書化されていない、誰も知らないものがそこにあることになります。

開発者がその形式でソフトウェアを私に提供したい場合、別の開発者を見つけるでしょう。これは、依存関係をスクリプト化するのに十分な専門家ではないこと、または少なくともそれらを文書化することを示しています。

私はそれらを持っています:

  1. コードでソース管理にチェックインされるテキストファイルを作成します。プロジェクトを起動して実行するために必要なすべての依存関係をリストします。これらはソース管理レポジトリの一部ではありません(たとえば、CodeWarrior、コマンドラインツール、または依存する他の外部アプリ)。

  2. 依存関係をインストールするスクリプト。Windowsを使用しているので、開発環境のセットアップを自動化するChocolateyスクリプトを作成するのはそれほど難しくないはずです。依存関係は、まだチョコレートのパッケージではありませんが、作成できます。たとえば、Visual StudioやSQL Serverなどの重い商用ツールをChocolatey経由でインストールできます。これらのパッケージは、フル機能の試用版をインストールし、ライセンスキーを入力することでロックを解除できます。したがって、CodeWarrior、および開発環境にある他の依存関係でも同じことが可能です。

たぶん、あなたの開発者はあなたがまだ彼/彼女と一緒に働きたいと思うほど十分に優れているかもしれませんが、この自動化のものが得意ではありません。それも大丈夫です。もしそうなら、私は自分で自動化の部分を行い、彼/彼女と協力して依存関係を特定し、スクリプトを動作させるか、自動化に長けた別の開発者にそれを行わせます。プロジェクトの開始時に行う必要があります。Win8 VMのクリーンでシンプルなコピーは、チョコレートのようなスクリプトをテストするために使用できるため、依然として有用です。


0

これには問題はないと思います。VMとしてインストールするコンテンツ管理システムを見てきました。請負業者から、アプリケーションを自分で保守および拡張できるようになったと言われています。

しかし、他のポスターが指摘しているように、私がやりたいことは2つあります。まず、VMをインストールするときに、ネットワークとは別のマシンにVMを配置してください。インターネットから不明なEXEをダウンロードして、マシンにインストールすることはありません。

第二に、可能であれば、この分離されたコピーを社内バージョンを設定するための参照として保持します。可能であれば、私はあなたが下にあるビジネス上のプレッシャーを知らないので言います。最終的には、このアプリケーションを担当するのはあなたの会社のIT部門/プログラマーです。それで、あなたはそれについてよりよく知っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.