411 REFERENCE · Wikipedia
आटोमेटिक बग फिक्सिंग
Reference material by Wikipedia contributors. This retains its source identity and is not 411 news reporting.
सितंबर 2020
आटोमेटिक बग फिक्सिंग :
स्वचालित बग-फिक्सिंग मानव प्रोग्रामर के हस्तक्षेप के बिना सॉफ़्टवेयर बग की स्वचालित मरम्मत है।Rinard Martin C. 2008 Technical perspective Patching program errors Communications of the ACM 51 12 86 10.1145/1409360.1409381 Harman Mark 2010 Automated patching techniques https://archive.org/details/association-for-computing-machinery-communications_2010-05_53_5/page/108 Communications of the ACM 53 5 108 10.1145/1735223.1735248 इसे आमतौर पर स्वचालित पैच पीढ़ी, स्वचालित बग मरम्मत या स्वचालित प्रोग्राम मरम्मत के रूप में भी जाना जाता है। Monperrus Martin 2018 Automatic Software Repair ACM Computing Surveys 51 1 1–24 1807.00515 10.1145/3105906 Gazzola Luca Micucci Daniela Mariani Leonardo 2019 Automatic Software Repair: A Survey IEEE Transactions on Software Engineering 45 1 34–67 10.1109/TSE.2017.2755013 https://boa.unimib.it/bitstream/10281/184798/2/08089448_final.pdf 10281/184798 इस तरह की तकनीकों का विशिष्ट लक्ष्य सॉफ्टवेयर प्रोग्रामों में बगैर किसी बाधा के सॉफ्टवेयर प्रोग्राम में बग को खत्म करने के लिए स्वचालित रूप से सही पैच जेनरेट करना है। Tan Shin Hwei Roychoudhury Abhik 2015 relifix: Automated repair of software regressions 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering IEEE 471–482 10.1109/ICSE.2015.65 978-1-4799-1934-5
विशिष्टता:
स्वचालित बग फिक्सिंग अपेक्षित व्यवहार के विनिर्देश के अनुसार किया जाता है जो उदाहरण के लिए एक औपचारिक विनिर्देश या परीक्षण सूट हो सकता है। Proceedings of the 31st International Conference on Software Engineering Weimer Westley Nguyen ThanhVu Le Goues Claire Forrest Stephanie 2009 IEEE 978-1-4244-3453-4 364–374 Automatically finding patches using genetic programming 10.1.1.147.8995 10.1109/ICSE.2009.5070536
एक परीक्षण-सूट - इनपुट / आउटपुट जोड़े कार्यक्रम की कार्यक्षमता को निर्दिष्ट करते हैं, संभवतः खोज में ड्राइव करने के लिए एक परख के रूप में उपयोग किए जा सकते हैं। वास्तव में यह ओरण बग दोष के बीच विभाजित किया जा सकता है जो दोषपूर्ण व्यवहार को उजागर करता है, और प्रतिगमन ओरेकल, जो कार्यक्षमता को एन्क्रिप्ट करता है किसी भी कार्यक्रम की मरम्मत विधि को संरक्षित करना चाहिए। ध्यान दें कि एक परीक्षण सूट आमतौर पर अधूरा है और सभी संभावित मामलों को कवर नहीं करता है। इसलिए, एक मान्य पैच के लिए परीक्षण सूट में सभी इनपुट के लिए अपेक्षित आउटपुट का उत्पादन करना संभव है लेकिन अन्य इनपुट के लिए गलत आउटपुट। Proceedings of the 2015 International Symposium on Software Testing and Analysis Qi Zichao Long Fan Achour Sara Rinard Martin 2015 ACM 978-1-4503-3620-8 An Anlysis of Patch Plausibility and Correctness for Generate-and-Validate Patch Generation Systems 10.1.1.696.5616 10.1145/2771783.2771791 इस तरह के मान्य लेकिन गलत पैच का अस्तित्व उत्पन्न-और-मान्य तकनीकों के लिए एक बड़ी चुनौती है। हाल ही में सफल स्वचालित बग-फिक्सिंग तकनीक अक्सर परीक्षण सूट के अलावा अन्य अतिरिक्त जानकारी पर निर्भर करती है, जैसे कि पिछले मानव पैच से सीखी गई जानकारी, मान्य पैच के बीच सही पैच की पहचान करने के लिए। Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages Long Fan Rinard Martin 2016 ACM 978-1-4503-3549-2 298–312 Automatic patch generation by learning correct code 10.1145/2837614.2837617
अपेक्षित व्यवहार को निर्दिष्ट करने का एक अन्य तरीका औपचारिक विनिर्देशों का उपयोग करना है Pei Yu Furia Carlo A. Nordio Martin Wei Yi Meyer Bertrand Zeller Andreas May 2014 Automated Fixing of Programs with Contracts IEEE Transactions on Software Engineering 40 5 427–449 1403.1117 10.1109/TSE.2014.2312918 harv 2014arXiv1403.1117PContract-based Data Structure Repair Using Alloy 10.1.1.182.4390 पूर्ण विनिर्देशों के खिलाफ सत्यापन जो कार्यात्मकताओं सहित पूरे कार्यक्रम के व्यवहार को निर्दिष्ट करता है, कम आम है क्योंकि ऐसे विनिर्देश आमतौर पर व्यवहार में उपलब्ध नहीं होते हैं और इस तरह के सत्यापन की गणना लागत है निषेधात्मक।
तकनीक:
जनरेट और मान्य:
जेनरेट-एंड-वैलिडेट प्रत्येक परीक्षित पैच को इकट्ठा करने के लिए प्रत्येक उम्मीदवार पैच का संकलन और परीक्षण करते हैं जो टेस्ट सूट में सभी इनपुट के लिए अपेक्षित आउटपुट उत्पन्न करते हैं।इस तरह की तकनीक आम तौर पर कार्यक्रम के एक परीक्षण सूट के साथ शुरू होती है, अर्थात्, परीक्षण मामलों का एक सेट, जिसमें से कम से कम एक बग को उजागर करता है। Qi Yuhua Mao Xiaoguang Lei Yan Dai Ziying Wang Chengsong 2014 The Strength of Random Search on Automated Program Repair Proceedings of the 36th International Conference on Software Engineering ICSE 2014 Austin, Texas ACM 254–265 978-1-4503-2756-5 10.1145/2568225.2568254 harvLong Fan Rinard Martin 2015 Staged Program Repair with Condition Synthesis Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering ESEC/FSE 2015 Bergamo, Italy ACM 166–178 978-1-4503-3675-8 10.1145/2786805.2786811 harv 10.1.1.696.9059 बग-फिक्सिंग प्रणाली के आरंभिक और मान्य जेनरोग्रॉग हैं। जेनरेट-एंड-वैलिड तकनीकों की प्रभावशीलता विवादास्पद बनी हुई है, क्योंकि वे आम तौर पर पैच शुद्धता की गारंटी नहीं देते हैं। Proceedings of the 36th International Conference on Software Engineering Monperrus Martin 2014 ACM 978-1-4503-2756-5 ICSE 2014 New York, New York 234–242 A Critical Review of "Automatic Patch Generation Learned from Human-written Patches": Essay on the Problem Statement and the Evaluation of Automatic Software Repair 1408.2103 10.1145/2568225.2568324 harv फिर भी, हाल ही में अत्याधुनिक तकनीकों के कथित परिणाम आम तौर पर आशाजनक हैं। उदाहरण के लिए, आठ बड़े सी सॉफ़्टवेयर प्रोग्रामों में व्यवस्थित रूप से 69 वास्तविक विश्व कीड़े एकत्र किए गए, अत्याधुनिक बग-फिक्सिंग सिस्टम पैगंबर 69 बगों में से 18 के लिए सही पैच उत्पन्न करता है।
उम्मीदवार पैच उत्पन्न करने का एक तरीका मूल कार्यक्रम पर म्यूटेशन ऑपरेटरों को लागू करना है। उत्परिवर्तन संचालक मूल कार्यक्रम में हेरफेर करते हैं, संभवतः इसके सार सिंटैक्स ट्री प्रतिनिधित्व के माध्यम से, या अधिक मोटे-दाने वाले प्रतिनिधित्व जैसे कि बयान-स्तर या ब्लॉक-स्तर पर काम करना। पहले आनुवांशिक सुधार के दृष्टिकोण बयान स्तर पर काम करते हैं और एक मौजूदा स्रोत को हटाने या एक ही स्रोत फ़ाइल में किसी अन्य कथन के साथ किसी मौजूदा कथन को बदलने के रूप में सरल हटा / प्रतिस्थापित संचालन करते हैं। 2012 34th International Conference on Software Engineering (ICSE) Le Goues Claire Dewey-Vogt Michael Forrest Stephanie Weimer Westley 2012 IEEE 978-1-4673-1067-3 3–13 A Systematic Study of Automated Program Repair: Fixing 55 out of 105 Bugs for $8 Each 10.1.1.661.9690 10.1109/ICSE.2012.6227211 हाल ही के दृष्टिकोण अभ्यर्थी पैच के अधिक विविध सेट उत्पन्न करने के लिए अमूर्त सिंटैक्स ट्री स्तर पर अधिक महीन दाने वाले ऑपरेटरों का उपयोग करते हैं।
उम्मीदवार पैच उत्पन्न करने के लिए एक अन्य तरीका फिक्स टेम्प्लेट का उपयोग करना है। आमतौर पर बग्स के विशिष्ट वर्गों को ठीक करने के लिए फिक्स टेम्प्लेट पूर्वनिर्धारित परिवर्तन होते हैं। फिक्स टेम्प्लेट के उदाहरणों में यह जाँचने के लिए एक सशर्त विवरण सम्मिलित करना शामिल है कि क्या एक चर का मान शून्य पॉइंटर अपवाद को ठीक करने के लिए अशक्त है, या एक-एक कर त्रुटियों को ठीक करने के लिए एक पूर्णांक स्थिरांक को बदल रहा है। . जनरेट-एंड-वेरिफ़ाइड एप्रोच के लिए स्वचालित रूप से खदानों को ठीक करना भी संभव है। Martinez Matias Ultra-Large Repair Search Space with Automatically Mined Templates: The Cardumen Mode of Astor 2018 Search-Based Software Engineering 65–86 Springer International Publishing en 10.1007/978-3-319-99241-9_3 9783319992402 Monperrus Martin 1712.03854Koyuncu Anil Liu Kui Bissyandé Tegawendé F. Kim Dongsun Klein Jacques Monperrus Martin Le Traon Yves 2020 FixMiner: Mining relevant fix patterns for automated program repair Empirical Software Engineering en 10.1007/s10664-019-09780-z 1810.01791
कई उत्पन्न-और-मान्य तकनीक अतिरेक अंतर्दृष्टि पर निर्भर करती हैं: पैच का कोड आवेदन में कहीं और पाया जा सकता है। यह विचार जेनप्रॉग प्रणाली में पेश किया गया था, जहां एएसटी नोड्स के दो ऑपरेटर, इसके अलावा और प्रतिस्थापन, कहीं और से लिए गए कोड पर आधारित थे (यानी एक मौजूदा एएसटी नोड को जोड़ना)। इस विचार को आनुभविक रूप से मान्य किया गया है, दो स्वतंत्र अध्ययनों से पता चला है कि एक महत्वपूर्ण अनुपात (3% -17%) मौजूदा कोड से बना है। 10.1145/2591062.2591114 Do the fix ingredients already exist? An empirical inquiry into the redundancy assumptions of program repair approaches Proceedings of the 36th International Conference on Software Engineering 492–495 2014 Martinez Matias Weimer Westley Monperrus Martin 9781450327688 1403.6322 https://hal.archives-ouvertes.fr/hal-00965410/document 10.1145/2635868.2635898 The plastic surgery hypothesis Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering - FSE 2014 306–317 2014 Barr Earl T. Brun Yuriy Devanbu Premkumar Harman Mark Sarro Federica 9781450330565 10.1.1.646.9678 इस तथ्य से परे कि पुन: उपयोग करने के लिए कोड कहीं और मौजूद है, यह भी दिखाया गया है कि संभावित मरम्मत सामग्री का संदर्भ उपयोगी है: अक्सर, दाता संदर्भ प्राप्तकर्ता के संदर्भ के समान है। 10.1109/SANER.2019.8668043 1707.04742 978-1-7281-0591-8 Sorting and Transforming Program Repair Ingredients via Deep Learning Code Similarities 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER) 479–490 2019 White Martin Tufano Michele Martinez Matias Monperrus Martin Poshyvanyk Denys
संश्लेषण-आधारित:
मरम्मत तकनीक मौजूद हैं जो प्रतीकात्मक निष्पादन पर आधारित हैं। उदाहरण के लिए, सेमीफिक्स Proceedings of the 2013 International Conference on Software Engineering Nguyen Hoang Duong Thien Qi Dawei Roychoudhury Abhik Chandra Satish 2013 IEEE Press 978-1-4673-3076-3 ICSE '13' San Francisco, California 772–781 SemFix: Program Repair via Semantic Analysis harv मरम्मत की कमी को दूर करने के लिए प्रतीकात्मक निष्पादन का उपयोग करता है। एंजेलिक्स Proceedings of the 38th International Conference on Software Engineering, ICSE 2016, Austin, Texas, May 14-22, 2016 Mechtaev Sergey Yi Jooyong Roychoudhury Abhik 2016 691–701 Angelix: scalable multiline program patch synthesis via symbolic analysis harv ने बहुस्तरीय पैच से निपटने के लिए एंजेलिक वन की अवधारणा पेश की।
कुछ मान्यताओं के तहत, संश्लेषण समस्या के रूप में मरम्मत की समस्या का वर्णन करना संभव है। सेमीफिक्स and Nopol और नोपोल घटक-आधारित संश्लेषण का उपयोग करता है। Jha Susmit Gulwani Sumit Seshia Sanjit A. Tiwari Ashish 2010-05-01 Oracle-guided component-based program synthesis ACM 215–224 10.1145/1806799.1806833 9781605587196 http://techreports.lib.berkeley.edu/accessPages/EECS-2010-15.html डायनामोथ Durieux Thomas Monperrus Martin 2016-05-14 DynaMoth: dynamic code synthesis for automatic program repair 85–91 https://hal.archives-ouvertes.fr/hal-01279233/document 10.1145/2896921.2896931 DynaMoth 9781450341516 https://hal.archives-ouvertes.fr/hal-01279233/file/main.pdf गतिशील संश्लेषण का उपयोग करता है। Galenson Joel Reames Philip Bodik Rastislav Hartmann Björn Sen Koushik 2014-05-31 CodeHint: dynamic and interactive synthesis of code snippets ACM 653–663 10.1145/2568225.2568250 9781450327565 S3 Le Xuan-Bach D. Chu Duc-Hiep Lo David Le Goues Claire Visser Willem 2017-08-21 ACM 593–604 10.1145/3106237.3106309 Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering - ESEC/FSE 2017 9781450351058 सिंटेक्स-निर्देशित संश्लेषण पर आधारित है। 10.1109/fmcad.2013.6679385 9780983567837 10.1.1.377.2829 Syntax-guided synthesis 2013 Formal Methods in Computer-Aided Design 1–8 2013 Alur Rajeev Bodik Rastislav Juniwal Garvit Martin Milo M. K. Raghothaman Mukund Seshia Sanjit A. Singh Rishabh Solar-Lezama Armando Torlak Emina Udupa Abhishek सारचरेपइर Proceedings of the 2015 30th IEEE/ACM International Conference on Automated Software Engineering Ke Yalin Stolee Kathryn Le Goues Claire Brun Yuriy 2015 ACM 978-1-5090-0025-8 ASE 2015 Lincoln, Nebraska 295–306 Repairing Programs with Semantic Code Search 10.1109/ASE.2015.60 harv संभावित पैच को स म टी फॉर्मूले में परिवर्तित करता है और उम्मीदवार पैच को क्वेरी करता है जो पैच किए गए प्रोग्राम को सभी आपूर्ति किए गए परीक्षण मामलों को पास करने की अनुमति देता है।
डेटा-चालित:
मशीन सीखने की तकनीक स्वचालित बग-फिक्सिंग सिस्टम की प्रभावशीलता में सुधार कर सकती है। ऐसी तकनीकों का एक उदाहरण गिटहब और सोर्स फोर्ज में खुले स्रोत रिपॉजिटरी से एकत्र मानव डेवलपर्स से पिछले सफल पैच से सीखता है। इसके बाद सभी उत्पन्न उम्मीदवार पैच के बीच संभावित सही पैच को पहचानने और प्राथमिकता देने के लिए सीखा जानकारी का उपयोग करें। वैकल्पिक रूप से, पैच को सीधे मौजूदा स्रोतों से खनन किया जा सकता है। उदाहरण के दृष्टिकोण में दाता अनुप्रयोगों से खनन पैच शामिल हैं या क्यूए वेब साइटों से।
सीक्वेंस र एक-पंक्ति पैच उत्पन्न करने के लिए स्रोत कोड पर अनुक्रम से अनुक्रम सीखने का उपयोग करता है। Chen Zimin Kommrusch Steve James Tufano Michele Pouchet Louis-Noel Poshyvanyk Denys Monperrus Martin 2019 SEQUENCER: Sequence-to-Sequence Learning for End-to-End Program Repair IEEE Transactions on Software Engineering 1 10.1109/TSE.2019.2940179 0098-5589 1901.01808 यह एक तंत्रिका नेटवर्क वास्तुकला को परिभाषित करता है जो स्रोत कोड के साथ अच्छी तरह से काम करता है, प्रतिलिपि तंत्र के साथ टोकन के साथ पैच का उत्पादन करने की अनुमति देता है जो कि सीखा शब्दावली में नहीं हैं। उन टोकन को मरम्मत के तहत जावा वर्ग के कोड से लिया गया है।
सन्दर्भ
श्रेणी:सॉफ़्टवेयर विकास