यूनिफाइड मॉडलिंग लैंग्वेज

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

यूएमएल का निर्माण मूल रूप से अलग नोटेशनल सिस्टम और सॉफ्टवेयर डिजाइन के दृष्टिकोण को मानकीकृत करने की इच्छा से प्रेरित था। इसे 1994-1995 में तर्कसंगत सॉफ्टवेयर में विकसित किया गया था, 1996 तक उनके नेतृत्व में और विकास किया गया था।

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

यूएमएल 1.0 से पहले
यूएमएल 1990 के दशक के उत्तरार्ध से विकसित हो रहा है और इसकी जड़ें 1980 के दशक के अंत और 1990 के दशक की प्रारंभिक में विकसित वस्तु-उन्मुख प्रोग्रामिंग विधियों में हैं। टाइमलाइन (छवि देखें) ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग विधियों और नोटेशन के इतिहास की मुख्य विशेषताएं दिखाती है।

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

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

यूएमएल 1.x
उन तीनों (रंबॉघ, जैकबसन और बूच) के तकनीकी नेतृत्व में, यूनिफाइड मॉडलिंग लैंग्वेज (यूएमएल) विनिर्देश को पूरा करने और मानकीकरण के लिए ऑब्जेक्ट मैनेजमेंट ग्रुप (ओएमजी) को प्रस्तावित करने के लिए 1996 में यूएमएल पार्टनर्स नामक एक संघ का आयोजन किया गया था। साझेदारी में अतिरिक्त इच्छुक पक्ष भी सम्मिलित थे (उदाहरण के लिए हेवलेट पैकर्ड, डिजिटल उपकरण निगम , आईबीएम और माइक्रोसॉफ्ट ) यूएमएल पार्टनर्स का यूएमएल 1.0 ड्राफ्ट कंसोर्टियम द्वारा जनवरी 1997 में ओएमजी को प्रस्तावित किया गया था। उसी महीने के समय यूएमएल पार्टनर्स ने एक समूह का गठन किया गया था जिसे लैंग्वेज के निर्माण के स्पष्ट अर्थ को परिभाषित करने के लिए डिज़ाइन किया गया था, जिसकी अध्यक्षता क्राइस कोब्रिन ने की थी और एड आईखोल्ट द्वारा प्रशासित किया गया था, जिससे विनिर्देश को अंतिम रूप दिया जा सकता है और इसे अन्य मानकीकरण प्रयासों के साथ यूनिफाइड किया जा सकता है । इस कार्य का परिणाम, यूएमएल 1.1, अगस्त 1997 में ओएमजी को प्रस्तुत किया गया था और नवंबर 1997 में ओएमजी द्वारा अपनाया गया था।

पहली रिलीज के बाद एक टास्क फोर्स का गठन किया गया लैंग्वेज को सुधारने के लिए, जिसने कई छोटे संशोधन, 1.3, 1.4 और 1.5 प्रसारित किये जाते है।

इसके द्वारा उत्पादित मानकों (साथ ही मूल मानक) को अस्पष्ट और असंगत होने के रूप में नोट किया गया है।

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

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

यूएमएल 2
यूएमएल 2.0 प्रमुख संशोधन ने 2005 में संस्करण 1.5 को बदल दिया, जिसे इसकी सुविधाओं के उपयोग पर नए अनुभव को दर्शाने के लिए लैंग्वेज को और उत्तम बनाने के लिए एक विस्तारित संघ के साथ विकसित किया गया था।

चूँकि यूएमएल 2.1 को औपचारिक विनिर्देश के रूप में कभी प्रसारित नहीं किया गया था, संस्करण 2.1.1 और 2.1.2 2007 में दिखाई दिए, इसके बाद फरवरी 2009 में यूएमएल 2.2 आया था यूएमएल 2.3 औपचारिक रूप से मई 2010 में जारी किया गया था। यूएमएल 2.4.1 औपचारिक रूप से अगस्त 2011 में जारी किया गया था। यूएमएल 2.5 को अक्टूबर 2012 में एक प्रगति संस्करण के रूप में जारी किया गया था और आधिकारिक रूप से जून 2015 में जारी किया गया था। औपचारिक संस्करण 2.5.1 दिसंबर 2017 में अपनाया गया था।

यूएमएल 2.x विनिर्देशन के चार भाग हैं:


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

यूएमएल 2.4.1 तक, इन मानकों के नवीनतम संस्करण थे: संस्करण 2.5 के बाद से, यूएमएल विशिष्टता को सरल बना दिया गया है (सुपरस्ट्रक्चर और इंफ्रास्ट्रक्चर के बिना), और इन मानकों के नवीनतम संस्करण अब हैं:
 * यूएमएल अधिरचना संस्करण 2.4.1
 * यूएमएल इन्फ्रास्ट्रक्चर संस्करण 2.4.1
 * ओसीएल संस्करण 2.3.1
 * यूएमएल आरेख इंटरचेंज संस्करण 1.0।
 * यूएमएल विशिष्टता 2.5.1
 * ओसीएल संस्करण 2.4

