सर्च बेस्ड सॉफ़्टवेयर इंजीनियरिंग
सर्च बेस्ड सॉफ़्टवेयर इंजीनियरिंग (SBSE) मुख्य रूप से सॉफ़्टवेयर इंजीनियरिंग में आने वाली विभिन्न समस्याओं के लिए जेनेटिक एल्गोरिदम, सिम्यूलेटेड एन्यूलिंग और टैबू सर्च जैसी मेटाह्यूरिस्टिक सर्च से जुड़ी विधियों को लागू करती है। इस प्रकार की सॉफ्टवेयर इंजीनियरिंग में कई गतिविधियों को आप्टीमाइजेशन (गणित) करके विभिन्न समस्याओं के रूप में परिभाषित किया जा सकता है। इस प्रकार से संचालित होने वाले विभिन्न अनुसंधानों के लिए आप्टीमाइजेशन (गणित) विधि जैसे लीनियर प्रोग्रामिंग या डायनैमिक प्रोग्रामिंग अधिकांशतः बड़े पैमाने पर सॉफ्टवेयर इंजीनियरिंग समस्याओं के लिए उनके कम्प्यूटेशनल काॅम्पलेक्सिटी या समस्या संरचना पर उनकी धारणाओं के कारण अव्यावहारिक होती हैं। इसके आधार पर शोधकर्ता और चिकित्सक मेटाह्यूरिस्टिक सर्च तकनीकों का उपयोग करते हैं, जो इस प्रकार के निकट या इष्टतम या अच्छी तरह से पर्याप्त मात्रा में हल को सर्च करने के लिए विभिन्न प्रकार की समस्याओं से जुड़ी संरचनाओं पर छोटी धारणाएं प्रतिपादित करते हैं।
एसबीएसई समस्याओं को दो प्रकारों में विभाजित किया जा सकता है:
- ब्लैक-बॉक्स आप्टीमाइजेशन समस्याएँ, उदाहरण के लिए लोगों को इस प्रकार के कार्यों को सौंपना होता हैं, जिसके आधार पर विशिष्ट कॉम्बिनेटरियल आप्टीमाइजेशन समस्या को हल किया जाता हैं।
- व्हाइट-बॉक्स समस्याएं जहां स्रोत कोड पर संचालन पर विचार करने की आवश्यकता है।[1]
परिभाषा
एसबीएसई सॉफ्टवेयर इंजीनियरिंग समस्या को कम्प्यूटेशनल सर्च समस्या में परिवर्तित करता है जिसे मेटाह्यूरिस्टिक से निपटाया जा सकता है। इसमें सर्च स्थान, या संभावित समाधानों के सेट को परिभाषित करना सम्मिलित है। यह स्थान सामान्यतः विस्तृत रूप से अन्वेषण करने के लिए बहुत बड़ा है, जो मेटाह्यूरिस्टिक दृष्टिकोण का सुझाव देता है। इस प्रकार से मीट्रिक[2] या जिसे फिटनेस फ़ंक्शन, लागत फ़ंक्शन, उद्देश्य फ़ंक्शन या गुणवत्ता माप भी कहा जाता है, इसका उपयोग करके संभावित हलों की गुणवत्ता को मापने के लिए किया जाता है। इस प्रकार कई सॉफ्टवेयर इंजीनियरिंग समस्याओं को कम्प्यूटेशनल सर्च समस्या के रूप में दोबारा तैयार किया जा सकता है।[3]
इसके विपरीत, सर्च-बेस्ड एप्लीकेशन शब्द, किसी अन्य औद्योगिक अनुप्रयोग में सर्च तकनीकों के अतिरिक्त सर्च-इंजन इंजीनियरिंग का उपयोग करने को संदर्भित करता है।
संक्षिप्त इतिहास
सॉफ़्टवेयर इंजीनियरिंग समस्या के लिए ऑप्टिमाइज़ेशन (गणित) लागू करने के प्रारंभिक प्रयासों में से सॉफ़्टवेयर परीक्षण के क्षेत्र में 1976 में वेब मिलर और डेविड स्पूनर द्वारा रिपोर्ट किया गया था।[4] इस प्रकार 1992 में, एस. ज़ैंथाकिस और उनके सहयोगियों ने पहली बार किसी सॉफ़्टवेयर इंजीनियरिंग से जुड़ी समस्याओं के लिए सर्च तकनीक लागू की गई थी।[5] इस प्रकार इसके आधार पर एसबीएसई शब्द का प्रयोग पहली बार 2001 में मार्क हरमन (कंप्यूटर वैज्ञानिक) और जोन्स द्वारा किया गया था।[6] इस प्रकार 2013 तक शोध समुदाय में 800 से अधिक लेखक सम्मिलित हो गए, जिसमें इसके कारण 40 देशों के लगभग 270 संस्थान सम्मिलित थे।[7]
आवेदन क्षेत्र
सर्च बेस्ड सॉफ़्टवेयर इंजीनियरिंग सॉफ़्टवेयर जीवन चक्र के लगभग सभी चरणों पर लागू होती है। इस प्रकार सॉफ़्टवेयर परीक्षण प्रमुख अनुप्रयोगों में से रहा है।[8] इस प्रकार की सर्च से जुड़ी विधियों को अन्य सॉफ़्टवेयर इंजीनियरिंग गतिविधियों पर लागू किया गया है, उदाहरण के लिए आवश्यकताओं का विश्लेषण,[9][10] सॉफ्टवेर डिज़ाइन,[11][12] कोड रीफैक्टरिंग,[13] सॉफ्टवेयर डेवलपमेंट,[14] और सॉफ्टवेयर का रखरखाव इत्यादि सम्मिलित हैं।[15]
रिक्वायरमेंट इंजीनियरिंग
रिक्वायरमेंट इंजीनियरिंग वह प्रक्रिया है जिसके द्वारा किसी सॉफ़्टवेयर के उपयोगकर्ताओं और इस प्रकार के इनवायरमेंट की आवश्यकताएं निर्धारित और प्रबंधित की जाती हैं। इस प्रकार आवश्यकताओं के चयन और आप्टीमाइजेशन के लिए सर्च-आधारित तरीकों का उपयोग करके आवश्यकताओं के सर्वोत्तम संभव उपसमूह को सर्च करने के टार्गेट के साथ किया गया है, जो सीमित संसाधनों और आवश्यकताओं के बीच अन्योन्याश्रय जैसी बाधाओं के बीच उपयोगकर्ता के अनुरोधों से मेल खाता है। इस समस्या को अधिकांशतः एमसीडीएम या मल्टीपल क्राइटेरिया डिसीजन लेने की समस्या के रूप में निपटाया जाता है, और सामान्यतः निर्णय निर्माता को लागत और उपयोगकर्ता संतुष्टि के साथ-साथ आवश्यकताओं के खतरों के बीच इस प्रकार के आदान-प्रदान के कारण सेट के साथ प्रस्तुत करना सम्मिलित होता है।[16][17][18][19]
डिबगिंग एंड मेन्टिनेंस
सॉफ़्टवेयर बग (या कोड स्मेल) की पहचान करना और फिर सॉफ़्टवेयर को डीबग करना (या रिफैक्टरिंग) करना अत्यधिक सीमा तक मैन्युअल और श्रम-गहन प्रयास है, चूंकि यह प्रक्रिया टूल-समर्थित है। इस प्रकार एसबीएसई का उद्देश्य स्वचालित रूप से बग की पहचान करना और उन्हें ठीक करना है, इसके उदाहरण के लिए म्यूटेशन टेस्टिंग के माध्यम से की जा सकती हैं।
जेनेटिक प्रोग्रामिंग , जैविक रूप से प्रेरित तकनीक जिसमें क्रॉसओवर और म्यूटेशन के उपयोग के माध्यम से प्रोग्राम विकसित करना सम्मिलित है, जिसका उपयोग स्रोत कोड की कुछ पंक्तियों को परिवर्तित करके प्रोग्राम को ठीक करने की सर्च के लिए किया गया है। जेन प्राॅग इवोल्यूशनरी प्रोग्राम रिपेयर सॉफ़्टवेयर ने परीक्षण में प्रत्येक के लिए लगभग $8 में 105 में से 55 बग को ठीक किया जाता हैं।[20]
को-इवैलुएशन प्रिडेटर और प्री मेटाफाॅर को ग्रहण करता है, जिसमें फंक्शन का सूट और यूनिट परीक्षण का सूट साथ विकसित होता है और दूसरे को प्रभावित करता है।[21]
टेस्टिंग
सर्च बेस्ड सॉफ़्टवेयर इंजीनियरिंग को सॉफ़्टवेयर परीक्षण के लिए लागू किया गया है, जिसमें परीक्षण की स्थिति में परीक्षण डेटा की स्वचालित पीढ़ी, परीक्षण स्थिति को न्यूनतम करना और परीक्षण स्थिति को प्राथमिकता देना सम्मिलित है।[22] इस प्रकार रिग्रेशन टेस्टिंग पर भी कुछ ध्यान दिया गया है।
सॉफ़्टवेयर का आप्टीमाइजेशन
प्रोग्राम आप्टीमाइजेशन में एसबीएसई का उपयोग, या गति और संसाधन उपयोग के स्थिति में इसे और अधिक कुशल बनाने के लिए सॉफ़्टवेयर के टुकड़े को संशोधित करना सफल शोध का उद्देश्य रहा है।[23] उदाहरण में, 50,000 लाइन प्रोग्राम में जेनेटिक रूप से सुधार किया गया, जिसके परिणामस्वरूप प्रोग्राम औसतन 70 गुना तेज हो गया हैं।[24]
बेसियोस एट अल द्वारा वर्तमान कार्य का पता चलता है कि डेटा संरचना को आप्टीमाइजेशन करके, गूगल गुवा ने निष्पादन समय पर 9% सुधार, मेमोरी खपत पर 13% सुधार और सीपीयू उपयोग पर 4% सुधार किया गया हैं।[25]
प्रोजेक्ट मैनेजमेंट
कई निर्णय जो सामान्यतः प्रोजेक्ट मैनेजर द्वारा लिए जाते हैं, इस प्रकार स्वचालित रूप से किए जा सकते हैं, उदाहरण के लिए, प्रोजेक्ट शेड्यूलिंग इसका प्रमुख उदाहरण हैं।[26]
टूल्स
एसबीएसई के लिए उपलब्ध टूल में ओपेन-पीएटी,[27] इवोसु[28] और कवरेज, पायथन के लिए कोड कवरेज की माप के लिए उपयोग किए जाने वाले विभिन्न टूल्स इसके प्रमुख उदाहरण हैं।[29]
विधि और तकनीक
कई विधियाँ और तकनीकें उपलब्ध हैं, जिनमें निम्न बिंदुओ को सम्मिलित किया गया हैं:
- प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग)[30] किसी प्रोग्राम के निष्पादित होने पर उसके कुछ भागों की जांच करने के लिए इंस्ट्रुमेंटेशन के माध्यम से की जाती हैं।
- किसी फंक्शन से जुड़े एब्स्टैक्क सिंटैक्स ट्री को प्राप्त करना, जिसकी संरचना में अंतर्दृष्टि प्राप्त करने के लिए स्वचालित रूप से जांच की जा सकती है।
- एसबीएसई के लिए प्रासंगिक प्रोग्राम स्लाइसिंग के अनुप्रयोगों में सॉफ्टवेयर रखरखाव, आप्टीमाइजेशन (कंप्यूटर विज्ञान) और प्रोग्राम विश्लेषण (कंप्यूटर विज्ञान) सम्मिलित हैं।
- कोड कवरेज़ यह मापने की अनुमति देता है कि इनपुट डेटा के दिए गए समुच्चयों के साथ कितना कोड निष्पादित किया गया है।
- स्टैटिक प्रोग्राम एनालिसिस
उद्योग स्वीकृति
अनुसंधान के अपेक्षाकृत नए क्षेत्र के रूप में, एसबीएसई को अभी तक व्यापक उद्योग स्वीकृति का अनुभव नहीं हुआ है।
उद्योग में एसबीएसई के सफल अनुप्रयोग अधिकांशतः सॉफ्टवेयर परीक्षण के भीतर पाए जा सकते हैं, जहां बड़े पैमाने पर बग को उजागर करने के लिए स्वचालित रूप से यादृच्छिक परीक्षण इनपुट उत्पन्न करने की क्षमता कंपनियों के लिए आकर्षक है। इस प्रकार 2017 में, फेसबुक ने सॉफ्टवेयर स्टार्टअप माजिके लिमिटेड का अधिग्रहण किया, जिसने सर्च-आधारित बग ढूंढने वाला ऐप सैपिएंज विकसित किया गया था।[31]
इसके अन्य अनुप्रयोग परिदृश्यों में, सॉफ़्टवेयर इंजीनियर उन उपकरणों को अपनाने में अनिच्छुक हो सकते हैं, जिन पर उनका बहुत कम नियंत्रण होता है या जो ऐसे समाधान उत्पन्न करते हैं जो मनुष्यों द्वारा उत्पादित समाधानों से भिन्न होते हैं।[32] इन फंक्शन को सही करने या सुधारने में एसबीएसई के उपयोग के संदर्भ में, डेवलपर्स को आश्वस्त होना चाहिए कि कोई भी स्वचालित रूप से उत्पादित होने वाले संशोधन से सिस्टम की आवश्यकताओं और टेस्टिंग इनवायरमेंट की सीमा से बाहर अप्रत्याशित व्यवहार उत्पन्न नहीं करता है। यह ध्यान में रखते हुए कि पूर्ण रूप से स्वचालित प्रोग्रामिंग अभी तक हासिल नहीं की जा सकी है, ऐसे संशोधनों की वांछनीय संपत्ति यह होगी कि रखरखाव गतिविधियों का समर्थन करने के लिए उन्हें मनुष्यों द्वारा सरलता से समझा जाना चाहिए।[33]
इस क्रिया में एक चिंता यह भी है कि एसबीएसई सॉफ्टवेयर इंजीनियर को निरर्थक बना सकता है। इस कारण विशेष समर्थकों का प्रमाण यह है कि एसबीएसई की प्रेरणा इंजीनियर और कार्यक्रम के बीच संबंध को बढ़ाना होता है।[34]
यह भी देखें
- प्रोग्राम एनालिसिस (कंप्यूटर विज्ञान)
- डायनैमिक प्रोग्राम एनालिसिस
- जेनेटिक सुधार
संदर्भ
- ↑ Harman, Mark (2010). "Why Source Code Analysis and Manipulation Will Always be Important". 10th IEEE Working Conference on Source Code Analysis and Manipulation (SCAM 2010). 10th IEEE Working Conference on Source Code Analysis and Manipulation (SCAM 2010). pp. 7–19. doi:10.1109/SCAM.2010.28.
- ↑ Harman, Mark; John A. Clark (2004). "Metrics are fitness functions too". Proceedings of the 10th International Symposium on Software Metrics, 2004. 10th International Symposium on Software Metrics, 2004. pp. 58–69. doi:10.1109/METRIC.2004.1357891.
- ↑ Clark, John A.; Dolado, José Javier; Harman, Mark; Hierons, Robert M.; Jones, Bryan F.; Lumkin, M.; Mitchell, Brian S.; Mancoridis, Spiros; Rees, K.; Roper, Marc; Shepperd, Martin J. (2003). "Reformulating software engineering as a search problem". IEE Proceedings - Software. 150 (3): 161–175. CiteSeerX 10.1.1.144.3059. doi:10.1049/ip-sen:20030559. ISSN 1462-5970.
- ↑ Miller, Webb; Spooner, David L. (1976). "Automatic Generation of Floating-Point Test Data". IEEE Transactions on Software Engineering. SE-2 (3): 223–226. doi:10.1109/TSE.1976.233818. ISSN 0098-5589. S2CID 18875300.
- ↑ S. Xanthakis, C. Ellis, C. Skourlas, A. Le Gall, S. Katsikas and K. Karapoulios, "Application of genetic algorithms to software testing," in Proceedings of the 5th International Conference on Software Engineering and its Applications, Toulouse, France, 1992, pp. 625–636
- ↑ Harman, Mark; Jones, Bryan F. (2001-12-15). "Search-based software engineering". Information and Software Technology. 43 (14): 833–839. CiteSeerX 10.1.1.143.9716. doi:10.1016/S0950-5849(01)00189-6. ISSN 0950-5849.
- ↑ Harman, Mark; Mansouri, S. Afshin; Zhang, Yuanyuan (2012-11-01). "Search-based software engineering: Trends, techniques and applications". ACM Computing Surveys (in English). 45 (1): 1–61. doi:10.1145/2379776.2379787. S2CID 207198163.
- ↑ McMinn, Phil (2004). "Search-based software test data generation: a survey". Software Testing, Verification and Reliability. 14 (2): 105–156. CiteSeerX 10.1.1.122.33. doi:10.1002/stvr.294. ISSN 1099-1689. S2CID 17408871.
- ↑ Greer, Des; Ruhe, Guenther (2004-03-15). "Software release planning: an evolutionary and iterative approach". Information and Software Technology. 46 (4): 243–253. CiteSeerX 10.1.1.195.321. doi:10.1016/j.infsof.2003.07.002. ISSN 0950-5849. S2CID 710923.
- ↑ Colares, Felipe; Souza, Jerffeson; Carmo, Raphael; Pádua, Clarindo; Mateus, Geraldo R. (2009). "A New Approach to the Software Release Planning". XXIII Brazilian Symposium on Software Engineering, 2009. SBES '09. XXIII Brazilian Symposium on Software Engineering, 2009. SBES '09. pp. 207–215. doi:10.1109/SBES.2009.23.
- ↑ Clark, John A.; Jacob, Jeremy L. (2001-12-15). "Protocols are programs too: the meta-heuristic search for security protocols". Information and Software Technology. 43 (14): 891–904. CiteSeerX 10.1.1.102.6016. doi:10.1016/S0950-5849(01)00195-1. ISSN 0950-5849.
- ↑ Räihä, Outi (2010-11-01). "खोज-आधारित सॉफ़्टवेयर डिज़ाइन पर एक सर्वेक्षण" (PDF). Computer Science Review. 4 (4): 203–249. CiteSeerX 10.1.1.188.9036. doi:10.1016/j.cosrev.2010.06.001. ISSN 1574-0137.
- ↑ Mariani, Thainá; Vergilio, Silvia Regina (2017-03-01). "खोज-आधारित रीफैक्टरिंग पर एक व्यवस्थित समीक्षा". Information and Software Technology. 83: 14–34. doi:10.1016/j.infsof.2016.11.009. ISSN 0950-5849.
- ↑ Alba, Enrique; Chicano, J. Francisco (2007-06-01). "Software project management with GAs". Information Sciences. 177 (11): 2380–2401. doi:10.1016/j.ins.2006.12.020. hdl:10630/8145. ISSN 0020-0255.
- ↑ Antoniol, Giuliano; Di Penta, Massimiliano; Harman, Mark (2005). "Search-based techniques applied to optimization of project planning for a massive maintenance project". Proceedings of the 21st IEEE International Conference on Software Maintenance, 2005. ICSM'05. Proceedings of the 21st IEEE International Conference on Software Maintenance, 2005. ICSM'05. pp. 240–249. CiteSeerX 10.1.1.63.8069. doi:10.1109/ICSM.2005.79.
- ↑ Zhang, Yuanyuan (February 2010). Multi-Objective Search-based Requirements Selection and Optimisation (PhD). Strand, London, UK: University of London.
- ↑ Y. Zhang and M. Harman and S. L. Lim, "Search Based Optimization of Requirements Interaction Management," Department of Computer Science, University College London, Research Note RN/11/12, 2011.
- ↑ Li, Lingbo; Harman, Mark; Letier, Emmanuel; Zhang, Yuanyuan (2014). Robust Next Release Problem: Handling Uncertainty During Optimization. pp. 1247–1254. doi:10.1145/2576768.2598334. ISBN 9781450326629. S2CID 8423690.
{{cite book}}
:|journal=
ignored (help) - ↑ Li, L.; Harman, M.; Wu, F.; Zhang, Y. (2017). "आवश्यकताओं के चयन में सटीक विश्लेषण का मूल्य" (PDF). IEEE Transactions on Software Engineering. 43 (6): 580–596. doi:10.1109/TSE.2016.2615100. ISSN 0098-5589. S2CID 8398275.
- ↑ Le Goues, Claire; Dewey-Vogt, Michael; Forrest, Stephanie; Weimer, Westley (2012). "A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each". 2012 34th International Conference on Software Engineering (ICSE). 2012 34th International Conference on Software Engineering (ICSE). pp. 3–13. doi:10.1109/ICSE.2012.6227211.
- ↑ Arcuri, Andrea; Yao, Xin (2008). "A novel co-evolutionary approach to automatic software bug fixing". IEEE Congress on Evolutionary Computation, 2008. CEC 2008. (IEEE World Congress on Computational Intelligence). IEEE Congress on Evolutionary Computation, 2008. CEC 2008. (IEEE World Congress on Computational Intelligence). pp. 162–168. doi:10.1109/CEC.2008.4630793.
- ↑ Harman, Mark; Jia, Yue; Zhang, Yuanyuan (April 2015). "खोज आधारित सॉफ़्टवेयर परीक्षण के लिए उपलब्धियाँ, खुली समस्याएँ और चुनौतियाँ". 2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST). Graz, Austria: IEEE: 1–12. CiteSeerX 10.1.1.686.7418. doi:10.1109/ICST.2015.7102580. ISBN 978-1-4799-7125-1. S2CID 15272060.
- ↑ Memeti, Suejb; Pllana, Sabri; Binotto, Alecio; Kolodziej, Joanna; Brandic, Ivona (2018). "Using meta-heuristics and machine learning for software optimization of parallel computing systems: a systematic literature review". Computing. 101 (8): 893–936. arXiv:1801.09444. Bibcode:2018arXiv180109444M. doi:10.1007/s00607-018-0614-9. S2CID 13868111.
- ↑ Langdon, William B.; Harman, Mark. "Optimising Existing Software with Genetic Programming" (PDF). IEEE Transactions on Evolutionary Computation.
- ↑ Basios, Michail; Li, Lingbo; Wu, Fan; Kanthan, Leslie; Barr, Earl T. (9 September 2017). Google अमरूद पर डार्विनियन डेटा संरचनाओं का अनुकूलन (PDF). pp. 161–167. doi:10.1007/978-3-319-66299-2_14. ISBN 978-3-319-66298-5.
{{cite book}}
:|journal=
ignored (help) - ↑ Minku, Leandro L.; Sudholt, Dirk; Yao, Xin (2012). "Evolutionary algorithms for the project scheduling problem: runtime analysis and improved design". Proceedings of the fourteenth international conference on Genetic and evolutionary computation conference. GECCO '12. New York, NY, USA: ACM. pp. 1221–1228. doi:10.1145/2330163.2330332. ISBN 978-1-4503-1177-9.
- ↑ Mayo, M.; Spacey, S. (2013). "Predicting Regression Test Failures Using Genetic Algorithm-Selected Dynamic Performance Analysis Metrics" (PDF). Proceedings of the 5th International Symposium on Search-Based Software Engineering (SSBSE). Lecture Notes in Computer Science. 8084: 158–171. doi:10.1007/978-3-642-39742-4_13. hdl:10289/7763. ISBN 978-3-642-39741-7.
- ↑ "घर". evosuite.org.
- ↑ others, Ned Batchelder and 100, coverage: Code coverage measurement for Python, retrieved 2018-03-14
- ↑ "Open Source Profilers in Java".
- ↑ "Sapienz: Facebook's push to automate software testing". VentureBeat. 30 December 2018. Retrieved 29 September 2020.
- ↑ Jones, Derek (18 October 2013). "Programming using genetic algorithms: isn't that what humans already do ;-)". The Shape of Code. Retrieved 31 October 2013.
- ↑ Le Goues, Claire; Forrest, Stephanie; Weimer, Westley (2013-09-01). "Current challenges in automatic software repair". Software Quality Journal. 21 (3): 421–443. CiteSeerX 10.1.1.371.5784. doi:10.1007/s11219-013-9208-0. ISSN 1573-1367. S2CID 16435531.
- ↑ Simons, Christopher L. (May 2013). Whither (away) software engineers in SBSE?. First International Workshop on Combining Modelling with Search-Based Software Engineering, First International Workshop on Combining Modelling with Search-Based Software Engineering. San Francisco, USA: IEEE Press. pp. 49–50. Retrieved 2013-10-31.