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

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

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

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

यूएमएल 1.0
से पहले

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

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

तर्कसंगत सॉफ्टवेयर निगम ने 1994 में  जनरल इलेक्ट्रिक  से  जेम्स रूंबाग  को काम पर रखा था और उसके बाद कंपनी दिन के सबसे लोकप्रिय ऑब्जेक्ट-ओरिएंटेड मॉडलिंग दृष्टिकोणों में से दो के लिए स्रोत बन गई: रंबाघ की वस्तु-मॉडलिंग तकनीक (ओएमटी) और  ग्रेडी बूच  की विधि। ऑब्जेक्ट-ओरिएंटेड सॉफ़्टवेयर इंजीनियरिंग (OOSE) पद्धति के निर्माता,  इवर जैकबसन  द्वारा जल्द ही उनके प्रयासों में उनकी सहायता की गई, जो 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 में अपनाया गया था। UML 2.x विनिर्देशन के चार भाग हैं:


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

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

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

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

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

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

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

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

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

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

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

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

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

 Policy Admin Component Diagram.PNG|घटक आरेख BankAccount1.svg|वर्ग आरेख 

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

 Activity conducting.svg|गतिविधि आरेख UML Use Case diagram.svg|स्थिति चित्र का उपयोग 

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

 CheckEmail.svg|अनुक्रम आरेख UML Communication diagram.svg| संचार आरेख 

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

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

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

यह भी देखें

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

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

 * Current Version Specification
 * Current Version Specification