【2018/12/02 追記】PADの解説書をAmazonから出版しました。
bit誌でPAD図を知る
bit誌の1980年3月号から3回連載で「PADによるプログラムの開発」という記事が掲載されました。
PADとは、日立製作所の二村良彦さんたちにより考案されたプログラム論理を記述する方法で、Problem Analysis Diagram(問題分析図)と呼ばれる2次元木構造をした図面です。
bit誌の連載記事の中では、直接説明していませんが、ダイクストラの提唱した構造化プログラミングによる段階的詳細化法を実践できる手法で、従来のフローチャートに代わる記述方法です。
PAD図とは、なるほど便利な記述方法だとこの記事を読んで思いました。しかし、フローチャートに慣れていた私は構造化プログラミングも実践できておらず、処理を上から順にフローチャートで書き下ろしていたため、PAD図でプログラム構造をすぐには書くことができませんでした。
フローチャートには、プログラムの制御構造を複雑にする要因があり、矢印(GOTO文)で好きなところに接続できるので、スパゲティプログラムを作ってしまうことはわかっていました。また、処理の流れや構造を把握しにくく、修正や機能の追加が困難なプログラムとなる場合が多いことも経験していました。
実際の開発に使うようになったのは、1982年ぐらいだったと思います。構造化を意識して、PAD図でプログラム論理を考えるように訓練を続けるうちに、PAD図の素晴らしさがわかりPAD図ファンとなりました。PAD図を記述するためのPADテンプレートも日立製作所から販売されており、長年使い続けています。
PAD図の素晴らしさを若手ソフトウェア技術者に何度か説明したことがあり、また実際の開発でもフローチャートではなくPAD図で処理ロジックを書いてもらいました。
構造化プログラミングとは
構造化プログラミングのポイントは下記の三つです。
- 三つの基本制御構造(連接処理、選択処理、反復処理)に限定する
- 基本制御構造を組み合わせて階層化する
- トップダウン設計により段階的に詳細化する
ポイント1 三つの基本制御構造
- 連接処理とは、処理Aと処理Bが順次行われる処理です。
- 選択処理とは、処理S1か処理S2のいずれかが条件Qにより選択される処理です。
- 反復処理とは、条件Qにより処理Sを繰り返すループ処理です。条件判断がループの先頭にある場合とループの最終にある場合があります。
ポイント2 基本制御構造を組み合わせて階層化
基本制御構造を組み合わせて「ひとつの入口」と「ひとつの出口」をもつの箱を組み合わせて階層化します。そうすると、入口での性質と出口での性質の対応づけから、箱の中で実行する内容(機能)の規定が容易となり、読んで理解しやすい構造となります。
ポイント3 段階的に詳細化
機能的な固まりをサブルーチンにして、あるレベルでプログラム構造の設計を行い、さらにそのサブルーチンの中を段階的に詳細化していきます。
フローチャートの欠点
使いなれたフローチャートには、三つの欠点があることがわかりました。
- 反復条件 も 選択条件 も同じひし形を使うからプログラムの構造が見えにくい
- 同じ制御構造でも、書き方により別の構造に見える
- 段階的詳細化には不向き
問題分析図PADとは
問題分析図PADとは、プログラムの論理構造を2次元の木構造で記述する図式です。下記にPAD図の表記方法について説明します。
PAD図によるトップダウン設計の考え方は下記のようになります。
頭の中でモヤモヤしている問題解決手続きを、モヤモヤがなくなるまで段階的に連接・反復・選択の基本制御構造で詳細化していきます。
下記のPAD図を例に実行の流れを示します。
PAD図を書くと、横軸方向にレベルの深さで複雑さ(反復、選択)を現し、縦軸方向に処理の大きさを現すことになります。すなわち、2次元の図面となりプログラムの理解にパターン認識能力を活用できます。
また、誰が書いてもプログラムの論理構造が同じであれば同じ形状の図面となり、作図の個人差を減少することができます。
プログラム開発の設計・製造・検査の工程でPAD図を活用することができます。
設計 : プログラム構造設計に使える
製造 : コーディングを木巡回(Tree Walk)で機械的に導ける
検査 : 葉先を通るテストケースの設計で全分岐検査ができる
PAD図によるコーディングは、木の葉をたどる木巡回(Tree Walk)で機械的に導くことができます。
下記にPAD図とそのコーディングについて示します。
素晴らしいPAD図
構造化プログラミングを取り入れた、いろいろな構造化フローが提案されてbit誌などの技術情報誌で紹介されました。
- PAD図 日立製作所
- HCP図 NTT
- NS図 アメリカ
- SPD図 日本電気
私は、この中でもPAD図が一番素晴らしいと考えています。
PAD図に慣れてくると、2次元の木構造の図面からプログラムの論理が浮かび上がり、プログラム構造を見渡すことができるようになります。誤ったプログラム論理の場合は、なぜか違和感を感じ、美しい木構造になっていない場合が多いです。その場合は、PAD図を見直すことでプログラム論理の誤りを発見することができます。
PAD図の参考文献
bit誌の1980年3月号で素晴らしいPAD図と出会ってから、いろんな文献で紹介されるようになりました。
サイエンス社のComputer Today誌1985年5月別冊では、「PAD構造化プログラム開発技法」という特集号となっています。
bit誌の1986年7月号では、「PADの近況」という記事が掲載されました。