सॉफ्टवेयर जरण: Difference between revisions
m (Abhishek moved page सॉफ्टवेयर उम्र बढ़ने to सॉफ्टवेयर जरण without leaving a redirect) |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Tendency of software to fail due to external changes or prolonged operation}} | {{short description|Tendency of software to fail due to external changes or prolonged operation}} | ||
{{specific|date=March 2017}} | {{specific|date=March 2017}} | ||
[[सॉफ़्टवेयर]] इंजीनियरिंग में, सॉफ़्टवेयर उम्र बढ़ने की प्रवृत्ति सॉफ़्टवेयर की सॉफ़्टवेयर विफलता या एक निश्चित समय के लिए लगातार चलने के बाद | [[सॉफ़्टवेयर]] इंजीनियरिंग में, सॉफ़्टवेयर उम्र बढ़ने की प्रवृत्ति सॉफ़्टवेयर की सॉफ़्टवेयर विफलता या एक निश्चित समय के लिए लगातार चलने के बाद प्रणाली विफलता का कारण बनती है, या सॉफ़्टवेयर के आस-पास के प्रणाली में चल रहे परिवर्तनों के कारण होती है। [[सॉफ्टवेयर की विफलता]] बढ़ने के कई कारण हैं, जिसमें पुराने सॉफ़्टवेयर की अक्षमता (कंप्यूटर विज्ञान) को बदलती आवश्यकताओं या बदलते प्रौद्योगिकी प्लेटफार्मों के लिए अक्षमता, और आगे की त्रुटियों को प्रस्तुत करने के लिए [[सॉफ्टवेयर पैच]] की प्रवृत्ति सम्मिलित है। जैसे-जैसे सॉफ्टवेयर पुराना होता जाता है, यह अपने उद्देश्य के लिए कम अनुकूल होता जाता है और अंततः यह काम करना बंद कर देगा जैसा कि इसे करना चाहिए। [[रिबूट (कंप्यूटिंग)]] या [[स्थापना (कंप्यूटर प्रोग्राम)]] सॉफ्टवेयर एक अल्पकालिक फिक्स के रूप में कार्य कर सकता है।<ref>{{Cite book |chapter-url = http://www.computer.org/csdl/proceedings/dsn/2003/1952/00/19520721-abs.html |isbn = 978-0-7695-1952-4 |doi=10.1109/DSN.2003.1209987|chapter = Software aging and multifractality of memory resources |title = 2003 International Conference on Dependable Systems and Networks, 2003. Proceedings |pages = 721–730 |year = 2003 |last1 = Shereshevsky |first1 = M. |last2 = Crowell |first2 = J. |last3 = Cukic |first3 = B. |last4 = Gandikota |first4 = V. |last5 = Yan Liu |s2cid = 18697750 }}</ref> सॉफ्टवेयर उम्र बढ़ने की घटना से निपटने के लिए एक सक्रिय दोष प्रबंधन पद्धति [[सॉफ्टवेयर कायाकल्प]] है। इस पद्धति को एक पर्यावरण विविधता तकनीक के रूप में वर्गीकृत किया जा सकता है जिसे सामान्यतः सॉफ्टवेयर कायाकल्प एजेंटों (एसआरए) के माध्यम से कार्यान्वित किया जाता है। | ||
इस घटना की पहली बार [[डेविड पारनास]] ने एक निबंध में पहचान की थी, जिसने यह पता लगाया था कि इसके बारे में क्या करना है:<ref>{{Cite book |doi = 10.1109/ICSE.1994.296790 |isbn = 978-0-8186-5855-6|chapter = Software aging|title = Proceedings of 16th International Conference on Software Engineering|pages = 279–287|year = 1994|last1 = Parnas|first1 = D.L.|s2cid = 790287}}</ref><blockquote> प्रोग्राम, लोगों की तरह, पुराने हो जाते हैं। हम उम्र बढ़ने को नहीं रोक सकते, लेकिन हम इसके कारणों को समझ सकते हैं, इसके प्रभावों को सीमित करने के लिए कदम उठा सकते हैं, इससे होने वाली कुछ क्षति को अस्थायी रूप से उलट सकते हैं, और उस दिन के लिए तैयार हो सकते हैं जब सॉफ्टवेयर अब व्यवहार्य नहीं रहेगा। </ब्लॉककोट> | इस घटना की पहली बार [[डेविड पारनास]] ने एक निबंध में पहचान की थी, जिसने यह पता लगाया था कि इसके बारे में क्या करना है:<ref>{{Cite book |doi = 10.1109/ICSE.1994.296790 |isbn = 978-0-8186-5855-6|chapter = Software aging|title = Proceedings of 16th International Conference on Software Engineering|pages = 279–287|year = 1994|last1 = Parnas|first1 = D.L.|s2cid = 790287}}</ref><blockquote> प्रोग्राम, लोगों की तरह, पुराने हो जाते हैं। हम उम्र बढ़ने को नहीं रोक सकते, लेकिन हम इसके कारणों को समझ सकते हैं, इसके प्रभावों को सीमित करने के लिए कदम उठा सकते हैं, इससे होने वाली कुछ क्षति को अस्थायी रूप से उलट सकते हैं, और उस दिन के लिए तैयार हो सकते हैं जब सॉफ्टवेयर अब व्यवहार्य नहीं रहेगा। </ब्लॉककोट> | ||
Line 10: | Line 10: | ||
=== सॉफ्टवेयर उम्र बढ़ने === | === सॉफ्टवेयर उम्र बढ़ने === | ||
हार्डवेयर विफलताओं की तुलना में सॉफ़्टवेयर विफलताएँ अनियोजित | हार्डवेयर विफलताओं की तुलना में सॉफ़्टवेयर विफलताएँ अनियोजित प्रणाली आउटेज का अधिक संभावित कारण हैं।<ref>{{Cite web | url=https://oatd.org/oatd/record?record=oai%5C%3Awvuscholar.wvu.edu%5C%3A21029 | title=Oatd: -}}</ref><ref>{{Cite book |doi = 10.1109/ISSRE.1998.730892 |isbn = 978-0-8186-8991-8|chapter = A methodology for detection and estimation of software aging|title = Proceedings Ninth International Symposium on Software Reliability Engineering (Cat. No.98TB100257)|pages = 283–292|year = 1998|last1 = Garg|first1 = S.|last2 = Van Moorsel|first2 = A.|last3 = Vaidyanathan|first3 = K.|last4 = Trivedi|first4 = K.S.|s2cid = 8696313|url = http://www.lib.ncsu.edu/resolver/1840.4/1011}}</ref> ऐसा इसलिए है क्योंकि डेटा भ्रष्टाचार, संख्यात्मक त्रुटि संचय और असीमित संसाधन खपत के कारण सॉफ्टवेयर समय के साथ बढ़ती विफलता दर प्रदर्शित करता है। व्यापक रूप से उपयोग किए जाने वाले और विशेष सॉफ़्टवेयर में, किसी समस्या को दूर करने के लिए एक सामान्य क्रिया रीबूटिंग है क्योंकि सॉफ्टवेयर की जटिलता के कारण उम्र बढ़ने लगती है जो कभी भी त्रुटियों से मुक्त नहीं होती है। यह पूरी तरह से सत्यापित करना लगभग असंभव है कि सॉफ्टवेयर का एक टुकड़ा बग-मुक्त है। यहां तक कि हाई-प्रोफाइल सॉफ्टवेयर जैसे कि [[माइक्रोसॉफ़्ट विंडोज़]] और [[ओएस एक्स]] को प्रदर्शन में सुधार और बग को ठीक करने के लिए लगातार अपडेट प्राप्त करना चाहिए। सॉफ्टवेयर विकास दीर्घकालिक विश्वसनीयता सुनिश्चित करने के अतिरिक्त रिलीज की समय सीमा को पूरा करने की आवश्यकता से प्रेरित होता है।<ref>{{Cite journal|title = Proactive management of software aging|journal = IBM Journal of Research and Development|date = 2001-03-01|issn = 0018-8646|pages = 311–332|volume = 45|issue = 2|doi = 10.1147/rd.452.0311|first1 = V.|last1 = Castelli|first2 = R.E.|last2 = Harper|first3 = P.|last3 = Heidelberger|first4 = S.W.|last4 = Hunter|first5 = K.S.|last5 = Trivedi|first6 = K.|last6 = Vaidyanathan|first7 = W.P.|last7 = Zeggert|citeseerx = 10.1.1.28.7273}}</ref> डिजाइनिंग सॉफ्टवेयर जो उम्र बढ़ने से प्रतिरक्षित हो सकता है, कठिन है। सभी सॉफ़्टवेयर समान दर से पुराने नहीं होंगे क्योंकि कुछ उपयोगकर्ता दूसरों की तुलना में प्रणाली का अधिक तीव्रता से उपयोग करते हैं।<ref>{{Cite book |doi = 10.1109/SEW.2002.1199445 |isbn = 978-0-7695-1855-8|chapter = Proactive detection of software aging mechanisms in performance critical computers|title = 27th Annual NASA Goddard/IEEE Software Engineering Workshop, 2002. Proceedings|pages = 17–23|year = 2003|last1 = Gross|first1 = K.C.|last2 = Bhardwaj|first2 = V.|last3 = Bickford|first3 = R.|s2cid = 17167955}}</ref> | ||
=== कायाकल्प === | === कायाकल्प === | ||
क्रैश या गिरावट को रोकने के लिए सॉफ्टवेयर कायाकल्प को सक्रिय रूप से नियोजित किया जा सकता है क्योंकि अपरिहार्य उम्र बढ़ने से सॉफ्टवेयर | क्रैश या गिरावट को रोकने के लिए सॉफ्टवेयर कायाकल्प को सक्रिय रूप से नियोजित किया जा सकता है क्योंकि अपरिहार्य उम्र बढ़ने से सॉफ्टवेयर प्रणाली में विफलता होती है। 1990 के दशक में दोष-सहिष्णु सॉफ़्टवेयर पर एटी एंड टी बेल प्रयोगशालाओं में शोध के समय इस सक्रिय तकनीक की पहचान लागत प्रभावी समाधान के रूप में की गई थी।<ref>Cotroneo, D., Natella, R., Pietrantuono, R., and Russo, S. 2014. A survey of software aging and rejuvenation studies. ACM J. Emerg. Technol. Comput. Syst. 10, 1, Article 8 (January 2014), 34 pages.</ref> सॉफ्टवेयर कायाकल्प संचित त्रुटि स्थितियों को दूर करके और प्रणाली संसाधनों को मुक्त करके काम करता है, उदाहरण के लिए ऑपरेटिंग प्रणाली कर्नेल टेबल को फ्लश करके, कचरा संग्रह का उपयोग करके, आंतरिक डेटा संरचनाओं को फिर से प्रारंभ करना, और शायद सबसे प्रसिद्ध कायाकल्प विधि प्रणाली को रिबूट करना है। | ||
कायाकल्प प्राप्त करने के लिए सरल तकनीकें और जटिल तकनीकें हैं। अधिकांश व्यक्ति जिस विधि से परिचित हैं वह हार्डवेयर या सॉफ्टवेयर रिबूट (कंप्यूटिंग) है। एक अधिक तकनीकी उदाहरण [[वेब सर्वर]] सॉफ्टवेयर अपाचे की कायाकल्प विधि होगी। अपाचे एचटीटीपी सर्वर एक निश्चित संख्या में अनुरोधों को पूरा करने के बाद प्रक्रियाओं को मारकर और फिर से बनाकर कायाकल्प का एक रूप प्रयुक्त करता है।<ref>Trivedi, K. S. and Vaidyanathan, K. 2007. Software Aging and Rejuvenation. Wiley Encyclopedia of Computer Science and Engineering.</ref> | |||
एक अन्य तकनीक [[क्लाउड कम्प्यूटिंग]] वातावरण में चल रही [[आभासी मशीन]]ों को पुनः आरंभ करना है।<ref>{{Cite journal | doi=10.1109/TC.2013.30|title = Workload-Based Software Rejuvenation in Cloud Systems| journal=IEEE Transactions on Computers| volume=62| issue=6| pages=1072–1085|year = 2013|last1 = Bruneo|first1 = Dario| last2=Distefano| first2=Salvatore| last3=Longo| first3=Francesco| last4=Puliafito| first4=Antonio| last5=Scarpa| first5=Marco|s2cid = 23981532}}</ref> | एक अन्य तकनीक [[क्लाउड कम्प्यूटिंग]] वातावरण में चल रही [[आभासी मशीन]]ों को पुनः आरंभ करना है।<ref>{{Cite journal | doi=10.1109/TC.2013.30|title = Workload-Based Software Rejuvenation in Cloud Systems| journal=IEEE Transactions on Computers| volume=62| issue=6| pages=1072–1085|year = 2013|last1 = Bruneo|first1 = Dario| last2=Distefano| first2=Salvatore| last3=Longo| first3=Francesco| last4=Puliafito| first4=Antonio| last5=Scarpa| first5=Marco|s2cid = 23981532}}</ref> | ||
बहुराष्ट्रीय दूरसंचार निगम एटी एंड टी ने अधिकांश टेलीफोन एक्सचेंजों के लिए संयुक्त राज्य अमेरिका में बिलिंग डेटा एकत्र करने वाली वास्तविक समय प्रणाली में सॉफ्टवेयर कायाकल्प | |||
सॉफ्टवेयर कायाकल्प विधियों को नियोजित करने वाली कुछ प्रणालियों में | बहुराष्ट्रीय दूरसंचार निगम एटी एंड टी ने अधिकांश टेलीफोन एक्सचेंजों के लिए संयुक्त राज्य अमेरिका में बिलिंग डेटा एकत्र करने वाली वास्तविक समय प्रणाली में सॉफ्टवेयर कायाकल्प प्रयुक्त किया है।<ref>{{Cite book|title = Software Rejuvenation - Modeling and Analysis|publisher = Springer US|date = 2004-01-01|isbn = 978-1-4020-8158-3|pages = 151–182|series = IFIP International Federation for Information Processing|doi = 10.1007/1-4020-8159-6_6|first1 = Kishor S.|last1 = Trivedi|first2 = Kalyanaraman|last2 = Vaidyanathan|editor-first = Ricardo|editor-last = Reis}}</ref> | ||
सॉफ्टवेयर कायाकल्प विधियों को नियोजित करने वाली कुछ प्रणालियों में सम्मिलित हैं:<ref>{{Cite book |doi = 10.1109/ISESE.2002.1166929 |isbn = 978-0-7695-1796-4|chapter = An approach for estimation of software aging in a Web server|title = Proceedings International Symposium on Empirical Software Engineering|pages = 91–100|year = 2002|last1 = Lei Li|last2 = Vaidyanathan|first2 = K.|last3 = Trivedi|first3 = K.S.|s2cid = 8170010}}</ref> | |||
# लेनदेन प्रसंस्करण प्रणाली | # लेनदेन प्रसंस्करण प्रणाली | ||
# वेब सर्वर | # वेब सर्वर | ||
# अंतरिक्ष यान प्रणाली | # अंतरिक्ष यान प्रणाली | ||
सॉफ़्टवेयर विश्वसनीयता इंजीनियरिंग ( | सॉफ़्टवेयर विश्वसनीयता इंजीनियरिंग (आईएसएसआरई) पर [[IEEE|आईईईई]] अंतर्राष्ट्रीय संगोष्ठी ने 2013 में सॉफ़्टवेयर एजिंग और कायाकल्प पर 5वीं वार्षिक अंतर्राष्ट्रीय कार्यशाला ([https://sites.google.com/site/wosar2013/home woSAR]) की होस्टिंग की। विषयों में सम्मिलित हैं: | ||
* कायाकल्प तंत्र का डिजाइन, कार्यान्वयन और मूल्यांकन | * कायाकल्प तंत्र का डिजाइन, कार्यान्वयन और मूल्यांकन | ||
* कायाकल्प शेड्यूलिंग का मॉडलिंग, विश्लेषण और कार्यान्वयन | * कायाकल्प शेड्यूलिंग का मॉडलिंग, विश्लेषण और कार्यान्वयन | ||
Line 31: | Line 34: | ||
== मेमोरी लीक == | == मेमोरी लीक == | ||
{{main|Memory leak}} | {{main|Memory leak}} | ||
कुछ [[प्रोग्रामिंग भाषा]], जैसे C (प्रोग्रामिंग लैंग्वेज) और C ++, प्रोग्रामर को मेमोरी_मैनेजमेंट # HEAP आवंटित करने की अनुमति देती हैं। इसके अलावा, प्रोग्रामर को मेमोरी को खाली करने की आवश्यकता हो सकती है जब मेमोरी की आवश्यकता नहीं रह जाती है। स्मृति को मुक्त करना आवश्यक है क्योंकि कुछ [[ऑपरेटिंग सिस्टम]] (OS) एक [[प्रक्रिया (कंप्यूटिंग)]] समाप्त होने पर कचरा संग्रहण (कंप्यूटर विज्ञान) नहीं करते हैं। समय के साथ, यह अधिक से अधिक स्मृति का उपभोग करने की संभावना है, अंततः कंप्यूटर को स्मृति से बाहर चलाने का कारण बनता है।<ref>{{Cite web|title = Overview of Memory Leaks|url = https://msdn.microsoft.com/en-us/library/ms859408.aspx|website = msdn.microsoft.com|accessdate = 2015-11-04}}</ref> कम मेमोरी की स्थिति में, कंप्यूटर | कुछ [[प्रोग्रामिंग भाषा]], जैसे C (प्रोग्रामिंग लैंग्वेज) और C ++, प्रोग्रामर को मेमोरी_मैनेजमेंट # HEAP आवंटित करने की अनुमति देती हैं। इसके अलावा, प्रोग्रामर को मेमोरी को खाली करने की आवश्यकता हो सकती है जब मेमोरी की आवश्यकता नहीं रह जाती है। स्मृति को मुक्त करना आवश्यक है क्योंकि कुछ [[ऑपरेटिंग सिस्टम|ऑपरेटिंग प्रणाली]] (OS) एक [[प्रक्रिया (कंप्यूटिंग)]] समाप्त होने पर कचरा संग्रहण (कंप्यूटर विज्ञान) नहीं करते हैं। समय के साथ, यह अधिक से अधिक स्मृति का उपभोग करने की संभावना है, अंततः कंप्यूटर को स्मृति से बाहर चलाने का कारण बनता है।<ref>{{Cite web|title = Overview of Memory Leaks|url = https://msdn.microsoft.com/en-us/library/ms859408.aspx|website = msdn.microsoft.com|accessdate = 2015-11-04}}</ref> कम मेमोरी की स्थिति में, कंप्यूटर सामान्यतः तीव्र [[पेजिंग]] और [[पिटाई (कंप्यूटर विज्ञान)]] के कारण धीमी गति से काम करता है। जब ऐसा होता है, तो एप्लिकेशन सुस्त या अनुत्तरदायी भी हो जाते हैं। यदि कंप्यूटर मेमोरी और स्वैप स्पेस दोनों से बाहर हो जाता है, तो ओएस स्वचालित रूप से रीबूट हो सकता है - या इससे भी बदतर हैंग हो सकता है।<ref>{{cite web|url=https://www.ibm.com/developerworks/aix/library/au-aix7memoryoptimize3/index.html|title=Optimizing AIX 7 memory performance Part 3, Tuning swap space settings|author1=Martin Brown|author2=Ken Milberg|website=[[IBM]] |date=16 November 2010}}</ref> | ||
प्रोग्रामिंग लैंग्वेज में लिखे प्रोग्राम जो कचरा संग्राहक (जैसे [[जावा (प्रोग्रामिंग भाषा)]]) का उपयोग करते हैं, मेमोरी लीक होने का खतरा नहीं है। | प्रोग्रामिंग लैंग्वेज में लिखे प्रोग्राम जो कचरा संग्राहक (जैसे [[जावा (प्रोग्रामिंग भाषा)]]) का उपयोग करते हैं, मेमोरी लीक होने का खतरा नहीं है। | ||
Line 39: | Line 42: | ||
== कार्यान्वयन == | == कार्यान्वयन == | ||
{{Unreferenced section|date=March 2017}} | {{Unreferenced section|date=March 2017}} | ||
कायाकल्प को | कायाकल्प को प्रयुक्त करने के दो तरीके हैं: | ||
# समय आधारित कायाकल्प | # समय आधारित कायाकल्प | ||
# भविष्यवाणी आधारित कायाकल्प | # भविष्यवाणी आधारित कायाकल्प | ||
Line 45: | Line 48: | ||
== मेमोरी ब्लोटिंग == | == मेमोरी ब्लोटिंग == | ||
{{Main|Garbage collection (computer science)}} | {{Main|Garbage collection (computer science)}} | ||
कचरा संग्रह स्वचालित मेमोरी प्रबंधन का एक रूप है जिससे | कचरा संग्रह स्वचालित मेमोरी प्रबंधन का एक रूप है जिससे प्रणाली स्वचालित रूप से अप्रयुक्त मेमोरी को पुनः प्राप्त करता है। उदाहरण के लिए, .NET फ्रेमवर्क इसके अंतर्गत चलने वाले सॉफ़्टवेयर के लिए मेमोरी के आवंटन और रिलीज़ का प्रबंधन करता है। लेकिन स्वचालित रूप से इन वस्तुओं को ट्रैक करने में समय लगता है और यह सही नहीं है। | ||
.NET आधारित वेब सेवाएँ ढेर, अप्रबंधित और प्रबंधित हीप (मुक्त स्थान) जैसी कई तार्किक प्रकार की मेमोरी का प्रबंधन करती हैं। जैसे ही भौतिक मेमोरी भर जाती है, ओएस डिस्क पर शायद ही कभी इस्तेमाल किए गए हिस्सों को लिखता है, ताकि वह इसे किसी अन्य एप्लिकेशन में पुनः आवंटित कर सके, एक प्रक्रिया जिसे पेजिंग या स्वैपिंग के रूप में जाना जाता है। लेकिन अगर स्मृति का उपयोग करने की आवश्यकता है, तो इसे डिस्क से पुनः लोड किया जाना चाहिए। यदि कई एप्लिकेशन बड़ी मांग कर रहे हैं, तो OS अपना अधिकांश समय केवल मुख्य मेमोरी और डिस्क के बीच डेटा ले जाने में खर्च कर सकता है, एक प्रक्रिया जिसे [[डिस्क थ्रैशिंग]] के रूप में जाना जाता है।<ref>{{Cite journal|title = Software Rejuvenation in Web Services|journal = International Journal of Computer Applications|pages = 31–35|volume = 54|issue = 8|doi = 10.5120/8589-2340|first1 = Chaitra|last1 = S.R.|first2 = Anirban|last2 = Basu|year = 2012|bibcode = 2012IJCA...54h..31S|doi-access = free}}</ref> चूंकि कूड़ा उठाने वाले को यह तय करने के लिए सभी आवंटनों की जांच करनी है कि कौन से उपयोग में हैं, यह इस थ्रैशिंग को बढ़ा सकता है। नतीजतन, व्यापक अदला-बदली से मिलीसेकंड से लेकर दसियों सेकंड तक कचरा संग्रह चक्र हो सकता है। इसके परिणामस्वरूप प्रयोज्यता की समस्या होती है। | .NET आधारित वेब सेवाएँ ढेर, अप्रबंधित और प्रबंधित हीप (मुक्त स्थान) जैसी कई तार्किक प्रकार की मेमोरी का प्रबंधन करती हैं। जैसे ही भौतिक मेमोरी भर जाती है, ओएस डिस्क पर शायद ही कभी इस्तेमाल किए गए हिस्सों को लिखता है, ताकि वह इसे किसी अन्य एप्लिकेशन में पुनः आवंटित कर सके, एक प्रक्रिया जिसे पेजिंग या स्वैपिंग के रूप में जाना जाता है। लेकिन अगर स्मृति का उपयोग करने की आवश्यकता है, तो इसे डिस्क से पुनः लोड किया जाना चाहिए। यदि कई एप्लिकेशन बड़ी मांग कर रहे हैं, तो OS अपना अधिकांश समय केवल मुख्य मेमोरी और डिस्क के बीच डेटा ले जाने में खर्च कर सकता है, एक प्रक्रिया जिसे [[डिस्क थ्रैशिंग]] के रूप में जाना जाता है।<ref>{{Cite journal|title = Software Rejuvenation in Web Services|journal = International Journal of Computer Applications|pages = 31–35|volume = 54|issue = 8|doi = 10.5120/8589-2340|first1 = Chaitra|last1 = S.R.|first2 = Anirban|last2 = Basu|year = 2012|bibcode = 2012IJCA...54h..31S|doi-access = free}}</ref> चूंकि कूड़ा उठाने वाले को यह तय करने के लिए सभी आवंटनों की जांच करनी है कि कौन से उपयोग में हैं, यह इस थ्रैशिंग को बढ़ा सकता है। नतीजतन, व्यापक अदला-बदली से मिलीसेकंड से लेकर दसियों सेकंड तक कचरा संग्रह चक्र हो सकता है। इसके परिणामस्वरूप प्रयोज्यता की समस्या होती है। |
Revision as of 18:15, 27 February 2023
Template:Specific सॉफ़्टवेयर इंजीनियरिंग में, सॉफ़्टवेयर उम्र बढ़ने की प्रवृत्ति सॉफ़्टवेयर की सॉफ़्टवेयर विफलता या एक निश्चित समय के लिए लगातार चलने के बाद प्रणाली विफलता का कारण बनती है, या सॉफ़्टवेयर के आस-पास के प्रणाली में चल रहे परिवर्तनों के कारण होती है। सॉफ्टवेयर की विफलता बढ़ने के कई कारण हैं, जिसमें पुराने सॉफ़्टवेयर की अक्षमता (कंप्यूटर विज्ञान) को बदलती आवश्यकताओं या बदलते प्रौद्योगिकी प्लेटफार्मों के लिए अक्षमता, और आगे की त्रुटियों को प्रस्तुत करने के लिए सॉफ्टवेयर पैच की प्रवृत्ति सम्मिलित है। जैसे-जैसे सॉफ्टवेयर पुराना होता जाता है, यह अपने उद्देश्य के लिए कम अनुकूल होता जाता है और अंततः यह काम करना बंद कर देगा जैसा कि इसे करना चाहिए। रिबूट (कंप्यूटिंग) या स्थापना (कंप्यूटर प्रोग्राम) सॉफ्टवेयर एक अल्पकालिक फिक्स के रूप में कार्य कर सकता है।[1] सॉफ्टवेयर उम्र बढ़ने की घटना से निपटने के लिए एक सक्रिय दोष प्रबंधन पद्धति सॉफ्टवेयर कायाकल्प है। इस पद्धति को एक पर्यावरण विविधता तकनीक के रूप में वर्गीकृत किया जा सकता है जिसे सामान्यतः सॉफ्टवेयर कायाकल्प एजेंटों (एसआरए) के माध्यम से कार्यान्वित किया जाता है।
इस घटना की पहली बार डेविड पारनास ने एक निबंध में पहचान की थी, जिसने यह पता लगाया था कि इसके बारे में क्या करना है:[2]
प्रोग्राम, लोगों की तरह, पुराने हो जाते हैं। हम उम्र बढ़ने को नहीं रोक सकते, लेकिन हम इसके कारणों को समझ सकते हैं, इसके प्रभावों को सीमित करने के लिए कदम उठा सकते हैं, इससे होने वाली कुछ क्षति को अस्थायी रूप से उलट सकते हैं, और उस दिन के लिए तैयार हो सकते हैं जब सॉफ्टवेयर अब व्यवहार्य नहीं रहेगा। </ब्लॉककोट>
शैक्षिक और औद्योगिक दोनों दृष्टियों से, सॉफ्टवेयर उम्र बढ़ने की घटना में वृद्धि हुई है। हाल के शोध ने इसके कारणों और प्रभावों को स्पष्ट करने पर ध्यान केंद्रित किया है।[3] सॉफ्टवेयर ब्लोट और स्मृति रिसाव, डेटा भ्रष्टाचार और अप्रकाशित फाइल लॉकिंग के साथ। फ़ाइल-लॉक सॉफ़्टवेयर उम्र बढ़ने के विशेष कारण हैं।
सॉफ्टवेयर उम्र बढ़ने का सक्रिय प्रबंधन
सॉफ्टवेयर उम्र बढ़ने
हार्डवेयर विफलताओं की तुलना में सॉफ़्टवेयर विफलताएँ अनियोजित प्रणाली आउटेज का अधिक संभावित कारण हैं।[4][5] ऐसा इसलिए है क्योंकि डेटा भ्रष्टाचार, संख्यात्मक त्रुटि संचय और असीमित संसाधन खपत के कारण सॉफ्टवेयर समय के साथ बढ़ती विफलता दर प्रदर्शित करता है। व्यापक रूप से उपयोग किए जाने वाले और विशेष सॉफ़्टवेयर में, किसी समस्या को दूर करने के लिए एक सामान्य क्रिया रीबूटिंग है क्योंकि सॉफ्टवेयर की जटिलता के कारण उम्र बढ़ने लगती है जो कभी भी त्रुटियों से मुक्त नहीं होती है। यह पूरी तरह से सत्यापित करना लगभग असंभव है कि सॉफ्टवेयर का एक टुकड़ा बग-मुक्त है। यहां तक कि हाई-प्रोफाइल सॉफ्टवेयर जैसे कि माइक्रोसॉफ़्ट विंडोज़ और ओएस एक्स को प्रदर्शन में सुधार और बग को ठीक करने के लिए लगातार अपडेट प्राप्त करना चाहिए। सॉफ्टवेयर विकास दीर्घकालिक विश्वसनीयता सुनिश्चित करने के अतिरिक्त रिलीज की समय सीमा को पूरा करने की आवश्यकता से प्रेरित होता है।[6] डिजाइनिंग सॉफ्टवेयर जो उम्र बढ़ने से प्रतिरक्षित हो सकता है, कठिन है। सभी सॉफ़्टवेयर समान दर से पुराने नहीं होंगे क्योंकि कुछ उपयोगकर्ता दूसरों की तुलना में प्रणाली का अधिक तीव्रता से उपयोग करते हैं।[7]
कायाकल्प
क्रैश या गिरावट को रोकने के लिए सॉफ्टवेयर कायाकल्प को सक्रिय रूप से नियोजित किया जा सकता है क्योंकि अपरिहार्य उम्र बढ़ने से सॉफ्टवेयर प्रणाली में विफलता होती है। 1990 के दशक में दोष-सहिष्णु सॉफ़्टवेयर पर एटी एंड टी बेल प्रयोगशालाओं में शोध के समय इस सक्रिय तकनीक की पहचान लागत प्रभावी समाधान के रूप में की गई थी।[8] सॉफ्टवेयर कायाकल्प संचित त्रुटि स्थितियों को दूर करके और प्रणाली संसाधनों को मुक्त करके काम करता है, उदाहरण के लिए ऑपरेटिंग प्रणाली कर्नेल टेबल को फ्लश करके, कचरा संग्रह का उपयोग करके, आंतरिक डेटा संरचनाओं को फिर से प्रारंभ करना, और शायद सबसे प्रसिद्ध कायाकल्प विधि प्रणाली को रिबूट करना है।
कायाकल्प प्राप्त करने के लिए सरल तकनीकें और जटिल तकनीकें हैं। अधिकांश व्यक्ति जिस विधि से परिचित हैं वह हार्डवेयर या सॉफ्टवेयर रिबूट (कंप्यूटिंग) है। एक अधिक तकनीकी उदाहरण वेब सर्वर सॉफ्टवेयर अपाचे की कायाकल्प विधि होगी। अपाचे एचटीटीपी सर्वर एक निश्चित संख्या में अनुरोधों को पूरा करने के बाद प्रक्रियाओं को मारकर और फिर से बनाकर कायाकल्प का एक रूप प्रयुक्त करता है।[9]
एक अन्य तकनीक क्लाउड कम्प्यूटिंग वातावरण में चल रही आभासी मशीनों को पुनः आरंभ करना है।[10]
बहुराष्ट्रीय दूरसंचार निगम एटी एंड टी ने अधिकांश टेलीफोन एक्सचेंजों के लिए संयुक्त राज्य अमेरिका में बिलिंग डेटा एकत्र करने वाली वास्तविक समय प्रणाली में सॉफ्टवेयर कायाकल्प प्रयुक्त किया है।[11]
सॉफ्टवेयर कायाकल्प विधियों को नियोजित करने वाली कुछ प्रणालियों में सम्मिलित हैं:[12]
- लेनदेन प्रसंस्करण प्रणाली
- वेब सर्वर
- अंतरिक्ष यान प्रणाली
सॉफ़्टवेयर विश्वसनीयता इंजीनियरिंग (आईएसएसआरई) पर आईईईई अंतर्राष्ट्रीय संगोष्ठी ने 2013 में सॉफ़्टवेयर एजिंग और कायाकल्प पर 5वीं वार्षिक अंतर्राष्ट्रीय कार्यशाला (woSAR) की होस्टिंग की। विषयों में सम्मिलित हैं:
- कायाकल्प तंत्र का डिजाइन, कार्यान्वयन और मूल्यांकन
- कायाकल्प शेड्यूलिंग का मॉडलिंग, विश्लेषण और कार्यान्वयन
- सॉफ्टवेयर कायाकल्प बेंचमार्क (कंप्यूटिंग)
मेमोरी लीक
कुछ प्रोग्रामिंग भाषा, जैसे C (प्रोग्रामिंग लैंग्वेज) और C ++, प्रोग्रामर को मेमोरी_मैनेजमेंट # HEAP आवंटित करने की अनुमति देती हैं। इसके अलावा, प्रोग्रामर को मेमोरी को खाली करने की आवश्यकता हो सकती है जब मेमोरी की आवश्यकता नहीं रह जाती है। स्मृति को मुक्त करना आवश्यक है क्योंकि कुछ ऑपरेटिंग प्रणाली (OS) एक प्रक्रिया (कंप्यूटिंग) समाप्त होने पर कचरा संग्रहण (कंप्यूटर विज्ञान) नहीं करते हैं। समय के साथ, यह अधिक से अधिक स्मृति का उपभोग करने की संभावना है, अंततः कंप्यूटर को स्मृति से बाहर चलाने का कारण बनता है।[13] कम मेमोरी की स्थिति में, कंप्यूटर सामान्यतः तीव्र पेजिंग और पिटाई (कंप्यूटर विज्ञान) के कारण धीमी गति से काम करता है। जब ऐसा होता है, तो एप्लिकेशन सुस्त या अनुत्तरदायी भी हो जाते हैं। यदि कंप्यूटर मेमोरी और स्वैप स्पेस दोनों से बाहर हो जाता है, तो ओएस स्वचालित रूप से रीबूट हो सकता है - या इससे भी बदतर हैंग हो सकता है।[14] प्रोग्रामिंग लैंग्वेज में लिखे प्रोग्राम जो कचरा संग्राहक (जैसे जावा (प्रोग्रामिंग भाषा)) का उपयोग करते हैं, मेमोरी लीक होने का खतरा नहीं है।
कभी-कभी OS के महत्वपूर्ण घटक ही मेमोरी लीक का स्रोत हो सकते हैं। उदाहरण के लिए, माइक्रोसॉफ्ट विंडोज में, विंडोज़ एक्सप्लोरर प्लग-इन का मेमोरी उपयोग उपलब्ध मेमोरी को पूरे कंप्यूटर को अनुपयोगी बनाने की स्थिति में ले जा सकता है। रीबूट की आवश्यकता हो सकती है।[15]
कार्यान्वयन
This section does not cite any sources. (March 2017) (Learn how and when to remove this template message)कायाकल्प को प्रयुक्त करने के दो तरीके हैं:
- समय आधारित कायाकल्प
- भविष्यवाणी आधारित कायाकल्प
मेमोरी ब्लोटिंग
कचरा संग्रह स्वचालित मेमोरी प्रबंधन का एक रूप है जिससे प्रणाली स्वचालित रूप से अप्रयुक्त मेमोरी को पुनः प्राप्त करता है। उदाहरण के लिए, .NET फ्रेमवर्क इसके अंतर्गत चलने वाले सॉफ़्टवेयर के लिए मेमोरी के आवंटन और रिलीज़ का प्रबंधन करता है। लेकिन स्वचालित रूप से इन वस्तुओं को ट्रैक करने में समय लगता है और यह सही नहीं है।
.NET आधारित वेब सेवाएँ ढेर, अप्रबंधित और प्रबंधित हीप (मुक्त स्थान) जैसी कई तार्किक प्रकार की मेमोरी का प्रबंधन करती हैं। जैसे ही भौतिक मेमोरी भर जाती है, ओएस डिस्क पर शायद ही कभी इस्तेमाल किए गए हिस्सों को लिखता है, ताकि वह इसे किसी अन्य एप्लिकेशन में पुनः आवंटित कर सके, एक प्रक्रिया जिसे पेजिंग या स्वैपिंग के रूप में जाना जाता है। लेकिन अगर स्मृति का उपयोग करने की आवश्यकता है, तो इसे डिस्क से पुनः लोड किया जाना चाहिए। यदि कई एप्लिकेशन बड़ी मांग कर रहे हैं, तो OS अपना अधिकांश समय केवल मुख्य मेमोरी और डिस्क के बीच डेटा ले जाने में खर्च कर सकता है, एक प्रक्रिया जिसे डिस्क थ्रैशिंग के रूप में जाना जाता है।[16] चूंकि कूड़ा उठाने वाले को यह तय करने के लिए सभी आवंटनों की जांच करनी है कि कौन से उपयोग में हैं, यह इस थ्रैशिंग को बढ़ा सकता है। नतीजतन, व्यापक अदला-बदली से मिलीसेकंड से लेकर दसियों सेकंड तक कचरा संग्रह चक्र हो सकता है। इसके परिणामस्वरूप प्रयोज्यता की समस्या होती है।
यह भी देखें
संदर्भ
- ↑ Shereshevsky, M.; Crowell, J.; Cukic, B.; Gandikota, V.; Yan Liu (2003). "Software aging and multifractality of memory resources". 2003 International Conference on Dependable Systems and Networks, 2003. Proceedings. pp. 721–730. doi:10.1109/DSN.2003.1209987. ISBN 978-0-7695-1952-4. S2CID 18697750.
- ↑ Parnas, D.L. (1994). "Software aging". Proceedings of 16th International Conference on Software Engineering. pp. 279–287. doi:10.1109/ICSE.1994.296790. ISBN 978-0-8186-5855-6. S2CID 790287.
- ↑ Grottke, Michael; Matias, Rivalino; Trivedi, Kishor S. (2008). "The fundamentals of software aging". 2008 IEEE International Conference on Software Reliability Engineering Workshops (ISSRE WKSP). pp. 1–6. doi:10.1109/ISSREW.2008.5355512. ISBN 978-1-4244-3416-9. S2CID 11527276.
- ↑ "Oatd: -".
- ↑ Garg, S.; Van Moorsel, A.; Vaidyanathan, K.; Trivedi, K.S. (1998). "A methodology for detection and estimation of software aging". Proceedings Ninth International Symposium on Software Reliability Engineering (Cat. No.98TB100257). pp. 283–292. doi:10.1109/ISSRE.1998.730892. ISBN 978-0-8186-8991-8. S2CID 8696313.
- ↑ Castelli, V.; Harper, R.E.; Heidelberger, P.; Hunter, S.W.; Trivedi, K.S.; Vaidyanathan, K.; Zeggert, W.P. (2001-03-01). "Proactive management of software aging". IBM Journal of Research and Development. 45 (2): 311–332. CiteSeerX 10.1.1.28.7273. doi:10.1147/rd.452.0311. ISSN 0018-8646.
- ↑ Gross, K.C.; Bhardwaj, V.; Bickford, R. (2003). "Proactive detection of software aging mechanisms in performance critical computers". 27th Annual NASA Goddard/IEEE Software Engineering Workshop, 2002. Proceedings. pp. 17–23. doi:10.1109/SEW.2002.1199445. ISBN 978-0-7695-1855-8. S2CID 17167955.
- ↑ Cotroneo, D., Natella, R., Pietrantuono, R., and Russo, S. 2014. A survey of software aging and rejuvenation studies. ACM J. Emerg. Technol. Comput. Syst. 10, 1, Article 8 (January 2014), 34 pages.
- ↑ Trivedi, K. S. and Vaidyanathan, K. 2007. Software Aging and Rejuvenation. Wiley Encyclopedia of Computer Science and Engineering.
- ↑ Bruneo, Dario; Distefano, Salvatore; Longo, Francesco; Puliafito, Antonio; Scarpa, Marco (2013). "Workload-Based Software Rejuvenation in Cloud Systems". IEEE Transactions on Computers. 62 (6): 1072–1085. doi:10.1109/TC.2013.30. S2CID 23981532.
- ↑ Trivedi, Kishor S.; Vaidyanathan, Kalyanaraman (2004-01-01). Reis, Ricardo (ed.). Software Rejuvenation - Modeling and Analysis. IFIP International Federation for Information Processing. Springer US. pp. 151–182. doi:10.1007/1-4020-8159-6_6. ISBN 978-1-4020-8158-3.
- ↑ Lei Li; Vaidyanathan, K.; Trivedi, K.S. (2002). "An approach for estimation of software aging in a Web server". Proceedings International Symposium on Empirical Software Engineering. pp. 91–100. doi:10.1109/ISESE.2002.1166929. ISBN 978-0-7695-1796-4. S2CID 8170010.
- ↑ "Overview of Memory Leaks". msdn.microsoft.com. Retrieved 2015-11-04.
- ↑ Martin Brown; Ken Milberg (16 November 2010). "Optimizing AIX 7 memory performance Part 3, Tuning swap space settings". IBM.
- ↑ "Preventing Memory Leaks in Windows Applications (Windows)". msdn.microsoft.com. Retrieved 2015-11-04.
- ↑ S.R., Chaitra; Basu, Anirban (2012). "Software Rejuvenation in Web Services". International Journal of Computer Applications. 54 (8): 31–35. Bibcode:2012IJCA...54h..31S. doi:10.5120/8589-2340.
अग्रिम पठन
- R. Matias Jr. and P. J. Freitas Filho, "An experimental study on software aging and rejuvenation in web servers," Proceedings of the 30th Annual International Computer Software and Applications Conference (COMPSAC'06), Vol. 01, pp. 189 – 196, 2006.
- M. Grottke, R. Matias Jr., and K. S. Trivedi, "The Fundamentals of Software Aging," Workshop of Software Aging and Rejuvenation (WoSAR/ISSRE), 2008.
- R. Matias Jr, P. Barbetta, K. Trivedi, P. Freitas Filho "Accelerated Degradation Tests Applied to Software Aging Experiments," IEEE Transactions on Reliability 59(1): 102–114,2010.
- M. Grottke, L. Li, K. Vaidyanathan, and K.S. Trivedi, "Analysis of software aging in a web server," IEEE Transactions on Reliability, vol. 55, no. 3, pp. 411–420, 2006.
- M. Grottke, K. Trivedi, "Fighting Bugs: Remove, Retry, Replicate, and Rejuvenate," IEEE Computer 40(2): 107–109, 2007.
- More papers on Proceedings of Workshop of Software Aging and Rejuvenation (WoSAR'08,'10, '11, '12, '13, '14) at IEEE Xplore.