
コンピュータプログラミングにおけるナッシ・シュナイダーマン図(NSD)は、構造化プログラミングをグラフィカルに表現した設計図である。[ 1 ]このタイプの図は、1972年にストーニーブルック大学の大学院生であったアイザック・ナッシとベン・シュナイダーマンによって開発された。[2]これらの図はプログラムの構造を示すため、 ストラクチャグラムとも呼ばれる。 [3]
概要
トップダウン設計に従って、問題はより小さなサブ問題へと分解され、最終的には単純な文と制御フロー構造だけが残ります。ナッシ・シュナイダーマン図は、このトップダウン分解を分かりやすく反映しており、サブ問題をネストされたボックスで表現します。構造化プログラミングの理念に従い、ナッシ・シュナイダーマン図ではGOTO文は表現されません。
ナッシ・シュナイダーマン図は、正式なプログラミングではほとんど使用されません。その抽象度は構造化プログラムコードに近く、変更には図全体を再描画する必要がありましたが、グラフィックエディタによってこの制限はなくなりました。ナッシ・シュナイダーマン図はアルゴリズムと高水準の設計を明確にするため、教育にも役立ちます。Microsoft VisioやドイツのEasyCODEなど、数多くのソフトウェアツールに搭載されています。[4]
ドイツでは、ナッシ・シュナイダーマン図は1985年にDIN 66261として標準化されました。[5]これらは今でもドイツのプログラミング入門書で使われており、例えば、BöttcherとKneißlのC入門書[6] 、 Baeumle-CourthとSchmidtのC入門書[7]、KirchのC#入門書[8]などです。
ナッシ・シュナイダーマン図は技術文書にも用いられる。[9]
図表
プロセスブロック:プロセスブロックは最も単純なステップを表し、分析は必要ありません。プロセスブロックに到達すると、ブロック内のアクションが実行され、次のブロックに進みます。

分岐ブロック:分岐ブロックには2種類あります。1つ目は、単純なTrue/FalseまたはYes/No分岐ブロックで、条件が満たされているかどうかに応じてプログラムに2つのパスを提供します。これらのブロックは、条件が満たされるまでプログラムの実行を停止するループ処理として使用できます。

2つ目の分岐ブロックは、複数分岐ブロックです。このブロックは、プログラムで選択ケースが必要な場合に使用されます。このブロックには通常、質問または選択ケースが含まれます。このブロックはプログラムに複数の選択肢を提供し、スペースを節約するためにサブプロセスブロックと組み合わせて使用されることがよくあります。

テストループ:このブロックは、特定の条件が満たされるまで、プログラムが1つまたは複数のプロセスをループすることを可能にします。各ループでカバーされるプロセスブロックは、条件から外側に伸びるサイドバーによってサブセット化されます。
テストループには、主に「テストファースト」ブロックと「テストラスト」ブロックの2種類があります。この2つの違いは、処理手順の実行順序のみです。「テストファースト」の場合、プログラムはブロックに到達すると、条件が満たされているかどうかをテストし、満たされていない場合は処理ブロックを完了してからループに戻ります。テストが再度実行され、条件が満たされていない場合は再度処理が行われます。いずれかの段階で条件が満たされた場合、プログラムは処理ブロックをスキップし、次のブロックに進みます。

テスト最後のブロックは単純に逆順に実行され、プロセスブロックはテスト実行前に完了します。テスト最後のループにより、最初のテストの前にプロセスブロックを少なくとも1回実行できます。

並列実行は次のように表すことができます。

参照
出版物
- Nassi, I.; Shneiderman, B.:構造化プログラミングのためのフローチャート技法、SIGPLAN Notices XII、1973 年 8 月。
参考文献
- ^ ハンス・ゲオルグ・フィル (2009).セマンティック情報システムのための視覚化. p.32
- ^ 構造化フローチャートの短い歴史(ナッシ・シュナイダーマン図) . Webdocドラフト:2003年5月27日. (出典)
- ^ ロルフ・イザーマン (1988).『自動制御:国際自動制御連盟の3年ごとの世界会議からの選集:ドイツ連邦共和国ミュンヘン、1987年7月27~31日』第10巻、第14巻、p.89
- ^ 「構造図による実装」EASYCODE GmbH . 2023年2月7日閲覧。
- ^ ドイツ規範研究所 e. V. (DIN): DIN 66261: 情報提供;ナッシ=シュナイダーマンのStruktogrammeのSinnbilder。
- ^ ベッチャー、アクセル; Kneißl、Franz: Informatik für Ingenieure: Grundlagen und Programmierung in C。第3版。ミュンヘン: オルデンブール、2012。ISBN 978-3-486-70527-0特に第 10 章「Kontrollstrukturen」(制御フロー)を参照してください。
- ^ Baeumle-Courth、ピーター; Schmidt、Torsten: Praktische Einführung in C。ミュンヘン: オルデンブール、2012。ISBN 978-3-486-70799-1特に第 6 章「Kontrollstrukturen」(制御フロー)を参照してください。
- ^ Kirch、Ulla: C# lernen und professionalell anwenden。ハイデルベルク: mitp、2009。ISBN 978-3-8266-5915-7。特に第 5 章「Schleifen und Verzweigungen」(ループと分岐)を参照してください。
- ^ Weiss, Edmond H.:「Nassi-Schneidermanチャートによる手順の視覚化」、Journal of Technical Writing and Communication、Vol. 20、Nr. 3(1990):237-54。
外部リンク
- 構造化フローチャートの短い歴史 (Nassi–Shneiderman ダイアグラム)、Ben Shneiderman 著、草稿、2003 年 5 月 27 日。
- Nicholas Hebb: 「Excel で Nassi-Shneiderman 図を作成する方法」(日付なし)。
- ユーリッヒ スーパーコンピューティング センター (JSC):「nassi を使用した Unix での Nassi-Shneiderman 図の生成」、 2012 年 10 月 30 日、 Wayback Machineで 2018 年 1 月 26 日にアーカイブ。
- ヨーダー、コーネリア・M; シュラグ、マリリン・L.:「ナッシ・シュナイダーマン・チャート:フローチャートに代わる設計手法」ACM SIGSOFT/BIGMETRICSソフトウェアおよびアシュアランス・ワークショップ議事録、1978年11月。