सामग्री पर जाएं
यह लेख जापानी से एआई का उपयोग करके अनुवादित किया गया है
जापानी में पढ़ें
यह लेख सार्वजनिक डोमेन (CC0) में है। इसे स्वतंत्र रूप से उपयोग करने के लिए स्वतंत्र महसूस करें। CC0 1.0 Universal

विकास-संचालित विकास और रिफैक्टरिंग-संचालित परीक्षण

विकास का अर्थ है बार-बार कुछ नया और उपयोगी बनाना।

जब हम "विकास" सुनते हैं, तो अक्सर नए उत्पाद विकास का विचार मन में आता है। यह व्यक्तिगत उत्पादों के निर्माण से अलग है; इसका अर्थ है उत्पाद के खाके या साँचे बनाना।

इसलिए, नए उत्पाद विकास के माध्यम से बनाए गए डिज़ाइनों और साँचे का कारखानों में बार-बार उपयोग करके एक जैसे उत्पादों का बड़े पैमाने पर उत्पादन किया जाता है।

"विकास" शब्द के अन्य उपयोग भी हैं, जैसे व्यक्तिगत क्षमताओं का विकास करना, या समाज और राष्ट्र का विकास करना। इनका अर्थ केवल जो कुछ है उसमें वृद्धि होना नहीं है, बल्कि विकसित क्षमताओं का बार-बार उपयोग करने और उनसे लाभ उठाने की क्षमता भी है।

जबकि व्यक्तियों और समाजों की आर्थिक शक्ति आर्थिक परिस्थितियों के साथ घट-बढ़ सकती है, विकसित क्षमताएं आम तौर पर स्थायी होती हैं।

यदि वे कम भी होती हैं, तो इसे आर्थिक समृद्धि की तरह उतार-चढ़ाव नहीं, बल्कि गिरावट के रूप में देखा जाता है।

इसके अलावा, प्रौद्योगिकी और ज्ञान का विकास भी होता है। व्यक्तियों या विशिष्ट समाजों की क्षमताओं के विपरीत, इनमें आसानी से साझा किए जाने की विशेषता होती है।

और इन विकासों के परिणामों – उत्पादों, क्षमताओं, ज्ञान और प्रौद्योगिकियों में से कुछ बाद के विकास के लिए उपयोगी हो सकते हैं।

ऐसे उपयोगी परिणामों को विकसित करके, विकास का दायरा बढ़ता है, और दक्षता तथा गुणवत्ता में भी सुधार होता है।

एआई-संचालित सॉफ्टवेयर विकास

आम तौर पर, विकास के लिए काफी समय और प्रयास की आवश्यकता होती थी। खासकर जैसे-जैसे समाज आगे बढ़ता है और विभिन्न चीजें अधिक परिष्कृत होती जाती हैं, नई चीजें बनाना तेजी से मुश्किल हो जाता है।

हालांकि, जनरेटिव एआई के आगमन के साथ, यह स्थिति बदल रही है। वर्तमान में, जनरेटिव एआई की उच्च प्रोग्रामिंग क्षमताओं के लाभ से, सॉफ्टवेयर विकास में नाटकीय परिवर्तन हो रहा है।

एक भविष्य की दृष्टि जहां जनरेटिव एआई पर आधारित स्वायत्त एजेंट सॉफ्टवेयर इंजीनियरों के रूप में सॉफ्टवेयर विकास के केंद्र में आ जाते हैं, वह पहले से ही वास्तविकता बन रही है।

हम वर्तमान में एक संक्रमणकालीन दौर में हैं। हालांकि हम विकास को पूरी तरह से जनरेटिव एआई को नहीं सौंप सकते, जनरेटिव एआई का कुशलतापूर्वक उपयोग करने से सॉफ्टवेयर विकास को शक्तिशाली रूप से आगे बढ़ाया जा सकता है।

इसे एआई-संचालित सॉफ्टवेयर विकास के रूप में जाना जाता है।

विकास-संचालित विकास

