ソフトウェアの一部を「ばか校正」するプロセスを説明するより良い方法は何ですか?


13

私にとって、イディオットプルーフとは、たとえユーザーが試してみたとしてもユーザーがソフトウェアを壊さないようにすることを意味します。たとえば、値がテキストボックスから読み取られてdoubleに変換された場合、基になるソフトウェアが馬鹿な証拠であれば、ユーザーがdouble以外の値を入力しても壊れません。

私は最近、開発スケジュールを書き上げましたが、その項目の1つに「Idiot proof UI」という名前が付けられました。私がこのソフトウェアを構築している人々は、この言葉に冗談を装って冗談を言いましたが、この言葉が実際に人々を怒らせる場所はわかります。

これを言うより良い方法は何ですか?


23
ID-10Tプルーフ
ジャロッド・ネトルズ

2
Lol、ID-10Tをグーグルで検索して1337を実現しました。私は...失敗
sooprise

13
この質問は、私のお気に入りの引用の1つを思い出させます。「今日のプログラミングは、より大きくてより良い馬鹿防止プログラムを構築しようと努力しているソフトウェアエンジニアと、より大きくてより良い馬鹿を生産しようとする宇宙との競争です。これまでのところ、宇宙は勝利しています。 」〜リッチ・クック
KallDrexx

3
基本的なエンジニアリングはどうですか?
jk。

4
「愚か者は非常に独創的であるため、誰も絶対確実にできません。」
M.Sameer

回答:


27

スケジュールアイテムとして「馬鹿なUI」を含める場合は、後でソフトウェアに品質を追加しようとしています。よく設計されたシステムは、入力を検証し、当然のことながらユーザーに明確なガイダンスを提供しますが、個別のアイテムとしてスケジュールに入れられるものではありません(避けられないクランチがヒットすると削除される可能性があります)。

あるいは、それが個別のアイテムでなければならない場合(一部の組織がスケジューリングについてどう考えているかを知っています)、「Idiot proof UI」を「Input Validation Library」に変更し、スケジュールの先頭に移動する必要があります。


2
+1。事実の後に何らかの入力検証を追加しようとしている場合、あなたはすでにほとんど失っています。「ソフトウェアは、無効な入力をどこでも適切に処理する必要があります」という仕様のスタンディングポイントとしてある方が良いでしょう。無効な入力をどのように「適切に」処理するかは、その特定の時点でソフトウェアが何をしているかに大きく依存します。非常に単純なUI(おそらくATM)の場合、無効な入力を不可能にすることさえ可能かもしれません。
秒のCVn

14
+1。白痴防止はタスクではありません。愚かさは良いデザインの結果です。
S.Lott

4
白痴防止は進行中のプロセスです-宇宙はますます複雑な馬鹿を製造し続けるため
スティーブンA.ロウ

間違って冗長に聞こえるかもしれませんが、インターフェース設計者とベータテスターの両方がソフトウェアの設計図と一般的な設計を知っていて、彼らにとって完全に明らかなものが実際にあることを認識しないかもしれないことを考慮してください一般的なユーザーを完全に困惑させます。「UI設計決定のテストとデバッグ」は、それを呼ぶことができるものです。入力検証は一つのことであり、ユーザーに何を入力すべきかを理解させることは別の場所です。
SF。

すべての支持者へ:...あなたが何をするにしても、あなたはいつも何かを忘れます。ソフトウェアは非常に複雑であるため、最初のショットですべてを「完璧」にするチームを持つことはほとんど不可能です。それがテストが必要な理由です。欠陥や脱落、あるいは誰も考えていないことを検出するため。このような「馬鹿なUI」はまさに必要なものです。
-dagnelies

10

ユーザー入力の検証は、専門用語だと思っていました。ただし、内部ドキュメントで使用されている場合、ばか校正に問題はありません。


3
「ユーザー入力の検証」で私がいました。白痴の校正は、それがどこで使用されているかに関係なく、専門外の用語です。
ロバートハーヴェイ

2
何をするにしても、書面にしないでください。
ジェフ

6

硬化は良い言葉です。誰かが尋ねるなら、ソフトウェアの最初のパスは通常理想的なシナリオのために書かれていることを伝え、スチールツールのように、ソフトウェアは実際の顧客による日々の大まかな使用に向けて「強化」する必要があります。

堅牢化はこれを表すもう1つの良い言葉です。実際の顧客が投げかけるような種類の課題に対してコードを堅牢にしています。

