もしプログラムに間違いがあったら? 信頼できるシステムを創る技術
正常に動いて当たり前
スマートフォンなどでゲームをしていると、サーバが止まって遊べなくなることがあるでしょう。原因は、アプリの作り方に問題がある、データセンターとうまく連携が取れていない、などが考えられます。ゲームに限らず、今や私たちの生活はたくさんの「プログラム」が正常に動くことによって成り立っています。飛行機や電車などの大規模交通システムも同じです。
飛行機は「多数決」で飛んでいる?
もし飛行機が操縦した通りに動かなかったら、大変なことになります。現在の飛行機の操縦システムは「フライ・バイ・ワイヤ」といって、すべて電子制御です。その制御プログラムにバグ(不具合)があってはなりません。そこで、異なる開発者が作った4つのプログラムを同時に動かすなどします。普段は動作が一致しますが、もしかしたら1つだけバグによって異常な値を出すかもしれません。しかし4つ同時に動いていれば残り3つは正常である確率が高いですから、操縦に対する動作を多数決で決めれば安全性は確保されます。こうした考え方は「冗長化」と呼ばれます。
信頼性を高める方法
こうした対策のほか、ソフトウェアにバグを作らない、あるいはバグがあればどこから発生しているかを検出するテスト技術が求められています。単体のプログラムでロジック(論理)の破綻がないかを検証することは比較的簡単ですが、組み合わせによって動きが変わる場合があります。わかりやすく言うと、WindowsなどのOS(オペレーティングシステム)が3つ、ユーザーが使用するウェブブラウザが3つ、プログラムを実行するデータベース管理システムが3つあれば、テストすべき組み合わせは27通りになります。実は組み合わせを工夫すれば、9種類で漏れなくテスト設計が可能となりますが、インフラを支えるようなシステムなら組み合わせは桁違いに複雑になるでしょう。プログラムは将来さらに高度化・複雑化します。動作を保つテスト技術もさらに発展させていく必要があるのです。
※夢ナビ講義は各講師の見解にもとづく講義内容としてご理解ください。
※夢ナビ講義の内容に関するお問い合わせには対応しておりません。
先生情報 / 大学情報
大阪大学 基礎工学部 情報科学科 計算機科学コース 教授 土屋 達弘 先生
興味が湧いてきたら、この学問がオススメ!
情報科学、情報工学先生が目指すSDGs
先生への質問
- 先生の学問へのきっかけは?
- 先輩たちはどんな仕事に携わっているの?