जब जनरेटिव एआई सॉफ्टवेयर विकास को सुव्यवस्थित करता है, तो यह न केवल अंतिम लक्ष्य सॉफ्टवेयर के विकास को अधिक कुशल बना सकता है, बल्कि विकास में सहायता करने वाले सॉफ्टवेयर के विकास को भी कुशल बना सकता है।

जैसा कि पहले उल्लेख किया गया है, विकास-सहायक परिणाम विकास के दायरे का विस्तार करते हैं और दक्षता और गुणवत्ता में वृद्धि में योगदान करते हैं। इसके अलावा, यदि उन्हें प्रभावी ढंग से बनाया जाए, तो उन्हें अन्य विकास परियोजनाओं में भी पुन: उपयोग किया जा सकता है।

इसलिए, सॉफ्टवेयर विकास के दौरान उपयोगी सॉफ्टवेयर विकसित करके, अंततः समग्र दक्षता बढ़ाई जा सकती है, और इन संपत्तियों का भविष्य के विकास के लिए भी लाभ उठाया जा सकता है।

परंपरागत रूप से, ऐसे विकास-सहायक सॉफ्टवेयर का विकास क्षेत्र में एक आम बात थी, लेकिन इसमें अपने स्वयं के विकास के समय और प्रयास की आवश्यकता होती थी, जिसके लिए सावधानीपूर्वक मूल्यांकन और लक्षित कार्यान्वयन की आवश्यकता होती थी।

जनरेटिव एआई का उपयोग करके, छोटे, अनायास कार्यों को स्वचालित करने के लिए सरल सॉफ्टवेयर जल्दी से बनाया जा सकता है। स्पष्ट प्रक्रियाओं वाले कार्यों के लिए, जनरेटिव एआई लगभग बिना किसी त्रुटि के सटीक प्रोग्राम उत्पन्न कर सकता है।

यह सॉफ्टवेयर विकास के दौरान विकास में सहायता करने वाले सॉफ्टवेयर को विकसित करना पहले से कहीं ज्यादा आसान बनाता है।

और गहरे चिंतन पर, एक विकास शैली उभरती है जहां विकास प्रक्रिया के दौरान उपयोगी उपकरण लगातार विकसित किए जाते हैं, जिससे विकास की विधि ही बदल जाती है।

हम इसे विकास-संचालित विकास कहेंगे।

विकास-संचालित विकास का अभ्यास करने के लिए, किसी को अपने सॉफ्टवेयर विकास का वस्तुनिष्ठ रूप से निरीक्षण करने की आदत होनी चाहिए ताकि यह विचार किया जा सके कि कौन से हिस्से सॉफ्टवेयर को सौंपे जा सकते हैं और कौन से हिस्से केवल मनुष्य ही कर सकते हैं, साथ ही ऐसे विकास-सहायक सॉफ्टवेयर विकसित करने का कौशल भी आवश्यक है।

इसके अलावा, जनरेटिव एआई को इन सॉफ्टवेयर उपकरणों में एकीकृत किया जा सकता है। इसे सॉफ्टवेयर के भीतर एम्बेड करके, एक स्टैंडअलोन जनरेटिव एआई एजेंट के विपरीत, प्रसंस्करण के दायरे को संकुचित किया जा सकता है और कुछ हद तक एक स्पष्ट मार्ग परिभाषित किया जा सकता है।

जबकि एआई एजेंट प्रॉम्प्टिंग के माध्यम से समान परिणाम प्राप्त कर सकते हैं, जनरेटिव एआई को एकीकृत करने वाला सॉफ्टवेयर कार्यक्रमों और प्रॉम्प्ट दोनों को मिलाकर सटीकता को अधिक आसानी से बढ़ा सकता है।

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

यह केवल जनरेटिव एआई का उपयोग करके सॉफ्टवेयर विकसित करने से पूरी तरह अलग है। जनरेटिव एआई उपकरणों में महारत हासिल करने वाली टीमों और विकास-संचालित विकास का अभ्यास करने वाली टीमों के बीच समय के साथ एक महत्वपूर्ण अंतर उभरेगा।

