連載
» 2016年06月20日 07時00分 公開

いま求められるソフトウェア静的解析・動的解析 第2回:「根拠ある作業」のため「ソフトウェア解析」ができることいま求められるソフトウェア静的解析・動的解析 第2回(3/4 ページ)

[永野行洋(豆蔵),MONOist]

動的解析結果をどう活用するのか?

 ところで、動的解析ツールの解析結果はどのように扱えば良いのでしょうか?

 デバッグや性能改善において陥りやすい間違いの1つに「思い込みによる作業」があります。みなさんの現場でも以下のような例を見聞きしたことはないでしょうか?

・デッドロックが発生した時のログファイルを見ると、スレッドAのログ出力で途切れている。これはスレッドAと何らかのスレッドでデッドロックが発生しているに違いない。

・ARM CPUは0との比較について特別な命令セットを用意している。そのため、if (a < 4)と書かずにif (a-4<0)と書くと処理速度が向上する。*2

 デバッグや改善を行う際に、仮説を立てること自体は誤りではありません。しかし、客観的な事実に基づいた仮説ではなく「多分、こうだろう」という思い込みによって立てられた仮説では、仮説が真実である確率は当然低くなりますし、検証の結果、仮説が覆されたときに、代替の仮説を立てることが非常に困難です。

 しかし、動的解析ツールの解析結果を用いて仮設を立てた場合、それが真実につながる可能性は非常に高くなり、代替する仮説を立てることも容易になってきます。

*2 ARMのサイトに記載がありますが、最近ではこのような単純な最適化はコンパイラが自動で行います

Copyright © ITmedia, Inc. All Rights Reserved.