ソフトウェアの移植
プログラムの生産性を向上させるには,プログラムあるいはプログラムモジュールを再利用することが最も有効な方法である.このうち,プログラム全体をそのまま再利用しようとするのがプログラム移植である.
ソフトウェアの移植は,移植元で動作しているプログラムを移植元と開発環境,実行環境が異なる環境(移植先)で動作可能にすることである.ここで,動作可能とは移植元と同じ機能および同程度の品質で動作することである. プログラムの移植に際しては,移植対象プログラムを変更することなく移植先でそのまま利用できることが望ましいが,開発環境や実行環境の相違から移植時にプログラムの修正が必要になる場合も多い.
プログラムの移植作業は,ある環境で動作しているプログラムを別の環境で動作させるために必要な一連の作業である.この作業には,移植先環境の調査や移植先環境に合わせたプログラムの修正,あるいは移植先環境での動作試験など移植に関わる全ての作業が含まれる.
プログラムの移植手順
プログラムの移植作業は,一般に次の手順で行なわれる.
- 事前調査
移植に関する次の項目の調査を行ない,移植阻害要因を明確にする.
- 移植対象先OSの調査
- 開発環境の調査
- 移植対象先システム(実機)の調査
- 移植プログラムの調査
- ソース修正
事前調査によって明らかになったプログラムの修正項目について,それぞれソースプログラムの修正作業を行う.
- ファイル作成
修正されたプログラムをコンパイル,リンクし実行ファイルを作成する.
- 単体試験
移植プログラムの単体デバグを行う.移植の場合,単体試験は移植に伴って新たに作り変えた箇所や修正した箇所が主な対象になる. 通常,単体試験はワークステーション(WS)などの開発環境上で行なわれる.
- 実機試験
移植対象先のシステムの実機上で移植プログラムの結合デバグを行う.
また,上記の各移植作業工程において,必要に応じて次の作業を行う.
- ドキュメント作成
移植に伴ってプログラムの仕様や使い方に変更が生じた場合,移植プログラムの設計書およびマニュアルに対して必要な変更を行う. また、移植に伴う各種作業の結果をドキュメント(試験手順書、移植報告書など)にまとめる。これらの資料は,以後の移植作業の参考になる.
- 共通作業
移植作業の進捗管理や移植作業工数に関する各種データの収集を行う.
移植性の評価
ソフトウェアの移植を行う際には,あらかじめどの程度の工数が掛かるかを見積もっておくことが必要である.
- 移植性の評価要因
移植性を低下させる要因を分析することが必要である.
移植阻害要因は,移植プログラムの内容とシステム環境差との相関関係により決定される.
- システム環境差
移植元環境と移植先環境の相違に起因する移植阻害要因(ハードウェア/OS/言語処理系)
- 移植プログラム
移植性を考慮したコーディングの度合に依存
- 工数増減要因
- 人的要因
移植作業を行う担当者の経験や知識による要因
- 環境要因
移植を行う開発環境、試験環境など環境に起因する要因
- システム環境差
システム環境差による移植阻害要因には,次のようなものがある.
- プロセッサアーキテクチャの相違
- 基本データ型
データ型のサイズや数値の範囲
- データの内部表現
- エンディアン
メモリに格納される1ワード内のデータのバイトの順番
- データアライメント
データの配置の制約(4バイト境界、8バイト境界)
- パディング
構造体のデータ配置
- OSの相違
- システムコールサポート範囲
- 実装依存のシステムコール
- 言語処理系の相違
- コンパイラ仕様の相違
- ライブラリサポート範囲
- 実装依存ライブラリ
- ハードウェアの相違
C 言語を対象にした上記の具体的な内容に関しては,プログラムの移植性を参照のこと.