रिपेरेटर के साथ ऑटोमैटिक प्रोग्राम रिपेयर में मानव-प्रतिस्पर्धी पैच

मरम्मत करने वाला एक बॉट है। यह ओपन-सोर्स सॉफ़्टवेयर के निरंतर एकीकरण के दौरान खोजे गए सॉफ़्टवेयर बग्स की लगातार निगरानी करता है और उन्हें स्वचालित रूप से ठीक करने का प्रयास करता है। यदि यह एक वैध पैच को संश्लेषित करने में सफल होता है, तो रिप्लेनेटर एक नकली मानव पहचान के तहत प्रच्छन्न मानव डेवलपर्स को पैच का प्रस्ताव देता है। आज तक, रिप्लेनेटर 5 पैच का उत्पादन करने में सक्षम रहा है जिसे मानव डेवलपर्स द्वारा स्वीकार किया गया था और कोड बेस में स्थायी रूप से विलय कर दिया गया था। यह स्वचालित कार्यक्रम मरम्मत पर सॉफ्टवेयर इंजीनियरिंग अनुसंधान में मानव-प्रतिस्पर्धा के लिए एक मील का पत्थर है। इस पोस्ट में, हम KTH Royal Institute of Technology, Inria, Lille विश्वविद्यालय और Valenciennes विश्वविद्यालय में किए गए इस शोध के बारे में कहानी बताते हैं।

कार्यक्रम की मरम्मत अनुसंधान इस विचार का अनुसरण करता है कि एल्गोरिदम सॉफ्टवेयर बग को ठीक करने के लिए मनुष्यों की जगह ले सकता है [4]। बग फिक्स एक पैच है जो स्रोत कोड को सम्मिलित करता है, हटाता है या संशोधित करता है। उदाहरण के लिए, निम्नलिखित पैच में, डेवलपर ने if स्टेटमेंट की स्थिति को संशोधित किया है:

- यदि (x <10)
+ अगर (x <= 10)
foo ();

एक प्रोग्राम रिपेयर बॉट एक कृत्रिम एजेंट है जो स्रोत कोड पैच को संश्लेषित करने की कोशिश करता है। यह बग का विश्लेषण करता है और पैच का निर्माण करता है, ठीक उसी तरह जैसे मानव डेवलपर सॉफ्टवेयर रखरखाव गतिविधियों में शामिल होता है। प्रोग्राम रिपेयर बॉट का यह विचार विघटनकारी है, क्योंकि आज इंसान बग को ठीक करने के लिए जिम्मेदार है। दूसरे शब्दों में, हम थकाऊ कार्यों के लिए मानव डेवलपर्स की जगह (आंशिक रूप से) बॉट के बारे में बात कर रहे हैं।

जब एक बॉट आमतौर पर मनुष्यों द्वारा किए गए कार्य को प्राप्त करने की कोशिश करता है, तो इसे मानव-प्रतिस्पर्धी कार्य [1] के रूप में जाना जाता है। प्रोग्राम रिपेयर रिसर्च [3] के अनुभवजन्य मूल्यांकन बताते हैं कि वर्तमान प्रोग्राम रिपेयर सिस्टम वास्तविक कार्यक्रमों में वास्तविक बग के लिए पैच को संश्लेषित करने में सक्षम हैं। हालांकि, उन सभी पैच को अतीत के कीड़े के लिए संश्लेषित किया गया था, जो कि अतीत में मानव डेवलपर्स द्वारा तय किए गए थे, आमतौर पर वर्षों पहले। हालांकि यह कार्यक्रम की मरम्मत की तकनीकी व्यवहार्यता को इंगित करता है, यह यह दिखाने में विफल रहता है कि कार्यक्रम की मरम्मत मानव-प्रतिस्पर्धी है।

मानव-प्रतिस्पर्धा

