2014-01-29 61 views
3

首先一些術語(從here借用,第14頁):安定性和系統完整性

程序是一個錯誤的程序。

A negative程序是一個沒有錯誤的程序。


因此有四種類型programms的的:

一個積極的計劃,分析爲陽性 - >真陽性(TP)。

一個積極的方案,分析爲陰性 - >假陰性(FN)。

一個陰性程序,分析爲陽性 - >假陽性(FP)。

一個陰性程序,分析爲陰性 - >真陰性(TN)。


系統是聲音,如果它從不接受積極的節目。

系統是完成,如果它從不拒絕否定程序。


因此,通過我上面寫的判斷:

A complete system accepts FN and TN programms. 
A sound system also accepts FN and TN programms. 

一位同事告訴我,音響系統也接受FP programms的。有人可以證實這一點並解釋他們爲什麼這樣做?

回答

7

這本書解釋這樣的:

堅固性防止漏報和完整性防止誤報。

因此,爲了使該系統能聲音,它不需要防止誤報,但只有假陰性。爲防止誤報,必須完成

該書通過使用類型系統爲例進一步解釋它:

在現代語言,類型系統是聲音(他們阻止他們所聲稱的身份),但不完整(他們 拒絕他們不需要拒絕的程序)。健全性非常重要,因爲它可以讓語言用戶和語言實現者依靠X永遠不會發生。完整性會很好,但希望在實踐中很少見到一個程序被不必要地拒絕,並且在這種情況下,希望程序員可以很容易地修改程序,以便進行類型檢查。

類型系統不是幾乎所有的東西你可能會喜歡靜態檢查,因爲完成,這是不可能 實現在你的語言給出任何程序的靜態檢查(一)始終終止,(b)是聲音, 和(c)已完成。由於我們不得不放棄一個,所以(c)似乎是最好的選擇(程序員不喜歡 編譯器可能不會終止)。

2

假設房主設置了警報系統來檢測盜賊。由於其他原因而非非法入侵而不喜歡虛驚的業主會使系統不那麼敏感,在這種情況下,當鬧鐘響起時,意味着「鬧鐘意味着有入侵者」,並且有可能檢測不到有技巧的盜賊。謹慎和謹慎的主人可以忍受虛驚,但從不想入侵可能會使系統更敏感。在這種情況下,「不報警意味着沒有入侵」。

第一個系統從不接受誤報(本例中的誤報)稱爲聲音系統,這意味着沒有類型1錯誤。第二個系統從來不會錯過入侵,換句話說,從不接受錯誤的否定,稱爲完整系統,這意味着沒有類型2錯誤。可靠性並不能保證完整性,反之亦然。憑藉完美的報警系統靈敏度,不會發生虛假警報,也不會錯過侵入,從而使系統完整無缺。

此頁(http://ubccpsc311.blogspot.jp/2010/11/7-ways-to-approach-soundness-and.html)給出了關於健全性和完整性的七個觀點。另請參閱Soundness and Completeness of a algorithm,其中說明完整的算法總是在聲音算法從不給出錯誤答案(從不返回錯誤結果)時找到答案。這https://softwareengineering.stackexchange.com/questions/140705/what-does-it-mean-to-say-an-algorithm-is-sound-and-complete也可能有所幫助。

An Integrated approach to software engineering的內容顯示了有關靜態分析儀示例的另一個角度。

enter image description here

在這本書中,soundness captures the occurrence of false positives,換句話說,擁有完善的音響系統,沒有錯誤報告時,他們實際上是警告:less soundness implies more false positives。我認爲作者的評論可能是一個錯字,它應該寫成「健全防止誤報......」。可能,在作者的領域中,健全的含義並非通常使用,但我不確定。

瞭解這些定義的一個好方法是,健全性可以防止假陰性和完整性,防止誤報。

而且,我認爲,OP的評論也讓人眼花繚亂:

A system is sound, if it never accepts a positive program. 
A system is complete, if it never rejects a negative program. 

更好的/正確的描述可能是

A system is sound, if it never accepts a false positive program. 
A system is complete, if it never accepts a false negative program.