web-dev-qa-db-ja.com

サードパーティのライブラリを新しいバージョンに更新するのに「しない」をいつ選択しますか?

ソフトウェア開発における生産性向上のためにサードパーティのライブラリを使用することは一般的です。残念ながら、ライブラリの機能とともに、バグもインポートしています。それらのいくつかは、後続のリリースで修正されます。したがって、アップグレードするかしないかは、これが問題です。

新しいバージョンのライブラリへのアップグレードが望ましいときの経験から学ぶことに興味がありますが、費用対効果分析の結果、アップグレードは「大規模な計画」では適切なソリューションではないという結論に達しました。 forcesnotアップグレードの決定に影響を与えるものを見つけることに興味があります。

5
Mircea

短い答えは、Robert Harveyがコメントで述べたように、新しいバージョンでは新しいバグが発生する可能性があるということです。

正直なところ、あなたはこれに間違った方法で取り組んでいると思います。私の経験では、より良いアプローチは、デフォルトであなたが持っているバージョンに固執することです。おそらく、あなたのチームはあなたが使っているバージョンとそれがあなたのシステムとどのように統合されるかをすでにテストしているでしょう。そうでない場合は、クライアントが持っています。

確かに、新しいバージョンがリリースされたら、チームは、発生したバグに対処したり、活用できる機能を提供したり、全体的なパフォーマンスを改善したりするかどうかを確認する必要があります。テストを再度実行して初めて、実際に使用を開始できます。

アップグレードがデフォルトで行われ、誰かが問題を見つけた場合にのみ中止されるものとしてアップグレードにアプローチすることの問題は、審査プロセスが緩慢になるのが簡単すぎることです。最終的には、新しいバージョンで新しい問題が発生すると、これはあなたに噛み付きます。

使用しているバージョンをそのまま使用すると、システム全体の動作は変更されないことがわかります。

8
Dan Lyons

回答するには、まずアップグレードの必要性について質問をします。

アップグレードしない場合は、時間の経過とともに古いバージョンで立ち往生し、それ以降のバージョンで修正されたライブラリーのバグに起因するシステムのバグを見つけます。

システムの開発を続けており、関連するライブラリのサイズが複雑であれば、遅かれ早かれ、アップグレードする価値があります。つまり再テストのコストは、最新バージョンの残りの利点を正当化します。

したがって、これらの前提条件が満たされない場合は、アップグレードする必要がない場合があります。

つまり:

  1. あなたは積極的にあなたのアプリケーションではありません。
  2. ライブラリには最小限の変更が加えられています。おそらく、自分に関係のないことがわかっている特定の問題に対する変更のみです。

(2)は動くターゲットなので、これよりも複雑です。出現するライブラリのバージョンごとに、累積された変更が増加し、その結果、可能性のある値(およびリスクとテストの要件)が増加します。

「これまでのところどの修正も私にとって重要ではないため」アップグレードを長時間延期する場合、アップグレードを実行すると、累積された影響のためにそれがはるかに難しくなる可能性があることに注意してください。

さらに、アップグレードや再テストが必要になる可能性のあるサードパーティのライブラリが複数ある場合があります。 1つのアプローチは、すべてのサードパーティライブラリのアップグレードを1年に1回(または任意の期間)確認および検討し、単一のプロジェクト内でアップグレードを実行して、単一の完全なシステム回帰テストを可能にすることです。これには、コンパイラまたはオペレーティングへのアップグレードも含まれます。

最後に、アップグレードのリスクは、実施されている自動テストの量とは逆になります。 (ライブラリに関連する)が非常に少なく、多くの手動テストを実行する必要がある場合は、アップグレードコストを正当化するためのより多くの利点が必要です。

したがって、たとえば、大規模なGUI再テストを必要とするユーザーインターフェイスライブラリのアップグレードは、自動テストに適したいくつかのファイルを読み込むXMLライブラリのアップグレードとは異なります。

2
Keith