Frame technology (software engineering)
फ्रेम प्रौद्योगिकी (एफ. टी.) एक भाषा-तटस्थ (अर्थात, विभिन्न भाषाओं को संसाधित करने वाली) प्रणाली है जो पुनः प्रयोज्य, मशीन-अनुकूलनीय निर्माण खंडों से कस्टम सॉफ्टवेयर बनाती है, जिन्हें फ्रेम कहा जाता है। एफ. टी. का उपयोग बड़ी, जटिल सॉफ्टवेयर प्रणालियों के डिजाइन, निर्माण और विकास में शामिल समय, प्रयास और त्रुटियों को कम करने के लिए किया जाता है। एफ. टी. के लिए मौलिक समान लेकिन सूक्ष्म रूप से विभिन्न घटकों के प्रसार को रोकने की इसकी क्षमता है, एक समस्या जो सॉफ्टवेयर इंजीनियरिंग को परेशान करती है, जिसके लिए प्रोग्रामिंग भाषा निर्माण (सबरूटीन, वर्ग, या टेम्पलेट/जेनेरिक) या मैक्रो और जनरेटर जैसी अतिरिक्त तकनीकें एक व्यावहारिक, स्केलेबल समाधान प्रदान करने में विफल रहीं। एफ. टी. के कई कार्यान्वयन मौजूद हैं। नेट्रॉन फ्यूजन व्यावसायिक सॉफ्टवेयर के निर्माण में विशेषज्ञता रखता है और स्वामित्व रखता है। ए. आर. टी. (अनुकूली पुनः उपयोग प्रौद्योगिकी) ए. एफ. टी. का एक सामान्य-उद्देश्य, मुक्त-स्रोत कार्यान्वयन है। पॉल जी. बैसेट ने पहली ए. एफ. टी. का आविष्कार किया ताकि बदलती आवश्यकताओं और संदर्भों के अनुकूल (उत्पन्न और हाथ से लिखे) कार्यक्रमों को अनुकूलित करने में शामिल दोहराए जाने वाले, त्रुटि-प्रवण संपादन को स्वचालित किया जा सके। एक पर्याप्त साहित्य अब मौजूद है जो बताता है कि एफटी सॉफ्टवेयर के जीवन-चक्र के अधिकांश पहलुओं को कैसे सुविधाजनक बना सकता है, जिसमें डोमेन मॉडलिंग, आवश्यकताओं को इकट्ठा करना, वास्तुकला और डिजाइन, निर्माण, परीक्षण, प्रलेखन, ठीक ट्यूनिंग और विकास शामिल हैं। वैकल्पिक दृष्टिकोणों के लिए एफ. टी. की स्वतंत्र तुलना इस बात की पुष्टि करती है कि जटिल प्रणालियों के निर्माण और रखरखाव के लिए आवश्यक समय और संसाधनों को काफी कम किया जा सकता है। एक कारणः एफ. टी. प्रोग्रामरों को सॉफ्टवेयर की अंतर्निहित अतिरेकताओं से बचाता हैः एफ. टी. ने समकक्ष एक्स. वी. सी. एल. फ्रेम पुस्तकालयों से सी. ओ. टी. एस. ऑब्जेक्ट-पुस्तकालयों को पुनः प्रस्तुत किया है जो दो-तिहाई छोटे और सरल हैं; कस्टम व्यावसायिक अनुप्रयोगों को नियमित रूप से नेट्रॉन फ्यूजन. एस. पी. सी. फ्रेम द्वारा निर्दिष्ट और बनाए रखा जाता है जो उनकी एकत्रित स्रोत फ़ाइलों के आकार के 5%-15% होते हैं। नीचे दो अनौपचारिक विवरण दिए गए हैं, जिसके बाद एक अधिक सटीक परिभाषा और स्पष्टीकरण दिया गया है। एक फ्रेम एक स्वचालित सॉफ्टवेयर असेंबली लाइन पर एक अनुकूलनीय घटक है। एक ऑटो कारखाने की कल्पना करें, जहां प्रत्येक कार मॉडल की विशिष्टताओं के अनुरूप विशिष्ट बंपर, फेंडर और अन्य पुर्जे होने के बजाय, हमारे पास केवल एक सामान्य बंपर, एक सामान्य फेंडर आदि है। अब कल्पना कीजिए कि इन सामान्य भागों को क्लोन किया जा सकता है और प्रत्येक कार मॉडल के अनुरूप आकार दिया जा सकता है। इस तरह की कल्पना विनिर्माण में क्रांति लाएगी; और भौतिक भागों के लिए असंभव होने के बावजूद, सॉफ्टवेयर (और सामान्य रूप से जानकारी) के लिए फ्रेम यही करते हैं। एक फ्रेम एक (प्रोग्राम) पाठ को "पकाने" के लिए एक नुस्खा है। इसके निर्देश बताते हैं कि इसकी सामग्री-अपने भीतर फ्रेम-टेक्स्ट के हिस्सों-को अन्य फ्रेम की सामग्री के साथ कैसे मिश्रित किया जाए। "शेफ" एक फ्रेम प्रोसेसर है जो निर्देशों का पालन करता है, अर्थात। फ्रेम आदेश, जो मुख्य विधि के अनुरूप आवश्यक सामग्री (जोड़ें, संशोधित करें, हटा दें) को बदलते हैं। औपचारिक रूप से, एक फ्रेम एक प्रक्रियात्मक मैक्रो है जिसमें फ्रेम-टेक्स्ट होता है-सामान्य (प्रोग्राम) टेक्स्ट और फ्रेम कमांड की शून्य या अधिक लाइनें (जो एफटी के फ्रेम प्रोसेसर द्वारा की जाती हैं क्योंकि यह कस्टम प्रोग्राम बनाता है)। प्रत्येक फ्रेम नेस्टेड सब-असेंबलियों के पदानुक्रम में एक सामान्य घटक है, और अपने सब-असेंबली फ्रेम (एक पुनरावर्ती प्रक्रिया जो उच्च स्तर के सब-असेंबलियों के पक्ष में एकीकरण संघर्षों को हल करती है) के साथ खुद को एकीकृत करने की एक प्रक्रिया है। आउटपुट कस्टम दस्तावेज़ हैं, आमतौर पर संकलन योग्य स्रोत मॉड्यूल। मुख्य आदेश एक फ्रेम का आह्वान करते हैं (एक प्रक्रिया कॉल जो प्रोग्राम ग्रंथों का निर्माण करते समय निर्माण के समय होती है); एक फ्रेम पैरामीटर (एक निर्माण-समय चर असाइनमेंट) को एक (की सूची) अभिव्यक्ति (ओं) निर्दिष्ट करें; फ्रेम-टेक्स्ट के ब्लॉकों के पहले, उसके बजाय या बाद में फ्रेम-टेक्स्ट डालें, जिसे पैरामीटर अभिव्यक्तियों द्वारा लेबल किया गया है; एक फ्रेम पैरामीटर को तत्काल करें (एक निर्माण-समय अभिव्यक्ति मूल्यांकन); प्रसंस्करण के लिए फ्रेम-टेक्स्ट का चयन करें (एक निर्माण-समय मामले का विवरण); कुछ फ्रेम मापदंडों को बदलते हुए एक फ्रेम-टेक्स्ट को दोहराएँ (कथन के दौरान एक निर्माण-समय)। प्रोसेसर सामान्य पाठ के साथ कमांड को बदलकर और सामान्य पाठ को उत्सर्जित करके फ्रेम-टेक्स्ट को बदल देता है। उदाहरण-यह इनवोक फ्रेम को संसाधित करने के परिणाम से एक इनवोक को प्रतिस्थापित करता है; यह एक असाइन को कुछ भी नहीं के साथ प्रतिस्थापित करता है; और एक इंस्टैंटिएट फ्रेम पैरामीटर की निर्धारित अभिव्यक्ति का मूल्यांकन करने के परिणामस्वरूप सामान्य पाठ बन जाता है, जो स्ट्रिंग, अंकगणितीय अभिव्यक्तियों और नेस्टेड फ्रेम मापदंडों का संयोजन हो सकता है। घटक संबंध फ्रेमों के बीच घटक संबंधों को स्थापित करने का आह्वान करते हैं। उदाहरण के लिए, चित्र 1 में F, J का घटक है और C, J का उप-घटक है। बेशक, कई घटक एक ही उपघटक का आह्वान कर सकते हैं, जैसा कि I और J में F का आह्वान करते हुए, प्रत्येक एक अलग पाठ का निर्माण करता है। समग्र घटक संरचना एक सामान्य अर्धजालिका बनाती है, जिसमें प्रत्येक फ्रेम एक उप-संयोजन का मूल होता है। इस प्रकार सी इसकी अपनी उप-सभा है; एफ और सी एफ उप-सभा के घटक हैं, और जे, एफ और सी जे उप-सभा के घटक हैं। कॉन्टेक्स्ट स्कोपिंग वह है जो एफटी को अन्य मॉडलिंग और निर्माण प्रणालियों से अलग करता हैः प्रत्येक फ्रेम उस संदर्भ का गठन करता है जिसमें यह अपनी उप-असेंबली को एकीकृत करता है। नेस्टेड सब-असेंबलियों में निचले स्तर उत्तरोत्तर अधिक संदर्भ-मुक्त होते हैं क्योंकि वे कम जानकारी को एकीकृत करते हैं। एकीकरण संघर्षों को एक पैरामीटर निर्धारित करने या डालने के लिए सबसे संदर्भ-संवेदनशील फ्रेम के पक्ष में हल किया जाता है-यह उस फ्रेम की उप-असेंबली में अन्य सभी फ्रेमों के लिए केवल पढ़ने योग्य हो जाता है। चित्र 1 में, फ्रेम एफ और सी विरोधाभासी होंगे यदि वे पैरामीटर पी के लिए अलग-अलग मान निर्धारित करते हैं। तो एफ सी को ओवरराइड करता है-यानी, फ्रेम प्रोसेसर सी के असाइनमेंट (ओं) को पी के लिए अनदेखा करता है, और एफ और सी में पी के लिए एफ के मान (ओं) का उपयोग करता है। इसी तरह, जे एफ और सी दोनों को ओवरराइड कर सकता है, और इसी तरह। संदर्भ-दायरा मायने रखता है क्योंकि किसी दिए गए संदर्भ में किसी भी संख्या में (उप) घटकों को फिट करने के लिए आवश्यक सभी समायोजन उस संदर्भ के लिए स्पष्ट और स्थानीय हैं। संदर्भ-दायरे के बिना इस तरह के समायोजन ज्यादातर अंतर्निहित, बिखरे हुए और घटक रूपों के भीतर छिपे हुए होते हैं। इस तरह के रूप न केवल फैलते हैं, जो अनावश्यक अतिरेक और जटिलता का कारण बनते हैं, बल्कि प्रणाली का विकास भी अनावश्यक रूप से कठिन और त्रुटि-प्रवण है। विनिर्देशन फ्रेम और टेम्पलेट एक विनिर्देशन फ्रेम (एस. पी. सी.) एक संपूर्ण असेंबली का शीर्ष है, इसलिए सबसे अधिक संदर्भ-संवेदनशील फ्रेम है। एक पूर्ण प्रोग्राम या सबसिस्टम के निर्माण के लिए प्रोसेसर एक एस. पी. सी. से शुरू होता है, जैसे कि चित्र 1 में एल या एम। जबकि सिद्धांत रूप में एक एस. पी. सी. हर विवरण को अनुकूलित कर सकता है, व्यवहार में एक एस. पी. सी. इसकी पूरी असेंबली का एक छोटा सा अंश है क्योंकि अधिकांश अपवाद (और अपवादों के अपवाद, आदि)। पहले से ही विभिन्न उप-असेंबली फ्रेम द्वारा संभाला जा चुका है। एक फ्रेम लाइब्रेरी को देखते हुए, एस. पी. सी. तार्किक रूप से उन कार्यक्रमों को शामिल करते हैं जिनका वे निर्माण करते हैं; इस प्रकार एस. पी. सी. स्रोत फ़ाइलों को प्राथमिक नियंत्रण बिंदुओं के रूप में प्रतिस्थापित करते हैं। एस. पी. सी. बनाने के लिए टेम्प्लेट का उपयोग करना नियमित अभ्यास है जो प्रोग्राम बनाते हैं, फिर उन प्रोग्रामों को अनिश्चित काल तक प्रबंधित करने और विकसित करने के लिए एस. पी. सी. का उपयोग करते हैं। यह अभ्यास उन विवरणों की संख्या को बहुत कम कर देता है जिन्हें अनुप्रयोग प्रोग्रामरों को जानना और प्रबंधित करना चाहिए। यह हाथ से स्रोत ग्रंथों की प्रतिलिपि बनाने और उन्हें संपादित करने में निहित अतिरेक, जटिलताओं और त्रुटियों से भी बचाता है। डिबगिंग का समय भी कम हो जाता है क्योंकि अधिकांश घटकों का पुनः उपयोग किया जाता है, इसलिए पूर्व-परीक्षण किया जाता है। त्रुटियाँ एस. पी. सी. में स्थानीयकृत होती हैं, क्योंकि उनका सबसे कम परीक्षण किया जाता है। एक टेम्पलेट एक मौलिक एस. पी. सी. है, जिसमें अंतर्निहित टिप्पणियाँ हैं जो बताती हैं कि इसे कैसे अनुकूलित किया जाए। आमतौर पर, कार्यक्रमों की एक छोटी संख्या होती है, प्रत्येक प्रकार को एक टेम्पलेट द्वारा चिह्नित किया जाता है। इसे कॉपी और भरकर, प्रोग्रामर एक टेम्पलेट को एस. पी. सी. में परिवर्तित करते हैं, बिना यह याद रखे कि उन्हें किस फ्रेम की आवश्यकता है, उनके घटक संबंध, या आमतौर पर किन विवरणों को अनुकूलित करने की आवश्यकता होती है। फ्रेम-आधारित डोमेन-विशिष्ट भाषाएँ एक एफ. टी.-आधारित, डोमेन-विशिष्ट भाषा (एफ. टी.-डी. एस. एल.) एक डोमेन-विशिष्ट भाषा है जिसके शब्दार्थ (प्रोग्राम कोड में व्यक्त) को फ्रेम में इंजीनियर किया गया है। एक विशिष्ट एफ. टी.-डी. एस. एल. संपादक डी. एस. एल. अभिव्यक्तियों और एक फ्रेम के बीच अनुवाद करता है जो डी. एस. एल. अभिव्यक्तियों के प्रोग्राम-कोड समकक्षों को व्यक्त करने के लिए फ्रेम किए गए शब्दार्थ को अनुकूलित करेगा। इस उप-सभा के ऊपर बैठा एक एस. पी. सी. तब कार्यक्रम कोड में डोमेन-विशिष्ट भाषा में अवर्णनीय किसी भी अनुकूलन को निर्दिष्ट कर सकता है। इस प्रकार जब उपयोगकर्ता परिवर्तित डी. एस. एल. अभिव्यक्तियों से प्रोग्राम कोड को पुनः उत्पन्न करते हैं, तो पूर्व अनुकूलन नष्ट नहीं होते हैं। फ्रेम इंजीनियरिंग फ्रेम इंजीनियरिंग एक फ्रेम प्रौद्योगिकी वातावरण में सॉफ्टवेयर इंजीनियरिंग को लागू करती है। इसमें डोमेन विश्लेषण, डिजाइनिंग, लेखन, परीक्षण और उनके द्वारा निर्मित प्रणालियों के साथ फ्रेम का सह-विकास शामिल है। फ्रेमिंग नीचे-ऊपर और ऊपर-नीचे दोनों तरह से होती है। नीचे-ऊपर, फ्रेम इंजीनियर आम तौर पर समान प्रोग्राम तत्वों (किसी भी बारीकियों के, टेक्स्ट स्निपेट से लेकर सबसिस्टम तक) के समूहों को सामान्य समकक्षों में एकीकृत और मानकीकृत करके फ्रेम बनाते हैं। टॉप-डाउन दृष्टिकोण पुनरावृत्ति प्रोटोटाइप परिष्करण के साथ डोमेन विशेषज्ञता को जोड़ता है, जो अनुप्रयोग और वास्तुशिल्प आवश्यकताओं, कॉर्पोरेट मानकों और पुनः प्रयोज्य परिसंपत्तियों के एक समूह को विकसित करने की इच्छा से बाधित है, जिसका लाभ निवेश से बहुत अधिक है। (पुनः उपयोग को फ्रेम पुस्तकालयों के कुल आकार को परिणामी निर्माणों के कुल आकार में विभाजित करके और/या अलग-अलग फ्रेम के पुनः उपयोग की गिनती करके मापा जाता है।) एक परिपक्व फ्रेम पुस्तकालय लागत-प्रभावशीलता को बढ़ाता है क्योंकि सॉफ्टवेयर परियोजना के हितधारक एक प्रणाली की नवीनताओं पर अपना ध्यान सीमित कर सकते हैं, इसके मजबूत घटकों और वास्तुकला के बड़े हिस्से को हल्के में लेते हुए। एक परिपक्व पुस्तकालय स्थिर नहीं होता है। फ्रेम इंजीनियर, चयनित आदेश का उपयोग करके, फ्रेम के पिछले संस्करणों से निर्मित कार्यक्रमों के लिए रेट्रोफिट की आवश्यकता के बिना नई आवश्यकताओं को पूरा करते हुए, अनिश्चित काल के लिए पुनः प्रयोज्य फ्रेम विकसित कर सकते हैं। फुटनोट्स स्रोत कोड पीढ़ी