यह दर्शाने के लिए कि प्रोग्राम की मरम्मत मानव-प्रतिस्पर्धी है, प्रोग्राम रिपेयर बॉट को मानव द्वारा ऐसा करने से पहले एक उच्च-गुणवत्ता वाला पैच खोजना होगा। इस संदर्भ में, एक पैच को मानव-प्रतिस्पर्धी माना जा सकता है यदि यह समयबद्धता और गुणवत्ता की दो स्थितियों को संतुष्ट करता है। समयबद्धता इस तथ्य को संदर्भित करती है कि सिस्टम को मानव डेवलपर से पहले एक पैच खोजना होगा। दूसरे शब्दों में, प्रोटोटाइप सिस्टम को मिनटों के परिमाण के क्रम में पैच का उत्पादन करना चाहिए, न कि दिनों में। इसके अलावा, बॉट द्वारा उत्पन्न पैच सही-पर्याप्त होना चाहिए, समान गुणवत्ता वाला - सही और पठनीय - मानव द्वारा लिखे गए पैच की तुलना में। ध्यान दें कि बॉट के दृष्टिकोण से सही दिखने वाले पैच हैं, फिर भी यह गलत है (इसे साहित्य में पैचिंग ओवरफिटिंग के रूप में जाना जाता है [6, 3])। वे पैच यकीनन मानव-प्रतिस्पर्धी नहीं हैं, क्योंकि मनुष्य उन्हें अपने कोड बेस में कभी स्वीकार नहीं करेंगे।

नतीजतन, पैच को मानव-प्रतिस्पर्धी 1 होने के लिए) बॉट को मानव डेवलपर 2 की तुलना में तेजी से पैच को संश्लेषित करना पड़ता है) पैच को मानव डेवलपर द्वारा अच्छा-पर्याप्त रूप से आंका जाता है और कोड बेस में स्थायी रूप से विलय हो जाता है।

विचार करने के लिए एक और पहलू है। यह दिखाया गया है कि मानव इंजीनियर बॉट्स के योगदान को अन्य मनुष्यों से योगदान के रूप में आसानी से स्वीकार नहीं करते हैं, भले ही वे कड़ाई से समान हों [5]। इसका कारण यह है कि मनुष्य मशीनों के खिलाफ एक पूर्वाग्रह रखता है, और यदि एक मानव सहकर्मी से योगदान मिलता है तो त्रुटियों के प्रति अधिक सहिष्णु होता है। कार्यक्रम की मरम्मत के संदर्भ में, इसका मतलब है कि डेवलपर्स पैच की गुणवत्ता पर अधिक बार लगा सकते हैं, अगर उन्हें पता है कि पैच एक बॉट से आता है। यह कार्यक्रम की मरम्मत के संदर्भ में मानव-प्रतिस्पर्धा प्रमाण के लिए हमारी खोज को बाधित करेगा।

इस समस्या को दूर करने के लिए, हमने परियोजना में जल्दी फैसला किया है कि सभी मरम्मतकर्ता पैच एक नकली मानव पहचान के तहत प्रस्तावित किए जाएंगे। हमने एक ल्यूथ उपयोगकर्ता बनाया है, जिसे ल्यूक एस्पेप कहा जाता है, जिसे हमारे शोध प्रयोगशाला में सॉफ्टवेयर इंजीनियर के रूप में प्रस्तुत किया जाता है। ल्यूक की एक प्रोफ़ाइल तस्वीर है और एक जूनियर डेवलपर की तरह दिखता है, जो गीथहब पर ओपन-सोर्स योगदान देने के लिए उत्सुक है। अब मरम्मत करने वाले की कल्पना करें, लुका एस्पेप को एक पैच का प्रस्ताव देते हुए प्रच्छन्न: डेवलपर समीक्षा करने वाला यह सोचता है कि वह एक मानवीय योगदान की समीक्षा कर रहा है। मानव-प्रतिस्पर्धा की हमारी वैज्ञानिक परिकल्पना का परीक्षण करने के लिए इस छलावरण की आवश्यकता है। अब, नैतिकता के लिए, ल्यूक की वास्तविक पहचान का खुलासा उनके प्रत्येक पुल-अनुरोध पर किया गया है।

स्वचालित मरम्मत और निरंतर एकीकरण

