मजबूती (कंप्यूटर विज्ञान): Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Ability of a computer system to cope with errors during execution}} | {{short description|Ability of a computer system to cope with errors during execution}} | ||
{{see also| | {{see also|दोष-सहिष्णु कंप्यूटर प्रणाली}} | ||
{{Complex systems}} | {{Complex systems}} | ||
[[कंप्यूटर विज्ञान]] में, | [[कंप्यूटर विज्ञान]] में, दृढ़ता [[निष्पादन (कंप्यूटिंग)]] के समय [[त्रुटि संदेश]] से समाप्त करने के लिए कंप्यूटर सिस्टम की क्षमता होती है<ref>{{cite web|url=http://dl.ifip.org/db/conf/pts/testcom2005/FernandezMP05.pdf |title=मजबूती परीक्षण के लिए एक मॉडल-आधारित दृष्टिकोण|website=Dl.ifip.org |access-date=2016-11-13}}</ref><ref name="IEEE">1990. IEEE Standard Glossary of Software Engineering Terminology, IEEE Std 610.12-1990 defines robustness as "The degree to which a system or component can function correctly in the presence of invalid inputs or stressful environmental conditions"</ref> और ग़लत इनपुट को समाप्त कर सकते है ।<ref name="IEEE"/> और दृढ़ता कंप्यूटर विज्ञान के कई क्षेत्रों को सम्मिलित कर सकती है, जैसे [[रक्षात्मक प्रोग्रामिंग]], [[ओवरफिटिंग]] और [[मजबूत सुरक्षा नेटवर्क|दृढ़ता सुरक्षा नेटवर्क]] आदि सम्मिलित है । और औपचारिक विधि , जैसे [[फ़ज़ परीक्षण]], दृढ़ता दिखाने के लिए आवश्यक होती हैं क्योंकि इस प्रकार के परीक्षण में अमान्य या अप्रत्याशित इनपुट सम्मिलित होते हैं। वैकल्पिक रूप से, दृढ़ता का परीक्षण करने के लिए [[ दोष इंजेक्शन |दोष इंजेक्शन]] का उपयोग किया जा सकता है। विभिन्न वाणिज्यिक उत्पाद सॉफ़्टवेयर विश्लेषण की दृढ़ता का परीक्षण करते हैं।<ref>{{cite journal|url=http://www.stanford.edu/~bakerjw/Publications/Baker%20et%20al%20(2008)%20Robustness,%20Structural%20Safety.pdf |title= मजबूती के आकलन पर|access-date=2016-11-13|doi=10.1016/j.strusafe.2006.11.004|volume=30|year=2008|journal=Structural Safety|pages=253–267 | last1 = Baker | first1 = Jack W. | last2 = Schubert | first2 = Matthias | last3 = Faber | first3 = Michael H.|issue= 3}}</ref> | ||
== परिचय == | == परिचय == | ||
सामान्यतः , संभावित विफलता के हर बिंदु को सम्मिलित करने वाली दृढ़ता प्रणालियों का निर्माण करना कठिन होता है क्योंकि संभावित इनपुट और इनपुट संयोजनों की विशाल मात्रा होती है।<ref name="MIT">{{cite web|url=http://groups.csail.mit.edu/mac/users/gjs/6.945/readings/robust-systems.pdf |title=मजबूत प्रणालियों का निर्माण एक निबंध|author=Gerald Jay Sussman |date=January 13, 2007 |website=Groups.csail.mit.edu |access-date=2016-11-13}}</ref> चूंकि सभी इनपुट और इनपुट संयोजनों को परीक्षण करने के लिए बहुत अधिक समय की आवश्यकता होगी, इसलिए डेवलपर्स सभी विषय को विस्तृत रूप से नहीं चला सकते हैं। इसके अतिरिक्त , डेवलपर ऐसे विषय को सामान्य बनाने का प्रयास करता है ।<ref>{{cite web|last=Joseph |first=Joby |url=http://www.softwaretestingclub.com/profiles/blogs/importance-of-making |title=सामान्यीकृत टेस्टकेस बनाने का महत्व - सॉफ्टवेयर परीक्षण क्लब - एक ऑनलाइन सॉफ्टवेयर परीक्षण समुदाय|publisher=Software Testing Club |date=2009-09-21 |access-date=2016-11-13}}</ref> उदाहरण के लिए, कुछ [[पूर्णांक (कंप्यूटर विज्ञान)]] इनपुट करने की कल्पना करते है । कुछ चयनित इनपुट में ऋणात्मक संख्या, शून्य और धनात्मक संख्या सम्मिलित हो सकती है। इस प्रकार से सॉफ़्टवेयर का परीक्षण करने के लिए इन नंबरों का उपयोग करते समय, डेवलपर सभी वास्तविकताओं के सेट को तीन नंबरों में सामान्यीकृत करता है। यह अधिक कुशल और प्रबंधनीय विधि है, किन्तु विफलता की अधिक संभावना होती है। परीक्षण विषय को सामान्य बनाना विफलता से समाप्त के लिए सिर्फ विधियों का उदाहरण है - विशेष रूप से, अमान्य उपयोगकर्ता इनपुट के कारण विफल होते है । इस प्रकार से सिस्टम सामान्यतः अन्य कारणों से भी विफल हो सकते हैं, जैसे नेटवर्क से डिस्कनेक्ट होते है । | |||
चूँकि , जटिल प्रणालियों को अभी भी सामने आने वाली किसी भी त्रुटि को शालीनता से संभालना चाहिए। इसी तरह की सफल प्रणालियों के कई उदाहरण सम्मिलित किये गये हैं। कुछ सबसे दृढ़ता प्रणालियाँ विकसित की जा सकती हैं और इन्हें सरलता से नई परिस्थितियों में अनुकूलित किया जा सकता है।<ref name="MIT" /> | |||
== चुनौतियाँ == | == चुनौतियाँ == | ||
प्रोग्राम और सॉफ़्टवेयर बहुत ही विशिष्ट कार्य पर केंद्रित उपकरण हैं, और इस प्रकार सामान्यीकृत और लचीले नहीं होते हैं।<ref name="MIT" /> | प्रोग्राम और सॉफ़्टवेयर बहुत ही विशिष्ट कार्य पर केंद्रित उपकरण होते हैं, और इस प्रकार सामान्यीकृत और लचीले नहीं होते हैं।<ref name="MIT" /> चूँकि , [[इंटरनेट]] या जैविक प्रणालियों जैसी प्रणालियों में अवलोकन उनके वातावरण के प्रति अनुकूलन को प्रदर्शित करते हैं। जैविक प्रणालियों को पर्यावरण के अनुकूल बनाने का विधि अतिरेक का उपयोग है।<ref name="MIT" /> मनुष्य में कई अंग अनावश्यक होते हैं। [[किडनी]] इसका मुख्य उदाहरण है। मनुष्य को सामान्यतः केवल किडनी की आवश्यकता होती है, किन्तु दूसरी किडनी होने से विफलता का स्थान बना रहता है। सॉफ़्टवेयर पर प्रयुक्त करने के लिए इसी सिद्धांत को अपनाया जा सकता है, किन्तु कुछ चुनौतियाँ इस प्रकार हैं। | ||
वर्तमान में, कंप्यूटर विज्ञान पद्धतियाँ | कंप्यूटर विज्ञान में अतिरेक के सिद्धांत को प्रयुक्त करते समय आँख बंद करके कोड जोड़ने का सुझाव नहीं दिया जाता है। आँख बंद करके कोड जोड़ने से अधिक त्रुटियाँ उत्पन्न होती हैं, सिस्टम अधिक जटिल हो जाता है, और इसे समझना कठिन हो जाता है।<ref>{{cite web|url=http://www.cse.sc.edu/~huhns/journalpapers/V6N2.pdf |title=मजबूत प्रणालियों का निर्माण एक निबंध|author=Agents on the wEb : Robust Software |website=Cse.sc.edu |access-date=2016-11-13}}</ref> वह कोड जो पहले से उपस्तिथ कोड को कोई सुदृढीकरण प्रदान नहीं करता वह अवांछित होते है। इसके अतिरिक्त नए कोड में समतुल्य [[फ़ंक्शन (इंजीनियरिंग)]] होना चाहिए, जिससे यदि कोई फ़ंक्शन टूट जाए, तो वही फ़ंक्शन प्रदान करने वाला दूसरा मैन्युअल या स्वचालित सॉफ़्टवेयर विविधता का उपयोग करके इसे प्रतिस्थापित कर सके। ऐसा करने के लिए, नए कोड को पता होना चाहिए कि विफलता बिंदु को कैसे और कब समायोजित किया जाए।<ref name="MIT" /> इसका मतलब यह है कि सिस्टम में और अधिक [[तर्क]] जोड़ने की अनिवार्यता है। किन्तु जैसे-जैसे कोई सिस्टम अधिक तर्क, सॉफ़्टवेयर घटक या सॉफ़्टवेयर घटक जोड़ता है, और आकार में बढ़ता है, यह और अधिक जटिल हो जाता है। इस प्रकार, अधिक अनावश्यक प्रणाली बनाते समय, सिस्टम भी अधिक जटिल हो जाता है और डेवलपर्स को जटिलता के साथ अतिरेक को संतुलित करने पर विचार करना चाहिए। | ||
वर्तमान में, कंप्यूटर विज्ञान पद्धतियाँ दृढ़ता सिस्टम बनाने पर ध्यान केंद्रित नहीं करती हैं।<ref name="MIT" /> किन्तु , वे [[ scalability |स्केलेबिलिटी]] और [[एल्गोरिथम दक्षता]] पर ध्यान केंद्रित करते हैं। वर्तमान समय में दृढ़ता पर ध्यान न देने का मुख्य कारण यह है कि इसे सामान्य विधि से करना कठिन है।<ref name="MIT" /> | |||
== क्षेत्र == | == क्षेत्र == | ||
=== | === दृढ़ता प्रोग्रामिंग === | ||
रोबस्ट प्रोग्रामिंग प्रोग्रामिंग की शैली है जो अप्रत्याशित समाप्ति और अप्रत्याशित कार्यों को संभालने पर केंद्रित है।<ref name="robust_programming">{{cite web|url=http://nob.cs.ucdavis.edu/bishop/secprog/robust.html |title=मजबूत प्रोग्रामिंग|website=Nob.cs.ucdavis.edu |access-date=2016-11-13}}</ref> सटीक और स्पष्ट त्रुटि संदेशों को प्रदर्शित करके इन समाप्ति और कार्यों को | रोबस्ट प्रोग्रामिंग प्रोग्रामिंग की शैली है जो अप्रत्याशित समाप्ति और अप्रत्याशित कार्यों को संभालने पर केंद्रित की जाती है।<ref name="robust_programming">{{cite web|url=http://nob.cs.ucdavis.edu/bishop/secprog/robust.html |title=मजबूत प्रोग्रामिंग|website=Nob.cs.ucdavis.edu |access-date=2016-11-13}}</ref> इस प्रकार से सटीक और स्पष्ट त्रुटि संदेशों को प्रदर्शित करके इन समाप्ति और कार्यों को विलासपूर्ण ढंग से संभालने के लिए कोड की आवश्यकता होती है। ये त्रुटि संदेश उपयोगकर्ता को प्रोग्राम को अधिक सरलता से डीबग करने की अनुमति देते हैं। | ||
==== सिद्धांत ==== | ==== सिद्धांत ==== | ||
;व्यामोह: सॉफ़्टवेयर बनाते समय, प्रोग्रामर यह मान लेता है कि उपयोगकर्ता उनके कोड को तोड़ना चाहते हैं।<ref name="robust_programming" />प्रोग्रामर यह भी मानता है कि उनका स्वयं का लिखित कोड विफल हो सकता है या गलत | ;व्यामोह: इस प्रकार से सॉफ़्टवेयर बनाते समय, प्रोग्रामर यह मान लेता है कि उपयोगकर्ता उनके कोड को तोड़ना चाहते हैं।<ref name="robust_programming" /> और प्रोग्रामर यह भी मानता है कि उनका स्वयं का लिखित कोड विफल हो सकता है या गलत विधि से काम कर सकता है।<ref name="robust_programming" /> | ||
; | ;अज्ञानता : प्रोग्रामर मानता है कि उपयोगकर्ता गलत, परिहास और विकृत इनपुट की परीक्षा लेना है ।<ref name="robust_programming" /> और परिणाम स्वरूप, प्रोग्रामर उपयोगकर्ता को स्पष्ट, सहज त्रुटि संदेश लौटाता है जिसके लिए त्रुटि कोड देखने की आवश्यकता नहीं होती है। त्रुटि संदेश को उपयोगकर्ता को गुमराह किए बिना यथासंभव सटीक होने का प्रयास करना चाहिए, जिससे समस्या को सरलता से ठीक किया जा सके। | ||
;खतरनाक उपकरण: उपयोगकर्ताओं को [[लाइब्रेरी (कंप्यूटिंग)]], [[डेटा संरचना]]ओं, या [[पॉइंटर (कंप्यूटर प्रोग्रामिंग)]] से डेटा संरचनाओं तक पहुंच प्राप्त नहीं करनी चाहिए।<ref name="robust_programming" />यह जानकारी उपयोगकर्ता से छिपाई जानी चाहिए | ;खतरनाक उपकरण: उपयोगकर्ताओं को [[लाइब्रेरी (कंप्यूटिंग)]], [[डेटा संरचना]]ओं, या [[पॉइंटर (कंप्यूटर प्रोग्रामिंग)]] से डेटा संरचनाओं तक पहुंच प्राप्त नहीं करनी चाहिए।<ref name="robust_programming" />यह जानकारी उपयोगकर्ता से छिपाई जानी चाहिए जिससे उपयोगकर्ता गलती से उन्हें संशोधित न कर दे और कोड में कोई बग न डाल दे। जब ऐसे [[इंटरफ़ेस (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)]] को सही ढंग से बनाया जाता है, तो उपयोगकर्ता इंटरफ़ेस को संशोधित करने के लिए कमियां ढूंढे बिना उनका उपयोग करते हैं। इंटरफ़ेस पहले से ही सही ढंग से प्रयुक्त किया जाना चाहिए, जिससे उपयोगकर्ता को संशोधन करने की आवश्यकता न हो। इसलिए उपयोगकर्ता केवल अपने कोड पर ध्यान केंद्रित करता है। | ||
;दावा (सॉफ़्टवेयर विकास)|ऐसा नहीं हो सकता: बहुत बार, कोड को संशोधित किया जाता है और असंभव मामला घटित होने की संभावना उत्पन्न हो सकती है। इसलिए असंभव | ;दावा (सॉफ़्टवेयर विकास)|ऐसा नहीं हो सकता: बहुत बार, कोड को संशोधित किया जाता है और असंभव मामला घटित होने की संभावना उत्पन्न हो सकती है। इसलिए असंभव विषय को अत्यधिक असंभावित माना जाता है।<ref name="robust_programming" />डेवलपर इस बारे में सोचता है कि उस मामले को कैसे संभालना है जो बेहद असंभावित है, और तदनुसार हैंडलिंग प्रयुक्त करता है। | ||
=== | ===दृढ़ता मशीन लर्निंग=== | ||
दृढ़ता मशीन लर्निंग आमतौर पर मशीन लर्निंग एल्गोरिदम की दृढ़ता को संदर्भित करता है। मशीन लर्निंग एल्गोरिदम को दृढ़ता माने जाने के लिए, या तो परीक्षण त्रुटि को प्रशिक्षण त्रुटि के अनुरूप होना चाहिए, या डेटासेट में कुछ शोर जोड़ने के बाद प्रदर्शन स्थिर होना चाहिए।<ref>{{cite web |author=El Sayed Mahmoud|title=What is the definition of the robustness of a machine learning algorithm? |url=https://www.researchgate.net/post/What_is_the_definition_of_the_robustness_of_a_machine_learning_algorithm |access-date=2016-11-13}}</ref> हाल ही में, उनकी लोकप्रियता में लगातार वृद्धि के साथ, तंत्रिका नेटवर्क की दृढ़ता में रुचि बढ़ रही है। यह विशेष रूप से प्रतिकूल हमलों के प्रति उनकी संवेदनशीलता के कारण है।<ref>{{cite arXiv |last1=Li |first1=Linyi |last2=Xie |first2=Tao |last3=Li |first3=Bo |title=SoK: Certified Robustness for Deep Neural Networks |eprint=2009.04131 |date=9 September 2022|class=cs.LG }}</ref> | |||
=== | ===दृढ़ता नेटवर्क डिज़ाइन=== | ||
दृढ़ता नेटवर्क डिज़ाइन परिवर्तनशील या अनिश्चित माँगों की स्थिति में नेटवर्क डिज़ाइन का अध्ययन है।<ref>{{cite web|url=http://www-math.mit.edu/~olver/thesis.pdf |title=मजबूत नेटवर्क डिज़ाइन|website=Math.mit.edu |access-date=2016-11-13}}</ref> अर्थ में, परिवर्तन या इनपुट की विशाल संभावनाओं के कारण नेटवर्क डिज़ाइन में दृढ़ता सॉफ्टवेयर डिज़ाइन में दृढ़ता की तरह ही व्यापक है। | |||
=== | === दृढ़ता एल्गोरिदम === | ||
ऐसे एल्गोरिदम | ऐसे एल्गोरिदम उपस्तिथ हैं जो इनपुट में त्रुटियों को सहन करते हैं।<ref>{{cite book |last1=Carbin |first1=Michael |title=Proceedings of the 19th international symposium on Software testing and analysis - ISSTA '10 |last2=Rinard |first2=Martin C. |chapter=Automatically identifying critical input regions and code in applications |date=12 July 2010 |pages=37–48 |doi=10.1145/1831708.1831713 |publisher=ACM |isbn=9781605588230 |s2cid=1147058 |chapter-url=http://people.csail.mit.edu/rinard/paper/issta10.pdf}}</ref> | ||
==यह भी देखें== | ==यह भी देखें== | ||
* रक्षात्मक प्रोग्रामिंग | * रक्षात्मक प्रोग्रामिंग |
Revision as of 19:29, 3 July 2023
Complex systems |
---|
Topics |
कंप्यूटर विज्ञान में, दृढ़ता निष्पादन (कंप्यूटिंग) के समय त्रुटि संदेश से समाप्त करने के लिए कंप्यूटर सिस्टम की क्षमता होती है[1][2] और ग़लत इनपुट को समाप्त कर सकते है ।[2] और दृढ़ता कंप्यूटर विज्ञान के कई क्षेत्रों को सम्मिलित कर सकती है, जैसे रक्षात्मक प्रोग्रामिंग, ओवरफिटिंग और दृढ़ता सुरक्षा नेटवर्क आदि सम्मिलित है । और औपचारिक विधि , जैसे फ़ज़ परीक्षण, दृढ़ता दिखाने के लिए आवश्यक होती हैं क्योंकि इस प्रकार के परीक्षण में अमान्य या अप्रत्याशित इनपुट सम्मिलित होते हैं। वैकल्पिक रूप से, दृढ़ता का परीक्षण करने के लिए दोष इंजेक्शन का उपयोग किया जा सकता है। विभिन्न वाणिज्यिक उत्पाद सॉफ़्टवेयर विश्लेषण की दृढ़ता का परीक्षण करते हैं।[3]
परिचय
सामान्यतः , संभावित विफलता के हर बिंदु को सम्मिलित करने वाली दृढ़ता प्रणालियों का निर्माण करना कठिन होता है क्योंकि संभावित इनपुट और इनपुट संयोजनों की विशाल मात्रा होती है।[4] चूंकि सभी इनपुट और इनपुट संयोजनों को परीक्षण करने के लिए बहुत अधिक समय की आवश्यकता होगी, इसलिए डेवलपर्स सभी विषय को विस्तृत रूप से नहीं चला सकते हैं। इसके अतिरिक्त , डेवलपर ऐसे विषय को सामान्य बनाने का प्रयास करता है ।[5] उदाहरण के लिए, कुछ पूर्णांक (कंप्यूटर विज्ञान) इनपुट करने की कल्पना करते है । कुछ चयनित इनपुट में ऋणात्मक संख्या, शून्य और धनात्मक संख्या सम्मिलित हो सकती है। इस प्रकार से सॉफ़्टवेयर का परीक्षण करने के लिए इन नंबरों का उपयोग करते समय, डेवलपर सभी वास्तविकताओं के सेट को तीन नंबरों में सामान्यीकृत करता है। यह अधिक कुशल और प्रबंधनीय विधि है, किन्तु विफलता की अधिक संभावना होती है। परीक्षण विषय को सामान्य बनाना विफलता से समाप्त के लिए सिर्फ विधियों का उदाहरण है - विशेष रूप से, अमान्य उपयोगकर्ता इनपुट के कारण विफल होते है । इस प्रकार से सिस्टम सामान्यतः अन्य कारणों से भी विफल हो सकते हैं, जैसे नेटवर्क से डिस्कनेक्ट होते है ।
चूँकि , जटिल प्रणालियों को अभी भी सामने आने वाली किसी भी त्रुटि को शालीनता से संभालना चाहिए। इसी तरह की सफल प्रणालियों के कई उदाहरण सम्मिलित किये गये हैं। कुछ सबसे दृढ़ता प्रणालियाँ विकसित की जा सकती हैं और इन्हें सरलता से नई परिस्थितियों में अनुकूलित किया जा सकता है।[4]
चुनौतियाँ
प्रोग्राम और सॉफ़्टवेयर बहुत ही विशिष्ट कार्य पर केंद्रित उपकरण होते हैं, और इस प्रकार सामान्यीकृत और लचीले नहीं होते हैं।[4] चूँकि , इंटरनेट या जैविक प्रणालियों जैसी प्रणालियों में अवलोकन उनके वातावरण के प्रति अनुकूलन को प्रदर्शित करते हैं। जैविक प्रणालियों को पर्यावरण के अनुकूल बनाने का विधि अतिरेक का उपयोग है।[4] मनुष्य में कई अंग अनावश्यक होते हैं। किडनी इसका मुख्य उदाहरण है। मनुष्य को सामान्यतः केवल किडनी की आवश्यकता होती है, किन्तु दूसरी किडनी होने से विफलता का स्थान बना रहता है। सॉफ़्टवेयर पर प्रयुक्त करने के लिए इसी सिद्धांत को अपनाया जा सकता है, किन्तु कुछ चुनौतियाँ इस प्रकार हैं।
कंप्यूटर विज्ञान में अतिरेक के सिद्धांत को प्रयुक्त करते समय आँख बंद करके कोड जोड़ने का सुझाव नहीं दिया जाता है। आँख बंद करके कोड जोड़ने से अधिक त्रुटियाँ उत्पन्न होती हैं, सिस्टम अधिक जटिल हो जाता है, और इसे समझना कठिन हो जाता है।[6] वह कोड जो पहले से उपस्तिथ कोड को कोई सुदृढीकरण प्रदान नहीं करता वह अवांछित होते है। इसके अतिरिक्त नए कोड में समतुल्य फ़ंक्शन (इंजीनियरिंग) होना चाहिए, जिससे यदि कोई फ़ंक्शन टूट जाए, तो वही फ़ंक्शन प्रदान करने वाला दूसरा मैन्युअल या स्वचालित सॉफ़्टवेयर विविधता का उपयोग करके इसे प्रतिस्थापित कर सके। ऐसा करने के लिए, नए कोड को पता होना चाहिए कि विफलता बिंदु को कैसे और कब समायोजित किया जाए।[4] इसका मतलब यह है कि सिस्टम में और अधिक तर्क जोड़ने की अनिवार्यता है। किन्तु जैसे-जैसे कोई सिस्टम अधिक तर्क, सॉफ़्टवेयर घटक या सॉफ़्टवेयर घटक जोड़ता है, और आकार में बढ़ता है, यह और अधिक जटिल हो जाता है। इस प्रकार, अधिक अनावश्यक प्रणाली बनाते समय, सिस्टम भी अधिक जटिल हो जाता है और डेवलपर्स को जटिलता के साथ अतिरेक को संतुलित करने पर विचार करना चाहिए।
वर्तमान में, कंप्यूटर विज्ञान पद्धतियाँ दृढ़ता सिस्टम बनाने पर ध्यान केंद्रित नहीं करती हैं।[4] किन्तु , वे स्केलेबिलिटी और एल्गोरिथम दक्षता पर ध्यान केंद्रित करते हैं। वर्तमान समय में दृढ़ता पर ध्यान न देने का मुख्य कारण यह है कि इसे सामान्य विधि से करना कठिन है।[4]
क्षेत्र
दृढ़ता प्रोग्रामिंग
रोबस्ट प्रोग्रामिंग प्रोग्रामिंग की शैली है जो अप्रत्याशित समाप्ति और अप्रत्याशित कार्यों को संभालने पर केंद्रित की जाती है।[7] इस प्रकार से सटीक और स्पष्ट त्रुटि संदेशों को प्रदर्शित करके इन समाप्ति और कार्यों को विलासपूर्ण ढंग से संभालने के लिए कोड की आवश्यकता होती है। ये त्रुटि संदेश उपयोगकर्ता को प्रोग्राम को अधिक सरलता से डीबग करने की अनुमति देते हैं।
सिद्धांत
- व्यामोह
- इस प्रकार से सॉफ़्टवेयर बनाते समय, प्रोग्रामर यह मान लेता है कि उपयोगकर्ता उनके कोड को तोड़ना चाहते हैं।[7] और प्रोग्रामर यह भी मानता है कि उनका स्वयं का लिखित कोड विफल हो सकता है या गलत विधि से काम कर सकता है।[7]
- अज्ञानता
- प्रोग्रामर मानता है कि उपयोगकर्ता गलत, परिहास और विकृत इनपुट की परीक्षा लेना है ।[7] और परिणाम स्वरूप, प्रोग्रामर उपयोगकर्ता को स्पष्ट, सहज त्रुटि संदेश लौटाता है जिसके लिए त्रुटि कोड देखने की आवश्यकता नहीं होती है। त्रुटि संदेश को उपयोगकर्ता को गुमराह किए बिना यथासंभव सटीक होने का प्रयास करना चाहिए, जिससे समस्या को सरलता से ठीक किया जा सके।
- खतरनाक उपकरण
- उपयोगकर्ताओं को लाइब्रेरी (कंप्यूटिंग), डेटा संरचनाओं, या पॉइंटर (कंप्यूटर प्रोग्रामिंग) से डेटा संरचनाओं तक पहुंच प्राप्त नहीं करनी चाहिए।[7]यह जानकारी उपयोगकर्ता से छिपाई जानी चाहिए जिससे उपयोगकर्ता गलती से उन्हें संशोधित न कर दे और कोड में कोई बग न डाल दे। जब ऐसे इंटरफ़ेस (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) को सही ढंग से बनाया जाता है, तो उपयोगकर्ता इंटरफ़ेस को संशोधित करने के लिए कमियां ढूंढे बिना उनका उपयोग करते हैं। इंटरफ़ेस पहले से ही सही ढंग से प्रयुक्त किया जाना चाहिए, जिससे उपयोगकर्ता को संशोधन करने की आवश्यकता न हो। इसलिए उपयोगकर्ता केवल अपने कोड पर ध्यान केंद्रित करता है।
- दावा (सॉफ़्टवेयर विकास)|ऐसा नहीं हो सकता
- बहुत बार, कोड को संशोधित किया जाता है और असंभव मामला घटित होने की संभावना उत्पन्न हो सकती है। इसलिए असंभव विषय को अत्यधिक असंभावित माना जाता है।[7]डेवलपर इस बारे में सोचता है कि उस मामले को कैसे संभालना है जो बेहद असंभावित है, और तदनुसार हैंडलिंग प्रयुक्त करता है।
दृढ़ता मशीन लर्निंग
दृढ़ता मशीन लर्निंग आमतौर पर मशीन लर्निंग एल्गोरिदम की दृढ़ता को संदर्भित करता है। मशीन लर्निंग एल्गोरिदम को दृढ़ता माने जाने के लिए, या तो परीक्षण त्रुटि को प्रशिक्षण त्रुटि के अनुरूप होना चाहिए, या डेटासेट में कुछ शोर जोड़ने के बाद प्रदर्शन स्थिर होना चाहिए।[8] हाल ही में, उनकी लोकप्रियता में लगातार वृद्धि के साथ, तंत्रिका नेटवर्क की दृढ़ता में रुचि बढ़ रही है। यह विशेष रूप से प्रतिकूल हमलों के प्रति उनकी संवेदनशीलता के कारण है।[9]
दृढ़ता नेटवर्क डिज़ाइन
दृढ़ता नेटवर्क डिज़ाइन परिवर्तनशील या अनिश्चित माँगों की स्थिति में नेटवर्क डिज़ाइन का अध्ययन है।[10] अर्थ में, परिवर्तन या इनपुट की विशाल संभावनाओं के कारण नेटवर्क डिज़ाइन में दृढ़ता सॉफ्टवेयर डिज़ाइन में दृढ़ता की तरह ही व्यापक है।
दृढ़ता एल्गोरिदम
ऐसे एल्गोरिदम उपस्तिथ हैं जो इनपुट में त्रुटियों को सहन करते हैं।[11]
यह भी देखें
- रक्षात्मक प्रोग्रामिंग
- गैर-कार्यात्मक आवश्यकता
संदर्भ
- ↑ "मजबूती परीक्षण के लिए एक मॉडल-आधारित दृष्टिकोण" (PDF). Dl.ifip.org. Retrieved 2016-11-13.
- ↑ 2.0 2.1 1990. IEEE Standard Glossary of Software Engineering Terminology, IEEE Std 610.12-1990 defines robustness as "The degree to which a system or component can function correctly in the presence of invalid inputs or stressful environmental conditions"
- ↑ Baker, Jack W.; Schubert, Matthias; Faber, Michael H. (2008). "मजबूती के आकलन पर" (PDF). Structural Safety. 30 (3): 253–267. doi:10.1016/j.strusafe.2006.11.004. Retrieved 2016-11-13.
- ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 Gerald Jay Sussman (January 13, 2007). "मजबूत प्रणालियों का निर्माण एक निबंध" (PDF). Groups.csail.mit.edu. Retrieved 2016-11-13.
- ↑ Joseph, Joby (2009-09-21). "सामान्यीकृत टेस्टकेस बनाने का महत्व - सॉफ्टवेयर परीक्षण क्लब - एक ऑनलाइन सॉफ्टवेयर परीक्षण समुदाय". Software Testing Club. Retrieved 2016-11-13.
- ↑ Agents on the wEb : Robust Software. "मजबूत प्रणालियों का निर्माण एक निबंध" (PDF). Cse.sc.edu. Retrieved 2016-11-13.
- ↑ 7.0 7.1 7.2 7.3 7.4 7.5 "मजबूत प्रोग्रामिंग". Nob.cs.ucdavis.edu. Retrieved 2016-11-13.
- ↑ El Sayed Mahmoud. "What is the definition of the robustness of a machine learning algorithm?". Retrieved 2016-11-13.
- ↑ Li, Linyi; Xie, Tao; Li, Bo (9 September 2022). "SoK: Certified Robustness for Deep Neural Networks". arXiv:2009.04131 [cs.LG].
- ↑ "मजबूत नेटवर्क डिज़ाइन" (PDF). Math.mit.edu. Retrieved 2016-11-13.
- ↑ Carbin, Michael; Rinard, Martin C. (12 July 2010). "Automatically identifying critical input regions and code in applications" (PDF). Proceedings of the 19th international symposium on Software testing and analysis - ISSTA '10. ACM. pp. 37–48. doi:10.1145/1831708.1831713. ISBN 9781605588230. S2CID 1147058.