रिफैक्टरिंग-संचालित परीक्षण

एक अवधारणा है जिसे टेस्ट-ड्रिवन डेवलपमेंट (टीडीडी) कहा जाता है, जिसमें पहले विशिष्टताओं के आधार पर परीक्षण डिज़ाइन किए जाते हैं और फिर उन परीक्षणों को पास करने के लिए सॉफ़्टवेयर विकसित किया जाता है।

शुरुआत में, मैंने भी सोचा था कि जनरेटिव एआई के साथ स्वचालित परीक्षण के लिए परीक्षण कार्यक्रम विकसित करना आसान होने के कारण, टेस्ट-ड्रिवन डेवलपमेंट व्यावहारिक हो सकता है।

हालांकि, जैसे ही मैंने विकास-संचालित विकास का अभ्यास करना शुरू किया, मुझे विश्वास हो गया कि कार्यान्वयन से पहले परीक्षणों को डिज़ाइन करने का दृष्टिकोण हमेशा उपयुक्त नहीं होता है।

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

ऐसा इसलिए है क्योंकि यदि बातचीत के बाद UI/UX स्तर पर महत्वपूर्ण असंतोष हैं, तो यह संभावना है कि फ्रेमवर्क, मूल आर्किटेक्चर, डेटा मॉडल या उपयोग के मामलों जैसे मूलभूत भागों को बदलने की आवश्यकता हो सकती है।

अपने वर्तमान व्यक्तिगत सॉफ्टवेयर विकास परियोजना में, मैंने कार्यात्मक लचीलेपन और प्रदर्शन के साथ समस्याओं पर भी ध्यान दिया, जिसके कारण मैंने दो फ्रेमवर्क को अलग-अलग लोगों के लिए बदल दिया।

एक हिस्सा भी था जिसमें खराब मेमोरी उपयोग दक्षता थी, जिसके लिए प्रसंस्करण के पूर्ण ओवरहाल की आवश्यकता थी।

यह इन रिफैक्टरिंग के मोड़ पर है कि परीक्षण पहली बार एक सचेत विचार बन जाता है।

यदि यह विकास के शुरुआती चरणों के दौरान है, या यदि सुविधाएँ और विशिष्टताएँ वैसे भी काफी बदलने वाली हैं, तो परीक्षणों की आवश्यकता नहीं हो सकती है।

हालांकि, यदि विकास पहले से ही अच्छी तरह से चल रहा है और जांचने के लिए कई आइटम हैं, तो यह सुनिश्चित करने के लिए रिफैक्टरिंग के दौरान परीक्षणों की आवश्यकता होगी कि कोई कार्यात्मक कमियां या चूक नहीं हैं।

इसलिए, उस बिंदु पर परीक्षण कार्यक्रम बनाने का विचार जब विकास एक निश्चित सीमा तक आगे बढ़ गया हो और रिफैक्टरिंग आवश्यक हो जाए, तो यह बुरा नहीं है।

इस बिंदु पर, मुख्य बात यह है कि सभी कोड के लिए परीक्षण नहीं बनाए जाएं, बल्कि परिपक्व भागों पर परीक्षणों पर ध्यान केंद्रित किया जाए जो भविष्य में बहुत अधिक बदलने की संभावना नहीं रखते हैं, अभी भी तरल भागों को स्वचालित परीक्षणों के बिना छोड़ दिया जाए।

इसे रिफैक्टरिंग-संचालित परीक्षण कहा जा सकता है।

निष्कर्ष

जेनरेटिव एआई सॉफ्टवेयर विकास को नाटकीय रूप से बदल रहा है।

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

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

विकास-संचालित विकास और रिफैक्टरिंग-संचालित परीक्षण ठीक वही दृष्टिकोण हैं जो हमें सॉफ्टवेयर विकास में इन नए क्षितिजों की ओर ले जाएंगे।