**اقتران ضعيف** (بالإنجليزية: Loose coupling)‏ في تصميم الحوسبة والأنظمة، يعتبر النظام غير **المترابط واحدًا**

1. التي ترتبط فيها المكونات ارتباطًا ضعيفًا (لها علاقة قابلة للكسر) مع بعضها البعض، وبالتالي، فإن التغييرات في أحد المكونات أقل تأثيرًا على وجود أو أداء مكون آخر.
2. حيث يكون لكل من مكوناته، أو يستخدم، معرفة قليلة أو معدومة بتعريفات المكونات المنفصلة الأخرى. تشمل المناطق الفرعية اقتران الفئات والواجهات والبيانات والخدمات. الوصلة السائبة هي عكس أداة التوصيل الضيقة.

المميزات والعيوب
----------------

يمكن استبدال المكونات الموجودة في نظام غير محكم التوصيل بتطبيقات بديلة توفر نفس الخدمات. تكون المكونات الموجودة في نظام غير محكم الاقتران أقل تقييدًا على نفس النظام الأساسي أو اللغة أو نظام التشغيل أو بيئة البناء.

إذا انفصلت الأنظمة في الوقت المناسب، فمن الصعب أيضًا توفير تكامل المعاملات؛ بروتوكولات تنسيق إضافية مطلوبة. يوفر تكرار البيانات عبر الأنظمة المختلفة اقترانًا غير محكم (متوفر)، ولكنه يخلق مشكلات في الحفاظ على الاتساق (مزامنة البيانات).

في التكامل
----------

يتم تحقيق الاقتران السائب في تصميم النظام الموزع الأوسع من خلال استخدام المعاملات وقوائم الانتظار التي توفرها البرامج الوسيطة الموجهة للرسائل ومعايير قابلية التشغيل البيني.

أربعة أنواع من الاستقلالية، والتي تعزز الاقتران السائب، هي: *استقلالية المرجع*، *واستقلالية الوقت*، *واستقلالية التنسيق*، *واستقلالية النظام الأساسي*.

الاقتران السائب هو مبدأ معماري وهدف تصميمي في البنى الموجهة نحو الخدمة (بنية خدمية ) ؛ يتم سرد أحد عشر شكلاً من أدوات التوصيل السائبة ونظيراتها من أدوات التوصيل الضيقة في: 

* الاتصالات المادية عبر الوسيط،
* أسلوب الاتصال غير المتزامن،
* الأنواع الشائعة البسيطة فقط في نموذج البيانات،
* نظام نوع ضعيف،
* الرسائل المتمحورة حول البيانات والقائمة بذاتها،
* السيطرة الموزعة على منطق العملية،
* الربط الديناميكي (لمستهلكي ومقدمي الخدمة)،
* منصة الاستقلال،
* التعويض على مستوى الأعمال بدلاً من المعاملات على مستوى النظام،
* النشر في أوقات مختلفة،
* ترقيات ضمنية في تعيين الإصدار.

تم اختراع البرمجيات الوسيطة Enterprise Service Bus (ESB) لتحقيق اقتران فضفاض بأبعاد متعددة؛  ومع ذلك، يمكن أن يكون للمخازن الإلكترونية (ESBs) التي تمت هندستها بشكل خاطئ والمهيأة تأثيرًا معاكسًا وتخلق اقترانًا ضيقًا غير مرغوب فيه ونقطة فعالة معمارية مركزية.

### طرق لتقليل الاقتران

يمكن تحسين الاقتران غير المحكم للواجهات عن طريق نشر البيانات بتنسيق قياسي (مثل XML أو JSON).

يمكن تحسين الاقتران السائب بين مكونات البرنامج باستخدام أنواع البيانات القياسية في المعلمات. يتطلب تمرير أنواع البيانات أو الكائنات المخصصة أن يكون لدى كلا المكونين معرفة بتعريف البيانات المخصص.