निरंतर एकीकरण, उर्फ ​​सीआई, एक विचार है कि एक सर्वर कोड को संकलित करता है और एक सॉफ्टवेयर प्रोजेक्ट के संस्करण नियंत्रण प्रणाली में किए गए प्रत्येक कमिट के लिए सभी परीक्षण चलाता है (जैसे Git)। CI समानता में, प्रत्येक प्रतिबद्ध के लिए एक निर्माण होता है। एक निर्माण में उपयोग किए गए स्रोत कोड स्नैपशॉट के बारे में जानकारी होती है (उदाहरण के लिए एक Git कमिट का संदर्भ), संकलन और परीक्षण निष्पादन का परिणाम (उदा। असफल या सफलता), और निष्पादन ट्रेस लॉग। कहा जाता है कि यदि कंपलीशन फेल हो जाता है या कम से कम एक टेस्ट केस फेल हो जाता है तो बिल्ड फेल हो जाता है। यह दिखाया गया है कि 4 में से लगभग एक बिल्ड विफल रहता है, और यह कि बिल्ड विफलता का सबसे आम कारण एक परीक्षण विफलता है [8]।

रिपेरनेटर का मुख्य विचार स्वचालित रूप से उन पैच को उत्पन्न करना है जो मरम्मत विफलताओं का निर्माण करते हैं, फिर उन्हें मानव डेवलपर्स को दिखाने के लिए, अंत में यह देखने के लिए कि क्या उन मानव डेवलपर्स उन्हें कोड आधार पर मान्य योगदान के रूप में स्वीकार करेंगे। यदि ऐसा होता है, तो यह कार्यक्रम की मरम्मत में मानव-प्रतिस्पर्धा का प्रमाण होगा।

निरंतर एकीकरण में हो रही निर्माण विफलताओं को यह सेटअप-विशिष्ट रूप से मरम्मत करता है - निम्नलिखित कारणों से विशेष रूप से उचित और समय पर है। सबसे पहले, बिल्ड फेलियर टेस्ट-सूट आधारित प्रोग्राम रिपेयर [4] के मुख्य समस्या स्टेटमेंट को संतुष्ट करते हैं, जहां बग्स को एक फेलिंग टेस्ट-केस के रूप में निर्दिष्ट किया जाता है, और उन फेल होने वाले टेस्ट केस का उपयोग पैच [4] के स्वचालित संश्लेषण को चलाने के लिए किया जाता है। दूसरे, यह निष्पक्ष आधार पर बॉट्स और इंसानों की तुलना करने की अनुमति देता है: जब निरंतर एकीकरण सर्वर पर एक असफल परीक्षण की खोज की जाती है, तो मानव डेवलपर और बॉट को इसके बारे में, ठीक उसी समय सूचित किया जाता है। यह परीक्षण विफलता अधिसूचना मानव बनाम बॉट प्रतियोगिता का प्रारंभिक बिंदु है।

मरम्मत विफलताओं पर मरम्मतकर्ता का ध्यान अद्वितीय है, लेकिन यह सॉफ्टवेयर [2] के लिए बुद्धिमान बॉट्स की बड़ी तस्वीर में फिट बैठता है। उदाहरण के लिए, फेसबुक में SapFix नाम का एक उपकरण है जो स्वचालित परीक्षण के साथ पाए जाने वाले कीड़े की मरम्मत करता है। इसके अलावा, DARPA साइबर ग्रैंड चैलेंज बॉट हमलावर और रक्षक सुरक्षा विशेषज्ञों के संबंध में मानव-प्रतिस्पर्धी होने की कोशिश करते हैं।

एक पागल में मरम्मत करनेवाला

२०१ operated-२०१। में, हमने मरम्मत प्रोग्रामर को डिजाइन, कार्यान्वित और संचालित किया है, जो स्वचालित प्रोग्राम की मरम्मत के लिए एक बॉट है। सुधारक निरंतर एकीकरण के दौरान हो रही निर्माण विफलताओं की मरम्मत के लिए विशिष्ट है। यह लगातार हजारों कमिट्स को GitHub कोड होस्टिंग प्लेटफॉर्म पर धकेलता है, और उनके संबंधित बिल्ड का विश्लेषण करता है। हर मिनट, यह मानव डेवलपर से पहले बग को ठीक करने के लिए नए मरम्मत प्रयासों का शुभारंभ करता है। इसे जितना संभव हो उतनी तेजी से जाने के लिए डिज़ाइन किया गया है क्योंकि यह एक दौड़ में भाग लेता है: यदि रिप्लेन्नेटर मानव डेवलपर से पहले एक पैच पाता है, तो यह मानव-प्रतिस्पर्धी है।