संशोधन कार्य बल द्वारा इसे अद्यतन और उत्तम बनाना जारी है, जो लैंग्वेज के साथ किसी भी उद्देश्य को हल करते हैं।

डिजाइन
यूएमएल एक आरेख में सिस्टम के आर्किटेक्चरल ब्लूप्रिंट को देखने का एक विधि प्रदान करता है, जिसमें तत्व सम्मिलित हैं:
 * कोई गतिविधि (यूएमएल) (जॉब्स);
 * सिस्टम का व्यक्तिगत घटक (यूएमएल);
 * और वे अन्य घटक-आधारित सॉफ़्टवेयर इंजीनियरिंग के साथ कैसे इंटरैक्ट कर सकते हैं;
 * सिस्टम कैसे चलेगा;
 * कैसे संस्थाएं दूसरों के साथ इंटरैक्ट करती हैं (घटक और इंटरफेस);
 * बाहरी यूजर इंटरफेस।

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

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

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

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

यूएमएल मॉडल को एक्सएमएल मेटाडेटा इंटरचेंज (एक्सएमआई) प्रारूप का उपयोग करके यूएमएल उपकरणों के बीच आदान-प्रदान किया जा सकता है।

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

डायग्राम
यूएमएल 2 में कई तरह के आरेख होते हैं, जिन्हें दो श्रेणी में बांटा गया है। कुछ प्रकार संरचनात्मक जानकारी का प्रतिनिधित्व करते हैं, और शेष सामान्य प्रकार के व्यवहार का प्रतिनिधित्व करते हैं, जिनमें कुछ ऐसे भी हैं जो इंटरैक्शन के विभिन्न पहलुओं का प्रतिनिधित्व करते हैं। इन आरेखों को श्रेणीबद्ध रूप से वर्गीकृत किया जा सकता है जैसा कि निम्न वर्ग आरेख में दिखाया गया है:

इन आरेखों में उपयोग, बाधा, या संकेत को समझाते हुए टिप्पणियां या नोट्स हो सकते हैं।

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

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

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

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

लेयर $$2 $$ मेटा-ऑब्जेक्ट फैसिलिटी मॉडल का सबसे प्रमुख उदाहरण यूएमएल मेटामॉडल है, जो यूएमएल का ही वर्णन करता है। ये M2-मॉडल M1-परत के तत्वों का वर्णन करते हैं, और इस प्रकार M1-मॉडल उदाहरण के लिए, ये यूएमएल में लिखे गए मॉडल होंगे। अंतिम परत M0-परत या डेटा परत है। इसका उपयोग सिस्टम के रनटाइम इंस्टेंसेस का वर्णन करने के लिए किया जाता है।

मेटा-मॉडल को स्टीरियोटाइप (यूएमएल) नामक तंत्र का उपयोग करके बढ़ाया जा सकता है। यूएमएल 1.x और 2.0 में स्टीरियोटाइप तंत्र के उपयोग और दुरुपयोग में ब्रायन हेंडरसन-सेलर्स और सीज़र गोंजालेज-पेरेज़ द्वारा अपर्याप्त/अस्थिर होने के रूप में इसकी आलोचना की गई है।

दत्तक ग्रहण
यूएमएल का विपणन कई संदर्भो में किया गया है।

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

इसे कई संरचनाओं वाली एक बड़ी लैंग्वेज माना जाता है। कुछ लोगों (जैकबसन सहित) को लगता है कि यूएमएल का आकार इसे सीखने (और इसलिए इसका उपयोग करने) में बाधा डालता है।

यह भी देखें

 * यूएमएल के अनुप्रयोग
 * बिजनेस प्रोसेस मॉडल और नोटेशन
 * सी 4 मॉडल
 * मॉडल आधारित परीक्षण
 * मॉडल संचालित इंजीनियरिंग
 * वस्तु उन्मुख भूमिका विश्लेषण और मॉडलिंग
 * सिस्टम्स मॉडलिंग लैंग्वेज (एसआईएसएमएल)
 * यूनिफाइड मॉडलिंग लैंग्वेज टूल्स की सूची
 * रक्षा वास्तुकला फ्रेमवर्क विभाग
 * मोडैफ
 * डीओटी (ग्राफ विवरण लैंग्वेज)
 * प्रक्रिया विशिष्टता लैंग्वेज

बाहरी कड़ियाँ

 * Current Version Specification
 * Current Version Specification