自己適応ソフトウェア

研究動機:自己修復・自己最適化・自己防御する「しなやかなソフトウェア」を作りたい

ソフトウェアシステムは,システムを取り巻く環境(ユーザ,外部サービス,物理デバイス等)と密につながって動作します. 環境は様々な要因によって絶えず変化しますが,それらの変化全てへの対処をソフトウェア開発時に組み込むことは,この世のあらゆる事象を予測することと同じであるため不可能です. そのため,ソフトウェア開発者は環境の変化に応じて適宜,その変化に対処できるシステムへ更新(アップデート)します. このシステムの更新は一般的に人手で行われていますが,開発者にとって保守・運用の面で大きな負担になるだけではなく,バグや設計ミスといったシステムの安全性を脅かす原因にもなるという課題があります.

自己適応ソフトウェアはこれらの課題を解決するアプローチです. 自己適応ソフトウェアは,環境の変化に対処できるシステムへ更新する作業を自動化し, ソフトウェアが自分自身で環境の変化に対処するシステムです. 鄭研究室はシステム自身が自己修復・自己最適化・自己防御するしなやかなソフトウェアの研究・開発をミッションとして掲げており,ミッション実現のために自己適応ソフトウェアに関する研究を行なっています.

自己適応ソフトウェアとは

自己適応ソフトウェアは,環境の変化に対して,自身を最適化し,その変化に対処できるソフトウェアを指します. これを実現するためには,(1)環境の変化を検知し,(2)その変化に対してどのような変更が必要か分析・計画し,(3)分析・計画結果に基づいて自身を更新する必要があります.これら3つのプロセスを,環境の変化を検知するたびに繰り返すことによって,ソフトウェアは自身で環境の変化に対処できるように更新されていきます. この技術は,環境の変化や設計ミスによるシステムの異常動作・緊急停止が大きな損害を生む分野(ITインフラ,金融システム)であったり,AI(人工知能)を用いた自動運転や自動制御分野への応用が期待されており,自己適応技術の導入によってこれらの分野におけるシステムの安全性,堅牢性の保証や,保守運用にかかるコストの改善につながると我々は考えています.

我々の研究室での取り組み

自己適応ソフトウェアの開発では,ソフトウェアが提供する機能を表すアプリケーションロジックに加え,変化に対してソフトウェアをどのように変更するかを表す適応ロジックを開発する必要があります. 本研究では,この新たな開発対象である”適応ロジック”を高品質に,かつ正しさの保証を伴った開発方法を明らかにします. 我々の研究室では自己適応ソフトウェアを構成する3つのプロセスについて研究しています.

  • 環境の変化の検知・認識
    実行時に環境内で生じた変化を迅速かつ正確にシステムの認識できる形(環境モデル)に変換する技術を構築しています. 実現のために,「確率的勾配降下法を用いた環境モデル学習」,「深層学習技術を活用した画像における物体検出」,「センサや実行ログなどのトレースデータの分析」などの研究を行なっています.

  • 実行時の仕様モデル合成
    変化した環境において達成可能で最適な要求を分析,決定します. そして,要求と,環境モデルから,システムが要求を違反することのない安全な仕様モデルを自動合成します. 特に,自動仕様合成技術の一種である離散制御器合成に着目し,自動合成を効率化するための離散制御器合成の改良・拡張の研究を行なっています.

  • システムの実行時更新
    更新された仕様モデルに基づきシステムを実行時に再構成します. システムを停止させることなく更新する技術を「実行時更新」と呼びます. 環境の変化のたびに,変化に対処できる仕様モデルに基づき実行時更新することで,自己適応ソフトウェアは実現されます. このような実行時更新を安全かつ効率的に実現する「実行時更新フレームワーク」に関する研究を行なっています.

またこれらの自己適応ソフトウェアを構成する技術を我々は以下のような様々な分野に適用し評価実験を行なっています.

  • ドローン制御
  • 自走式ロボット
  • 自動運転
  • IoTシステム開発(Node-RED)
  • セキュリティ&プライバシー情報管理