どちらの言葉もクールでインダストリアルに聞こえますが、ユーザーやプログラマーを責めることはありません。


ところで、ここにメトロワークスの古いマスコットであるアーノルドがいます。アーノルドは、以前はMacプログラマーが熱処理炉、鍛造、金床と小さなスレッジハンマーでコードを強化し、堅牢化するのを手伝っていました。


硬化とは一般に、基盤となるハードウェアの耐障害性、またはガンマ線に対する耐性を指します;-)堅牢性は多くのことを意味する場合があります
スティーブンA.ロウ

@スティーブン:ええ、はい。しかし、これはおそらく非技術的な聴衆であるものとのコミュニケーションのためであり、質問は本当にタスクを「スピン」する方法に関するものであるため、それらの人々に好まれます。
ボブマーフィー

それは理にかなっている; 技術に詳しくない視聴者は、おそらく「強化された」ラップトップのテレビ広告を見たことがあるでしょう。だから彼らはあなたのソフトウェアをコンクリートの上に3フィート落としてもいいと思うだろう;-)
スティーブンA.ロウ

@Steven:うん、そして彼らが最新の東芝ラップトップコマーシャルを見たなら、彼らはあなたがソフトウェアを強化する時間とリソースを与えなければ、ゾンビの黙示録をもたらすことにも気付くでしょう。B ^)
ボブマーフィー

4

防衛的プログラミング

私が教えられたものです。木から自分の小片を削る必要があったときに戻った。

PCになりたい場合は、「予測」プログラミングと呼びます。


4

私が学んでいたとき、私たちはそれを防弾と呼びました。

しかし、私が読んだ他のe曲表現のほとんども適用されます。



3

「ばか校正」は両方で構成される必要があります

  • ユーザーフレンドリーで、プログラマーが期待する方法でユーザーがデータを入力できるようにUIを設計します。

  • UIをテストして、予期しないデータ値を入力することでインターフェイスが破損する可能性があるかどうかを判断します。

両方の手順は、ユーザーエクスペリエンスの専門家によって設計が審査され、無効なデータが正しく処理されることを確認するために配信されたコードがテスターに​​よって審査される開発スケジュールに合理的に表示されます。


あなたが尋ねられた質問に答えなかった。
ロバートハーヴェイ

@ロバート-私はやったと思う。「ばか校正」と言うより良い方法は、「ばか校正」の意味に応じて、「デザインをレビューしてユーザーの使いやすさを改善する」または「インターフェイスが無効なデータを処理することをテストする」ことです。
ジャスティン洞窟

OK、それは理にかなっています。
ロバートハーヴェイ

2

白痴防止には、単純な入力検証以上のものが含まれます。私はその定義にそのようなことすら含めないでしょう。

入力検証は、ユーザーデータをサニタイズおよび検証して、違法/無意味な値を排除するプロセスです。これは、攻撃(たとえば、SQLインジェクション攻撃)から自分自身を保護するだけでなく、明白なものを排除するために、常にプログラムの外部からの情報を使用して実行する必要があります。

私は、ばか防止は、そうでなければ合法的な手段によってユーザーが誤って彼/彼女に大きな損害を与えないようにするためのロジックのセットであると考えます。

たとえばrm、コマンドを拒否してrm -rf /バリアントを閉じることは、検証や正確性とは関係ありません。これは完全に有効なコマンドです。残念ながら、これはUnix / Linuxのすべてのディスクからすべてのデータを消去することができるコマンドです。これを証明するばかは、このコマンドを拒否し、を提案するrm -rf --i-really-mean-this /か、対話モードの場合は、警告後にユーザーに肯定応答を入力させます。

システムを破壊するものはすべて、ばか防止されるべきです。恥ずかしさの原因となる可能性のあるものも候補となります(たとえば、「このテキストを本文に記載していても、添付ファイルなしでこのメールを送信しますか?」、「このメールを会社全体?」)

白痴防止とは、QA(最高の馬鹿になろうとする)と開発(これらのシナリオをすべて予測し、それらに基づいて設計する)の間のコラボレーションです。

よりわかりやすい同義語として、「破壊的なコードパス分析」または「重要な操作に対するユーザーフィードバックを有効にする」ことをお勧めします。それを何と呼んでも、設計プロセスのできるだけ早い段階で実際に開始する必要があります。


1

