सर्च बेस्ड सॉफ़्टवेयर इंजीनियरिंग

From Vigyanwiki
Revision as of 11:19, 11 July 2023 by alpha>Indicwiki (Created page with "{{Short description|Application of metaheuristic search techniques to software engineering}} {{Use dmy dates|date=December 2020}} खोज-आधारित सॉफ़्...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

खोज-आधारित सॉफ़्टवेयर इंजीनियरिंग (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]


डिबगिंग और रखरखाव

सॉफ़्टवेयर बग (या कोड गंध) की पहचान करना और फिर सॉफ़्टवेयर को डीबग करना (या पुनर्रचना) करना काफी हद तक एक मैन्युअल और श्रम-गहन प्रयास है, हालांकि यह प्रक्रिया टूल-समर्थित है। एसबीएसई का एक उद्देश्य स्वचालित रूप से बग की पहचान करना और उन्हें ठीक करना है (उदाहरण के लिए उत्परिवर्तन परीक्षण के माध्यम से)।

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


परीक्षण

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

सॉफ़्टवेयर का अनुकूलन

कार्यक्रम अनुकूलन में एसबीएसई का उपयोग, या गति और संसाधन उपयोग के मामले में इसे और अधिक कुशल बनाने के लिए सॉफ़्टवेयर के एक टुकड़े को संशोधित करना, सफल शोध का उद्देश्य रहा है।[23] एक उदाहरण में, 50,000 लाइन प्रोग्राम में आनुवंशिक रूप से सुधार किया गया, जिसके परिणामस्वरूप प्रोग्राम औसतन 70 गुना तेज हो गया।[24] बेसियोस एट अल द्वारा एक हालिया काम। पता चलता है कि डेटा संरचना को अनुकूलित करके, Google गुवा ने निष्पादन समय पर 9% सुधार, मेमोरी खपत पर 13% सुधार और सीपीयू उपयोग पर 4% सुधार पाया।[25]


परियोजना प्रबंधन

कई निर्णय जो आमतौर पर एक प्रोजेक्ट मैनेजर द्वारा लिए जाते हैं, स्वचालित रूप से किए जा सकते हैं, उदाहरण के लिए, प्रोजेक्ट शेड्यूलिंग।[26]


उपकरण

SBSE के लिए उपलब्ध टूल में OpenPAT,[27] इवोसु[28] और Coverage, पायथन के लिए एक कोड कवरेज माप उपकरण।[29]


तरीके और तकनीक

कई विधियाँ और तकनीकें उपलब्ध हैं, जिनमें शामिल हैं:

उद्योग स्वीकृति

अनुसंधान के अपेक्षाकृत नए क्षेत्र के रूप में, एसबीएसई को अभी तक व्यापक उद्योग स्वीकृति का अनुभव नहीं हुआ है।

उद्योग में एसबीएसई के सफल अनुप्रयोग ज्यादातर सॉफ्टवेयर परीक्षण के भीतर पाए जा सकते हैं, जहां बड़े पैमाने पर बग को उजागर करने के लिए स्वचालित रूप से यादृच्छिक परीक्षण इनपुट उत्पन्न करने की क्षमता कंपनियों के लिए आकर्षक है। 2017 में, फेसबुक ने सॉफ्टवेयर स्टार्टअप माजिके लिमिटेड का अधिग्रहण किया, जिसने एक खोज-आधारित बग ढूंढने वाला ऐप Sapienz विकसित किया।[31] अन्य अनुप्रयोग परिदृश्यों में, सॉफ़्टवेयर इंजीनियर उन उपकरणों को अपनाने में अनिच्छुक हो सकते हैं जिन पर उनका बहुत कम नियंत्रण होता है या जो ऐसे समाधान उत्पन्न करते हैं जो मनुष्यों द्वारा उत्पादित समाधानों से भिन्न होते हैं।[32] कार्यक्रमों को ठीक करने या सुधारने में एसबीएसई के उपयोग के संदर्भ में, डेवलपर्स को आश्वस्त होना चाहिए कि कोई भी स्वचालित रूप से उत्पादित संशोधन सिस्टम की आवश्यकताओं और परीक्षण वातावरण के दायरे से बाहर अप्रत्याशित व्यवहार उत्पन्न नहीं करता है। यह ध्यान में रखते हुए कि पूरी तरह से स्वचालित प्रोग्रामिंग अभी तक हासिल नहीं की जा सकी है, ऐसे संशोधनों की एक वांछनीय संपत्ति यह होगी कि रखरखाव गतिविधियों का समर्थन करने के लिए उन्हें मनुष्यों द्वारा आसानी से समझा जाना चाहिए।[33] एक और चिंता यह है कि एसबीएसई सॉफ्टवेयर इंजीनियर को निरर्थक बना सकता है। समर्थकों का दावा है कि एसबीएसई की प्रेरणा इंजीनियर और कार्यक्रम के बीच संबंध को बढ़ाना है।[34]


यह भी देखें

संदर्भ

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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
  6. Harman, Mark; Jones, Bryan F. (15 December 2001). "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.
  7. Harman, Mark; Mansouri, S. Afshin; Zhang, Yuanyuan (1 November 2012). "Search-based software engineering: Trends, techniques and applications". ACM Computing Surveys (in English). 45 (1): 1–61. doi:10.1145/2379776.2379787. S2CID 207198163.
  8. 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.
  9. Greer, Des; Ruhe, Guenther (15 March 2004). "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.
  10. 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.
  11. Clark, John A.; Jacob, Jeremy L. (15 December 2001). "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.
  12. Räihä, Outi (1 November 2010). "खोज-आधारित सॉफ़्टवेयर डिज़ाइन पर एक सर्वेक्षण" (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.
  13. Mariani, Thainá; Vergilio, Silvia Regina (1 March 2017). "खोज-आधारित रीफैक्टरिंग पर एक व्यवस्थित समीक्षा". Information and Software Technology. 83: 14–34. doi:10.1016/j.infsof.2016.11.009. ISSN 0950-5849.
  14. Alba, Enrique; Chicano, J. Francisco (1 June 2007). "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.
  15. 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.
  16. Zhang, Yuanyuan (February 2010). Multi-Objective Search-based Requirements Selection and Optimisation (PhD). Strand, London, UK: University of London.
  17. 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.
  18. 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)
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.
  24. Langdon, William B.; Harman, Mark. "Optimising Existing Software with Genetic Programming" (PDF). IEEE Transactions on Evolutionary Computation.
  25. 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)
  26. 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.
  27. 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.
  28. "घर". evosuite.org.
  29. others, Ned Batchelder and 100, coverage: Code coverage measurement for Python, retrieved 14 March 2018
  30. "Open Source Profilers in Java".
  31. "Sapienz: Facebook's push to automate software testing". VentureBeat. 30 December 2018. Retrieved 29 September 2020.
  32. Jones, Derek (18 October 2013). "Programming using genetic algorithms: isn't that what humans already do ;-)". The Shape of Code. Retrieved 31 October 2013.
  33. Le Goues, Claire; Forrest, Stephanie; Weimer, Westley (1 September 2013). "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.
  34. 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 31 October 2013.


बाहरी संबंध