ソフトウェアの計量化
製品評価
開発されたプログラム製品を評価する尺度としては,次のような尺度がある.
品質
ソフトウェアの品質は,広い意味では信頼性の他に機能,性能,操作性,保守性などが含まれる. 品質に関する最も基本的な評価尺度はエラー数である.
品質を表すモデルには,次の3つのモデルが知られている.
- エラー混入モデル
設計,製造過程におけるエラー混入の要因をモデル化し,実際に混入したエラーの数を予測するモデルである.
エラー数を実測するには検査が必要であり,このモデルは次の検査モデルや信頼性成長モデルと共に用いられる.
- 検査モデル
ソフトウェアのライフサイクルの中で,積極的にエラーを発見するために努力する検査工程をモデル化したものが検査モデルである. ソフトウェアの検査工程をモデル化したときの代表的な計量値は以下の3つである.
- 検査項目数
与えられた機能仕様を検査するのに必要な検査項目数
- バグ摘出数
検査作業で検出されるエラー数
- 検査工数
検査に関わる工数
検査モデルにより,検査工程で見つかるエラーの数と検査工数を検査対象の機能の大きさから予測することができる.
- 信頼性 (→ ソフトウェアの信頼性)
ソフトウェアの信頼性とは,定められた期間に定められた通りの機能をそのソフトウェアが十分発揮する確率,あるいは逆にそのソフトウェアがエラーを含む度合いである.信頼性はソフトウェアの商品としての価値だけでなく,製造や検査,保守のコストを大きく左右する. 信頼性成長モデルは,検査,運用期間において発見されるエラーの数と検査時間の関係をモデル化したものである.エラーが検出されソフトウェアの信頼性が成長していく過程を信頼性成長曲線(エラー累積曲線)で近似する. 信頼性成長曲線としては,ゴンペルツ曲線あるいはロジスティック曲線がよく知られている.
また,品質を向上させるための最も重要な作業としてプログラムの検査(テスト)があるが,この検査工程において用いられる評価尺度として次のようなものがある [Myers79].
- 検査項目数
プログラムを検査するために必要な検査項目数であり,与えられた機能仕様等から機能の大きさやその他の要因を考慮して決定される.
- テスト網羅率
テストによってどの程度プログラムの機能が検査されたかをプログラムの構造から推定する尺度であり,プログラム中で実行された命令文の比率(C0網羅率)やプログラム中で実行された分岐パスの比率(C1網羅率)などがある.
生産性
ソフトウェアの生産性は,一般に作成されたソフトウェア規模の作成にかかった全工数に対する比,すなわち単位工数あたりの規模として表される. 工数には,プログラムの設計から製造,デバグに要する工数および設計書やマニュアルなどのドキュメントの作成工数などプログラムの作成に関する全ての工数が含まれる.
生産性に影響する要因には次のものがある.
- 人的要因
プログラマの知識,経験
- プロダクト要因
対象システムに要求される信頼性,効率など
- プロセス要因
使用言語,開発技法など
- 開発環境要因
CASEツール,テストツールなど
これらの要因と生産性との関係について適切なモデルを用いて,生産性の目標設定や見積りを行うことが必要である.
移植性
プログラムの生産性を向上させる最も有効な方法は,プログラムあるいはプログラムモジュールを再利用あるいは移植することである.プログラムを設計する際には,他の環境への移植を考慮してプログラムを作成することが移植作業を効率化させ,移植工数の削減につながるため重要である. したがって,プログラムの評価尺度の1つとして流通性の良いプログラムを判断する尺度,すなわち移植性を評価する尺度が必要である.
また,プログラムの移植工数の定量的評価は,新規開発に対する移植の有効性の判断や移植工数の管理を適切に行うために必要である.