「健全性チェック」はかなり頻繁に機能する傾向があります...


3
私にとって、「健全性チェック」とは「アサート」とほぼ同じことを意味します。内部状態が正しいことを確認することです。実際には、外部入力検証とは異なります。
メイソンウィーラー

@Mason、私はそれが理にかなっている有効な入力のために、すべての点でシステムの状態をチェックすることだと思います。たとえば、ガベージ入力の確認などに加えて、終了日が開始日より後であることを確認するなど、私もあなたの視点を見て同意します。
マーロン


1

「エラー処理」または「入力検証」は、私があなたが説明するものに使用する他の用語です。防弾は、いくつかのサークルで使用されているのを見ることができる別の用語です。ここでのアイデアは、ほとんどすべてを処理するのに十分なソフトウェアを堅牢にすることです。岩石は別の俗語で、誰かがここでも使いたいと思うかもしれません。


1

「最悪のシナリオの校正」。なぜなら、開発者として、私たちは皆、それができればそれが行われることを知っているからです。そのため、ソフトウェアで最悪のシナリオの状況に対処する準備をする必要があります。

セキュリティ対策は、外部のサイバー侵入からユーザーを保護するだけでなく、自分自身からも保護する方法です。私たちは不完全なユーザーのいる不完全な世界に住んでいます。


1

金メッキは、エンドユーザーインターフェイスのエクスペリエンスを何らかの方法(GUIまたはその他)で改善することについて話すときに使用する丁寧な(非常に肯定的な響き)用語です。

あなたが言うように、白痴防止は、設計またはワークフローの改善とともに、そのプロセスの最大の部分です(エンドユーザーのフィードバック確認を考えてください)。

ここでの考え方は、その用語を作業環境で自由に使用でき、管理者とユーザーの両方にとって価値のあるプロセス(一度完了すると)と見なされるということです。

この(サイクルの終わりが多い)プロセスに関連する他の多くの用語は、このプロセスのように聞こえます:

  • ユーザー(多くの場合管理;-)が愚かであることを意味します
  • 達成するのは難しい
  • 純資産がほとんどない

金をプロセス(通常、「コスト」ではなく「価値」に相当する金属)に関連付けることで、一部のマネージャーの考え方でプロセスが費用から投資に変更されるのを見てきました。

これが行われるまで、その不格好な鋼片はまだ宝石ではないと公然と述べているようです。しかし、一度めっきされると、その価値はあります。


この用語が視聴者にとってどのように機能するかを理解しています。ほとんどのマネージャーにとって、金メッキはプロジェクトから最初にカットされるものです。言い換えれば、不要な部分。
ギルバートルブラン

奇数-「金メッキ」という用語は、機能的な改善をもたらさない何かをするのに時間を浪費していることを意味します。有効な入力などを保証することは機能的な改善を提供するため、(私の定義では)金メッキではありません。
ChrisF

詳細は、金メッキはソフトウェア内部を改善しないということです。それは外部の側面を改善するだけです。技術者以外が特に関与している場合は、サイクル終了プロセスの特定の部分に関係しないため、私はそれを使用します。人々は、金メッキが行われると、それが素敵で使いやすく、付加価値があると理解しています。それは単なるラフなソフトウェアではありません。
モリアッド

私の経験では、金メッキは通常、不必要な機能を搭載したソフトウェア、つまりブロートウェアの同義語として使用されます。
マークブース

ええ、ちょっと調べてみたところ、この用語は文学で時々使われていることがわかりました(コメントありがとう)。おもしろいことは、私が働いた多くの場所で、この意味でばか校正が金メッキと考えられていたことです(あなたが推測する仕事の種類に本当に依存します)。
モリアッド

1

ほとんどの場合、製造プロセスに関連して使用しますが、私は本当に良いフィットはポカヨケだと思います:

「[poka yo-ke]は日本語の用語で、「フェールセーフィング」または「間違い防止」を意味します

元々はバカヨークと呼ばれていましたが、これは「フールプルーフ」(または「バカプルーフ」)を意味するため、名前はよりマイルドなポカヨークに変更されました。

より広義には、この用語は、ユーザーによる誤った操作を防ぐために製品に組み込まれた行動形成制約を指すことができます。」


1

大きなショップでよく使われる用語は、品質保証(QA)です。です。

その一般的で曖昧な用語は、リリースサイクル内で独自の特定の意味に合わせて成形できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.