وصلة فضفاضة
في مجال الحوسبة وتصميم الأنظمة ، يُعد النظام ذو الترابط الضعيف أحد الأنظمة ذات الترابط الضعيف.
- حيث تكون المكونات مرتبطة بشكل ضعيف (توجد علاقات قابلة للكسر) مع بعضها البعض، وبالتالي فإن التغييرات في أحد المكونات لا تؤثر بشكل كبير على وجود أو أداء مكون آخر.
- حيث لا يمتلك كل مكون من مكوناتها ، أو لا يستخدم، إلا القليل من المعرفة أو لا يمتلك أي معرفة على الإطلاق بتعريفات المكونات الأخرى المنفصلة. تشمل المجالات الفرعية ترابط الفئات والواجهات والبيانات والخدمات. [ 1 ] الترابط المرن هو عكس الترابط المحكم.
المزايا والعيوب
يمكن استبدال مكونات النظام ذي الترابط المنخفض بتطبيقات بديلة توفر نفس الخدمات. كما أن مكونات هذا النظام أقل تقيدًا بنفس المنصة أو اللغة أو نظام التشغيل أو بيئة التطوير.
إذا كانت الأنظمة منفصلة زمنيًا، يصعب ضمان سلامة المعاملات؛ مما يستدعي بروتوكولات تنسيق إضافية. يوفر تكرار البيانات عبر أنظمة مختلفة ترابطًا ضعيفًا (في التوافر)، ولكنه يخلق مشاكل في الحفاظ على الاتساق ( مزامنة البيانات ).
في التكامل
يتم تحقيق الترابط المنخفض في تصميم الأنظمة الموزعة الأوسع نطاقًا من خلال استخدام المعاملات، وقوائم الانتظار التي توفرها البرمجيات الوسيطة الموجهة نحو الرسائل ، ومعايير قابلية التشغيل البيني. [ 2 ]
أربعة أنواع من الاستقلالية التي تعزز الترابط المنخفض هي: الاستقلالية المرجعية ، والاستقلالية الزمنية ، والاستقلالية التنسيقية ، والاستقلالية الأساسية . [ 3 ]
يُعدّ الترابط المرن مبدأً معمارياً وهدفاً تصميمياً في البنى الموجهة نحو الخدمات . وقد تمّ إدراج أحد عشر شكلاً من أشكال الترابط المرن ونظائرها من أشكال الترابط المحكم في المرجع [ 4 ] .
- الاتصالات المادية عبر وسيط،
- أسلوب التواصل غير المتزامن ،
- أنواع البيانات الشائعة البسيطة فقط في نموذج البيانات ،
- نظام الأنواع الضعيفة،
- رسائل تركز على البيانات ومكتفية ذاتيًا،
- التحكم الموزع في منطق العمليات،
- الربط الديناميكي (بين مستهلكي ومقدمي الخدمات)،
- استقلالية المنصة،
- التعويضات على مستوى الأعمال بدلاً من المعاملات على مستوى النظام،
- النشر في أوقات مختلفة،
- التحديثات الضمنية في نظام إدارة الإصدارات.
تم ابتكار برمجيات وسيطة ناقل خدمة المؤسسة (ESB) لتحقيق ترابط ضعيف في أبعاد متعددة. [ 5 ] ومع ذلك، فإن ناقلات خدمة المؤسسة المصممة بشكل مفرط والموضعة بشكل خاطئ يمكن أن يكون لها تأثير معاكس وتخلق ترابطًا وثيقًا غير مرغوب فيه ونقطة ساخنة معمارية مركزية.
تهدف بنية البرمجيات الموجهة بالأحداث أيضًا إلى تعزيز الترابط المنخفض. [ 6 ]
طرق لتقليل الاقتران
يمكن تحسين الترابط غير المحكم بين الواجهات عن طريق نشر البيانات بتنسيق قياسي (مثل XML أو JSON ).
يمكن تحسين الترابط غير المحكم بين مكونات البرنامج باستخدام أنواع البيانات القياسية في المعاملات. ويتطلب تمرير أنواع البيانات أو الكائنات المخصصة أن يكون كلا المكونين على دراية بتعريف البيانات المخصصة.
يمكن تحسين الترابط المرن بين الخدمات عن طريق تقليل المعلومات المُمرَّرة إلى الخدمة إلى البيانات الأساسية فقط. على سبيل المثال، تكون خدمة إرسال الرسائل أكثر قابلية لإعادة الاستخدام عندما يتم تمرير مُعرِّف العميل فقط، ويتم الحصول على عنوان العميل داخل الخدمة نفسها. هذا يُفصل الخدمات عن بعضها، إذ لا يلزم استدعاء الخدمات بترتيب مُحدد (مثل GetCustomerAddress، SendLetter).
في البرمجة
يشير الترابط إلى درجة المعرفة المباشرة التي يمتلكها أحد المكونات عن مكون آخر. ويُفسَّر الترابط الضعيف في الحوسبة على أنه تغليف مقابل عدم تغليف.
مثال على الترابط الوثيق هو عندما تحتوي فئة تابعة على مؤشر مباشر إلى فئة ملموسة توفر السلوك المطلوب. لا يمكن استبدال التبعية، أو تغيير "توقيعها"، دون إجراء تغيير على الفئة التابعة. أما الترابط المرن فيحدث عندما تحتوي الفئة التابعة على مؤشر فقط إلى واجهة، والتي يمكن تنفيذها بواسطة فئة ملموسة واحدة أو أكثر. يُعرف هذا بانعكاس التبعية . تعتمد الفئة التابعة على "عقد" تحدده الواجهة؛ وهو قائمة محددة من الطرق و/أو الخصائص التي يجب أن توفرها الفئات المنفذة. بالتالي، يمكن لأي فئة تنفذ الواجهة تلبية تبعية الفئة التابعة دون الحاجة إلى تغييرها. يتيح هذا قابلية التوسع في تصميم البرمجيات. يمكن كتابة فئة جديدة تنفذ واجهة لاستبدال تبعية حالية في بعض أو كل الحالات، دون الحاجة إلى إجراء تغيير على الفئة التابعة؛ ويمكن تبديل الفئتين الجديدة والقديمة بحرية. لا يسمح الترابط القوي بذلك.
هذا مخطط UML يوضح مثالاً على الترابط الضعيف بين فئة تابعة ومجموعة من الفئات الملموسة، والتي توفر السلوك المطلوب:
للمقارنة، يوضح هذا الرسم التخطيطي التصميم البديل مع وجود ترابط قوي بين الفئة التابعة والمزود:
أشكال أخرى
تُعدّ لغات البرمجة التي تعتمد على مفهومي الدوال كوحدة أساسية (انظر البرمجة الوظيفية ) أو الدوال ككائنات، أمثلةً ممتازةً على البرمجة ذات الارتباط الضعيف. تتميز اللغات الوظيفية بأنماط الاستمرارية والإغلاق والمولدات . انظر Clojure و Lisp كمثالين على لغات البرمجة الوظيفية. أما اللغات الكائنية التوجه مثل Smalltalk و Ruby فتعتمد على كتل التعليمات البرمجية، بينما تعتمد Eiffel على الوكلاء. الفكرة الأساسية هي تحويل الدالة إلى كائن (تغليفها ككائن) بشكل مستقل عن أي مفهوم مُغلِّف آخر (مثل فصل دالة الكائن عن أي معرفة مباشرة بالكائن المُغلِّف). انظر الدالة من الدرجة الأولى لمزيد من التوضيح حول الدوال ككائنات، والتي تُعدّ أحد أشكال الدالة من الدرجة الأولى.
على سبيل المثال، في لغة برمجة كائنية التوجه، عندما يُشار إلى دالة لكائن ما ككائن مستقل (مما يحررها من أي معرفة بالكائن المضيف المُحيط بها)، يمكن تمرير كائن الدالة الجديد وتخزينه واستدعاؤه لاحقًا. تستطيع الكائنات المُستقبِلة (التي تُمنح هذه الكائنات الوظيفية) تنفيذ (استدعاء) الدالة المُضمنة بأمان وقتما تشاء دون أي معرفة مباشرة بالكائن المضيف المُحيط بها. وبهذه الطريقة، يستطيع البرنامج تنفيذ سلاسل أو مجموعات من الكائنات الوظيفية، مع الحفاظ على فصلها التام عن أي مرجع مباشر للكائن المضيف المُحيط بها.
تُعد أرقام الهواتف مثالاً ممتازاً ويمكنها بسهولة توضيح درجة هذا الانفصال.
على سبيل المثال، قد تُزوّد جهةٌ ما جهةً أخرى برقم هاتف لإنجاز مهمةٍ مُحددة. عند الاتصال بهذا الرقم، تُعبّر الجهة المتصلة ضمنيًا عن طلبها: "أرجو إنجاز هذه المهمة نيابةً عني". ويتضح جليًا هنا الانفصال أو الترابط الضعيف. فقد لا يكون لدى الجهة المُستقبِلة للرقم أي علمٍ بمصدره (كأن يكون لديها أي إشارة إلى مُزوّد الرقم). من جهةٍ أخرى، لا يملك المتصل أي معرفةٍ مُحددة بهوية المُتصل به، أو مكانه، أو كيفية عمل الجهة المُستقبِلة للمكالمة داخليًا.
بتوسيع المثال، قد يقول المتصل للمتلقي: "أرجو منك إنجاز هذه المهمة. اتصل بي على هذا الرقم عند الانتهاء". يُشار إلى هذا الرقم المُقدّم للمتلقي بـ"رقم معاودة الاتصال". مرة أخرى، يتضح الطابع غير المُرتبط أو غير المُرتبط لهذا الكائن الوظيفي. فالمتلقي لا يعلم ما أو من يتم الاتصال به، بل يعلم فقط أنه يستطيع إجراء المكالمة ويُقرر بنفسه متى يتصل. في الواقع، قد لا تكون معاودة الاتصال حتى للشخص الذي قدّمها في المقام الأول. هذا المستوى من التوجيه غير المباشر هو ما يجعل الكائنات الوظيفية تقنية ممتازة لتحقيق برامج ذات ارتباط غير مُرتبط.
قد يعتمد الاتصال بين المكونات المترابطة بشكل فضفاض على مجموعة من الآليات، مثل أسلوب الاتصال غير المتزامن المذكور أو أسلوب تمرير الرسائل المتزامن [ 7 ].
اقتران عناصر بيانات القياس
يمكن قياس درجة ضعف الترابط من خلال ملاحظة عدد التغييرات التي قد تطرأ على عناصر البيانات في أنظمة الإرسال أو الاستقبال، وتحديد ما إذا كانت أجهزة الكمبيوتر ستستمر في التواصل بشكل صحيح. وتشمل هذه التغييرات عناصر مثل:
- إضافة عناصر بيانات جديدة إلى الرسائل
- تغيير ترتيب عناصر البيانات
- تغيير أسماء عناصر البيانات
- تغيير هياكل عناصر البيانات
- حذف عناصر البيانات
انظر أيضاً
مراجع
- ↑ الارتباط غير المحكم: الأجزاء المفقودة من خدمات الويب بقلم دوغ كاي
- ↑ باوتاسو سي، وايلد إي، لماذا يُعتبر الويب مترابطًا بشكل فضفاض؟ مؤرشف بتاريخ 12-10-2021 في أرشيف الإنترنت ، وقائع مؤتمر الويب العالمي 2009
- ↑ ف. ليمان، الترابط غير المحكم وآثاره المعمارية، مؤرشف بتاريخ 2016-10-02 في أرشيف الإنترنت ، الكلمة الرئيسية في مؤتمر ESOCC 2016
- ↑ ن. جوسوتيس، الخدمية في الممارسة العملية. أورايلي، 2007، ISBN 978-0-596-52955-0.
- ↑ م. كين وآخرون، أنماط: تطبيق بنية الخدمات الموجهة باستخدام ناقل خدمات المؤسسة ، آي بي إم، 2004
- ↑ كيف توسع أدوات تصميم الدوائر الإلكترونية (EDA) بنية الخدمات الموجهة (SOA) ولماذا هو مهم؟ جاك فان هوف
- ↑ مييل، غريغوار. "أنماط الخدمات المصغرة: الاتصال المتزامن مقابل الاتصال غير المتزامن" . أنماط الخدمات المصغرة: الاتصال المتزامن مقابل الاتصال غير المتزامن . greeeg . تم الاطلاع عليه بتاريخ 18 فبراير 2022 .
- تكامل تطبيقات المؤسسة
- الحوسبة الموجهة نحو الخدمات (حوسبة الأعمال)
- مبادئ البرمجة
- جودة البرمجيات
