ようこそ。睡眠不足なプログラマのチラ裏です。

ソフトウェアの品質要因 その7「可搬性」

可搬性(portability)

■定義:可搬性(portability)
「可搬性」とは、多用なハードウェアおよびソフトウェア環境へのソフトウェア製品の移植しやすさである。

可搬性とビジネス戦略
可搬性における対象は、ハードウェアのような物理的なものに対してだけではなく、
ソフトウェアの組み合わせのバリエーションであったり、OSやウィンドウシステム、その他の基本的なツールなどに至る。


家庭用ゲーム機の世界で、しばしば「プラットフォーム」などと呼ばれているのがそれである。
家庭用ゲーム機で複数の機種に対して同タイトルのゲームを開発するような場合*1
異なるプラットフォームへの移植し易さ、つまり「可搬性」というのが重要となってくる。
もちろん、WindowsとMacに、同じアプリケーションをリリースする様な場合もこれと同様である。

パッケージソフトウェアや業務用アプリケーションから、家庭用ゲームやアーケードゲームに至るまで、
多くのプログラムは、新しいプラットフォームへ移植することを求められることがある。
「可搬性」の低いプログラムによるソフトウェアを移植するためには、多大な労力と費用がかかってしまう。*2
つまり、ビジネス戦略の上での幅を保証するためにも「可搬性」は重要となってくる品質要因である。


「プログラムに可搬性がある」とは?
プログラムに可搬性があるとは、1つのプラットフォームで実装したプログラムを、
ソースコードの変更を最小限に抑えて、別のプラットフォームへ移植できることを言う。
当然、最初に開発したプラットフォームで得られた正しい結果が、他のプラットフォームでも正しく得られなければならない。
あるいは、複数のプラットフォームに対して、同時進行で開発するような場合、
分析・設計の段階で、いかにソフトウェア要求の本質を見抜き、
状況を把握し、抽象レベルの高いプログラミングをすることできるかが重要となってくる。


可搬性と再利用性とオブジェクト指向
プログラムを移植するときに手を加えなければならない変更数というのは、
分析・設計時の抽象化が、いかに本質を見抜けているかや、その実装方法によって大きく変化する。
エミュレートや、フレームワークの恩恵などにより、まったく変更を加えなくてもよい場合( (厳密な可搬性))もあれば、
ほぼ全てのプログラムを書き換える必要があり、ゼロから新しいプログラムを設計・実装した方が効率的な場合*3もある。
オブジェクト指向プログラミングでは、抽象クラスによる汎化や、インターフェイスの抽出などにより、
UMLなどによるオブジェクト指向を用いたモデルを、そのままプログラミングによって表現することが可能なため、
プラットフォームに依存しない、可搬性の高いプログラムを期待することが出来る。


たとえ異なるプラットフォームであっても、モデル化した情報は再利用可能であり、
オブジェクト指向プログラミングを用いることで、最低限の変更で異なるプラットフォームへ移植をすることを可能にする。
つまり、「可搬性」と「再利用性」と「オブジェクト指向」は、非常につながりの深い関係を持っていると言える。

*1:マルチプラットフォーム

*2:また、移植の困難さというのは、ハードウェアの性能による制約などの弊害が生じる場合も少なくない。

*3:可搬性のないカスタマイズ