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