आइए अब हम एक सिंहावलोकन देते हैं कि कैसे रिपेंटर बॉट काम करता है।

रिपिटेटर का प्राथमिक इनपुट निरंतर एकीकरण बनाता है, जो डेवलपर्स द्वारा बनाए गए कमिट द्वारा ट्रिगर किया जाता है (गीथहब प्रोजेक्ट्स (ए) के आधार पर आंकड़ा के शीर्ष भाग, (ए) और (बी))। रिपेंटर के आउटपुट दो-गुना हैं: (1) यह स्वचालित रूप से फेलिंग बिल्ड (जी) की मरम्मत के लिए पैच का उत्पादन करता है, यदि कोई हो; (2) यह भविष्य के प्रोग्राम रिपेयर रिसर्च (एच) और (के) के लिए मूल्यवान डेटा एकत्र करता है। स्थायी रूप से, रिप्राइंटर गीथहब परियोजनाओं © से सभी सतत गतिविधि पर नज़र रखता है। CI बिल्ड को तीन चरण पाइपलाइन के इनपुट के रूप में दिया जाता है: (1) एक पहला चरण एकत्र करता है और CI बिल्ड लॉग (e) का विश्लेषण करता है; (2) एक दूसरा चरण सीआई (एफ) पर हुए निर्माण विफलताओं को स्थानीय रूप से पुन: पेश करना है; (3) एक तीसरा चरण नवीनतम शैक्षणिक अनुसंधान से आने वाले विभिन्न कार्यक्रम मरम्मत प्रोटोटाइप चलाता है। जब एक पैच पाया जाता है, तो ओपन-सोर्स डेवलपर्स के मूल्यवान समय को बर्बाद करने से बचने के लिए, एक Repairnator प्रोजेक्ट सदस्य एक त्वरित विवेक जांच करता है। (i) यदि वह पैच को नॉन-डिजेनेरेटेड पाता है, तो वह इसे प्रोजेक्ट के मूल डेवलपर्स को GitHub (j) पर पुल-रिक्वेस्ट के रूप में प्रस्तावित करता है। तब डेवलपर्स कोड-समीक्षा की अपनी सामान्य प्रक्रिया का पालन करते हैं और विलय करते हैं।

रिपेरनेटर को एक दिए गए सॉफ्टवेयर इकोसिस्टम में काम करना होता है। पिछले शोध परियोजनाओं में जावा के साथ हमारी विशेषज्ञता के कारण, रिपेयर करने वाले का प्रोटोटाइप कार्यान्वयन, जावा प्रोग्रामिंग भाषा में लिखे गए सॉफ़्टवेयर की मरम्मत पर ध्यान केंद्रित करता है, जिसे गेवनह पर होस्ट किए गए ओपन-सोर्स प्रोजेक्ट्स में मावेन टूलचैन के साथ बनाया गया है, जो ट्रैविस सीआई के निरंतर एकीकरण मंच का उपयोग करते हैं। ।

अभियान की उपलब्धियां

हम तीन अलग-अलग चरणों में, जनवरी 2017 से रिपेरनेटर का संचालन कर रहे हैं। एक महीने के दौरान, जनवरी 2017 में, हमने प्रोटोटाइप के शुरुआती संस्करण के साथ एक पायलट प्रयोग किया। 1 फरवरी, 2017 से 31 दिसंबर, 2017 तक, हमने 14,188 परियोजनाओं की एक निश्चित सूची के साथ मरम्मतकर्ता को चलाया, हम इसे "एक्सपेडिशन # 1" कहते हैं। 1 जनवरी 2018 से 30 जून 2018 तक, मरम्मतकर्ता ने वास्तविक समय में ट्रैविस सीआई बिल्ड स्ट्रीम की निगरानी की है, हम इसे "एक्सपेडिशन # 2" कहते हैं।