يمكن تعزيز الاقتران السائب للخدمات عن طريق تقليل المعلومات التي يتم تمريرها إلى الخدمة إلى البيانات الرئيسية. على سبيل المثال، الخدمة التي ترسل خطابًا هي الأكثر قابلية لإعادة الاستخدام عندما يتم تمرير معرف العميل فقط ويتم الحصول على عنوان العميل داخل الخدمة. يؤدي هذا إلى فصل الخدمات لأن الخدمات لا تحتاج إلى أن يتم استدعاؤها بترتيب معين (على سبيل المثال، GetCustomerAddress، SendLetter).

في البرمجة
----------

يشير الاقتران إلى درجة المعرفة المباشرة التي يمتلكها أحد المكونات عن الآخر. يتم تفسير الاقتران السائب في الحوسبة على أنه تغليف مقابل عدم تغليف.

مثال على الاقتران الضيق يحدث عندما تحتوي فئة تابعة على مؤشر مباشر لفئة ملموسة توفر السلوك المطلوب. لا يمكن استبدال التبعية، أو تغيير «توقيعها»، دون الحاجة إلى تغيير الفئة التابعة. يحدث الاقتران السائب عندما تحتوي الفئة التابعة على مؤشر للواجهة فقط، والذي يمكن تنفيذه بعد ذلك بواسطة فئة محددة واحدة أو أكثر. تبعية الفئة التابعة هي «عقد» تحدده الواجهة؛ قائمة محددة من الأساليب و / أو الخصائص التي يجب أن توفرها الفئات المنفذة. وبالتالي، فإن أي فئة تنفذ الواجهة يمكنها تلبية تبعية فئة تابعة دون الحاجة إلى تغيير الفئة. هذا يسمح بالتوسع في تصميم البرامج؛ يمكن كتابة فئة جديدة تنفذ واجهة لتحل محل التبعية الحالية في بعض المواقف أو جميعها، دون الحاجة إلى تغيير الفئة التابعة؛ يمكن تبادل الفصول الجديدة والقديمة بحرية. الاقتران القوي لا يسمح بذلك.

هذا مخطط UML يوضح مثالاً على *الاقتران السائب* بين فئة تابعة ومجموعة من الفئات الملموسة، والتي توفر السلوك المطلوب:

للمقارنة، يوضح هذا الرسم البياني التصميم البديل مع *اقتران قوي* بين الفئة التابعة والمزود:

### أشكال أخرى

لغات برمجة الكمبيوتر التي تحتوي على مفاهيم إما الوظائف كوحدة أساسية (انظر البرمجة الوظيفية) أو وظائف ككائنات تقدم أمثلة ممتازة على البرمجة غير المترابطة. اللغات الوظيفية لها أنماط من الاستمرارية أو الإغلاق أو المولدات. انظر كلوجر وليسب كأمثلة على لغات برمجة الوظائف. تحتوي اللغات الموجهة للكائنات مثل سمول توك وروبي على كتل تعليمات برمجية، بينما لدى ايفل وكلاء. الفكرة الأساسية هي تجسيد (تغليف ككائن) وظيفة مستقلة عن أي مفهوم مرفق آخر (على سبيل المثال، فصل وظيفة الكائن عن أي معرفة مباشرة بالكائن المرفق). راجع وظيفة الدرجة الأولى للحصول على نظرة ثاقبة للوظائف ككائنات، والتي تعتبر شكلاً واحدًا من وظائف الدرجة الأولى.

لذلك، على سبيل المثال، في لغة موجهة للكائنات، عندما تتم الإشارة إلى وظيفة كائن ما ككائن (مما يحرره من معرفة أي كائن مضيف محاط به)، يمكن تمرير كائن الوظيفة الجديد وتخزينه واستدعائه في في وقت لاحق. يمكن للكائنات المستلمة (التي يتم منحها هذه الكائنات الوظيفية) تنفيذ (استدعاء) الوظيفة المضمنة بأمان على راحتهم دون أي معرفة مباشرة بكائن المضيف المرفق. بهذه الطريقة، يمكن للبرنامج تنفيذ سلاسل أو مجموعات من الكائنات الوظيفية، بينما ينفصل بأمان عن أي مرجع مباشر لكائن المضيف المرفق.

