ऑब्जेक्ट कॉन्स्ट्रेंट लैंग्वेज
ऑब्जेक्ट कॉन्स्ट्रेंट लैंग्वेज (ओसीएल) एक घोषणात्मक लैंग्वेज है जो आईबीएम में विकसित यूनिफाइड मॉडलिंग लैंग्वेज (यूएमएल) मॉडल पर प्रयुक्त होने वाले नियमों का वर्णन करती है और अब यूएमएल मानक का भाग है। प्रारंभ में ओसीएल यूएमएल के लिए केवल एक औपचारिक विनिर्देश लैंग्वेज विस्तार था।[1] ओसीएल का उपयोग अब यूएमएल सहित किसी भी मेटा-ऑब्जेक्ट सुविधा (एमओएफ) लक्ष्य प्रबंधन समूह (ओएमजी) मेटामॉडलिंग या मेटा-मॉडल के साथ किया जा सकता है।[2] ऑब्जेक्ट बाधा लैंग्वेज एक स्पष्ट पाठ लैंग्वेज है जो किसी भी एमओएफ मॉडल या मेटा-मॉडल पर बाधा और ऑब्जेक्ट क्वेरी अभिव्यक्ति प्रदान करती है जिसे अन्यथा आरेखीय नोटेशन द्वारा व्यक्त नहीं किया जा सकता है। ओसीएल, मॉडलों को बदलने के लिए नई ओएमजी मानक अनुशंसा, क्वेरीज़/व्यू/ट्रांसफ़ॉर्मेशन (क्यूवीटी) विनिर्देश का एक प्रमुख घटक है।
विवरण
ओसीएल सिंट्रॉपी (सॉफ्टवेयर) का वंशज है, जो दूसरी पीढ़ी की वस्तु-उन्मुख विश्लेषण और डिजाइन पद्धति है। ओसीएल1.4 परिलैंग्वेज एक बाधा लैंग्वेज निर्दिष्ट करती है। ओसीएल 2.0 में, सामान्य ऑब्जेक्ट क्वेरी लैंग्वेज परिलैंग्वेजओं को सम्मिलित करने के लिए परिलैंग्वेज का विस्तार किया गया है।
ओसीएल स्टेटमेंट चार भागों में बनाए गए हैं:
- एक संदर्भ जो उस सीमित स्थिति को परिभाषित करता है जिसमें कथन मान्य है
- एक संपत्ति जो संदर्भ की कुछ विशेषताओं का प्रतिनिधित्व करती है (उदाहरण के लिए, यदि संदर्भ एक वर्ग है, तो एक संपत्ति एक विशेषता हो सकती है)
- एक ऑपरेशन (उदाहरण के लिए, अंकगणित, सेट-उन्मुख) जो किसी संपत्ति में हेरफेर या योग्यता प्राप्त करता है, और
- कीवर्ड (उदाहरण के लिए, यदि, फिर, अन्यथा, और, या, नहीं, तात्पर्य) जिनका उपयोग सशर्त अभिव्यक्तियों को निर्दिष्ट करने के लिए किया जाता है।
संबंध
ओसीएल और यूएमएल
ओसीएल यूनिफाइड मॉडलिंग लैंग्वेज को उन अभिव्यक्तियों को प्रदान करके पूरक करता है जिनमें न तो प्राकृतिक लैंग्वेज की अस्पष्टता है और न ही जटिल गणित का उपयोग करने की अंतर्निहित कठिनाई है। ओसीएल ग्राफ़-आधारित मॉडलों के लिए एक नेविगेशन लैंग्वेज भी है।
ओसीएल और एमओएफ
ओसीएल अपने मेटा-तत्वों के साथ अभिकथनों को जोड़कर मेटा-ऑब्जेक्ट सुविधा मॉडल को अधिक स्पष्ट बनाता है।
ओसीएल और क्यूवीटी
मॉडल संचालित इंजीनियरिंग (एमडीई) या मॉडल-संचालित वास्तुकला के लिए विशेष महत्व मॉडल परिवर्तन की धारणा है। ऑब्जेक्ट मैनेजमेंट ग्रुप ने मॉडल परिवर्तन के लिए एक विशिष्ट मानक परिभाषित किया है जिसे एमओएफ/क्यूवीटी या संक्षेप में क्यूवीटी कहा जाता है। क्यूवीटी मानक के अनुपालन के विभिन्न स्तरों के साथ ग्रेट, वियाट्रा, या टेफकट जैसी कई मॉडल परिवर्तन लैंग्वेजएँ वर्तमान में उपलब्ध हैं। इनमें से कई लैंग्वेजएँ ओसीएल के शीर्ष पर बनाई गई हैं, जो क्यूवीटी-अनुपालन का मुख्य भाग है।
विकल्प
नियम-आधारित सत्यापन लैंग्वेज होने के कारण, स्कीमेट्रोन को ओसीएल का एक विकल्प माना जा सकता है। हालाँकि स्कीमट्रॉन एक्स्टेंसिबल मार्कअप लैंग्वेज एक्सएमएल ट्री|(एक्सएमएल) ट्री के लिए काम करता है जबकि ओसीएल मेटा-ऑब्जेक्ट सुविधा-आधारित मॉडल और मेटा-मॉडल (अथार्त एक्सएमएल मेटाडेटा इंटरचेंज (एक्सएमएल मेटाडेटा इंटरचेंज) ट्री) को नेविगेट करना संभव बनाता है। दूसरे शब्दों में, ओसीएल यूनिफाइड मॉडलिंग लैंग्वेज या एमओएफ से उसी तरह संबंधित है जैसे स्कीमट्रॉन एक्सएमएल से संबंधित है। (ध्यान दें कि स्कीमट्रॉन एक्सएमएल पेड़ों के अंदर नेविगेट करने के लिए एक्सपाथ का उपयोग करता है।)
एक मॉडल विनिर्देश लैंग्वेज होने के नाते डिजाइनरों को एक मॉडल या मेटा-मॉडल को साइड-इफ़ेक्ट-मुक्त एनोटेशन के साथ सजाने की अनुमति मिलती है ओसीएल को मिश्र धातु लैंग्वेज जैसी लैंग्वेजओं द्वारा प्रतिस्थापित किया जा सकता है स्वचालित ओसीएल पीढ़ी सैद्धांतिक रूप से प्राकृतिक लैंग्वेज से संभव है।[3]
बाध्यता | ओसीएल समतुल्य |
---|---|
किसी व्यक्ति की उम्र नकारात्मक नहीं होती. | context Person inv: self.age >=0
|
एक व्यक्ति अपने माता-पिता से छोटा है। | context Person inv: self.parents->forAll(p|p.age>self.age)
|
जन्मदिन के बाद व्यक्ति एक वर्ष का हो जाता है। | context Person::hasBirthday() post: self.age=self.age@pre+1
|
एक व्यक्ति के अधिकतम 2 माता-पिता होते हैं। | context Person inv: self.parents->size()<=2
|
किसी के बच्चा होने के बाद उसका बच्चा-सेट खाली नहीं रहता और वह पहले से बड़ा हो जाता है। | context Person::getsChild() post: self.childs->notEmpty() and self.childs->size() > self.childs@pre->size()
|
केवल एक वयस्क ही कार का मालिक हो सकता है। | context Person inv: self.age<18 implies self.cars->isEmpty()
|
किसी कार का पहला पंजीकरण उसके बनने से पहले नहीं हो सकता। | context Auto inv: self.registration>=self.constructionYear
|
प्रत्येक व्यक्ति जिसके पास कार है उसके पास कम से कम एक कार है जो उस व्यक्ति से छोटी है। | context Person inv: self.cars->notEmpty() implies self.cars->exists( c | Calendar.YEAR - c.constructionYear < self.age)
|
कोई भी अपना माता-पिता नहीं हो सकता. | context Person inv: self.parents->excludes(self)
|
कम से कम एक व्यक्ति ऐसा है जिसके पास कार है। | context Person inv: Person.allInstances()->exists(p | p.cars->size() > 0)
|
एक्सटेंशन
ग्रहण ओसीएल [4] अतिरिक्त ऑपरेटरों और मैप्स के लिए एक प्रकार के साथ मानक ओसीएल का विस्तार करता है। एजाइलयूएमएल मानचित्र और फलन प्रकारों के साथ मानक ओसीएल का विस्तार करता है।[5] ये एक्सटेंशन आधुनिक प्रोग्रामिंग लैंग्वेजओं जैसे पायथन और स्विफ्ट में उपस्थित मैप और फलन प्रकारों के अनुरूप हैं।
यह भी देखें
- कंप्यूटर मॉडल
- डेटा मैपिंग
- डोमेन विशिष्ट लैंग्वेज (डीएसएल)
- डोमेन-विशिष्ट मॉडलिंग (डीएसएम)
- ग्रहण (सॉफ्टवेयर) जीएमटी प्रोजेक्ट
- गेलो अभिव्यक्ति लैंग्वेज
- यूनिफाइड मॉडलिंग लैंग्वेज शब्दों की शब्दावली
- जानबूझकर प्रोग्रामिंग (आईपी)
- यूएमएल उपकरण की सूची
- मेटा-मॉडलिंग
- मेटा-मॉडलिंग तकनीक
- मेटा-ऑब्जेक्ट सुविधा (एमओएफ)
- मेटा डेटा
- मॉडल-आधारित परीक्षण (एमबीटी)
- मॉडल-संचालित वास्तुकला (एमडीए)
- मॉडल संचालित इंजीनियरिंग (एमडीई)
- [[मॉडल परिवर्तन लैंग्वेज]] (एमटीएल)
- मॉडलिंग लैंग्वेज
- मॉडलिंग परिप्रेक्ष्य
- एमओएफएम2टी
- वस्तु-उन्मुख विश्लेषण और डिजाइन (ओओएडी)
- क्यूवीटी|एमओएफ प्रश्न/दृश्य/परिवर्तन (क्यूवीटी)
- शब्दार्थ अनुवाद
- परिवर्तन लैंग्वेज (टीएल)
- यूएमएल उपकरण
- शब्दावली-आधारित परिवर्तन
- एक्सएमएल मेटाडेटा इंटरचेंज
- एक्सएमएल परिवर्तन लैंग्वेज (एक्सटीएल)
संदर्भ
- ↑ Object Management Group (OMG); Object Constraint Language Specification, Chapter 7 of OMG Unified Modeling Language Specification, Version 1.3, March 2000 (first edition)
- ↑ Object Management Group (OMG); Object Constraint Language OMG Available Specification Version 2.0, May 2006
- ↑ Imran Sarwar Bajwa (October 2010). "OCL Constraints Generation from Natural Language Specification, 2010". IEEE. doi:10.1109/EDOC.2010.33. S2CID 7495256.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ "Eclipse OCL™ (Object Constraint Language)". 31 January 2013.
- ↑ Lano, Kevin; Kolahdouz-Rahimi, Shekoufeh (2021). "Extending OCL with Map and Function Types". सॉफ्टवेयर इंजीनियरिंग के बुनियादी सिद्धांत. Lecture Notes in Computer Science. Vol. 12818. pp. 108–123. doi:10.1007/978-3-030-89247-0_8. ISBN 978-3-030-89246-3. S2CID 239029860.
बाहरी संबंध
- OMG ओसीएल specification
- ओसीएल Portal - The center for ओसीएल related information
- ओसीएल page of Computer Science Dept. of CSUSB (brief ओसीएल 2.0 syntax)
- Octopus: ओसीएल Tool for Precise Uml Specifications (ओसीएल checker)
- Dresden ओसीएल Toolkit (ओसीएल Toolkit, various ओसीएल related publications)
- HOL-ओसीएल (An interactive theorem proof environment for OCL, various ओसीएल related publications)
- ओसीएल for Java tutorial on ParlezUML
- Article on using EMF's ओसीएल in Java code
- UML link page on cetus-links.org
- USE (UML-based Specification Environment) (ओसीएल Tool for model validation, various ओसीएल related publications)
- ओसीएल tutorial
- NL2ओसीएल (ओसीएल Tool for invariant generation from NL)