पायलट प्रयोग का मुख्य लक्ष्य हमारे डिजाइन और प्रारंभिक कार्यान्वयन को मान्य करना था। हमने पाया कि हमारा प्रोटोटाइप हमारे कंप्यूटिंग संसाधनों को देखते हुए प्रति दिन लगभग 30 मरम्मत प्रयासों को करने में सक्षम है। इससे भी महत्वपूर्ण बात यह है कि इस पायलट प्रयोग ने हमारी मुख्य तकनीकी मान्यताओं को मान्य किया है: लोकप्रिय ओपन-सोर्स परियोजनाओं का एक महत्वपूर्ण अनुपात ट्रैविस का उपयोग करता है और उनमें से अधिकांश मावेन का निर्माण प्रौद्योगिकी के रूप में करते हैं। इसका मतलब है कि हमारे पास उस संदर्भ में एक मानव-प्रतिस्पर्धी पैच को संश्लेषित करने के हमारे लक्ष्य तक पहुंचने का एक उचित मौका होगा।

एक्सपीडिशन # 1 के दौरान, जिसके परिणाम [7] में विवरण में प्रस्तुत किए गए हैं, रिपेयरनेटर ने 11,523 बिल्ड का विश्लेषण किया है जिसमें असफलताएं हैं। उनमें से 3,551 (30.82%) के लिए, रिप्लेनेटर परीक्षण की विफलता को स्थानीय रूप से पुन: उत्पन्न करने में सक्षम था। मरम्मत कार्यों के 3,551 में से, रिप्लेनेटर में 15 पैच पाए गए जो सीआई को पास बना सकते हैं। हालांकि, हमारे पैच विश्लेषण से पता चला है कि उन पैचों में से कोई भी मानव-प्रतिस्पर्धी नहीं था क्योंकि वे बहुत देर से आए (रिप्लेनेटर ने मानव डेवलपर के बाद एक पैच का उत्पादन किया) या निम्न गुणवत्ता वाले थे (उन्होंने बिल्ड को संयोग से सफल बनाया)।

अभियान # 2 सफल है। इससे पता चला है कि कार्यक्रम की मरम्मत तकनीक ने मानव-प्रतिस्पर्धा की सीमा को पार कर लिया है। मरम्मत करने वाले ने 5 पैच का उत्पादन किया है जो ऊपर परिभाषित मानव-प्रतिस्पर्धा के मानदंडों को पूरा करते हैं: 1) पैच का उत्पादन मानवों से पहले किया गया था, 2) एक मानव डेवलपर ने पैच को वैध योगदान के रूप में स्वीकार किया, और पैच मुख्य व्यावसायिक आधार में विलय कर दिए गए थे।

गितुब पर मानव-प्रतिस्पर्धी योगदान, रिप्रेंजनेटर रोबोट द्वारा संश्लेषित पैच और मानव डेवलपर द्वारा स्वीकार किए जाते हैं:

  • जनवरी 12, 2018, एइमे / जियोबैचे / पुल / 1, "पैच के लिए धन्यवाद!"
  • Mar 23, 2018, parkito / BasicDataCodeU […] / पुल / 3 “मर्ज किए गए प्रतिबद्ध 140a3e3 को पार्किटो में विकसित करें:”
  • 5 अप्रैल, 2018, dkarv / jdcallgraph / pull / 2 "धन्यवाद!"
  • 3 मई, 2018, ग्रहण / डिट्टो / पुल / 151 "कूल, ग्रहण प्रक्रिया से गुजरने और तय करने के लिए धन्यवाद।"
  • 25 जून, 2018, donnelldebnam / CodeU […] / पुल / 151 “धन्यवाद !!”

हमारे प्रोग्राम रिपेयर बॉट द्वारा विलय किए गए पहले पैच को 12 जनवरी, 2018 को एक मानव डेवलपर द्वारा स्वीकार किया गया था। यहां कहानी है: 12 जनवरी 2018 को दोपहर 12:28 बजे, प्रोजेक्ट अइम / जियोबेकचे 11 पर एक निर्माण शुरू हो गया था 1 https: // travis -ci.org/GeoWebCache/geowebcache/builds/328076497। निष्पादन के 2 मिनट बाद बिल्ड विफल हो गया, क्योंकि दो परीक्षण मामले त्रुटि में थे। चौदह मिनट बाद, १२ जनवरी २०१, को दोपहर १:३० बजे, रिपेरनेटर ने अपनी नियमित निगरानी के दौरान असफल निर्माण का पता लगाया, और रिपेरनेटर में कॉन्फ़िगर किए गए उपलब्ध प्रोग्राम रिपेयर सिस्टम को चलाना शुरू कर दिया। दस मिनट बाद, 1:18 बजे, यह एक पैच मिला।

