概要
プログラムやシステムの設計構築において”エラーやミスがあることを前提とする思想”と何という?
詳細
教えてください。
単体プログラムなどのごく小規模のプログラムコーディングや開発の場合はたいして気にすることは
ありませんが、結合プログラム以上のシステム構築する場合において
「前関数から引き渡された引数が間違っているはずがない。いちいちデータ型や内容をチェックする必要はない」
「データ位置はメモリのXXXX番地から始まっている。そこには必ずデータがあるはずであり、
データが無いなんてことはありえない。ましてやこのプログラム実行時に
”そのメモリ番地にアクセス権限が与えられていない”
などということは絶対にありえない」
などと過信してプログラムを動かすと、必ず”痛い目”に遭います。
そのためにどうするかというと、慎重なプログラマ、SEならば、
前関数から渡された引数は、必ず正しい型であるか? 正しい内容か? 必要なだけ引数が揃っているか?
処理すべきデータは必ず存在しているか? データが無い、或いは処理すべき以上のデータがある、といった
異常は発生していないか?
詰まるところ、このままこのプログラムを動作させても大丈夫か?
といった、
「前処理までの結果を過信せず、正常動作する保証は今現在動かすプログラム自身に行わせる」
当然
「次の関数や次の処理に動作を引き渡す場合も、必ず正しい状態で権限を引き渡す」
という慎重さをもった設計思想で構築します。
そして当然ながらそれらプログラム動作に必要な条件がそろわない場合は、
「プログラム動作させずにエラー表示して停止させる」
「正常の処理可能なところまでは動作させるが、エラーデータは処理せずに飛ばす、
あるいは処理停止する」
などの対策をします。
間違っても
「プログラムは正しく動作させましたが、データが間違っているから予期しない結果が起きました。
悪いのはデータであって、プログラムではありません」
といった終了のさせ方はしません。
(ま、それでも不具合が出るときは出ますが)
このような
「前の処理は過信しない。
動作開始前にデータの信頼性やハードソフト、その他、
”プログラム動作に必要な前提条件は満たされているか?”
を必ずチェックしてからプログラムを実行させる」
というような設計思想、構築思想の事を、何というでしょうか?
情報処理試験の初歩的問題とかで出てきそうな内容なんですが、忘れました。
あと、この質問、おそらく
「それってフェイルセーフでしょ?」
「デッドマン問題の事?」
と言われそうですが、
フェイルセーフやデッドマンはどちらかというとパッシブな対応策(人間が操作ミス、入力ミスを犯してから初めて発動する)
であり、私が問うているのはどちらかというとアクティブな対応策なんで、フェイルセーフはちょっと違うんじゃないかな?
と思うんですが、どうでしょうか?
No.1ベストアンサー
- 回答日時:
設計概念としては「フェイルセーフ」で良いのでは無いでしょうか。
PDFファイルでこういった情報があるようです。
フールプルーフとフェイルセイフ
http://pub.maruzen.co.jp/index/kokai/oyoshinri/5 …
>「前関数から引き渡された引数が間違っているはずがない。いちいちデータ型や内容をチェックする必要はない」
これはコンパイル段階での型チェックですかね。
>「前処理までの結果を過信せず、正常動作する保証は今現在動かすプログラム自身に行わせる」
オブジェクト指向プログラミングで対応可能な話の様です。
メソッドを呼び出すときに与えた引数が適切かどうかを判断させる機能を中に実装する技術がある。
早速のご回答ありがとうございます。
ご提示のPDFを見てみましたが、私が求めているのはどちらかというとフールプルーフのようですね。ただし、ご提示のPDFでの記載には「人間は間違いを起こすもの、という前提に基づいての未然防止策」という事ですが、私が問うているのは人間によるIOは関わらない部分での話です。
「人間は間違いを起こすもの、という前提に基づいての未然防止策」というより
「プログラムは間違いを起こすもの、という前提に基づいての未然防止策」
です。まあ、そのプログラムを作るのも人間ですけどね。
ご回答ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- IT・エンジニアリング 不具合の現状認識をしないプログラマって信用できる人? できない人? 8 2023/07/28 09:09
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- Windows 10 数年前からWindows10 の Update ができないです。なぜですか? 7 2022/11/09 06:03
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて 重複したものがあれば行を削除するとい 1 2023/02/27 18:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
C言語(gcc), Linux, FTPプログ...
-
ソースコード改造 msペイント
-
クリップボードを排他的に利用...
-
きれいなコード vba vbaを勉強...
-
プログラミングのコード量に関...
-
メインプログラム、サブプログ...
-
他人が作ったプログラムのメン...
-
VBAにてメール作成した際、一部...
-
65536は2の何乗なのでしょうか?
-
0除算して、落ちるプログラムと...
-
PICマイコンのコピー(クローン...
-
正しい五十音順について
-
「Outlookが他のプログラムによ...
-
Excelで4096点以上のFFTの方法
-
【JAVA】数字をひし形に出力す...
-
あるプログラムのコマンドライ...
-
C♯で電卓を作成しています。演...
-
C++でアボート(Abort)で処理が...
-
VBAでユーザーフォームが自動的...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
C言語(gcc), Linux, FTPプログ...
-
空elseの有無
-
COBOLのCALL文がいまいちつかめ...
-
プログラミングのコード量に関...
-
VBからシャットダウンさせる方法
-
他人が作ったプログラムのメン...
-
プログラム動作時のCPU処理時間...
-
変数・オブジェクト名に漢字使用
-
C++ソースからUMLの設計書を作...
-
プログラミングの読み方、書き...
-
きれいなコード vba vbaを勉強...
-
ソースコード改造 msペイント
-
CからJavaの呼び出し
-
BIOSってどんなCPUで処理してる...
-
「ルーチン」という言葉の意味
-
MFC,C++/CLI,C#の共存
-
ActiveXコントロールの作成(V...
-
テキストの折り返し処理について
-
(各種言語)自作関数化の基準...
おすすめ情報