Table of Contents
فهم الفصل بين الشواغل في نظم البرامجيات المأهولة
إن الفصل بين الشواغل هو أحد أكثر المبادئ استدامة وتأثيرا في هندسة البرمجيات، وهو يرشد المطورين إلى تقسيم نظام إلى أقسام متميزة، وكلهم مسؤولون عن جانب واحد محدد جيدا من جوانب الأداء العام، وفي نظم البرامج الحاسوبية ذات المستويات العالية التي يتم فيها تنظيم الهيكل إلى مستويات أفقية مثل العرض، ومنطق الأعمال، وتطبيق نظام سوك الفعال لإمكانية الحفظ، والقابلية للتكف، والوضوح.
إن شركة سو سي، في جوهرها، تُعنى بإدارة التعقيد، وبعزل الشواغل المختلفة، تُقلل من الحمولة المعرفية المطلوبة لفهم أي جزء من النظام، وتصبح التغييرات أكثر أماناً وأسرع، وتصبح الاختبارات أكثر استهدافاً، ويصبح النظام ككل أكثر مرونة للاحتياجات المتطورة، ولنبدأ بتحديد المفهوم بمزيد من الدقة.
ما هو فصل القلق؟
والفصل بين الشواغل هو مبدأ تصميمي ينص على أن نظام البرامجيات ينبغي أن يقسم إلى أجزاء تتداخل في الوظائف بقدر الإمكان، وكل جزء من هذه البرامج ينبغي أن يلخص شاغلاً محدداً أو مسؤولية محددة، وقد تم تعميم هذا المصطلح على يد إدسر ديكسترا في ورقته لعام 1974، " على دور الفكر العلمي " ، حيث قال إن الفصل بين الشواغل أمر أساسي.
في الممارسة العملية، يعني (سو سي) أنه عندما تنظر إلى عنصر ما، يجب أن تكون قادراً على وصف الغرض منه في جملة واحدة دون استخدام كلمة "و" مثلاً، فئة الخدمات في الخلفية قد تتعامل مع "توثيق المستخدم" ولكن ليس أيضاً "تكوين البريد" أو "الربط بين القواعد"
المبادئ الأساسية للفصل الفعال بين الشواغل
ولتحقيق الفصل الفعال بين الشواغل في النظم المطبقة، يجب أن تتقيدوا بعدة مبادئ مترابطة، وكل منها يعزز الآخر، ويشكل مجتمعة أساس البرامجيات القابلة للاستمرار.
مبدأ المسؤولية الوحيدة
وكثيراً ما يعتبر مبدأ المسؤولية الوحيدة حجر الزاوية في شركة سوك، الذي ينص على أن وحدة أو طبقة أو طبقة ينبغي أن يكون لها سبب واحد للتغيير، ويعني ذلك أن لكل طبقة دور واحد محدد جيداً، وأن طبقة العرض تعالج تفاعل المستخدمين، وأن الطبقات المنطقية التجارية تطبق قواعد النطاق، وأن طبقة الوصول إلى البيانات تتحكم في الثبات، وإذا كانت هناك طبقة متعددة أسباب لتغييرها، إذا ما كانت تشكل البيانات الصحيحة.
الهيكل الملكي
(أ) البنية الأساسية المثبتة هي التركيب الهيكلي للنظم الخاصة بمراكز العمل الخاصة، وكل منها له دور محدد ووصلة وصل محددة جيداً لطبقات متاخمة، وأكثرها شيوعاً: طبقة العرض (UI) وطبقة التطبيق (منطق الأعمال التجارية) وطبقة البيانات (الخدمة) وفي نظم أكثر تعقيداً، يمكن إدخال طبقات إضافية مثل الخدمة، والمجالات، والهياكل الأساسية، وهي أن تتواصل طبقات دون سواها.
القدرات
ويذهب الكبسولة مباشرة إلى شركة سوك. وينبغي لكل طبقة أو وحدة أن تخفي تفاصيل التنفيذ الداخلي وأن تكشف فقط ما هو ضروري لتفاعل الطبقات الأخرى معها، وهذا يحول دون حدوث انقسامات غير مقصودة ويقلل من الأثر المتأصل للتغييرات، وفي نظام مطبق، يمكن أن تلخص طبقة الوصول إلى البيانات جميع الاستفسارات والتفاصيل المتعلقة بالحجم الافتراضي من خلال قاعدة بيانات ما بعد المستودعات.
الرد
إن التجاوز يفصل بين السياسة الرفيعة المستوى وتفاصيل التنفيذ المنخفضة المستوى، ويتيح لك تحديد ما يفعله العنصر دون تحديد كيفية عمله، وفي النظم المطبقة، يتم عادة السخرة من خلال الوصلات البينية أو الصفات المجردة التي تحدد العقود بين طبقات، مثلاً، يمكن أن تحدد واجهة التطور طريقة لتجهيز المدفوعات، مع إدخال تعديلات ملموسة على نظام الدفعات الائتمانية في نظام الدفعات المالية، أو تغيير البطاقات.
الازدواج
إن التقارب بين السلاسل يعني تقليل الأعال بين الطبقات والعناصر بحيث يكون للتغيرات في جزء ما أثر ضئيل على الآخرين، وغالبا ما تنشأ الانقلابات الطويلة عندما تخترق الطبقات هياكل البيانات الداخلية لطبقة أخرى، أو عندما تُطلق عليها أساليب تعتمد على تفاصيل محددة في التنفيذ، وتعتمد على التداخل بين طبقات السحب (التداخل) وضغوط التبعية.
فوائد تطبيق هذه المبادئ
بينما المبادئ نفسها قيمة، الدفع الحقيقي يأتي من الفوائد التي يحققونها عبر دورة حياة مشروع برمجيات، لنفحص كل فائدة بالتفصيل.
تحسين القدرة على الاستمرار
عندما تكون المخاوف منفصلة بشكل نظيف، تصبح مهام الصيانة محلية، البق في شكل البيانات ثابت في طبقة العرض؛ تغيير قواعد الحساب الضريبي يغير فقط طبقة الأعمال، وبدون س. س.، يمكن أن يتحول تغيير بسيط على ما يبدو عبر طبقات متعددة، يتطلب من المطور فهم وتعديل الرمز عبر المجموعة بأكملها، مما يزيد من خطر كسر عوامل التشغيل غير المتصلة بتعمد.
تعزيز القابلية للتسويق
فبإمكان الأفرقة المتعددة أن تعمل على طبقات مختلفة في وقت واحد دون أن تخطو على أصابع قدم كل منها، مثلاً، يمكن لفريق مقدم أن يطور طبقة العرض بينما يعمل فريق خلفي على منطق الأعمال التجارية والحصول على البيانات، كما يمكن أن تستفيد من توسيع نطاق البيانات بشكل مستقل عن طبقة التطبيق، إذا ما اكتسبت قاعدة بيانات أفقية تُضيفها إلى الطلبات.
أفضل
يمكن اختبار الطبقات المعزلة بشكل مستقل باستخدام اختبارات الوحدة أو اختبارات التكامل التي تسخر من أعالَم الطبقات المتاخمة، مثلاً، اختبار طبقة منطق الأعمال يصبح مستقيماً: تقدم اختباراً مزدوجاً لطبقة الوصول إلى البيانات والتحقق من أن المنطق التجاري يُجرى البيانات بشكل صحيح، وبالمثل، يمكن اختبار طبقة الوصول إلى البيانات بمعزل عن قاعدة بيانات حقيقية أو بديلاً غير رسمي، وهذا النهج الاختبارات الجزائية يزيد من الثقة في النظام الصحيح.
زيادة القابلية للإحالة
عندما تكون المكونات مصممة بشاغل واحد محدد جيداً، تصبح مرشحة طبيعية لإعادة الاستخدام عبر مشاريع مختلفة أو في إطار نفس المشروع، ويمكن استخدام مخرجات جيدة من نظام إعادة التدوين الإلكتروني في سمات متعددة، ويمكن إعادة استخدام واجهة "مستودع إعادة الاستخدام" بأي عنصر يحتاج إلى الحصول على بيانات المستخدمين، سواء كانت وحدة المحتوى، أو هيئة التمديد، أو تعزيز نظام تحديد المواصفات.
الشلالات المشتركة إلى أفويد
وحتى مع أفضل النوايا، كثيرا ما يقع المطورون في فخ يقوض الفصل بين الشواغل، فالوعي بهذه المجازف أمر حاسم للحفاظ على هيكل نظيف.
أعمال الهندسة فوق سطح الأرض
خطأ شائع هو خلق طبقات كثيرة جدا أو تضييق كل تغيير ممكن قبل الحاجة، وهذا يؤدي إلى تعقيدات غير ضرورية وينتهك مبدأ "أنت لست بحاجة إليها" ويمكن أن يكون النتيجة نظاما يتطلب فيه فهم طلب بسيط تطهير خمس طبقات من غير مباشر، مع التركيز على عدد الطبقات التي تجعل مفهوما لمجال مشكلتك، بدءا بثلاثة وتضيف المزيد عندما يكون هناك مبرر واضح.
الخلاصات الخفية
إن الاختباء الذي لا يخفي تماما تفاصيل التنفيذ يقال إنه "سري" مثلاً، واجهة المستودعات التي تكشف عن طرق إعادة إستثناءات قاعدة البيانات الخام تجبر على معالجة مسألة الاهتمامات الخاصة بقاعدة البيانات، وهذا يقترن بمنطق العمل بتفاصيل تنفيذ طبقة البيانات، وتجنباً لذلك، ضمان أن تكون الخلاصات مصممة للصيد وترجمة الاستثناءات من المستويات الأدنى إلى أخطاء محددة في بعض الحالات.
نموذج الدومين الديناميكي
أحياناً، (سو سي) تُتخذ بعيداً جداً، مما يؤدي إلى نموذج للمجالات الدموية حيث يُنقل كل منطق الأعمال إلى فصول خدمة منفصلة، ويترك المجال مفتوحاً كحاملي بيانات بسيطين بدون سلوك، وفي حين أن هذا الأمر يفصل بين الشواغل من ناحية، فإنه يمكن أيضاً أن يُحطّم منطق الأعمال التجارية عبر العديد من الخدمات، ويجعل النظام أكثر صعوبة في فهمه والحفاظ عليه، والسبب في كثير من الأحيان إيجاد التوازن الصحيح: السماح للأفعال التي تُختلقّي السلوك المُرُرُ
Layers Coupled Tightly via Shared State
وهناك أيضاً مشقق آخر يتمثل في تقاسم الدولة المطمورة عبر الطبقات، فعلى سبيل المثال، تُعدّل طبقة الأعمال التي تعدل طبقة العرض العالمية التي تُقرأ أيضاً على أساس أن تُحدث تركيبات مخفية، ويمكن أن تتسبب التغييرات التي تطرأ على الوحوش في أي طبقة تلمسها، بل أن تُنقل البيانات صراحة عبر بارامترات طرق أو تستخدم أدوات نقل البيانات غير قابلة للتداول بين طبقات.
التنفيذ العملي في مجال التوجيه
ويجسد هذا النظام، بوصفه نظاماً قياسياً لا يُستهان به وإطاراً احتياطياً، العديد من المبادئ التي نوقشت، ويستند هيكله إلى نموذج مطبق حيث يدير نظام التشغيل الأساسي إمكانية الحصول على البيانات والتصاريح، بينما يظل تمديد نطاق نقاط النهاية والوصلات والخدمات - داخل حدود محددة جيداً، وعندما يتم وضع تمديدات لـ " مباشرة " ، ويلتزم بفصل الشواغل، يضمن استمرارية وشفرة الخاص بك.
فعلى سبيل المثال، عند إنشاء نقطة نهاية عرفية، ينبغي أن تفصل بين المنطق (العرض) من منطق الأعمال (الخدمة) ووصول البيانات (مستودع) - يقدم مباشرة حقنة التبعية ويدخل إلى زبون قاعدة البيانات وطبقة الكيتش، ولكن ينبغي أن تلخص الاستفسارات في قاعدة البيانات في فئة مستودعات مخصصة بدلا من فرز الاستفسارات الأولية في معالج نقطة النهاية، وبالمثل، ينبغي وضع منطق الخدمة المثبتة في نقطة النهاية.
كما يدعم التوجيه الخطافات التي تطلق على أحداث دورة الحياة (مثلاً، بعد إنشاء بند)، وللحفاظ على شركة سو سي، ينبغي لمعالج الخطاف أن يفوض إلى خدمة تلخص منطق الأعمال الذي يحفزه ذلك الحدث، وينبغي أن يقتصر الخطاف نفسه على معالجة سياق الحدث وأن يسلك طريقة الخدمة المناسبة، وهذا يظل رقيقاً ويركّز على مسؤوليتهم الوحيدة: الرد على الحدث.
بالإضافة إلى أن نظام تصريح (جيروس) يُنفذ شكلاً من أشكال الفصل بين الوصول إلى البيانات ومنطق الأعمال، المستعملون والأدوار يحددون ما يستطيعون رؤيته وفعله، ويقرأ الجوهر تلك التصاريح قبل تنفيذ أي عملية بيانات، وعندما تبني المنطق العرفي، يجب أن تحترم النموذج نفسه بفحص التصاريح من خلال المساعدين المزودين بدلاً من تجاوزها.
خاتمة
فالفصل الفعال بين الشواغل في نظم البرامجيات المطبقة ليس أسلوباً اختيارياً للطفرة المعمارية، بل هو ممارسة حاسمة لبناء نظم يمكن الحفاظ عليها وتوسيع نطاقها وفهمها بمرور الوقت، ومن خلال الالتزام بمبادئ المسؤولية الواحدة، والهيكل المطبق، والتكديس، والتكدس، والتكدس، والارتباك، والارتباك، يخلق المطورون قواعد مرجعية قادرة على التغيير وتلائم التعاون، وتحسن نوعية المنتجات، وتقويتها.
"وعندما تصمم نظامك التالي أو تمدد نظاماً قائماً، تُبقي هذه المبادئ في الحسبان، سواء كنت تعمل مع "جيروس" أو إطار آخر أو بناء من الصفر، فإن تأديب الشواغل المنفصلة سيُعطي أرباحاً لدراجة الحياة الكاملة للبرنامج، ولمزيد من القراءة، استكشاف