自動でプログラムのバグを修正できる時代は来るか?
バグの修正を自動化する
自動運転や無人レジなど、さまざまな場面で自動化が進められています。しかしコンピュータのプログラミングについては自動化がまだ完全には実現しておらず、バグが発生したときは主に人間がソースコードの修正作業をしています。バグが生じやすい箇所のひとつがプログラム中の条件分岐です。状況に応じて処理を変えるときに使いますが、「0以上のとき」とすべき箇所に「0より大きいとき」と書いてしまうなどのミスが多く見られます。修正は簡単だとしても、規模の大きなプログラムになればなるほど間違えた部分の検出に時間がかかります。そこでバグの検出と修正を自動で行えるソフトウェアの開発が進められています。
バグの修正は病気の治療に似ている
バグにはさまざまな種類があり、どのような場合にも幅広く対応できる自動プログラム修正技術はまだ実現していません。人間の病気の治療に例えれば、すべての病気を治すことのできる薬はまだないため、治療ではまず病気の種類を診断し、適切な薬などを考えるということです。バグへの対応も同様で、1つひとつのケースに適した修正方法を提案できるよう、分類や分析などをしなければなりません。
裁判にも役立つ検出技術
自動プログラム修正は、ソフトウェアを運用してみて想定通りに動かないときに使われる技術です。一方で、ソフトウェアの開発中に類似のソースコードをコピー&ペーストしたとき、誤った記述まで複製してしまう事例もプログラミングでは問題となります。コードクローンと呼ばれる複製されたソースコードを何度も使うのはよくあることで、コピー元が誤っているとバグだらけのプログラムになってしまいます。これに対応するため、コードクローンを検出する技術が開発されており、コードクローンに特化してチェックすることができます。実は、プログラムの盗用を訴えた裁判で、コードクローンの検出技術を使って証拠をつかんだ事例もあり、その活躍の場はソフトウェア工学だけにとどまらないのです。
※夢ナビ講義は各講師の見解にもとづく講義内容としてご理解ください。
※夢ナビ講義の内容に関するお問い合わせには対応しておりません。
先生情報 / 大学情報
大阪大学 大学院情報科学研究科 コンピュータサイエンス専攻 教授 肥後 芳樹 先生
興味が湧いてきたら、この学問がオススメ!
情報科学先生が目指すSDGs
先生への質問
- 先生の学問へのきっかけは?
- 先輩たちはどんな仕事に携わっているの?