ソフトウェア信頼性

ソフトウェアは知的生産物の代表例であり,ソフトウェア開発の完全自動化は未だに困難な状況にあります. 一方で,高度情報化社会におけるソフトウェアへの依存度は益々高まっており, ソフトウェアに含まれる欠陥がシステム障害を引き起し, それが重大な社会的事故に繋がる例も多く見受けられます. ソフトウェア工学における伝統的なアプローチとして,要求仕様定義,設計, コーディングを経て, ソフトウェア開発工程の最終段階であるテスト工程において細部に渡り徹底的にテストを行い, 市場やユーザにリリースするための高い信頼性を確保することが挙げられます. ここで重要な問題は,如何に効率的にテストを行い, かつ如何に高い精度でソフトウェア信頼性の定量的評価尺度であるソフトウェア信頼度を推定するかにあります. 前者の問題は,プログラムの主要な実行経路(パス)を特定化し,効果的なテストケースを設計する問題に帰着されますが, 大規模なプログラムに対して適用可能な方法はまだ知られていません. ソフトウェア信頼度や残存フォールト数の推定を行うためには, 従来までに,ソフトウェア信頼度成長モデルと呼ばれる確率モデルが数多く提案され,実用に供されてきました. 当教育科目によるソフトウェア信頼度成長モデルの長年に渡る開発実績は世界中で高く評価されており, 現在,世界各国に設置されているソフトウェア信頼性工学センターとの連携を強化している際中です. この他にも,ニューラルネットワークと各種メトリクスに基づいたソフトウェア信頼性評価に関する研究, EM (Expectation-Maximization) 原理に基づいたソフトウェア信頼度成長モデルの推定アルゴリズムの開発などを行っています. 特に,当研究室で開発されたアルゴリズムを実装した SRATS (Software Reliability Assessment Tool on Spreadsheet) は 数多くの企業で使われています.