لغة قيود الكائنات

لغة قيود الكائنات ( OCL ) هي لغة وصفية تُحدد القواعد المطبقة على نماذج لغة النمذجة الموحدة (UML) التي طُوّرت في شركة IBM ، وهي الآن جزء من معيار UML. في البداية، كانت OCL مجرد امتداد رسمي للغة مواصفات UML. [ 1 ] يُمكن الآن استخدام OCL مع أي نموذج فوقي من نماذج مجموعة إدارة الكائنات (OMG) التابعة لمرفق الكائنات الفوقية (MOF) ، بما في ذلك UML. [ 2 ] لغة قيود الكائنات هي لغة نصية دقيقة تُوفر تعبيرات القيود والاستعلام عن الكائنات على أي نموذج MOF أو نموذج فوقي لا يُمكن التعبير عنه باستخدام الترميز التخطيطي. تُعد OCL عنصرًا أساسيًا في توصية معيار OMG الجديدة لتحويل النماذج، وهي مواصفات الاستعلامات/العروض/التحويلات ( QVT ).

وصف

لغة OCL هي امتداد للغة Syntropy ، وهي من الجيل الثاني من أساليب تحليل وتصميم الكائنات. حدد تعريف OCL 1.4 لغة قيود. وفي OCL 2.0، تم توسيع التعريف ليشمل تعريفات لغة استعلام الكائنات العامة. [ 3 ]

تتكون عبارات OCL من أربعة أجزاء:

  1. سياق يحدد الحالة المحدودة التي يكون فيها البيان صحيحًا
  2. خاصية تمثل بعض خصائص السياق (على سبيل المثال، إذا كان السياق عبارة عن فئة، فقد تكون الخاصية سمة).
  3. عملية (مثل العمليات الحسابية، أو العمليات الموجهة نحو المجموعات) تُجري تعديلات على خاصية ما أو تُحدد خصائصها، و
  4. الكلمات المفتاحية (مثل if، then، else، و، or، not، uses) التي تستخدم لتحديد التعبيرات الشرطية.

العلاقة

لغة OCL ولغة UML

تُكمّل لغة OCL لغة UML بتوفير تعابير تخلو من غموض اللغة الطبيعية وصعوبة استخدام الرياضيات المعقدة. [ 3 ] كما تُعدّ OCL لغةً للتنقل بين النماذج القائمة على الرسوم البيانية.

OCL و MOF

يجعل OCL نموذج Meta-Object Facility أكثر دقة من خلال ربط التأكيدات بعناصره الوصفية.

OCL و QVT

يُعدّ مفهوم تحويل النماذج ذا أهمية خاصة في هندسة البرمجيات الموجهة بالنماذج (MDE) أو بنية البرمجيات الموجهة بالنماذج . وقد حددت مجموعة إدارة الكائنات (OMG) معيارًا خاصًا لتحويل النماذج يُسمى MOF/QVT أو اختصارًا QVT . وتتوفر حاليًا العديد من لغات تحويل النماذج مثل GReAT و VIATRA و Tefkat ، بمستويات مختلفة من التوافق مع معيار QVT. ويعتمد العديد من هذه اللغات على لغة OCL، التي تُشكّل الجزء الرئيسي من التوافق مع معيار QVT .

البدائل

باعتبارها لغة تحقق قائمة على القواعد، يمكن اعتبار Schematron بديلاً للغة OCL. مع ذلك، تعمل Schematron مع أشجار لغة الترميز القابلة للتوسيع (XML)، بينما تُمكّن OCL من التنقل بين النماذج والنماذج الفوقية القائمة على MOF (أي أشجار تبادل بيانات XML الفوقية ( XMI )). بعبارة أخرى، ترتبط OCL بـ UML أو MOF بشكل مشابه لارتباط Schematron بـ XML . (تجدر الإشارة إلى أن Schematron تستخدم XPath للتنقل داخل أشجار XML). وباعتبارها لغة لمواصفات النماذج تسمح للمصممين بتزيين النموذج أو النموذج الفوقي بتعليقات توضيحية خالية من الآثار الجانبية، يمكن استبدال OCL بلغات مثل Alloy . من حيث المبدأ، يُمكن توليد OCL تلقائيًا من اللغة الطبيعية. [ 4 ]

أمثلة

أمثلة
قيدما يعادل OCL
عمر الشخص ليس قيمة سلبية.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
للشخص والدان كحد أقصى.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)

الإضافات

تُوسّع لغة OCL في Eclipse [ 5 ] لغة OCL القياسية بإضافة عوامل تشغيل إضافية ونوع خاص بالخرائط. كما تُوسّع لغة AgileUML لغة OCL القياسية بإضافة نوعي الخرائط والدوال. [ 6 ] تتوافق هذه الإضافات مع نوعي الخرائط والدوال الموجودين في لغات البرمجة الحديثة مثل بايثون وسويفت.

انظر أيضاً

مراجع

  1. مجموعة إدارة الكائنات (OMG)؛ مواصفات لغة قيود الكائنات ، الفصل 7 من مواصفات لغة النمذجة الموحدة OMG ، الإصدار 1.3، مارس 2000 (الطبعة الأولى)
  2. مجموعة إدارة الكائنات (OMG)؛ لغة قيود الكائنات، مواصفات OMG المتاحة، الإصدار 2.0 ، مايو 2006
  3. 1 2 تستند هذه المقالة إلى مواد مأخوذة من Object+Constraint+Language في قاموس الحوسبة المجاني على الإنترنت قبل 1 نوفمبر 2008 وتم دمجها بموجب شروط "إعادة الترخيص" الخاصة بـ GFDL ، الإصدار 1.3 أو أحدث.
  4. عمران ساروار باجوا (أكتوبر 2010). "توليد قيود OCL من مواصفات اللغة الطبيعية، 2010". IEEE . doi : 10.1109/EDOC.2010.33 . S2CID 7495256 . {{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal=
  5. "Eclipse OCL™ (لغة قيود الكائنات)" . 31 يناير 2013.
  6. لانو، كيفن؛ كولهدوز رحيمي، شكوفه (2021). "توسيع لغة OCL باستخدام أنواع الخرائط والدوال" . أساسيات هندسة البرمجيات . سلسلة محاضرات في علوم الحاسوب. المجلد 12818. الصفحات 108-123 . doi : 10.1007/978-3-030-89247-0_8 . ISBN   978-3-030-89246-3. S2CID 239029860 .