机上デバッグのすすめ
今回は机上デバッグの話をしたいと思います。
もしかしたら「机上デバッグ」という言葉を初めて聞いたという方がいるかもしれません。机上デバッグとは、開発ツールを使わないで紙面でデバッグをすることです。
歴史は古く、ソフトウェア開発環境が十分に整っていない時代には欠かせない作業でした。机上デバッグは、単体テストや結合テストで見つかるバグの数を減らすことができて、さらにレベルの高いプログラミングスキルが身につくので、知っていて損のない作業です。それではもう少し詳しくお話してみたいと思います。
机上デバッグとは
デバッグは、プログラムの欠陥を見つけ出して修正する作業です。主にソフトウェア開発工程の単体テスト・結合テストで実施します。通常、デバッグの作業は、以下の方法でおこないます。
・printf文を使ってプログラムのパス(どの処理を通っているか?)や変数を画面に出力する。
・プログラムにデバッグ用のログを仕込んでファイルに出力する。
・Eclipseなどの統合開発ツールを使う。
これらに共通するのは、プログラムを動かしてテストすることです。一方、机上デバッグはプログラムは動かしません。使うのは、印刷したプログラム、鉛筆、消しゴム、ノートです。そして、印刷したプログラムを使ってデバッグをしていきます。
机上デバッグの方法
それでは、実際に机上デバッグの方法を説明します。まず初めに、印刷したプログラム、鉛筆、消しゴム、ノートを用意します
次に、プログラムの先頭から1ステップずつ実行します。その際、プログラムの処理内容や変数をノートに記入します。
一つ、簡単なプログラムを例にあげて実践します。
例:box_Aに入っている値とbox_Bに入っている値の差を求めるプログラム
If (box_A >= box_B) { ①
box_C = box_A – box_B ②
} else { ③
box_C = box_B – box_A ④
} ⑤
机上デバッグでは、各行でプログラムがどのような処理をするのか解析して、それが正しい動きであるかどうかを見ていきます。
①box_Aの値がbox_Bの値より同じか大きい場合は②に分岐する。
他は④に分岐する。
box_A=10、box_B=5…②に分岐。
box_A=3、box_B=3…②に分岐。
box_A=4、box_B=8…④に分岐。
条件文に漏れはないのでOK。
②box_C = box_A – box_Bを計算する。
10-5=5、3-3=0。
減算して負(マイナス)にならない、計算式が成り立つのでOK。
③条件文の文法に間違いはないのでOK。
④box_C = box_B – box_Aを計算する。
8-4=4。
減算して負(マイナス)にならない、計算式が成り立つのでOK。
⑤条件文の文法に間違いはないのでOK。
と、こんような感じでプログラムの動きを確認していきます。もし、プログラムを印刷するのが面倒であれば、例えばExcelのセルにプログラムを貼り付けて、その横のセルにプログラムの処理や値をノートに記入するやり方もあります。
机上デバッグで得られるスキル
そろばんができる人は、頭の中にそろばんを思い浮かべて、そのそろばんを弾いて計算をしています。そして、経験を積むと大きな桁数の計算ができるようになります。
初めは、目の前にあるそろばんを1桁2桁弾く練習をして、段々と桁数を増やして、それを繰り返して、やがて頭の中で計算ができるスキルが身に着きます。
これは、プログラミングでも同じです。最初は、机上デバッグでプログラムのシミュレーションをして、段々とプログラムの行数を増やして、それを繰り返すことで、やがて頭の中でプログラムを作りシミュレーションできるスキルが身に着きます。すなわち、前述した例の実践が、頭の中でできるようになるのです。
このスキルを身に着ければ、頭の中でプログラムを設計して、プログラミングして、プログラムの動きをシミュレーションできるので、品質の高いプログラムが作れるようになります。