プログラミングは、プログラミング言語を使って目的のプログラムを作成することです。小さなプログラムであれば、直にプログラミング言語を使ってプログラムを書き下しても差し支えありません。しかし、少し大きなプログラムになると、そのようなやり方では、プログラム作成は直ぐに行き詰ってしまいます。
一般的には、プログラムの目的(what)を定め、それをどのように(how)実現するかを決めます。つまり、whatを決めなければhowは決められないからです。通常、whatやhowはプログラミング言語ではなく、日常使う言葉や図表を使用して文書としてまとめます。もちろん、採用したプログラミング言語の文書能力が高ければ、プログラミング言語を文書作成に用いることもできます。
howは、何を入力して(入力)、何を遂行し(処理)、何を出力する(出力)かを書きます(下図)。入力と出力はできるだけ詳細に書きます。処理はプログラムでなく、何をするのか、概要を言葉で書きます。
この処理をプログラミング言語で書き下すことができれば、プログラムの分解(break down)はありません。しかし、少し大きなプログラムでは、最初のhowをいくつかの細かいhowに分解し、階層化します。当然ですが、各howはそれぞれの目的(what)をもちます。トップのhowを階層1とし、階層1のhowを階層2の複数のhowで表わします。階層2のhowも同様にして、さらに細かいhowに分解します。分解は、処理をプログラミング言語で書き下すことができるところで終わりです(下図)。
大雑把ですが、大きなプログラムの作成はこんな風にしているのだということを理解していただければと思います。