12 जनवरी 2018 को, दोपहर 1:35 बजे, एक रिपेंटरनेटर टीम के सदस्य ने रिपेयरनेटर द्वारा उत्पन्न पैच लिया, और गिटहब पर संबंधित पुल-रिक्वेस्ट को खोलने का सत्यापन किया। 12 जनवरी 2018 को दोपहर 2:10 बजे, डेवलपर ने पैच स्वीकार कर लिया, और इसे एक टिप्पणी के साथ विलय कर दिया: "अजीब, मुझे लगा कि मैंने पहले से ही इसे ठीक कर लिया है ... शायद मैंने किसी और जगह पर किया था। पैच के लिए धन्यवाद! ”। यह मरम्मतकर्ता द्वारा निर्मित पहला पैच था और एक मानव डेवलपर द्वारा एक वैध योगदान के रूप में स्वीकार किया गया था, कोड बेस में निश्चित रूप से विलय कर दिया गया था। दूसरे शब्दों में, मरम्मत करने वाला पहली बार मानव-प्रतिस्पर्धी था।

ऑपरेशन के 6 और महीनों के बाद, रिप्लेनेटर के पास मानव डेवलपर्स द्वारा विलय किए गए 5 पैच हैं, जो ऊपर सूचीबद्ध हैं।

कुल मिलाकर, रिपेरनेटर प्रोजेक्ट ने अपने मिशन को पूरा किया है। इससे पता चला है कि प्रोग्राम रिपेयर को मानव-प्रतिस्पर्धी माना जा सकता है: रिप्लेनेटर ने मनुष्यों से पहले 1) पैच पाए हैं, 2) जो कि स्वयं मानव द्वारा अच्छी गुणवत्ता के माने जाते थे।

भविष्य

यह दिखाते हुए कि कार्यक्रम की मरम्मत मानवीय प्रतिस्पर्धात्मक है, रिप्लेनेटर परियोजना ने बग्स और निरंतर एकीकरण के बारे में जानकारी प्रदान की है, और कार्यक्रम मरम्मत अनुसंधान की वर्तमान कमियों के बारे में, [7] में प्रस्तुत किया गया है।

हमें विशेष रूप से बौद्धिक संपदा के सवाल पर एक बिंदु पर ध्यान दें। 3 मई, 2018 को, रिपिटनेटर ने गिटहब प्रोजेक्ट ग्रहण / डिट्टो के लिए एक अच्छा पैच तैयार किया। पैच का प्रस्ताव रखने के कुछ समय बाद, डेवलपर्स में से एक ने पूछा "हम केवल उन अनुरोधों को स्वीकार कर सकते हैं जो उन उपयोगकर्ताओं से आते हैं जिन्होंने ग्रहण फाउंडेशन योगदानकर्ता लाइसेंस समझौते पर हस्ताक्षर किए थे।" हम हैरान थे क्योंकि एक बोट शारीरिक या नैतिक रूप से एक लाइसेंस समझौते पर हस्ताक्षर नहीं कर सकता है और शायद ऐसा करने का हकदार नहीं है। एक बॉट योगदान की बौद्धिक संपदा और जिम्मेदारी का मालिक कौन है: रोबोट ऑपरेटर, बॉट कार्यान्वयनकर्ता या मरम्मत एल्गोरिथ्म डिजाइनर? यह एक दिलचस्प सवाल है, जो कि रिपर्नेटर प्रोजेक्ट द्वारा उजागर किया गया है।

हमारा मानना ​​है कि रिपेयरनैटर सॉफ्टवेयर विकास के एक निश्चित भविष्य का अनुमान लगाता है, जहाँ बॉट और मानव आसानी से सहयोग करेंगे और यहाँ तक कि कलाकृतियों पर भी सहयोग करेंगे।

मरम्मत करने वाले समुदाय में शामिल होना चाहते हैं? रिपेरनेटर के बारे में नियमित समाचार प्राप्त करने के लिए, repairnator.subscribe@4open.science पर ईमेल शूट करें!

