アップグレードとは、部品を交換したり、追加部品を取り付けたりすることで、何かを改善することです。例えば、CPUをより高速なものに交換し、 RAMを増設することでコンピュータをアップグレードできます。アップグレード後のコンピュータはアップグレードされたと言えます。アップグレードは主に技術分野で用いられますが、あらゆるものをアップグレード(改善)することが可能です。
アップデートは多くの場合アップグレードですが、必ずしもそうとは限りません。アップデートとは単に新しい(より最新の)ものを意味するだけです。アップデートによって機能が劣化したり、古いバージョンに戻すことがアップグレードになる場合もあります。
一般的なハードウェアのアップグレードとしては、メモリやストレージの増設、CPUやグラフィックカードのより高速な部品への交換などが挙げられる。
ハードウェアのアップデートには互換性の問題が伴います。例えば、追加したRAMが既存のRAMと互換性がない場合があります。また、特定のオペレーティングシステムに対応したドライバが入手できない場合、アップグレードまたはダウングレード後に他のハードウェアコンポーネントとの互換性が失われる可能性もあります。
ソフトウェアをアップグレードするには、インターネット経由でパッケージをダウンロードすることがよくあります。ダウンロードはユーザーが直接行う場合もあれば、コンピュータが自動的に行う場合もあります。パッケージには、ソフトウェア全体ではなく、既存バージョンの変更に必要なデータのみが含まれている場合があります。アップグレードには、機能の改善や、セキュリティ上の脆弱性の解消などのバグ修正が含まれることがあります。
ソフトウェアアップグレードパッケージを作成する一般的な理由: [ 1 ]
ソフトウェアのアップグレードには、ソフトウェアにバグを導入して誤動作を引き起こすリスクが伴います。例えば、2005年10月には、アップデートの不具合により、東京証券取引所の取引がほぼ一日中停止しました。[ 2 ] [ 3 ]
ソフトウェアのアップグレードによって互換性の問題が生じ、ハードウェアが動作しなくなる可能性があります。
ある人にとってはアップグレードとみなされる変更も、別の人にとってはダウングレードとみなされる場合がある。いわゆるアップグレードが設計通りに機能するとしても、ユーザーは別のバージョンを好むかもしれない。ユーザーは以前のバージョンに慣れていたり、削除された機能を惜しんだりする可能性がある(iPhoneのジャック削除論争やOtherOSを参照)。
アップグレードを目的とした変更には、デバイスが故障するリスクがあります。これは、アップデートが通常すべてかゼロかである組み込みデバイスで発生する可能性があり、 [ 4 ]失敗したアップデートからの復旧能力が限られています。[ 5 ]この問題に対する解決策は、一般的に、ファームウェアの複数のコピーをデバイスストレージに保持し、一方をアップグレードしながら他方をフォールバックとしてそのままにしておくことですが、それでも失敗する可能性のある穴があります。[ 5 ] [ 6 ] [ 7 ] Mender.io、[ 8 ] Sysup、[ 5 ] SWUpdate、RAUC、[ 7 ]およびOSTree [ 9 ]などのツールは、アップグレードを安全かつアトミックな方法で実装し、ブートローダーやその他のコンポーネントをカスタマイズする必要性を軽減または排除するソリューションを提供します。デスクトップ システムでは、スナップショットや復元ポイントのようなものを使用する可能性が高くなります。これらは、旧システムから新システムへの変更を保存するために必要なスペースがごくわずかであるため、より効率的ですが、組み込みシステム向けのターンキー実装がないため、実用的ではありません。