أرقام الهواتف تناظرية ممتازة ويمكن أن توضح بسهولة درجة هذا الفصل.

على سبيل المثال: تزود إحدى الكيانات أخرى برقم هاتف للاتصال بها لإنجاز مهمة معينة. عندما يتم الاتصال بالرقم، فإن الكيان المتصل يقول فعليًا، «من فضلك قم بهذه المهمة من أجلي». الانفصال أو اقتران فضفاض واضح على الفور. قد لا يكون لدى الكيان الذي يتلقى الرقم المراد الاتصال به أي معرفة بمصدر الرقم (على سبيل المثال، إشارة إلى مورد الرقم). على الجانب الآخر، يتم فصل المتصل عن معرفة محددة بمن يتصلون، ومكان وجودهم، ومعرفة كيفية عمل متلقي المكالمة داخليًا.

إذا أخذنا المثال: خطوة إلى الأمام، فقد يقول المتصل لمتلقي المكالمة، «من فضلك قم بهذه المهمة من أجلي. اتصل بي مرة أخرى على هذا الرقم عند الانتهاء». يشار إلى «الرقم» الذي يتم تقديمه إلى المتلقي باسم «معاودة الاتصال». مرة أخرى، يبدو الارتباط الفضفاض أو الطبيعة المنفصلة لهذا الكائن الوظيفي واضحًا. متلقي معاودة الاتصال غير مدرك لما أو من يتم الاتصال به. إنه يعرف فقط أنه يمكنه إجراء المكالمة ويقرر بنفسه وقت الاتصال. في الواقع، قد لا تكون معاودة الاتصال للشخص الذي قام بمعاودة الاتصال في المقام الأول. هذا المستوى من المراوغة هو ما يجعل الكائنات الوظيفية تقنية ممتازة لتحقيق البرامج غير المترابطة.

### قياس اقتران عنصر البيانات

يمكن قياس درجة الاقتران السائب من خلال ملاحظة عدد التغييرات في عناصر البيانات التي يمكن أن تحدث في أنظمة الإرسال أو الاستقبال وتحديد ما إذا كانت أجهزة الكمبيوتر ستستمر في الاتصال بشكل صحيح. تتضمن هذه التغييرات عناصر مثل:

1. إضافة عناصر بيانات جديدة للرسائل
2. تغيير ترتيب عناصر البيانات
3. تغيير أسماء عناصر البيانات
4. تغيير هياكل عناصر البيانات
5. حذف عناصر البيانات

انظر أيضًا
----------

* التماسك (علوم الكمبيوتر)
* الارتباط (برمجة الكمبيوتر)
* اقتران (علوم الكمبيوتر)
* واجهة برمجة تطبيق
* فصل الاهتمامات
* الخدمات الهندسية الموجهة

المراجع
-------

1. ↑  *Loosely Coupled: The Missing Pieces of Web Services* by Doug Kaye
2. ↑  Pautasso C. Wilde E. Why is the Web Loosely Coupled?, Proc. of WWW 2009 نسخة محفوظة 2021-10-12 على موقع واي باك مشين.
3. ↑  F. Leymann Loose Coupling and Architectural Implications نسخة محفوظة 2016-10-02 على موقع واي باك مشين. ESOCC 2016 keynote
4. ↑  N. Josuttis, SOA in Practice. O'Reilly, 2007, (ردمك 978-0-596-52955-0).
5. ↑  M. Keen et al, Patterns: Implementing an SOA using an Enterprise Service Bus, IBM, 2004 نسخة محفوظة 2021-05-24 على موقع واي باك مشين.

 

* أيقونة بوابةبوابة علم الحاسوب