आटोमेटिक बग फिक्सिंग
आटोमेटिक बग फिक्सिंग : स्वचालित बग-फिक्सिंग मानव प्रोग्रामर के हस्तक्षेप के बिना सॉफ़्टवेयर बग की स्वचालित मरम्मत है। इसे आमतौर पर स्वचालित पैच पीढ़ी, स्वचालित बग मरम्मत या स्वचालित प्रोग्राम मरम्मत के रूप में भी जाना जाता है। इस तरह की तकनीकों का विशिष्ट लक्ष्य सॉफ्टवेयर प्रोग्रामों में बगैर किसी बाधा के सॉफ्टवेयर प्रोग्राम में बग को खत्म करने के लिए स्वचालित रूप से सही पैच जेनरेट करना है। विशिष्टता: स्वचालित बग फिक्सिंग अपेक्षित व्यवहार के विनिर्देश के अनुसार किया जाता है जो उदाहरण के लिए एक औपचारिक विनिर्देश या परीक्षण सूट हो सकता है। एक परीक्षण-सूट - इनपुट / आउटपुट जोड़े कार्यक्रम की कार्यक्षमता को निर्दिष्ट करते हैं, संभवतः खोज में ड्राइव करने के लिए एक परख के रूप में उपयोग किए जा सकते हैं। वास्तव में यह ओरण बग दोष के बीच विभाजित किया जा सकता है जो दोषपूर्ण व्यवहार को उजागर करता है, और प्रतिगमन ओरेकल, जो कार्यक्षमता को एन्क्रिप्ट करता है किसी भी कार्यक्रम की मरम्मत विधि को संरक्षित करना चाहिए। ध्यान दें कि एक परीक्षण सूट आमतौर पर अधूरा है और सभी संभावित मामलों को कवर नहीं करता है। इसलिए, एक मान्य पैच के लिए परीक्षण सूट में सभी इनपुट के लिए अपेक्षित आउटपुट का उत्पादन करना संभव है लेकिन अन्य इनपुट के लिए गलत आउटपुट। इस तरह के मान्य लेकिन गलत पैच का अस्तित्व उत्पन्न-और-मान्य तकनीकों के लिए एक बड़ी चुनौती है। हाल ही में सफल स्वचालित बग-फिक्सिंग तकनीक अक्सर परीक्षण सूट के अलावा अन्य अतिरिक्त जानकारी पर निर्भर करती है, जैसे कि पिछले मानव पैच से सीखी गई जानकारी, मान्य पैच के बीच सही पैच की पहचान करने के लिए। अपेक्षित व्यवहार को निर्दिष्ट करने का एक अन्य तरीका औपचारिक विनिर्देशों का उपयोग करना है पूर्ण विनिर्देशों के खिलाफ सत्यापन जो कार्यात्मकताओं सहित पूरे कार्यक्रम के व्यवहार को निर्दिष्ट करता है, कम आम है क्योंकि ऐसे विनिर्देश आमतौर पर व्यवहार में उपलब्ध नहीं होते हैं और इस तरह के सत्यापन की गणना लागत है निषेधात्मक। तकनीक: जनरेट और मान्य: जेनरेट-एंड-वैलिडेट प्रत्येक परीक्षित पैच को इकट्ठा करने के लिए प्रत्येक उम्मीदवार पैच का संकलन और परीक्षण करते हैं जो टेस्ट सूट में सभी इनपुट के लिए अपेक्षित आउटपुट उत्पन्न करते हैं।इस तरह की तकनीक आम तौर पर कार्यक्रम के एक परीक्षण सूट के साथ शुरू होती है, अर्थात्, परीक्षण मामलों का एक सेट, जिसमें से कम से कम एक बग को उजागर करता है। बग-फिक्सिंग प्रणाली के आरंभिक और मान्य जेनरोग्रॉग हैं। जेनरेट-एंड-वैलिड तकनीकों की प्रभावशीलता विवादास्पद बनी हुई है, क्योंकि वे आम तौर पर पैच शुद्धता की गारंटी नहीं देते हैं। फिर भी, हाल ही में अत्याधुनिक तकनीकों के कथित परिणाम आम तौर पर आशाजनक हैं। उदाहरण के लिए, आठ बड़े सी सॉफ़्टवेयर प्रोग्रामों में व्यवस्थित रूप से 69 वास्तविक विश्व कीड़े एकत्र किए गए, अत्याधुनिक बग-फिक्सिंग सिस्टम पैगंबर 69 बगों में से 18 के लिए सही पैच उत्पन्न करता है। उम्मीदवार पैच उत्पन्न करने का एक तरीका मूल कार्यक्रम पर म्यूटेशन ऑपरेटरों को लागू करना है। उत्परिवर्तन संचालक मूल कार्यक्रम में हेरफेर करते हैं, संभवतः इसके सार सिंटैक्स ट्री प्रतिनिधित्व के माध्यम से, या अधिक मोटे-दाने वाले प्रतिनिधित्व जैसे कि बयान-स्तर या ब्लॉक-स्तर पर काम करना। पहले आनुवांशिक सुधार के दृष्टिकोण बयान स्तर पर काम करते हैं और एक मौजूदा स्रोत को हटाने या एक ही स्रोत फ़ाइल में किसी अन्य कथन के साथ किसी मौजूदा कथन को बदलने के रूप में सरल हटा / प्रतिस्थापित संचालन करते हैं। हाल ही के दृष्टिकोण अभ्यर्थी पैच के अधिक विविध सेट उत्पन्न करने के लिए अमूर्त सिंटैक्स ट्री स्तर पर अधिक महीन दाने वाले ऑपरेटरों का उपयोग करते हैं। उम्मीदवार पैच उत्पन्न करने के लिए एक अन्य तरीका फिक्स टेम्प्लेट का उपयोग करना है। आमतौर पर बग्स के विशिष्ट वर्गों को ठीक करने के लिए फिक्स टेम्प्लेट पूर्वनिर्धारित परिवर्तन होते हैं। फिक्स टेम्प्लेट के उदाहरणों में यह जाँचने के लिए एक सशर्त विवरण सम्मिलित करना शामिल है कि क्या एक चर का मान शून्य पॉइंटर अपवाद को ठीक करने के लिए अशक्त है, या एक-एक कर त्रुटियों को ठीक करने के लिए एक पूर्णांक स्थिरांक को बदल रहा है। . जनरेट-एंड-वेरिफ़ाइड एप्रोच के लिए स्वचालित रूप से खदानों को ठीक करना भी संभव है। कई उत्पन्न-और-मान्य तकनीक अतिरेक अंतर्दृष्टि पर निर्भर करती हैं: पैच का कोड आवेदन में कहीं और पाया जा सकता है। यह विचार जेनप्रॉग प्रणाली में पेश कि