堅牢性と正確性の競争[終了]


17

要件の品質の段落の「コード完了2」を読んで、これを見つけました。

競合する属性間で許容できるトレードオフが指定されていますか(たとえば、堅牢性と正確性の間)。

(上記は要件の品質を確認するための大きなチェックボックスリストのポイントです)

そのため、ウェブや学術書などで、堅牢性と正確性に関する多くの定義を見つけました。

例:

「Object Oriented Software Construction、2nd Edition、Bertrand Meyer、Prentice-Hall、1997」の本:

  • 正しさ:システムの仕様、設計、および実装において[欠陥]がない程度。
  • 堅牢性:無効な入力またはストレスの多い環境条件が存在する場合にシステムが機能し続ける度合い。

それにもかかわらず、なぜこの2つが対立するのか、どのような状況にあるのかは明確ではありません。

私の質問は、なぜこれらの2つの属性が競合するのかということです。


11
異なる本は、これらの用語に異なる定義を与えます。(通常、普通のプログラマ向けに書かれた本は、学術出版物と同じ定義を使用しません。)おそらく、この本がそれらをどのように定義するかを見ることができます。(これらの用語は定義なしで本で使用されることがあります。)
rwong

「機能的に必要な入力に加えて」「あらゆる種類の予期しない入力を適切に処理する」以外の「堅牢な」定義を知りません。
カズ

質問を編集して、できる限り明確にすることで、再開できるようにしました。
克服者

回答:


36

これらの2つが競合する可能性がある多くの状況があります。たとえば、堅牢性には、高負荷下での復元力が含まれます。リクエストに対するおおよその(つまり、誤った)応答を正確な(正しい)応答よりもはるかに高速に計算できる場合、システムがおおよその結果を提供するか、または完全に失敗するかを知ることが重要です。


17

あなたが言ったように、これら2つは単なる例です。実際、この種の機能以外の要件はすべて、潜在的に相互に競合する可能性があります。「Building Evolutionary Architectures」という本には、約100のこれらの「-ilities」の表があります(これらはよく呼ばれます)。

ソフトウェアアーキテクトがこれらの2つの間の潜在的な競合を考慮することは、一種の演習です。基本的に、これらのどれがプロジェクトにとって重要であるかを決定し、これらの競合を追跡できます。

正確な例に戻りrobustness、Wikipedia の用語の定義を見てみましょう。

コンピューターサイエンスでは、堅牢性とは、コンピューターシステムが実行中のエラー[1] [2]に対処し、誤った入力に対処する能力です。

定義からわかるように、堅牢性にはエラーが伴います。一方、正確さを求めているのは、基本的にエラーがないことを意味します。

競合をより明確にするために、単純な入力フィールドを考えてみましょう。正確性の要件から、ユーザーが行った誤った入力を拒否するのが最も簡単です。ただし、堅牢性を確保するには、この入力を操作できる必要がありますが、これは完全に正しいとは限りません。

それをすべてあなたの本に持ち込むために:今、容認できるトレードオフは何ですか?ユーザーがマグニチュードを含む電圧量を入力できる科学アプリケーションを作成したとしましょう。したがって、正しい入力は「10 kV」または「200 mV」のようなものになります。許容可能なトレードオフには、「10kV」、「10kVolt」、または単に「10」などの入力を許可し、正確さのためにこれらを有効な電圧値にマップすることが含まれます。これは依然としてトレードオフであり、「両方の世界のベスト」なものではないことに注意してください。大文字と小文字を考慮してください。「10 kV」と「10 KV」は問題ないかもしれませんが、「10 mV」と「10 MV」は問題ないかもしれません。正確かどうかは、今はミリかメガか分からないため疑問になりますが、


5

実用的な例は、XHTMLHTMLです。

  • ブラウザ(厳密モード)は、構文エラーのあるXHTMLを拒否します。これにより、誤った結果がユーザーに表示されないようにし、エラーを見つけるのに役立ちます。
  • ブラウザは、非常に明らかな問題がある場合でも、HTMLコードの解析を継続しようとします。これにより、コンテンツが少し破損していても、ユーザーはページを表示できます。

したがって、XHTMLは正確さを目指し、HTMLは堅牢性を目指しています。現在、HTMLはより人気があるように見えますが、どちらの側にも良い議論があります。

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