品質特性:移植性

作成日:2004-11-14
最終更新日:

移植性とは

ソフトウェアの品質を、どのように把握するかについて、 基準がある。世界的には、次の規格がある。
ISO/IEC 9126-1:2001 Software Engineering - Product Quality - Part 1 : Quality model

日本では、上記規格を翻訳した下記の規格がある。

規格番号 JISX0129-1
規格名称  ソフトウェア製品の品質—第1部:品質モデル
英文名称 Software engineering - Product quality - Part 1 : Quality mode

品質モデルに定められた品質特性の全体は、 私がまとめた、JIS X 0129-1 を参照してほしい。 さて、この規格で、 移植性の定義および移植性の副特性の定義を見よう。

移植性

ある環境から他の環境に移すためのソフトウェア製品の能力

環境適応性

ソフトウェアにあらかじめ用意された以外の付加的な作業又は手段なしに、 指定された異なる環境にソフトウェアを適応させるためのソフトウェア製品の能力

設置性

指定された環境に設置するためのソフトウェア製品の能力

共存性

共通の資源を共有の環境の中で、 他の独立したソフトウェアと共存するためのソフトウェア製品の能力

置換性

同じ環境で、同じ目的のために、 他の指定されたソフトウェア製品から置き換えて使用することができるソフトウェア製品の能力

移植性標準適合性

移植性に関連する規格又は規約を遵守するソフトウェア製品の能力。

なお、移植性の定義の備考として、 「環境には組織,ハードウェア又はソフトウェアの環境を含めてもよい。」 とある。環境の中に「組織」があるのが意味深長である。

さて、移植性の問題を身近に感じたことを書いてみる。 私は、拙いプログラムをいくつか JavaScript で公開している。 その拙さをある人からホ−ムペ−ジ上で指摘された。 題材は、待ち行列に関して計算する拙作のプログラムである。 これに関して、 平均サービス時間が平均到着時間より長い場合、 数値を入れて計算させると待ち行列の長さが負になる、 というものであった。これは、明らかにバグである。

上記のバグを指摘された方は、他の待ち行列に関するWebページも紹介している。 他のWebページには、私のプログラムより優れたプログラムがあることがわかった。 もちろん、上記のバグは発生しない。ところがである。この優れたプログラムは、 私が利用している環境では動作しない。調べてみると次の通りである。

OSソフト動作
WindowsInternet Explorer動作する
WindowsNetscape Commnicator動作しない
MacintoshInternet Explorer動作しない
MacintoshNetscape Commnicator動作しない

その理由は、 Windows + Internet Explorer の環境に依存する関数を使っていたからである。 だから、この優れたプログラムも、 移植性という品質の面では高いとはいえないことになる。 一方で、私のバグプログラムは、上記のどの環境でも動作する。 そして、問題データを入力すると、すべて同じようにバグが生じる。 さすがにこれではまずいので、直した。

私のプログラムでも、 移植性が高いという意味で品質が高くなるということがわかった。 これは収穫だった。しかし、こういったことで甘えてはいけない。

上司が言っていたことがある。プログラムのテストをするとき、 テストデ−タには、正常系と異常系を同数用意すること、というものだ。 異常系を想定することはセンスが必要だが、 ある程度やるとコツがつかめてくる。私も少しだけ、努力している。

Javascript と Ajax

最近流行している技術に、Ajax(エイジャックス)がある。 Ajax はいくつかの技術の組合せであり、Javascript はその構成技術である。 Javascript の処理系はブラウザに組み込まれていて、 ブラウザごとに挙動が異なる。 したがって、Ajax の実装者は移植性に腐心している。 現在では、ブラウザの挙動の相違は先人が公開したライブラリで吸収できる。 このライブラリを使う限り、 Ajaxの開発者は移植性を気に掛ける必要はない。 既にあるものを使う、というのはコンピュータのみならず、 他の分野でも通用する原則である。(2006-11-23)

移植性と移植

移植性と移植についての英語について一言注意する。 移植性は portability でよい。 一方、移植することは、porting ということばは使わないようだ。 migration というようだ。なお、migration は人が移動する、移民する、 という場面で使われるのが第一義である。(2010-05-15)

まりんきょ学問所 >> 品質のページ>> 品質特性:移植性


MARUYAMA Satosi