2.詳細設計




『何を作るのか?』
これから作るプログラムの構造を考えます。詳細設計とはプログラムのレベル(どのような命令を組み合わせてプログラムするか)で考える作業の事を言います。(出来ればメモとして資料化しておくべきです)
プログラムを作る上で技術的な壁に突き当たる事があるでしょう。
もし壁を突き破るにプログラムを一から作り直さなければならなくなったら、大変ショックですし最悪プログラムを断念しなければならなくなるかもしれません。もしこれが仕事上での一場面ならば即減益となります。
かろうじて少しの手戻りですんだとしても、一度作り上げた周辺プログラムを触る事にでもなれば、不良を作り込む原因になります。
このような無駄を減らす為にも、詳細設計を行いましょう。

『詳細設計の手順』
これから作る電卓の詳細設計をしてみようと思います。
詳細設計の手順ですが、いきなりプログラム命令レベルのものを考えるのは大変なので、概要を決めてしまい、その概要をどんどん詳細化して行く手順で詳細化作業を進めます。

では詳細化を行うにしてどのような考え方で進めれば良いのでしょうか?これには色々な方法が発表されていますが、私の場合は「自分がアプリケーションになる」ようにしています。どういう事かといえば、自分が電卓のアプリケーションになりきり、自分が処理をする手順を洗い出すのです。

『電卓の作業手順』
私が”電卓になりきり”最初に考えたのは以下のような作業の流れです。
@、準備をする
A、電卓の画面を表示する
B、ボタンが押されるのを待つ
C−1、押されたボタンが数字であるなら、その数字を覚える。Bに戻る
C−2、押されたボタンが演算子なら、先に覚えた数字を計算する。Bに戻る

文章にしたら、たったの4行しかありませんが、既にこの作業の流れは、プログラムの処理の流れそのものだったりします。
後はこの4行の作業手順をどんどん詳細化してゆけばよいのです。詳細化も行く所まで行くと実際にプログラムする命令と同レベルまで行きますが、どこまで詳細化するのかは、プログラマ自身の好みです。
ちなみに私の場合は、仕事では5〜10命令単位、趣味では10〜20命令単位(紙に書くのは20〜500で、更なる詳細化は頭の中で行ないます)になるまで詳細化しています。プログラムに慣れてくれば、紙に書かなくても頭の中で詳細化する事が出来てきます(ハイレベルな将棋さしは、将棋盤が無くても頭の中で盤を浮かべながら将棋をする事が出来るそうですが、それと同じです)が、最初のうちはちゃんと紙に書いて行く事をオススメします。

本講座では少し変則的ですが、@〜Cをそれぞれ詳細化しながら同時にプログラム化して行きます。これは、なるべくプログラムに接して慣れてもらいたいからです。