TR-C-0127 :1996.2.29

下村隆夫

高信頼性ソフトウェア設計手法の研究

Abstract:通信ネットワークのオープン化,サービスの多様化に伴い,通信サービスを提供する通信処理ソフトウェアの規模は大きく,かつ,複雑になりつつある.また,ネットワークセキュリイティの観点からも,品質の高いソフトウェアを提供することが重要な課題となっている.本テクニカルレポートでは,高信頼性ソフトウェア設計手法の研究の一環として行われた2つの研究「副作用のないソフトウェア改造方式の研究」,および,「分散処理システム障害解析支援方式の研究」について,それらの研究成果と今後の課題について述べる. 「I部 副作用のないソフトウェア改造方式の研究」に関しては,ソフトウェアを改造する場合,従来技術では,改造対象機能および非改造機能について計算している部分をプログラム内から抽出するスライシング技術を応用して改造作業を支援しており,非改造機能に影響を与えないように改造を行うことはできるが,逆に,非改造部分から改造部分が影響を受け,正しく改造できない場合が起こりうるという問題があった.そこでこの問題を解決するため,改造部分が非改造機能に関するスライスから受ける影響を解析し,これを除去することにより,非改造機能には影響を与えず,かつ,改造部分が非改造部分から影響を受けないように改造を行うことを可能とするソフトウェア独立改造方式を提案する.本方式により,改造対象機能に関するスライスだけに着目して改造作業を進めることができる.また,テスト作業も改造対象機能に関するスライスに対して行えばプログラム全体に対してテストしたのと同じ効果をもち,かつ,非改造機能に関する再テストも不要となる. 「II部 分散処理システム障害解析支援方式の研究」に関しては,システムのガイドに従ってバグを究明する従来のアルゴリズミックデバッギング手法では,手続き型言語には適用できない,検出できるのはバグを含む関数であり,バグを含む文まで限定することはできない,文の記述漏れに関するバグは検出できない等の問題点があった.これに対して,手続き型言語を対象とし,変数値エラーに対して,変数値エラーを引き起した可能性のある文の集合であるCritical Sliceを用いた決定性のバグ究明方式を提案する.本報告では,さらに,プログラムのテストにおいて観察される,出力異常エラー(変数値エラーを含む),出力漏れエラー,および,出力なし無限ループエラーの3つのエラーに対するCritical Sliceに基づいたバグ究明方式を提案する.出力漏れエラーがあると,プログラマがエラーを誤認する可能性について述べ,そのような場合には,出力文の間の依存関係を導入することにより,エラーの誤認を回避することができることを示す.また,本バグ究明方式を実現するためのシステムの構成,処理内容,および,ユーザインタフェースについても述べる.