सॉफ्टवेयर बग: Difference between revisions
From Vigyanwiki
(Created page with "{{Short description|Error, flaw, failure, or fault in a computer program or system}} {{Self reference|To report a MediaWiki error on Wikipedia, see Wikipedia:Bug reports...") |
No edit summary |
||
| Line 1: | Line 1: | ||
{{Short description|Error, flaw, failure, or fault in a computer program or system}} | {{Short description|Error, flaw, failure, or fault in a computer program or system}} | ||
{{Self reference|To report a [[MediaWiki]] error on Wikipedia, see [[Wikipedia:Bug reports]].}} | {{Self reference|To report a [[MediaWiki]] error on Wikipedia, see [[Wikipedia:Bug reports]].}} | ||
{{software development process}} | {{software development process}} | ||
{{Information security}} | {{Information security}} | ||
सॉफ़्टवेयर बग [[कंप्यूटर सॉफ्टवेयर]] के डिज़ाइन, विकास या संचालन में एक त्रुटि, दोष या दोष (तकनीक) है जिसके कारण यह गलत या अप्रत्याशित परिणाम उत्पन्न करता है, या अनपेक्षित तरीके से व्यवहार करता है। बग को खोजने और सुधारने की प्रक्रिया को [[डिबगिंग]] कहा जाता है और | सॉफ़्टवेयर बग [[कंप्यूटर सॉफ्टवेयर]] के डिज़ाइन, विकास या संचालन में एक त्रुटि, दोष या दोष (तकनीक) है जिसके कारण यह गलत या अप्रत्याशित परिणाम उत्पन्न करता है, या अनपेक्षित तरीके से व्यवहार करता है। बग को खोजने और सुधारने की प्रक्रिया को [[डिबगिंग]] कहा जाता है और अधिकांशतः बग को इंगित करने के लिए औपचारिक तकनीकों या उपकरणों का उपयोग किया जाता है। 1950 के दशक के बाद से कुछ कंप्यूटर सिस्टम संचालन के दौरान विभिन्न कंप्यूटर बगों को रोकने, पहचानने या स्वत: ठीक करने के लिए डिज़ाइन किए गए हैं। | ||
सॉफ़्टवेयर में बग उपयोगकर्ताओं की आवश्यकता को समझने और निकालने में की गई गलतियों और त्रुटियों से उत्पन्न हो सकते हैं, प्रोग्राम के [[सॉफ़्टवेयर वास्तुशिल्प]] की योजना बना सकते हैं, इसके स्रोत कोड लिख सकते हैं, और [[ऑपरेटिंग सिस्टम]] या [[पुस्तकालय (कम्प्यूटिंग)]] जैसे मनुष्यों, हार्डवेयर और प्रोग्राम के साथ बातचीत से उत्पन्न हो सकते हैं। कई या गंभीर बग वाले प्रोग्राम को | सॉफ़्टवेयर में बग उपयोगकर्ताओं की आवश्यकता को समझने और निकालने में की गई गलतियों और त्रुटियों से उत्पन्न हो सकते हैं, प्रोग्राम के [[सॉफ़्टवेयर वास्तुशिल्प]] की योजना बना सकते हैं, इसके स्रोत कोड लिख सकते हैं, और [[ऑपरेटिंग सिस्टम]] या [[पुस्तकालय (कम्प्यूटिंग)]] जैसे मनुष्यों, हार्डवेयर और प्रोग्राम के साथ बातचीत से उत्पन्न हो सकते हैं। कई या गंभीर बग वाले प्रोग्राम को अधिकांशतः ''बग्गी'' के रूप में वर्णित किया जाता है। बग उन त्रुटियों को ट्रिगर कर सकते हैं जिनके तरंग प्रभाव हो सकते हैं। बग के प्रभाव सूक्ष्म हो सकते हैं, जैसे अनपेक्षित पाठ स्वरूपण, अधिक स्पष्ट प्रभावों के माध्यम से जैसे प्रोग्राम को [[क्रैश (कंप्यूटिंग)]], कंप्यूटर को [[फ्रीज (कंप्यूटिंग)]] करना, या हार्डवेयर को नुकसान पहुंचाना। अन्य बग सुरक्षा बग के रूप में अर्हता प्राप्त करते हैं और उदाहरण के लिए, [[विशेषाधिकार वृद्धि]] के लिए [[पहुँच नियंत्रण]] को बायपास करने के लिए [[काली टोपी हैकिंग]] को सक्षम कर सकते हैं।<ref>{{Cite journal|last1=Mittal|first1=Varun|last2=Aditya|first2=Shivam|date=2015-01-01|title=बग फिक्सिंग के क्षेत्र में हालिया विकास|journal=Procedia Computer Science|series=International Conference on Computer, Communication and Convergence (ICCC 2015)|language=en|volume=48|pages=288–297|doi=10.1016/j.procs.2015.04.184|issn=1877-0509|doi-access=free}}</ref> | ||
कुछ सॉफ़्टवेयर बग्स को आपदाओं से जोड़ा गया है। 1980 के दशक में [[Therac -25]] [[विकिरण उपचार]] मशीन को नियंत्रित करने वाले कोड में कीड़े सीधे तौर पर मरीजों की मौत के लिए जिम्मेदार थे। 1996 में, ऑन-बोर्ड मार्गदर्शन कंप्यूटर प्रोग्राम में एक बग के कारण [[यूरोपीय अंतरिक्ष एजेंसी]] के US$1 बिलियन प्रोटोटाइप [[एरियन उड़ान V88]] लॉन्च के एक मिनट से भी कम समय बाद।<ref>{{Cite web|title=एरियन 501 - पूछताछ बोर्ड की रिपोर्ट की प्रस्तुति|url=https://www.esa.int/Newsroom/Press_Releases/Ariane_501_-_Presentation_of_Inquiry_Board_report|access-date=2022-01-29|website=www.esa.int|language=en}}</ref> 1994 में, [[1994 स्कॉटलैंड आरएएफ चिनूक दुर्घटना]] दुर्घटना, 29 की मौत; शुरुआत में इसे पायलट त्रुटि के लिए दोषी ठहराया गया था, लेकिन बाद में माना गया कि यह [[FADEC]]|इंजन-कंट्रोल कंप्यूटर में एक सॉफ्टवेयर बग के कारण हुआ है।<ref>{{cite web |author= Prof. [[Simon Rogerson]] |url= http://www.ccsr.cse.dmu.ac.uk/resources/general/ethicol/Ecv12no2.html |title= चिनूक हेलीकाप्टर आपदा|publisher= Ccsr.cse.dmu.ac.uk |access-date= September 24, 2012 |url-status= dead |archive-url= https://web.archive.org/web/20120717021641/http://www.ccsr.cse.dmu.ac.uk/resources/general/ethicol/Ecv12no2.html |archive-date= July 17, 2012 |df= mdy-all }}</ref> बग्गी सॉफ्टवेयर ने 21वीं सदी के आरंभिक [[ब्रिटिश डाकघर घोटाला]] का कारण बना, ब्रिटिश कानूनी इतिहास में न्याय का सबसे व्यापक गर्भपात।<ref name=beeb182>{{Cite news |title=पोस्ट ऑफिस स्कैंडल ने बर्बाद की जिंदगी, जांच में सुनवाई|author=<!--not stated--> |work=BBC News |date=14 February 2022 |url= https://www.bbc.co.uk/news/business-60374182}}</ref> | कुछ सॉफ़्टवेयर बग्स को आपदाओं से जोड़ा गया है। 1980 के दशक में [[Therac -25]] [[विकिरण उपचार]] मशीन को नियंत्रित करने वाले कोड में कीड़े सीधे तौर पर मरीजों की मौत के लिए जिम्मेदार थे। 1996 में, ऑन-बोर्ड मार्गदर्शन कंप्यूटर प्रोग्राम में एक बग के कारण [[यूरोपीय अंतरिक्ष एजेंसी]] के US$1 बिलियन प्रोटोटाइप [[एरियन उड़ान V88]] लॉन्च के एक मिनट से भी कम समय बाद।<ref>{{Cite web|title=एरियन 501 - पूछताछ बोर्ड की रिपोर्ट की प्रस्तुति|url=https://www.esa.int/Newsroom/Press_Releases/Ariane_501_-_Presentation_of_Inquiry_Board_report|access-date=2022-01-29|website=www.esa.int|language=en}}</ref> 1994 में, [[1994 स्कॉटलैंड आरएएफ चिनूक दुर्घटना]] दुर्घटना, 29 की मौत; शुरुआत में इसे पायलट त्रुटि के लिए दोषी ठहराया गया था, लेकिन बाद में माना गया कि यह [[FADEC]]|इंजन-कंट्रोल कंप्यूटर में एक सॉफ्टवेयर बग के कारण हुआ है।<ref>{{cite web |author= Prof. [[Simon Rogerson]] |url= http://www.ccsr.cse.dmu.ac.uk/resources/general/ethicol/Ecv12no2.html |title= चिनूक हेलीकाप्टर आपदा|publisher= Ccsr.cse.dmu.ac.uk |access-date= September 24, 2012 |url-status= dead |archive-url= https://web.archive.org/web/20120717021641/http://www.ccsr.cse.dmu.ac.uk/resources/general/ethicol/Ecv12no2.html |archive-date= July 17, 2012 |df= mdy-all }}</ref> बग्गी सॉफ्टवेयर ने 21वीं सदी के आरंभिक [[ब्रिटिश डाकघर घोटाला]] का कारण बना, ब्रिटिश कानूनी इतिहास में न्याय का सबसे व्यापक गर्भपात।<ref name=beeb182>{{Cite news |title=पोस्ट ऑफिस स्कैंडल ने बर्बाद की जिंदगी, जांच में सुनवाई|author=<!--not stated--> |work=BBC News |date=14 February 2022 |url= https://www.bbc.co.uk/news/business-60374182}}</ref> | ||
2002 में, अमेरिकी वाणिज्य विभाग के राष्ट्रीय मानक और प्रौद्योगिकी संस्थान द्वारा शुरू किए गए एक अध्ययन ने निष्कर्ष निकाला कि सॉफ्टवेयर बग, या त्रुटियां, इतनी प्रचलित और इतनी हानिकारक हैं कि वे अमेरिकी अर्थव्यवस्था को अनुमानित रूप से $59 बिलियन सालाना, या लगभग 0.6 प्रतिशत खर्च करते हैं। सकल घरेलू उत्पाद ।<ref>{{cite web|url=http://www.nist.gov/public_affairs/releases/n02-10.htm |title=सॉफ्टवेयर बग अमेरिकी अर्थव्यवस्था को महंगा पड़ा|date=June 10, 2009 |access-date=September 24, 2012 |url-status=unfit |archive-url=https://web.archive.org/web/20090610052743/http://www.nist.gov/public_affairs/releases/n02-10.htm |archive-date=June 10, 2009 }}</ref> | 2002 में, अमेरिकी वाणिज्य विभाग के राष्ट्रीय मानक और प्रौद्योगिकी संस्थान द्वारा शुरू किए गए एक अध्ययन ने निष्कर्ष निकाला कि सॉफ्टवेयर बग, या त्रुटियां, इतनी प्रचलित और इतनी हानिकारक हैं कि वे अमेरिकी अर्थव्यवस्था को अनुमानित रूप से $59 बिलियन सालाना, या लगभग 0.6 प्रतिशत खर्च करते हैं। सकल घरेलू उत्पाद ।<ref>{{cite web|url=http://www.nist.gov/public_affairs/releases/n02-10.htm |title=सॉफ्टवेयर बग अमेरिकी अर्थव्यवस्था को महंगा पड़ा|date=June 10, 2009 |access-date=September 24, 2012 |url-status=unfit |archive-url=https://web.archive.org/web/20090610052743/http://www.nist.gov/public_affairs/releases/n02-10.htm |archive-date=June 10, 2009 }}</ref> | ||
| Line 24: | Line 24: | ||
{{Blockquote|In 1946, when Hopper was released from active duty, she joined the Harvard Faculty at the Computation Laboratory where she continued her work on the [[Harvard Mark II|Mark II]] and [[Harvard Mark III|Mark III]]. Operators traced an error in the Mark II to a [[moth]] trapped in a relay, coining the term ''bug''. This bug was carefully removed and taped to the log book. Stemming from the first bug, today we call errors or glitches in a program a ''bug''.<ref>{{cite web |url=http://ei.cs.vt.edu/~history/Hopper.Danis.html |title=Danis, Sharron Ann: "Rear Admiral Grace Murray Hopper" |date=February 16, 1997 |publisher=ei.cs.vt.edu |access-date=January 31, 2010}}</ref>}} | {{Blockquote|In 1946, when Hopper was released from active duty, she joined the Harvard Faculty at the Computation Laboratory where she continued her work on the [[Harvard Mark II|Mark II]] and [[Harvard Mark III|Mark III]]. Operators traced an error in the Mark II to a [[moth]] trapped in a relay, coining the term ''bug''. This bug was carefully removed and taped to the log book. Stemming from the first bug, today we call errors or glitches in a program a ''bug''.<ref>{{cite web |url=http://ei.cs.vt.edu/~history/Hopper.Danis.html |title=Danis, Sharron Ann: "Rear Admiral Grace Murray Hopper" |date=February 16, 1997 |publisher=ei.cs.vt.edu |access-date=January 31, 2010}}</ref>}} | ||
जब बग पाया गया तो हूपर | जब बग पाया गया तो हूपर सम्मलित नहीं था, लेकिन यह उसकी पसंदीदा कहानियों में से एक बन गई।<ref name=huggins>{{cite web |author=James S. Huggins |url=http://www.jamesshuggins.com/h/tek1/first_computer_bug.htm |archive-url=https://web.archive.org/web/20000816023000/http://www.jamesshuggins.com/h/tek1/first_computer_bug.htm |url-status=dead |archive-date=August 16, 2000 |title=पहला कंप्यूटर बग|publisher=Jamesshuggins.com |access-date=September 24, 2012 }}</ref> लॉग बुक में तारीख 9 सितंबर, 1947 थी।<ref>"[http://catb.org/jargon/html/B/bug.html Bug] {{webarchive|url=https://web.archive.org/web/20170323213836/http://www.catb.org/jargon/html/B/bug.html |date=March 23, 2017 }}", ''The Jargon File'', ver. 4.4.7. Retrieved June 3, 2010.</ref><ref name="si-bug">"[http://americanhistory.si.edu/collections/search/object/nmah_334663 Log Book With Computer Bug] {{webarchive|url=https://web.archive.org/web/20170323220950/http://americanhistory.si.edu/collections/search/object/nmah_334663 |date=March 23, 2017 }}", National Museum of American History, Smithsonian Institution.</ref><ref>"[https://web.archive.org/web/20000119173039/http://history.navy.mil/photos/images/h96000/h96566kc.htm The First "Computer Bug]", Naval Historical Center. But note the [[Harvard Mark II]] computer was not complete until the summer of 1947.</ref> जिन ऑपरेटरों ने इसे पाया, उनमें विलियम बिल बर्क, बाद में [[नेवल सरफेस वारफेयर सेंटर डहलग्रेन डिवीजन]], डहलग्रेन, वर्जीनिया, सम्मलित थे।<ref>IEEE Annals of the History of Computing, Vol 22 Issue 1, 2000</ref> इंजीनियरिंग की शब्दावली से परिचित थे और मनोरंजक तरीके से कीट को इस संकेतन के साथ रखा कि बग का पहला वास्तविक स्थिति पाया जा रही है। संलग्न कीट के साथ पूर्ण यह लॉग बुक, अमेरिकी इतिहास के स्मिथसोनियन राष्ट्रीय संग्रहालय के संग्रह का हिस्सा है।<ref name="si-bug" /> | ||
संबंधित शब्द [[डिबग]] भी कंप्यूटिंग में इसके उपयोग से पहले का प्रतीत होता है: [[ऑक्सफोर्ड इंग्लिश डिक्शनरी]]{{'}}शब्द की व्युत्पत्ति में विमान इंजन के संदर्भ में 1945 से एक प्रमाणन | संबंधित शब्द [[डिबग]] भी कंप्यूटिंग में इसके उपयोग से पहले का प्रतीत होता है: [[ऑक्सफोर्ड इंग्लिश डिक्शनरी]]{{'}}शब्द की व्युत्पत्ति में विमान इंजन के संदर्भ में 1945 से एक प्रमाणन सम्मलित है।<ref>''Journal of the Royal Aeronautical Society''. 49, 183/2, 1945 "It ranged ... through the stage of type test and flight test and 'debugging' ..."</ref> | ||
यह अवधारणा कि सॉफ्टवेयर में त्रुटियां हो सकती हैं, [[विश्लेषणात्मक इंजन]] पर एडा बायरन के नोट्स से मिलती हैं। एडा लवलेस के 1843 नोट्स एनालिटिकल इंजन पर, जिसमें वह [[चार्ल्स बैबेज]] के एनालिटिकल इंजन के गलत होने के लिए प्रोग्राम कार्ड की संभावना की बात करती हैं: | यह अवधारणा कि सॉफ्टवेयर में त्रुटियां हो सकती हैं, [[विश्लेषणात्मक इंजन]] पर एडा बायरन के नोट्स से मिलती हैं। एडा लवलेस के 1843 नोट्स एनालिटिकल इंजन पर, जिसमें वह [[चार्ल्स बैबेज]] के एनालिटिकल इंजन के गलत होने के लिए प्रोग्राम कार्ड की संभावना की बात करती हैं: | ||
| Line 35: | Line 35: | ||
मुक्त प्रौद्योगिकी संस्थान, समूह, न्यू अमेरिका द्वारा चलाया जाता है,<ref name=":1">{{Cite web|url=https://na-production.s3.amazonaws.com/documents/Bugs-in-the-System-Final.pdf|title=सिस्टम में कीड़े|last1=Wilson|first1=Andi|last2=Schulman|first2=Ross|website=Open Policy Institute|access-date=August 22, 2016|last3=Bankston|first3=Kevin|last4=Herr|first4=Trey|url-status=live|archive-url=https://web.archive.org/web/20160921012606/https://na-production.s3.amazonaws.com/documents/Bugs-in-the-System-Final.pdf|archive-date=September 21, 2016}}</ref> अगस्त 2016 में एक रिपोर्ट बग्स इन द सिस्टम जारी की जिसमें कहा गया था कि अमेरिकी नीति निर्माताओं को सॉफ्टवेयर बगों की पहचान करने और उन्हें दूर करने में शोधकर्ताओं की मदद करने के लिए सुधार करना चाहिए। रिपोर्ट में सॉफ्टवेयर भेद्यता खोज और प्रकटीकरण के क्षेत्र में सुधार की आवश्यकता पर प्रकाश डाला गया है।<ref name=":0">{{Cite web|url=https://homelandprepnews.com/government/19481-cyber-reforms-needed-strengthen-software-bug-discovery-disclosure-new-america-report/|title=सॉफ्टवेयर बग खोज और प्रकटीकरण को मजबूत करने के लिए साइबर सुधारों की आवश्यकता: नई अमेरिका रिपोर्ट - होमलैंड तैयारी समाचार|last=Rozens|first=Tracy|date=August 12, 2016|language=en-US|access-date=August 23, 2016}}</ref> रिपोर्ट के लेखकों में से एक ने कहा कि कांग्रेस ने साइबर सॉफ़्टवेयर भेद्यता को दूर करने के लिए पर्याप्त नहीं किया है, भले ही कांग्रेस ने साइबर सुरक्षा के बड़े मुद्दे का मुकाबला करने के लिए कई बिल पारित किए हैं।<ref name=":0" /> | मुक्त प्रौद्योगिकी संस्थान, समूह, न्यू अमेरिका द्वारा चलाया जाता है,<ref name=":1">{{Cite web|url=https://na-production.s3.amazonaws.com/documents/Bugs-in-the-System-Final.pdf|title=सिस्टम में कीड़े|last1=Wilson|first1=Andi|last2=Schulman|first2=Ross|website=Open Policy Institute|access-date=August 22, 2016|last3=Bankston|first3=Kevin|last4=Herr|first4=Trey|url-status=live|archive-url=https://web.archive.org/web/20160921012606/https://na-production.s3.amazonaws.com/documents/Bugs-in-the-System-Final.pdf|archive-date=September 21, 2016}}</ref> अगस्त 2016 में एक रिपोर्ट बग्स इन द सिस्टम जारी की जिसमें कहा गया था कि अमेरिकी नीति निर्माताओं को सॉफ्टवेयर बगों की पहचान करने और उन्हें दूर करने में शोधकर्ताओं की मदद करने के लिए सुधार करना चाहिए। रिपोर्ट में सॉफ्टवेयर भेद्यता खोज और प्रकटीकरण के क्षेत्र में सुधार की आवश्यकता पर प्रकाश डाला गया है।<ref name=":0">{{Cite web|url=https://homelandprepnews.com/government/19481-cyber-reforms-needed-strengthen-software-bug-discovery-disclosure-new-america-report/|title=सॉफ्टवेयर बग खोज और प्रकटीकरण को मजबूत करने के लिए साइबर सुधारों की आवश्यकता: नई अमेरिका रिपोर्ट - होमलैंड तैयारी समाचार|last=Rozens|first=Tracy|date=August 12, 2016|language=en-US|access-date=August 23, 2016}}</ref> रिपोर्ट के लेखकों में से एक ने कहा कि कांग्रेस ने साइबर सॉफ़्टवेयर भेद्यता को दूर करने के लिए पर्याप्त नहीं किया है, भले ही कांग्रेस ने साइबर सुरक्षा के बड़े मुद्दे का मुकाबला करने के लिए कई बिल पारित किए हैं।<ref name=":0" /> | ||
सरकारी शोधकर्ता, कंपनियाँ और साइबर सुरक्षा विशेषज्ञ वे लोग हैं जो | सरकारी शोधकर्ता, कंपनियाँ और साइबर सुरक्षा विशेषज्ञ वे लोग हैं जो साधारणतयः सॉफ़्टवेयर की खामियों का पता लगाते हैं। रिपोर्ट में कंप्यूटर अपराध और कॉपीराइट कानूनों में सुधार की मांग की गई है।<ref name=":0" /> | ||
{{Blockquote|The Computer Fraud and Abuse Act, the Digital Millennium Copyright Act and the Electronic Communications Privacy Act criminalize and create civil penalties for actions that security researchers routinely engage in while conducting legitimate security research, the report said.<ref name=":0" />}} | {{Blockquote|The Computer Fraud and Abuse Act, the Digital Millennium Copyright Act and the Electronic Communications Privacy Act criminalize and create civil penalties for actions that security researchers routinely engage in while conducting legitimate security research, the report said.<ref name=":0" />}} | ||
| Line 41: | Line 41: | ||
== शब्दावली == | == शब्दावली == | ||
जबकि सॉफ़्टवेयर त्रुटियों का वर्णन करने के लिए बग शब्द का उपयोग आम है, कई लोगों ने सुझाव दिया है कि इसे छोड़ दिया जाना चाहिए। एक तर्क यह है कि बग शब्द इस अर्थ से अलग है कि एक इंसान समस्या का कारण बना, और इसके | जबकि सॉफ़्टवेयर त्रुटियों का वर्णन करने के लिए बग शब्द का उपयोग आम है, कई लोगों ने सुझाव दिया है कि इसे छोड़ दिया जाना चाहिए। एक तर्क यह है कि बग शब्द इस अर्थ से अलग है कि एक इंसान समस्या का कारण बना, और इसके अतिरिक्त इसका अर्थ है कि दोष अपने आप उत्पन्न हुआ, जिसके कारण दोष जैसे शब्दों के पक्ष में बग शब्द को सीमित करने के लिए धक्का दिया गया। सफलता।<ref>{{cite web|url=http://www.sei.cmu.edu/library/abstracts/news-at-sei/wattsmar99.cfm|title=एसईआई 1999 आर्काइव पर समाचार|work=cmu.edu|url-status=live|archive-url=https://web.archive.org/web/20130526044359/http://www.sei.cmu.edu/library/abstracts/news-at-sei/wattsmar99.cfm|archive-date=May 26, 2013}}</ref> 1970 के दशक के बाद से [[गैरी किल्डाल]] ने कुछ विनोदी ढंग से ब्लंडर शब्द का उपयोग करने का सुझाव दिया।<ref name="Shustek_2016">{{cite web |url=http://www.computerhistory.org/atchm/in-his-own-words-gary-kildall/ |title=इन हिज ओन वर्ड्स: गैरी किल्डाल|author-first=Len |author-last=Shustek |date=August 2, 2016 |work=Remarkable People |publisher=[[Computer History Museum]] |url-status=live |archive-url=https://web.archive.org/web/20161217072842/http://www.computerhistory.org/atchm/in-his-own-words-gary-kildall/ |archive-date=December 17, 2016 }}</रेफरी><ref name="Kildall_1993">{{cite document |orig-year=1993 |date=August 2, 2016 |title=कंप्यूटर कनेक्शन: पर्सनल कंप्यूटर उद्योग के विकास में लोग, स्थान और घटनाएँ|author-first=Gary Arlen |author-last=Kildall |author-link=Gary Kildall |editor-first1=Scott |editor-last1=Kildall |editor-link=Scott Kildall |editor-first2=Kristin |editor-last2=Kildall |publisher=Kildall Family |type=Manuscript, part 1 |pages=14–15 |url=http://www.computerhistory.org/atchm/computer-history-museum-license-agreement-for-the-kildall-manuscript/ |access-date=November 17, 2016 |url-status=live |archive-url=https://web.archive.org/web/20161117231531/http://www.computerhistory.org/atchm/computer-history-museum-license-agreement-for-the-kildall-manuscript/ |archive-date=November 17, 2016 }}</रेफरी> | ||
सॉफ्टवेयर इंजीनियरिंग में, गलती कायापलट (ग्रीक मेटा = परिवर्तन, रूप = रूप से) सॉफ्टवेयर परिनियोजन के अंतिम चरण में एक दोष के विकास को संदर्भित करता है। सॉफ़्टवेयर विकास जीवनचक्र के प्रारंभिक चरणों में एक विश्लेषक द्वारा की गई गलती का परिवर्तन, जो चक्र के अंतिम चरण में एक दोष की ओर ले जाता है, इसे 'गलती कायापलट' कहा जाता है। | सॉफ्टवेयर इंजीनियरिंग में, गलती कायापलट (ग्रीक मेटा = परिवर्तन, रूप = रूप से) सॉफ्टवेयर परिनियोजन के अंतिम चरण में एक दोष के विकास को संदर्भित करता है। सॉफ़्टवेयर विकास जीवनचक्र के प्रारंभिक चरणों में एक विश्लेषक द्वारा की गई गलती का परिवर्तन, जो चक्र के अंतिम चरण में एक दोष की ओर ले जाता है, इसे 'गलती कायापलट' कहा जाता है। | ||
| Line 51: | Line 51: | ||
== रोकथाम == | == रोकथाम == | ||
[[File:Software bug displayed on two screens at La Croix de Berny station in France - 2021-10-28.jpg|thumb|फ़्रांस के [[ला क्रोक्स डे बर्नी स्टेशन]] पर दो स्क्रीन पर प्रदर्शित सॉफ़्टवेयर बग के परिणामस्वरूप त्रुटि।]]सॉफ़्टवेयर उद्योग ने बगों की संख्या कम करने के लिए बहुत प्रयास किए हैं।<ref>{{cite book | last = Huizinga | first = Dorota | author2 = Kolawa, Adam | title = स्वचालित दोष निवारण: सॉफ्टवेयर प्रबंधन में सर्वोत्तम अभ्यास| url = http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470042125.html | year = 2007 | publisher = Wiley-IEEE Computer Society Press | page = 426 | isbn = 978-0-470-04212-0 | url-status = live | archive-url = https://web.archive.org/web/20120425232401/http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470042125.html | archive-date = April 25, 2012 | df = mdy-all }}</ref><ref>{{cite book | last = McDonald | first = Marc | author2 = Musson, Robert | author3 = Smith, Ross | title = दोष निवारण के लिए व्यावहारिक मार्गदर्शिका| url = https://archive.org/details/practicalguideto00/page/480 | year = 2007 | publisher = Microsoft Press | page = [https://archive.org/details/practicalguideto00/page/480 480] | isbn = 978-0-7356-2253-1 | df = mdy-all | url-access = registration }}</ref> इसमे | [[File:Software bug displayed on two screens at La Croix de Berny station in France - 2021-10-28.jpg|thumb|फ़्रांस के [[ला क्रोक्स डे बर्नी स्टेशन]] पर दो स्क्रीन पर प्रदर्शित सॉफ़्टवेयर बग के परिणामस्वरूप त्रुटि।]]सॉफ़्टवेयर उद्योग ने बगों की संख्या कम करने के लिए बहुत प्रयास किए हैं।<ref>{{cite book | last = Huizinga | first = Dorota | author2 = Kolawa, Adam | title = स्वचालित दोष निवारण: सॉफ्टवेयर प्रबंधन में सर्वोत्तम अभ्यास| url = http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470042125.html | year = 2007 | publisher = Wiley-IEEE Computer Society Press | page = 426 | isbn = 978-0-470-04212-0 | url-status = live | archive-url = https://web.archive.org/web/20120425232401/http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470042125.html | archive-date = April 25, 2012 | df = mdy-all }}</ref><ref>{{cite book | last = McDonald | first = Marc | author2 = Musson, Robert | author3 = Smith, Ross | title = दोष निवारण के लिए व्यावहारिक मार्गदर्शिका| url = https://archive.org/details/practicalguideto00/page/480 | year = 2007 | publisher = Microsoft Press | page = [https://archive.org/details/practicalguideto00/page/480 480] | isbn = 978-0-7356-2253-1 | df = mdy-all | url-access = registration }}</ref> इसमे सम्मलित है: | ||
=== टंकण त्रुटियाँ === | === टंकण त्रुटियाँ === | ||
बग | बग साधारणतयः तब दिखाई देते हैं जब प्रोग्रामर एक तार्किक त्रुटि करता है। [[प्रोग्रामिंग शैली]] और [[रक्षात्मक प्रोग्रामिंग]] में विभिन्न नवाचारों को इन बगों की संभावना कम करने, या स्पॉट करने में आसान बनाने के लिए डिज़ाइन किया गया है। कुछ टाइपो, विशेष रूप से प्रतीकों या तार्किक/[[ऑपरेटर (गणित)]] के, प्रोग्राम को गलत तरीके से संचालित करने की अनुमति देते हैं, जबकि अन्य जैसे लापता प्रतीक या गलत वर्तनी वाले नाम प्रोग्राम को संचालन से रोक सकते हैं। स्रोत कोड संकलित होने पर संकलित भाषाएँ कुछ टाइपो प्रकट कर सकती हैं। | ||
=== विकास के तरीके === | === विकास के तरीके === | ||
कई योजनाएँ प्रोग्रामर गतिविधि को प्रबंधित करने में सहायता करती हैं | कई योजनाएँ प्रोग्रामर गतिविधि को प्रबंधित करने में सहायता करती हैं जिससे कि कम बग उत्पन्न हों। [[सॉफ्टवेयर इंजीनियरिंग]] (जो सॉफ़्टवेयर डिज़ाइन के मुद्दों को भी संबोधित करती है) दोषों को रोकने के लिए कई तकनीकों को लागू करती है। उदाहरण के लिए, औपचारिक [[कार्यक्रम विनिर्देश]] कार्यक्रमों के सटीक व्यवहार को बताते हैं जिससे कि डिज़ाइन बग को समाप्त किया जा सके। दुर्भाग्य से, औपचारिक विनिर्देश किसी भी चीज के लिए अव्यावहारिक हैं, लेकिन कम से कम कार्यक्रमों के लिए, दहनशील विस्फोट और गैर-नियतात्मक एल्गोरिदम की समस्याओं के कारण। | ||
[[इकाई का परीक्षण]] में प्रत्येक फंक्शन (यूनिट) के लिए एक टेस्ट लिखना | [[इकाई का परीक्षण]] में प्रत्येक फंक्शन (यूनिट) के लिए एक टेस्ट लिखना सम्मलित है जिसे प्रोग्राम को परफॉर्म करना है। | ||
परीक्षण-संचालित विकास में इकाई परीक्षण कोड से पहले लिखे जाते हैं और कोड को तब तक पूर्ण नहीं माना जाता जब तक कि सभी परीक्षण सफलतापूर्वक पूर्ण नहीं हो जाते। | परीक्षण-संचालित विकास में इकाई परीक्षण कोड से पहले लिखे जाते हैं और कोड को तब तक पूर्ण नहीं माना जाता जब तक कि सभी परीक्षण सफलतापूर्वक पूर्ण नहीं हो जाते। | ||
[[चुस्त सॉफ्टवेयर विकास]] में अपेक्षाकृत छोटे बदलावों के साथ लगातार सॉफ्टवेयर रिलीज | [[चुस्त सॉफ्टवेयर विकास]] में अपेक्षाकृत छोटे बदलावों के साथ लगातार सॉफ्टवेयर रिलीज सम्मलित होते हैं। उपयोगकर्ता प्रतिक्रिया से दोष प्रकट होते हैं। | ||
ओपन सोर्स डेवलपमेंट किसी को भी सोर्स कोड की जांच करने की अनुमति देता है। लिनस के नियम के रूप में एरिक एस. रेमंड द्वारा लोकप्रिय विचार के एक स्कूल का कहना है कि लोकप्रिय [[खुला स्रोत सॉफ्टवेयर]] में अन्य सॉफ़्टवेयर की तुलना में कम या कोई बग नहीं होने की अधिक संभावना है, क्योंकि पर्याप्त नेत्रगोलक दिए जाने पर, सभी बग उथले हैं।<ref>[http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html "Release Early, Release Often"] {{webarchive|url=https://web.archive.org/web/20110514032650/http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html |date=May 14, 2011 }}, [[Eric S. Raymond]], ''[[The Cathedral and the Bazaar]]''</ref> | ओपन सोर्स डेवलपमेंट किसी को भी सोर्स कोड की जांच करने की अनुमति देता है। लिनस के नियम के रूप में एरिक एस. रेमंड द्वारा लोकप्रिय विचार के एक स्कूल का कहना है कि लोकप्रिय [[खुला स्रोत सॉफ्टवेयर]] में अन्य सॉफ़्टवेयर की तुलना में कम या कोई बग नहीं होने की अधिक संभावना है, क्योंकि पर्याप्त नेत्रगोलक दिए जाने पर, सभी बग उथले हैं।<ref>[http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html "Release Early, Release Often"] {{webarchive|url=https://web.archive.org/web/20110514032650/http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html |date=May 14, 2011 }}, [[Eric S. Raymond]], ''[[The Cathedral and the Bazaar]]''</ref> चूंकि, यह दावा विवादित रहा है: कंप्यूटर सुरक्षा विशेषज्ञ [[इलियास लेवी]] ने लिखा है कि जटिल, कम समझ में आने वाले और बिना दस्तावेज वाले स्रोत कोड में कमजोरियों को छिपाना आसान है, क्योंकि भले ही लोग कोड की समीक्षा कर रहे हों, इसका मतलब यह नहीं है कि वे योग्य हैं ऐसा करने के लिए।<ref>[http://www.securityfocus.com/news/19 "Wide Open Source"] {{webarchive|url=https://web.archive.org/web/20070929105937/http://www.securityfocus.com/news/19 |date=September 29, 2007 }}, [[Elias Levy]], ''SecurityFocus'', April 17, 2000</ref> ओपन-सोर्स सॉफ़्टवेयर बग का एक उदाहरण डेबियन#2008 ओपनएसएसएल भेद्यता थी। | ||
=== [[प्रोग्रामिंग भाषा]] समर्थन === | === [[प्रोग्रामिंग भाषा]] समर्थन === | ||
प्रोग्रामिंग लैंग्वेज में बग्स को रोकने में मदद करने के लिए फीचर्स | प्रोग्रामिंग लैंग्वेज में बग्स को रोकने में मदद करने के लिए फीचर्स सम्मलित हैं, जैसे स्टैटिक [[प्रकार प्रणाली]], प्रतिबंधित [[नाम स्थान]] और [[मॉड्यूलर प्रोग्रामिंग]]। उदाहरण के लिए, जब एक प्रोग्रामर लिखता है ([[स्यूडोकोड]]) <code>LET REAL_VALUE PI = "THREE AND A BIT"</code>, चूंकि यह वाक्यात्मक रूप से सही हो सकता है, कोड एक प्रकार की जाँच में विफल रहता है। संकलित भाषाएँ प्रोग्राम को चलाए बिना इसे पकड़ लेती हैं। व्याख्या की गई भाषाएँ रनटाइम पर ऐसी त्रुटियों को पकड़ती हैं। कुछ भाषाएं धीमी गति से प्रदर्शन की कीमत पर जानबूझकर उन विशेषताओं को बाहर करती हैं जो आसानी से बग की ओर ले जाती हैं: सामान्य सिद्धांत यह है कि, थोड़ा तेज चलने वाले रहस्यमय कोड की तुलना में सरल, धीमा कोड लिखना लगभग हमेशा बेहतर होता है, विशेष रूप से यह देखते हुए कि रखरखाव लागत पर्याप्त है . उदाहरण के लिए, [[जावा (प्रोग्रामिंग भाषा)]] पॉइंटर (कंप्यूटर प्रोग्रामिंग) अंकगणित का समर्थन नहीं करता है; [[पास्कल (प्रोग्रामिंग भाषा)]] और स्क्रिप्टिंग भाषाओं जैसी कुछ भाषाओं के कार्यान्वयन में अधिकांशतः कम से कम डिबगिंग बिल्ड में सरणी की रनटाइम सीमा जांच होती है। | ||
=== कोड विश्लेषण === | === कोड विश्लेषण === | ||
स्टेटिक कोड विश्लेषण के लिए उपकरण संभावित समस्याओं का पता लगाने के लिए कंपाइलर की क्षमताओं से परे प्रोग्राम टेक्स्ट का निरीक्षण करके डेवलपर्स की मदद करते हैं। | स्टेटिक कोड विश्लेषण के लिए उपकरण संभावित समस्याओं का पता लगाने के लिए कंपाइलर की क्षमताओं से परे प्रोग्राम टेक्स्ट का निरीक्षण करके डेवलपर्स की मदद करते हैं। चूंकि साधारणतयः एक विनिर्देश दिए गए सभी प्रोग्रामिंग त्रुटियों को खोजने की समस्या हल करने योग्य नहीं है (देखें [[रुकने की समस्या]]), ये उपकरण इस तथ्य का फायदा उठाते हैं कि मानव प्रोग्रामर अधिकांशतः सॉफ़्टवेयर लिखते समय कुछ प्रकार की सरल गलतियाँ करते हैं। | ||
=== इंस्ट्रूमेंटेशन === | === इंस्ट्रूमेंटेशन === | ||
चल रहे सॉफ़्टवेयर के प्रदर्शन की निगरानी करने के लिए उपकरण, या तो विशेष रूप से टोंटी (इंजीनियरिंग) जैसी समस्याओं का पता लगाने के लिए या कार्य को सही करने के लिए आश्वासन देने के लिए, स्पष्ट रूप से कोड में एम्बेड किया जा सकता है (शायद एक कथन के रूप में सरल <code>PRINT "I AM HERE"</code>), या उपकरण के रूप में प्रदान किया गया। यह | चल रहे सॉफ़्टवेयर के प्रदर्शन की निगरानी करने के लिए उपकरण, या तो विशेष रूप से टोंटी (इंजीनियरिंग) जैसी समस्याओं का पता लगाने के लिए या कार्य को सही करने के लिए आश्वासन देने के लिए, स्पष्ट रूप से कोड में एम्बेड किया जा सकता है (शायद एक कथन के रूप में सरल <code>PRINT "I AM HERE"</code>), या उपकरण के रूप में प्रदान किया गया। यह अधिकांशतः आश्चर्य की बात है कि अधिकांश समय कोड के एक टुकड़े द्वारा कहाँ लिया जाता है, और मान्यताओं को हटाने से कोड को फिर से लिखा जा सकता है। | ||
== परीक्षण == | == परीक्षण == | ||
| Line 84: | Line 84: | ||
== डिबगिंग == | == डिबगिंग == | ||
[[File:Classpath bugs.png|thumb|350px|सामान्य बग इतिहास ([[जीएनयू क्लासपाथ]] प्रोजेक्ट डेटा)। उपयोगकर्ता द्वारा सबमिट किया गया एक नया बग अपुष्ट है। एक बार जब इसे एक डेवलपर द्वारा पुन: प्रस्तुत किया जाता है, तो यह एक पुष्टि की गई बग है। पुष्टि किए गए बग बाद में तय किए गए हैं। अन्य श्रेणियों से संबंधित बग (पुनरुत्पादन योग्य नहीं, तय नहीं किया जाएगा, आदि) | [[File:Classpath bugs.png|thumb|350px|सामान्य बग इतिहास ([[जीएनयू क्लासपाथ]] प्रोजेक्ट डेटा)। उपयोगकर्ता द्वारा सबमिट किया गया एक नया बग अपुष्ट है। एक बार जब इसे एक डेवलपर द्वारा पुन: प्रस्तुत किया जाता है, तो यह एक पुष्टि की गई बग है। पुष्टि किए गए बग बाद में तय किए गए हैं। अन्य श्रेणियों से संबंधित बग (पुनरुत्पादन योग्य नहीं, तय नहीं किया जाएगा, आदि) साधारणतयः अल्पमत में होते हैं]] | ||
{{Main|Debugging}} | {{Main|Debugging}} | ||
बग्स को ढूँढना और ठीक करना, या डिबगिंग, [[कंप्यूटर प्रोग्रामिंग]] का एक प्रमुख हिस्सा है। एक शुरुआती कंप्यूटिंग अग्रणी [[मौरिस विल्क्स]] ने 1940 के दशक के अंत में अपने अहसास का वर्णन किया कि उनके जीवन का अधिकांश समय उनके अपने कार्यक्रमों में गलतियाँ खोजने में व्यतीत होगा।<ref>[[q:Maurice Wilkes|Maurice Wilkes Quotes]]</ref> | बग्स को ढूँढना और ठीक करना, या डिबगिंग, [[कंप्यूटर प्रोग्रामिंग]] का एक प्रमुख हिस्सा है। एक शुरुआती कंप्यूटिंग अग्रणी [[मौरिस विल्क्स]] ने 1940 के दशक के अंत में अपने अहसास का वर्णन किया कि उनके जीवन का अधिकांश समय उनके अपने कार्यक्रमों में गलतियाँ खोजने में व्यतीत होगा।<ref>[[q:Maurice Wilkes|Maurice Wilkes Quotes]]</ref> | ||
साधारणतयः, डिबगिंग का सबसे कठिन हिस्सा बग ढूंढ रहा है। एक बार यह मिल जाने के बाद, इसे ठीक करना साधारणतयः अपेक्षाकृत आसान होता है। [[डिबगर]]्स के रूप में जाने जाने वाले प्रोग्राम प्रोग्रामर को कोड लाइन को लाइन से निष्पादित करके, चर मूल्यों को देखते हुए, और प्रोग्राम के व्यवहार को देखने के लिए अन्य सुविधाओं द्वारा बग का पता लगाने में मदद करते हैं। डिबगर के बिना, कोड जोड़ा जा सकता है जिससे कि प्रोग्राम निष्पादन का पता लगाने या मान दिखाने के लिए कंसोल या विंडो या लॉग फ़ाइल में संदेश या मान लिखे जा सकें। | |||
चूंकि, डिबगर की सहायता से भी, बग्स का पता लगाना एक कला है। किसी प्रोग्राम के एक सेक्शन में बग के लिए यह असामान्य नहीं है कि वह पूरी तरह से अलग सेक्शन में फेल हो जाए,{{citation needed|date=November 2012}} इस प्रकार इसे ट्रैक करना विशेष रूप से कठिन बना देता है (उदाहरण के लिए, ग्राफिक्स रेंडरिंग (कंप्यूटर ग्राफिक्स) रूटीन में एक त्रुटि जिसके कारण फ़ाइल इनपुट/आउटपुट | I/O रूटीन विफल हो जाता है), सिस्टम के एक स्पष्ट रूप से असंबंधित हिस्से में। | |||
कभी-कभी, एक बग एक अकेला दोष नहीं होता है, लेकिन प्रोग्रामर की ओर से सोचने या योजना बनाने में त्रुटि का प्रतिनिधित्व करता है। ऐसी तार्किक त्रुटियों के लिए प्रोग्राम के एक हिस्से को ओवरहाल या फिर से लिखने की आवश्यकता होती है। कोड समीक्षा के एक भाग के रूप में, कोड के माध्यम से आगे बढ़ने और निष्पादन प्रक्रिया की कल्पना या लिप्यंतरण करने से | कभी-कभी, एक बग एक अकेला दोष नहीं होता है, लेकिन प्रोग्रामर की ओर से सोचने या योजना बनाने में त्रुटि का प्रतिनिधित्व करता है। ऐसी तार्किक त्रुटियों के लिए प्रोग्राम के एक हिस्से को ओवरहाल या फिर से लिखने की आवश्यकता होती है। कोड समीक्षा के एक भाग के रूप में, कोड के माध्यम से आगे बढ़ने और निष्पादन प्रक्रिया की कल्पना या लिप्यंतरण करने से अधिकांशतः बग को पुन: पेश किए बिना त्रुटियां मिल सकती हैं। | ||
अधिक विशिष्ट रूप से, बग का पता लगाने में पहला कदम इसे मज़बूती से पुन: पेश करना है। एक बार जब बग पुनरुत्पादित हो जाता है, तो प्रोग्रामर उस बिंदु को खोजने के लिए त्रुटि को पुन: उत्पन्न करते समय डीबगर या अन्य टूल का उपयोग कर सकता है जिस पर प्रोग्राम भटक गया था। | अधिक विशिष्ट रूप से, बग का पता लगाने में पहला कदम इसे मज़बूती से पुन: पेश करना है। एक बार जब बग पुनरुत्पादित हो जाता है, तो प्रोग्रामर उस बिंदु को खोजने के लिए त्रुटि को पुन: उत्पन्न करते समय डीबगर या अन्य टूल का उपयोग कर सकता है जिस पर प्रोग्रा | ||