構造化プログラミング
良いプログラム
正しい動作をする。
それが正しく動作することが分かりやすく理解できる。
「大規模なプログラムを書くとき、どうしたら良いプログラムに仕上げることができるか」 という問いに対して与えられた回答。
goto文の追放
分割統治
段階的詳細化(Stepwise Refinement)
プログラムを下降型の分解により合成する
抽象から具象へ、順次段階を経て補っていく
設計に関する決定をできるだけ後へ引き延ばす
詳細化の進度とともに、その都度具体化の正しさを確認する
情報隠蔽(information hiding)
抽象化(Abstraction)
データ抽象化
制御の抽象化
プログラムの抽象化
プログラムの検証(Verification)
フローチャートを使用してプログラムを開発すると、判定と飛び先が入り組んだ複雑な構造のプログラムができあがることがあります。
この入り組んだ状態を称して、スパゲッティプログラムと呼ばれました。
スパゲッティプログラムは単にプログラムが読みにくい と言うよりも、読み難さが原因で保守性を損ないます。
そこで、3つの構造
逐次(sequence)
命令を順に実行する、
選択(selection,if-then-else)
条件を判定して判定結果により処理を分ける、
繰り返し(iteration,do-while)
条件が成り立つまで命令を繰り返す、
のみを使ったプログラミング手法が提唱されました。
これが、構造化プログラミングです。
構造化プログラミングでは上から下へ処理が動いていくため、プログラムが理解しやすく、修正なども行ないやすい利点がありますが、一方、厳密にこの3種類しか使わなかった場合、無意味な状態の判定が増える欠点があります。
このため、「1 entry 1 exit」になるなら、GOTO文の使用は最小限許そうという考えが一般的です。
structured programming
構造化
構造化定理(structure theorem)
構造化分析(SA : Structured Analyesis) - 構造化設計(SD : Structured Design)
ソフトウェア開発プロセスに統合された。
構造化分析・設計の限界
研究がすすむにつれ、さまざまな問題があきらかになり、これを解決するためにオブジェクト指向が生まれた。
手順書、作業手順書、マニュアル(Manual)
スタイルガイド(Style Guide)
Simula
抽象データ型(ADT : abstract data type)
抽象化(Abstraction)
ジャクソン流構造化プログラミング
プログラム検証
関連人物
エドガー・ダイクストラ(Edsger Wybe Dijkstra)
チャールズ・アントニー・リチャード・ホーア卿(Sir Charles Antony Richard Hoare)
オーレ=ヨハン・ダール
マイケル・アンソニー・ジャクソン
構造化プログラミング - Wikipedia
Structured programming - Wikipedia
構造化.icon
原因.icon