本研究室では,以下のような内容について研究を行なっています.
ソフトウェアテスト
テストはソフトウェアを実行して,不具合(バグ)を検出するプロセスで,高い信頼性のシステムを実現するのに欠かせません.発見しにくい不具合でも検出できる高い能力と,低い実行コストを両立させるテスト手法の開発に取り組んでいます.
本研究室で長年取り組んできた手法として,組合せテストがあります.研究室で開発したツールは,実際のソフトウェア開発現場でも用いられています.
また,最近では,大規模言語モデル(LLM)などのAI技術を利用したテストに取り組んでいます.たとえば,機能仕様やテスト仕様を記述した文章をベクトル化し,それらの類似性からテストが不足している機能を特定したり,必要なテストを生成したりする手法を研究しています.
ソフトウェアの脆弱性検出と自動修復
LLMを使ってソフトウェアの脆弱性を自動検出したり,機械的に修復したりする技術を研究しています.具体的には,ブロックチェーンで動作するプログラムであるスマートコントラクトに対して,LLMを用いたファジングの実現や,脆弱性をもつプログラムの修復パターンをLLMに指示して正しく脆弱性を解消できるかの評価などを行っています.
モデル検査
モデル検査とは,システムやアルゴリズムの動作が作る状態空間をコンピュータにより探索することで,性質を保証したり,設計の誤りを検出したりする自動検証手法です.本研究室ではさまざまな対象にモデル検査の適用範囲を拡大する取り組みを行っています.
- コンセンサスやkセット合意などの耐故障分散アルゴリズム
- 交差点における自動車に対する自動制御プロトコル
- 実世界における組込みシステム
信頼性評価と信頼性最適化
電力システムなどの高信頼性が要求される社会システムを念頭に,信頼性評価や最適化の研究を行っています.たとえば,事故の危険性を見積もる仕組みであるフォールトツリーについて,取り扱えるフォールトツリーの規模の拡大や,信頼性計算の高速化を目指しています.具体的には,2分決定グラフを中間のデータ構造として用い,このデータ構造の生成に関して,プログラム上のさまざまな最適化を検討しています.
また,システムの構成要素の複雑に相互依存している場合に,構成要素の重要性をどのように数値化して,優先的に高信頼化すべき要素を決定するという問題に取り組んでいます.我々は,シャープレイ値というゲーム理論の概念を応用するという新しいアプローチを開発しています.