डोमेन-स्पेसिफिक मॉडलिंग

डोमेन-स्पेसिफिक मॉडलिंग (डीएसएम) कंप्यूटर सॉफ्टवेयर जैसे सिस्टम को डिजाइन और विकसित करने के लिए एक सॉफ्टवेयर इंजीनियरिंग पद्धति (सॉफ्टवेयर इंजीनियरिंग) है। इसमें किसी सिस्टम के विभिन्न कथनों का प्रतिनिधित्व करने के लिए डोमेन-स्पेसिफिक लैंग्वेज का व्यवस्थित उपयोग सम्मिलित है।

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

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

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

उनका उपयोग करने वाले संगठन द्वारा निर्मित मॉडलिंग लैंग्वेज और जनरेटर होने से उनके स्पष्ट डोमेन के साथ और डोमेन में परिवर्तनों के उत्तर में टाइट फिट होने की अनुमति मिलती है।

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

डोमेन-स्पेसिफिक लैंग्वेज को परिभाषित करना
किसी लैंग्वेज को परिभाषित करने के लिए, किसी को परिभाषा लिखने के लिए एक लैंग्वेज की आवश्यकता होती है। मॉडल की लैंग्वेज को अधिकांशतः मेटामॉडलिंग कहा जाता है, इसलिए मॉडलिंग लैंग्वेज को परिभाषित करने के लिए लैंग्वेज मेटा-मेटामॉडल है। मेटा-मेटामॉडल को दो समूहों में विभाजित किया जा सकता है: वे जो उपस्थित लैंग्वेज से प्राप्त हुए हैं या उनके अनुकूलन हैं, और वे जो विशेष रूप से मेटा-मेटामॉडल के रूप में विकसित किए गए हैं।

व्युत्पन्न मेटा-मेटामॉडल में इकाई-संबंध मॉडल या इकाई-संबंध आरेख, औपचारिक लैंग्वेज, विस्तारित बैकस-नौर फॉर्म (ईबीएनएफ), ऑन्टोलॉजी लैंग्वेज (कंप्यूटर विज्ञान), एक्सएमएल स्कीमा और मेटा-ऑब्जेक्ट सुविधा (एमओएफ) सम्मिलित हैं। इन लैंग्वेज की शक्ति मूल लैंग्वेज की परिचितता और मानकीकरण में निहित होती है।

डोमेन-स्पेसिफिक मॉडलिंग का लोकाचार एक स्पेसिफिक कार्य के लिए एक नई लैंग्वेज के निर्माण का समर्थन करता है, और इसलिए मेटा-मेटामॉडल के रूप में डिजाइन की गई आश्चर्यजनक रूप से नई लैंग्वेज हैं। ऐसी लैंग्वेज का सबसे व्यापक रूप से उपयोग किया जाने वाला वर्ग ओपीआरआर है, जीओपीआरआर, और जीओपीपीआरआर, जो न्यूनतम प्रयास के साथ मॉडलिंग लैंग्वेज में पाई जाने वाली चीजों का समर्थन करने पर ध्यान केंद्रित करते हैं।

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

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

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

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

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

यूएमएल में एक प्रोफ़ाइल तंत्र सम्मिलित है जो इसे स्पेसिफिक डोमेन और प्लेटफ़ॉर्म के लिए प्रतिबंधित और अनुकूलित करने की अनुमति देता है। यूएमएल प्रोफाइल स्टीरियोटाइप (यूएमएल), स्टीरियोटाइप विशेषताओं (यूएमएल 2.0 से पहले टैग किए गए मानों के रूप में जाना जाता है) का उपयोग करते हैं, और यूएमएल के सीमा को एक विशेष डोमेन तक सीमित और विस्तारित करने के लिए बाधाओं का उपयोग करते हैं। संभवतः किसी स्पेसिफिक डोमेन के लिए यूएमएल को अनुकूलित करने का सबसे अच्छा ज्ञात उदाहरण SysML है, जो सिस्टम अभियांत्रिकी के लिए एक डोमेन स्पेसिफिक लैंग्वेज है।

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

यह भी देखें

 * कंप्यूटर एडेड सॉफ्टवेयर इंजीनियरिंग
 * डोमेन-संचालित डिज़ाइन
 * डोमेन-स्पेसिफिक लैंग्वेज
 * फ्रेमवर्क-स्पेसिफिक मॉडलिंग लैंग्वेज
 * जनरल पर्पस मॉडलिंग
 * डोमेन-स्पेसिफिक मल्टीमॉडलिंग
 * मॉडल-संचालित इंजीनियरिंग
 * मॉडल-ड्रिवेनआर्किटेक्चर
 * सॉफ्टवेयर फैक्ट्री
 * सेवा-उन्मुख मॉडलिंग या अनुशासन-स्पेसिफिक मॉडलिंग|अनुशासन-स्पेसिफिक मॉडलिंग

बाहरी संबंध

 * Domain-specific modeling for generative software development, Web-article by Martijn Iseger, 2010
 * Domain Specific Modeling in IoC frameworks Web-article by Ke Jin, 2007
 * Domain-Specific Modeling for Full Code Generation from Methods & Tools Web-article by Juha-Pekka Tolvanen, 2005
 * Creating a Domain-Specific Modeling Language for an Existing Framework Web-article by Juha-Pekka Tolvanen, 2006