الربط (برمجة الحاسوب)
في هندسة البرمجيات ، يُعرَّف الترابط بأنه درجة الاعتماد المتبادل بين وحدات البرمجيات ، وهو مقياس لمدى ترابط روتينين أو وحدتين، [ 1 ] وقوة العلاقات بين الوحدات. [ 2 ] الترابط ليس ثنائيًا بل متعدد الأبعاد. [ 3 ]

يُقارن الترابط عادةً بالتماسك . يرتبط انخفاض الترابط غالبًا بارتفاع التماسك، والعكس صحيح. يُعتقد أن انخفاض الترابط دليل على نظام حاسوبي مُهيكل جيدًا وتصميم جيد، وعندما يقترن بارتفاع التماسك، فإنه يدعم الأهداف العامة المتمثلة في سهولة القراءة والصيانة . [ 4 ]
تاريخ
ابتكر لاري كونستانتين في أواخر الستينيات مقاييس جودة البرمجيات المتمثلة في الترابط والتماسك ، كجزء من تصميم هيكلي ، استنادًا إلى خصائص ممارسات البرمجة "الجيدة" التي تُقلل تكاليف الصيانة والتعديل. نُشر التصميم الهيكلي، بما في ذلك التماسك والترابط، في مقال ستيفنز ومايرز وكونستانتين (1974) [ 5 ] وكتاب يوردون وكونستانتين (1979) [ 6 ] ، وأصبح الأخير مصطلحًا معياريًا فيما بعد.
الاقتران مقابل التماسك
يُستخدم مصطلحا الترابط والتماسك بشكل متكرر. يشير الترابط إلى العلاقات المتبادلة بين الوحدات البرمجية، بينما يصف التماسك مدى ترابط الوظائف داخل الوحدة الواحدة. انخفاض التماسك يعني أن الوحدة تؤدي مهامًا غير مترابطة بشكل كبير، مما قد يُسبب مشاكل مع ازدياد حجمها.
درجة