- मार्टिन मोनपर्रस, साइमन उरली, थॉमस ड्यूरीक्स, माटीस मार्टिनेज, बेनोइट बॉड्री, लियोनेल सेंट्यूरियर

मीडिया में:

  • ल्यूक एस्पेप का रहस्यमय जीवन, बग फिक्सर असाधारणता। उसका बड़ा राज? वह मानव नहीं है (थॉमस क्लाबर्न, द रजिस्टर)

संदर्भ

  • [१] जे। आर। कोजा (२०१०) मानव-प्रतिस्पर्धी परिणाम जेनेटिक प्रोग्रामिंग द्वारा निर्मित। जेनेटिक प्रोग्रामिंग और इवॉल्वेबल मशीन 11 (3–4), पीपी। 251-284। द्वारा उद्धृत: ।
  • [२] सी। लेबेफ, एम। डी। स्टोरी और ए। ज़गलस्की (२०१be) सॉफ्टवेयर बॉट्स। IEEE सॉफ्टवेयर 35, पीपी। 18–23। इसके द्वारा उद्धृत: स्वचालित मरम्मत और निरंतर एकीकरण।
  • [३] एम। मार्टिनेज, टी। डरिएक्स, आर। सोमरार्ड, जे। ज़ुआन और एम। मोनपर्रस (२०१६) जावा में रियल बग्स की स्वचालित मरम्मत: डेफिसिट ४ जे डेटासेट पर एक बड़े पैमाने पर प्रयोग। अनुभवजन्य सॉफ्टवेयर इंजीनियरिंग, पीपी। 1-29 द्वारा उद्धृत: मानव-प्रतिस्पर्धात्मकता,
  • [४] एम। मोनपर्रस (२०१per) स्वचालित सॉफ्टवेयर मरम्मत: एक ग्रंथ सूची। ACM कम्प्यूटिंग सर्वेक्षण। द्वारा उद्धृत: स्वचालित मरम्मत और निरंतर एकीकरण,
  • [५] ए। मुर्गिया, डी। जानसेन, एस। डेमियर और बी। वसीलेस्कु (२०१६) मशीनों के बीच: सोशल क्यू एंड वेबसाइटों पर मानव-बॉट इंटरैक्शन। 2016 सीएचआई सम्मेलन की कार्यवाही में कम्प्यूटिंग सिस्टम में मानव कारकों पर विस्तारित सार, पीपी। 1272–1279। द्वारा उद्धृत: मानव-प्रतिस्पर्धात्मकता।
  • [६] ई। के। स्मिथ, ई। टी। बर्र, सी। ले गौस और वाई। ब्रून (२०१५) क्या बीमारी से भी बुरा इलाज है? स्वचालित कार्यक्रम की मरम्मत में ओवरफिटिंग। सॉफ्टवेयर इंजीनियरिंग की नींव पर 2015 की 10 वीं संयुक्त बैठक की कार्यवाही, पीपी। 532-543। बाहरी लिंक: द्वारा उद्धृत दस्तावेज़: मानव-प्रतिस्पर्धा।
  • [[] एस। उरली, जेड। यू।, एल। सेंटियरियर और एम। मॉनपरस (२०१li) प्रोग्राम रिपेयर बॉट कैसे डिजाइन करें? मरम्मत करनेवाला परियोजना से अंतर्दृष्टि। सॉफ्टवेयर इंजीनियरिंग पर ICSE 2018-40 वें अंतर्राष्ट्रीय सम्मेलन में, ट्रैक सॉफ्टवेयर इंजीनियरिंग इन प्रैक्टिस, बाहरी लिंक: लिंक द्वारा उद्धृत: अभियान उपलब्धियां, भविष्य।
  • [[] सी। वेसलो, जी। शर्मन, एफ। ज़म्पेट्टी, डी। रोमानो, पी। लीटनर, ए। ज़ैडमैन, एम। डी। पेंटा और एस। पनिचेला (२०१ A) ए टेल ऑफ़ सीआई बिल्ड फेलियर - एक ओपन-सोर्स और एक वित्तीय संगठन परिप्रेक्ष्य। सॉफ्टवेयर रखरखाव और विकास पर अंतर्राष्ट्रीय सम्मेलन में, द्वारा उद्धृत: स्वचालित मरम्मत और निरंतर एकीकरण।