يمكن أن يكون الترابط "منخفضًا" (ويُسمى أيضًا " فضفاضًا " و"ضعيفًا") أو "عاليًا" (ويُسمى أيضًا "محكمًا" و"قويًا"). وفيما يلي بعض أنواع الترابط، مرتبة من الأعلى إلى الأدنى:
البرمجة الإجرائية
يشير مصطلح "الوحدة النمطية" هنا إلى روتين فرعي من أي نوع، أي مجموعة من عبارة واحدة أو أكثر لها اسم ويفضل أن يكون لها مجموعة خاصة بها من أسماء المتغيرات.
- اقتران المحتوى (عالي)
- يُقال إن اقتران المحتوى يحدث عندما تستخدم وحدة برمجية ما شيفرة وحدة برمجية أخرى، على سبيل المثال فرع. وهذا يُخالف مبدأ إخفاء المعلومات - وهو مفهوم أساسي في تصميم البرمجيات.
- اقتران مشترك
- يُقال إن الترابط المشترك يحدث عندما تتمكن عدة وحدات من الوصول إلى نفس البيانات العامة. لكن هذا قد يؤدي إلى انتشار الأخطاء بشكل غير مُتحكم فيه وظهور آثار جانبية غير متوقعة عند إجراء التغييرات.
- وصلة خارجية
- يحدث الربط الخارجي عندما تشترك وحدتان في تنسيق بيانات أو بروتوكول اتصال أو واجهة جهاز مفروضة خارجيًا. ويرتبط هذا بشكل أساسي بالتواصل مع الأدوات والأجهزة الخارجية.
- اقتران التحكم
- التحكم في الاقتران هو وحدة تتحكم في تدفق وحدة أخرى، عن طريق تمرير معلومات حول ما يجب فعله (على سبيل المثال، تمرير علامة ما يجب فعله).
- الربط بالطوابع (الربط بالبيانات المهيكلة)
- يحدث اقتران الطوابع عندما تشترك الوحدات في بنية بيانات مركبة وتستخدم أجزاءً منها فقط، وربما أجزاء مختلفة (على سبيل المثال، تمرير سجل كامل إلى دالة تحتاج إلى حقل واحد فقط منه).
- في هذه الحالة، قد يؤدي تعديل حقل لا يحتاجه أحد المكونات إلى تغيير طريقة قراءة هذا المكون للسجل. لتوضيح مفهوم اقتران الطوابع، لنفترض سيناريو يتضمن
UserProfileمكونًا . صُمم هذا المكون لإرجاع معلومات ملف تعريف المستخدم بالكامل استجابةً للطلبات ، حتى عندما يحتاج المستهلكون إلى سمة محددة فقط . تُجسد هذه الممارسة اقتران الطوابع، الذي قد يؤدي إلى مشكلات كبيرة في عرض النطاق الترددي ، خاصةً عند التوسع. عند تغيير أي سمة داخلUserProfileالمكون، قد يحتاج جميع المستهلكين الذين يتفاعلون معه إلى الخضوع للاختبار ، حتى لو لم يستخدموا السمة المُعدلة. [ 7 ] - ربط البيانات
- يحدث اقتران البيانات عندما تتشارك الوحدات البيانات من خلال، على سبيل المثال، المعاملات. كل معلومة هي جزء أساسي، وهذه هي البيانات الوحيدة المشتركة (على سبيل المثال، تمرير عدد صحيح إلى دالة تحسب الجذر التربيعي).
البرمجة الكائنية التوجه
- اقتران الفئات الفرعية
- يصف هذا النص العلاقة بين الطفل ووالديه. فالطفل مرتبط بوالديه، لكن الوالد غير مرتبط بالطفل.
- الاقتران الزمني
- يحدث ذلك عندما يتم تجميع فعلين معًا في وحدة واحدة لمجرد أنهما يحدثان في نفس الوقت.
في أعمال حديثة، تم بحث مفاهيم اقتران أخرى متنوعة واستخدامها كمؤشرات لمبادئ التنميط المختلفة المستخدمة في الممارسة العملية. [ 8 ]
الاقتران الديناميكي
يهدف تعريف وقياس هذا النوع من الترابط إلى توفير تقييم أثناء تشغيل نظام البرمجيات . وقد قيل إن مقاييس الترابط الثابت تفقد دقتها عند التعامل مع الاستخدام المكثف للربط الديناميكي أو الوراثة. [ 9 ] وفي محاولة لحل هذه المشكلة، تم أخذ مقاييس الترابط الديناميكي في الاعتبار.
الاقتران الدلالي
يأخذ هذا النوع من مقاييس الاقتران في الاعتبار أوجه التشابه المفاهيمية بين كيانات البرامج باستخدام، على سبيل المثال، التعليقات والمعرفات والاعتماد على تقنيات مثل الفهرسة الدلالية الكامنة (LSI).
الاقتران المنطقي
يستغل تحليل الاقتران المنطقي (أو الاقتران التطوري أو اقتران التغيير) تاريخ إصدار نظام البرمجيات للعثور على أنماط التغيير بين الوحدات أو الفئات: على سبيل المثال، الكيانات التي من المحتمل أن تتغير معًا أو تسلسلات التغييرات (يتبع التغيير في الفئة أ دائمًا تغيير في الفئة ب).
أبعاد الاقتران
بحسب غريغور هوب، فإن الاقتران متعدد الأبعاد: [ 3 ]
- الاعتماد على التكنولوجيا
- الاعتماد على الموقع
- الاعتماد على الطوبولوجيا
- تنسيق البيانات ونوعها
- التبعية الدلالية
- الاعتماد على المحادثة
- تبعية الترتيب
- التبعية الزمنية
عيوب الترابط الوثيق
تميل الأنظمة المترابطة بإحكام إلى إظهار الخصائص التطورية التالية، والتي غالباً ما تُعتبر عيوباً:
- عادة ما يؤدي التغيير في وحدة واحدة إلى سلسلة من التغييرات في الوحدات الأخرى.
- قد يتطلب تجميع الوحدات مزيدًا من الجهد و/أو الوقت نظرًا لزيادة الاعتماد المتبادل بين الوحدات.
- قد يكون من الصعب إعادة استخدام وحدة معينة و/أو اختبارها لأنه يجب تضمين الوحدات التابعة لها.
مشاكل في الأداء
سواءً كان النظام مترابطًا بشكل فضفاض أو محكم، غالبًا ما يتأثر أداؤه سلبًا بإنشاء الرسائل والمعلمات، ونقلها، وترجمتها (مثل التنسيق)، وتفسيرها (والتي قد تكون مرجعًا لسلسلة نصية أو مصفوفة أو بنية بيانات)، وهي عمليات تتطلب موارد أقل من إنشاء رسالة معقدة مثل رسالة SOAP . وتتطلب الرسائل الأطول موارد معالجة وذاكرة أكبر. ولتحسين أداء وقت التشغيل، يجب تقليل طول الرسالة إلى أدنى حد ممكن، وزيادة معناها إلى أقصى حد.
- تكاليف نقل الرسائل والأداء
- بما أن الرسالة يجب أن تُرسل كاملةً للحفاظ على معناها الكامل، فلا بد من تحسين عملية الإرسال. فالرسائل الأطول تتطلب موارد معالجة وذاكرة أكبر للإرسال والاستقبال. كما يجب على المُستقبِلين، عند الضرورة، إعادة تجميع الرسالة إلى حالتها الأصلية لاستلامها بالكامل. لذا، ولتحسين أداء وقت التشغيل، يجب تقليل طول الرسالة إلى أدنى حد وزيادة معناها إلى أقصى حد.
- تكلفة ترجمة الرسائل والأداء
- غالبًا ما تحتوي بروتوكولات الرسائل والرسائل نفسها على معلومات إضافية (مثل معلومات الحزمة، والبنية، والتعريف، واللغة). لذا، يحتاج المُستقبِل عادةً إلى ترجمة الرسالة إلى صيغة أكثر دقة عن طريق إزالة الأحرف الزائدة ومعلومات البنية، و/أو عن طريق تحويل القيم من نوع إلى آخر. أي نوع من الترجمة يزيد من استهلاك وحدة المعالجة المركزية و/أو الذاكرة. لتحسين أداء وقت التشغيل، يجب تبسيط شكل الرسالة ومحتواها وتحسينهما لزيادة معناها وتقليل الحاجة إلى الترجمة.
- تكلفة تفسير الرسائل والأداء
- يجب على المُستقبِل تفسير جميع الرسائل. قد لا تتطلب الرسائل البسيطة، كالأعداد الصحيحة، معالجة إضافية لتفسيرها. أما الرسائل المعقدة، كرسائل SOAP، فتتطلب مُحلِّلًا نحويًا ومُحوِّلًا للسلاسل النصية لكي تُظهر المعاني المقصودة. ولتحسين أداء وقت التشغيل، يجب تنقيح الرسائل وتقليص حجمها لتقليل عبء التفسير.
الحلول
يُعدّ التصميم الوظيفي أحد أساليب تقليل الترابط بين الوحدات البرمجية، حيث يسعى إلى تحديد مسؤوليات الوحدات وفقًا لوظائفها. ويزداد الترابط بين فئتين Aإذا B:
Aيحتوي على سمة تشير إلى (من النوع)B.Aيستدعي خدمات كائن ماB.Aيحتوي على طريقة تشير إلىB(عبر نوع الإرجاع أو المعلمة).Aهي فئة فرعية من (أو تنفذ) الفئةB.
يشير الاقتران المنخفض إلى علاقة تتفاعل فيها وحدة واحدة مع وحدة أخرى من خلال واجهة بسيطة ومستقرة ولا تحتاج إلى الاهتمام بالتنفيذ الداخلي للوحدة الأخرى (انظر إخفاء المعلومات ).
تتيح أنظمة مثل CORBA و COM للكائنات التواصل فيما بينها دون الحاجة إلى معرفة أي شيء عن كيفية تنفيذ الكائن الآخر. بل إن كلا النظامين يسمحان للكائنات بالتواصل مع كائنات مكتوبة بلغات أخرى.
الاقتران مقابل الإدراك
يصف الترابط درجة وطبيعة التبعية بين مكونات البرمجيات، مع التركيز على ما تشترك فيه (مثل البيانات، وتدفق التحكم ، والتكنولوجيا) ومدى ترابطها. ويُقيّم بُعدين رئيسيين: القوة، التي تقيس مدى صعوبة تغيير التبعية، والنطاق (أو الرؤية)، الذي يُشير إلى مدى انتشار التبعية عبر الوحدات أو الحدود. تشمل أنواع الترابط التقليدية عادةً ترابط المحتوى، والترابط المشترك، وترابط التحكم، وترابط الطابع، والترابط الخارجي، وترابط البيانات. [ 10 ] [ 11 ] [ 12 ]
يُقدّم مفهوم "الترابط" (Connascence) ، الذي ابتكره ميلير بيج-جونز، إطارًا منهجيًا لتحليل وقياس التبعيات المترابطة. ويُقيّم هذا المفهوم التبعيات بناءً على ثلاثة أبعاد: القوة، التي تقيس الجهد المطلوب لإعادة هيكلة التبعية أو تعديلها؛ والموقع، الذي يُراعي مدى قرب المكونات التابعة، سواءً من الناحية الفيزيائية أو المنطقية، في قاعدة التعليمات البرمجية ؛ والدرجة، التي تقيس عدد المكونات المتأثرة بالتبعية. يُمكن تصنيف الترابط إلى نوعين: ثابت (يُمكن اكتشافه أثناء الترجمة) وديناميكي (يُمكن اكتشافه أثناء التشغيل). يشير الترابط الثابت إلى التبعيات التي تحدث أثناء الترجمة، مثل توقيعات الدوال، بينما يشير الترابط الديناميكي إلى التبعيات التي تحدث أثناء التشغيل، والتي قد تتجلى في أشكال مثل ترابط التوقيت أو القيم أو الخوارزمية. [ 10 ] [ 11 ] [ 12 ]
يمكن لكل نوع من أنواع الربط أن يُظهر أنواعًا متعددة من الترابط، أو نوعًا محددًا، أو في حالات نادرة، لا يُظهر أي ترابط على الإطلاق، وذلك اعتمادًا على كيفية تنفيذ التبعية. تشمل الأنواع الشائعة للترابط ترابط الاسم، والنوع، والموقع، والمعنى. تتوافق بعض أنواع الربط بشكل طبيعي مع أنواع ترابط محددة؛ على سبيل المثال، غالبًا ما يتضمن ربط البيانات ترابط الاسم أو النوع. ومع ذلك، ليس كل مزيج من الربط والترابط ذا معنى عملي. تُظهر التبعيات التي تعتمد على ترتيب المعلمات في توقيع الدالة ترابط الموقع، وهو هش ويصعب إعادة هيكلته لأن إعادة ترتيب المعلمات يُخلّ بالواجهة. في المقابل، يكون ترابط الاسم، الذي يعتمد على أسماء الحقول أو المعلمات، أكثر مرونة بشكل عام في مواجهة التغيير. تُظهر أنواع الترابط نفسها تسلسلًا هرميًا طبيعيًا للقوة، حيث يُعتبر ترابط الاسم عادةً أضعف من ترابط المعنى. [ 10 ] [ 11 ] [ 12 ]
تتسم التبعيات التي تمتد عبر حدود الوحدات أو الأنظمة الموزعة عادةً بتكاليف تنسيق أعلى، مما يزيد من صعوبة إعادة هيكلة الكود ونشر التغييرات عبر الحدود البعيدة. تُستخدم الممارسات الحديثة، مثل حقن التبعية والبرمجة القائمة على الواجهات، غالبًا لتقليل قوة الترابط وتحسين قابلية صيانة التبعيات. [ 10 ] [ 11 ] [ 12 ]
بينما يُحدد الربط ما هو مشترك بين المكونات، يُقيّم الترابط كيفية سلوك هذه التبعيات، وكيفية انتشار التغييرات، ومدى صعوبة إعادة هيكلتها. ترتبط القوة والموقع والدرجة ارتباطًا وثيقًا؛ فالتبعيات ذات القوة العالية والنطاق الواسع والتي تمتد عبر حدود متباعدة يصعب إعادة هيكلتها وصيانتها بشكل ملحوظ. يوفر الربط معًا نظرة عامة عالية المستوى على علاقات التبعية، بينما يوفر الترابط إطارًا تفصيليًا لتحليل قوة التبعية وموقعها ودرجتها ومرونتها في مواجهة التغيير، مما يدعم تصميم أنظمة قابلة للصيانة وقوية. [ 10 ] [ 11 ] [ 12 ]
اقتران الوحدات
يصف كتاب "الاقتران في هندسة البرمجيات" [ 13 ] نسخة من المقاييس المرتبطة بهذا المفهوم.
لربط تدفق البيانات والتحكم:
- عدد معلمات بيانات الإدخال
- عدد معلمات التحكم في الإدخال
- عدد معلمات بيانات الإخراج
- عدد معلمات التحكم في الإخراج
للربط العالمي:
- عدد المتغيرات العامة المستخدمة كبيانات
- عدد المتغيرات العامة المستخدمة كعناصر تحكم
للربط البيئي:
- عدد الوحدات التي يتم استدعاؤها (التوزيع)
- عدد الوحدات التي تستدعي الوحدة قيد الدراسة (نسبة الإدخال)
Coupling(C)تزداد قيمة هذا الرقم كلما زاد ترابط الوحدة. ويتراوح هذا الرقم من 0.67 تقريبًا (ترابط منخفض) إلى 1.0 (ترابط عالٍ).
على سبيل المثال، إذا كانت الوحدة تحتوي على معلمة بيانات إدخال وإخراج واحدة فقط
إذا كانت الوحدة تحتوي على 5 معلمات بيانات إدخال وإخراج، وعدد مماثل من معلمات التحكم، وتصل إلى 10 عناصر من البيانات العامة، مع عدد مدخلات يبلغ 3 وعدد مخرجات يبلغ 4،
انظر أيضاً
مراجع
- ↑ ISO/IEC/IEEE 24765:2010 هندسة النظم والبرمجيات - المصطلحات
- ↑ ISO/IEC TR 19759:2005، هندسة البرمجيات - دليل إلى مجموعة معارف هندسة البرمجيات (SWEBOK)
- 1 2 هوب، غريغور (2004). أنماط تكامل المؤسسات: تصميم وبناء ونشر حلول المراسلة . أديسون-ويسلي بروفيشنال. ISBN 978-0321200686.
- ↑ فريجنان، إنريكو؛ باوم، توبياس؛ بالومبا، فابيو؛ باتشيلي، ألبرتو (مارس 2019). "دراسة استقصائية حول علاقات وأدوات ربط البرمجيات" . تكنولوجيا المعلومات والبرمجيات . 107 : 159-178 . doi : 10.1016/J.INFSOF.2018.11.008 . ISSN 0950-5849 . تاريخ الاسترجاع: 20 مايو 2026 .
- ↑ ستيفنز، واين ب .؛ مايرز، جلينفورد ج .؛ قسطنطين، لاري ليروي (يونيو 1974). "التصميم الهيكلي". مجلة أنظمة آي بي إم . 13 (2): 115-139 . doi : 10.1147/sj.132.0115 .
- ↑ يوردون، إدوارد ؛ قسطنطين، لاري ليروي (1979) [1975]. التصميم الهيكلي: أساسيات منهج تصميم برامج وأنظمة الحاسوب . دار يوردون للنشر. رمز Bibcode : 1979sdfd.book.....Y . رقم ISBN 978-0-13-854471-3.
- ↑ ريتشاردز، مارك. أساسيات هندسة البرمجيات: منهج هندسي . دار نشر أورايلي. رقم ISBN 978-1492043454.
- ↑ بيك، فابيان؛ ديل، ستيفان (سبتمبر 2011). "حول توافق النمطية وترابط الكود". في وقائع ندوة ACM SIGSOFT التاسعة عشرة والمؤتمر الأوروبي الثالث عشر حول أسس هندسة البرمجيات (SIGSOFT/FSE '11) . سيجد، المجر. ص 354. doi : 10.1145/2025113.2025162 . ISBN 9781450304436. S2CID 2413103 .
{{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط ) - ↑ أريشولم، إريك؛ برياند، ليونيل سي .؛ فوين، أودون (أغسطس 2004). "قياس الاقتران الديناميكي للبرمجيات الموجهة للكائنات". معاملات IEEE في هندسة البرمجيات . 30 (8). IEEE : 491-506 . Bibcode : 2004ITSEn..30..491A . doi : 10.1109/TSE.2004.41 . hdl : 10852/9090 . S2CID 3074827 .
- 1 2 3 4 5 بيج-جونز، ميلير (1988). الدليل العملي لتصميم الأنظمة الهيكلية . برنتيس هول. ISBN 978-0136907695.
- 1 2 3 4 5 كليمان، مارتن (2017). تصميم التطبيقات كثيفة البيانات: الأفكار الرئيسية وراء الأنظمة الموثوقة والقابلة للتوسع والصيانة . دار نشر أورايلي ميديا. ISBN 978-1449373320.
- 1 2 3 4 5 أساسيات هندسة البرمجيات: منهج هندسي . ISBN 978-1492043454.
- ↑ بريسمان، روجر س. (1982). هندسة البرمجيات - منهج عملي ( الطبعة الرابعة). ماكجرو هيل. ISBN 0-07-052182-4.
للمزيد من القراءة
- مايرز، جلينفورد ج. (1974). البرمجيات الموثوقة من خلال التصميم المركب . نيويورك: دار نشر ماسون وليبسكومب.
- أوفوت، أ. جيفرسون؛ هارولد، ماري جين ؛ كولتي، بريادارشان (مارس 1993). "نظام قياس برمجي لربط الوحدات". مجلة الأنظمة والبرمجيات . 20 (3): 295-308 . doi : 10.1016/0164-1212(93)90072-6 .
- بيج-جونز، ميلير (1980). الدليل العملي لتصميم الأنظمة الهيكلية . نيويورك: دار يوردون للنشر. ISBN 978-8-12031482-5.
- معجم المصطلحات القياسي لهندسة البرمجيات . نيويورك: معهد مهندسي الكهرباء والإلكترونيات . 1990. رقم ISBN 0-7381-0391-8. 610.12_1990.
- "منهج شهادة محترف معتمد في هندسة البرمجيات (CPSA) - المستوى التأسيسي" (ملف PDF) . 3.01. المجلس الدولي لمؤهلات هندسة البرمجيات (ISAQB). 15 مايو 2015 [2009]. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 29 مارس 2017. تاريخ الاطلاع: 23 يونيو 2019 .أُرشف بتاريخ 22 فبراير 2016 في أرشيف الإنترنت (Wayback Machine) .
- مبادئ البرمجة
- البرمجة الكائنية التوجه
- هندسة البرمجيات
- مقاييس البرمجيات
