فصل الاهتمامات
يُعدّ فصل الاهتمامات (SoC) مبدأً تصميمياً في علوم الحاسوب وهندسة البرمجيات، وينص على ضرورة تقسيم المشكلة المعقدة إلى اهتمامات متميزة - جوانب أو قضايا - يمكن تحليلها ومعالجتها وإدارتها بشكل فردي، حتى وإن كانت تنتمي إلى النظام نفسه. وهذا يسمح بالتركيز على قضية واحدة في كل مرة، مما يقلل من العبء المعرفي والتعقيد. [ 1 ]
يمكن تحقيق فصل الاهتمامات بعدة طرق: زمنيًا (على سبيل المثال، تسلسل الأنشطة في دورة حياة البرمجيات)، حسب الجودة (على سبيل المثال، التعامل مع الصحة بشكل منفصل عن الكفاءة [ 2 ] )، حسب العرض (على سبيل المثال، تحليل تدفق البيانات بشكل منفصل عن تدفق التحكم) أو حسب الحجم (النمطية) [ 1 ].
تُعدّ النمطية تطبيقًا مُحددًا لمبدأ فصل الاهتمامات على مكونات النظام (الفصل حسب الحجم). في الأنظمة النمطية، تُغلف كل وحدة اهتمامًا واحدًا، وتُصمم الوحدات وتُنفذ وتُفهم بشكل مُنفصل قبل دمجها في نظام أكبر. مع أن النمطية هي التجسيد الأكثر شيوعًا ووضوحًا لمبدأ فصل الاهتمامات في بنية الكود، إلا أن هذا المبدأ أوسع نطاقًا. على سبيل المثال، يُعد فصل تحليل المتطلبات عن التنفيذ في الجدول الزمني للمشروع، أو فصل المتطلبات الوظيفية عن غير الوظيفية في المواصفات، أشكالًا صحيحة لفصل الاهتمامات لا تتطلب بالضرورة تصميمًا نمطيًا.
قام إدسكار دبليو ديجكسترا في ورقته البحثية لعام 1974 بعنوان " حول دور الفكر العلمي" ، [ 2 ] بصياغة مصطلح فصل الاهتمامات فيما يتعلق بصفات البرمجيات مثل الصحة والكفاءة .
يروج كارلو جيزي في كتابه "أساسيات هندسة البرمجيات" [ 1 ] لفصل الاهتمامات باعتباره الطريقة الأساسية لمعالجة التعقيد المتوارث في إنتاج البرمجيات.
استخدم فيليب كروشتن في مقالته "المخططات المعمارية - نموذج العرض "4+1" لهندسة البرمجيات" [ 3 ] نموذجًا يتكون من خمسة عروض رئيسية لمعالجة الهياكل الكبيرة، وهذا في الأساس فصل قائم على العرض للاهتمامات، حيث يركز كل عرض على جانب مختلف من الهندسة المعمارية.
بحسب كارلو غيزي ، فإن الفائدة الرئيسية لنمطية البرمجيات هي أنها تسمح بتطبيق مبدأ فصل الاهتمامات على مكونات النظام، أو "الوحدات". يمكن معالجة تفاصيل الوحدة بشكل منفصل؛ علاوة على ذلك، يتم التعامل مع تكامل الوحدة كاهتمام منفصل يتناول الخصائص العامة لوحدات البرمجيات وعلاقاتها.
ذكر لابلانت، فيليب أيضاً أنه يمكن تطبيق فصل الاهتمامات في تصميم البرمجيات، والبرمجة، والوقت، وجودة البرمجيات. [ 4 ]
أصل
ربما يكون مصطلح فصل الاهتمامات قد صاغه إدسكار دبليو ديكسترا في بحثه عام 1974 بعنوان "حول دور الفكر العلمي". [ 2 ]
دعني أحاول أن أشرح لك ما أعتبره سمة مميزة للتفكير الذكي. إنها الرغبة في دراسة جانب واحد من موضوع البحث بعمق، بمعزل عن غيره، حرصًا على اتساقه، مع العلم التام بأن التركيز منصبّ على جانب واحد فقط. فنحن نعلم أن البرنامج يجب أن يكون صحيحًا، ولا يمكننا دراسته إلا من هذا المنظور؛ ونعلم أيضًا أنه يجب أن يكون فعالًا، ويمكننا دراسة فعاليته في وقت لاحق. وفي حالة ذهنية أخرى، قد نتساءل عما إذا كان البرنامج مرغوبًا فيه، وإن كان كذلك، فلماذا. ولكن لا فائدة تُرجى - بل على العكس تمامًا! - من معالجة هذه الجوانب المختلفة في آن واحد. هذا ما أسميه أحيانًا "فصل الاهتمامات"، وهو، وإن لم يكن ممكنًا تمامًا، إلا أنه الأسلوب الوحيد المتاح، حسب علمي، لترتيب الأفكار بفعالية. هذا ما أقصده بـ"تركيز الانتباه على جانب معين": لا يعني ذلك تجاهل الجوانب الأخرى، بل يعني ببساطة مراعاة أن الجانب الآخر غير ذي صلة من وجهة نظر هذا الجانب. إنها تعني التفكير في مسار واحد ومسارات متعددة في آن واحد.
بعد خمسة عشر عامًا، بات من الواضح أن مصطلح فصل الاهتمامات أصبح فكرة مقبولة. في عام 1989، كتب كريس ريد كتابًا بعنوان " عناصر البرمجة الوظيفية " [ 5 ] يصف فيه فصل الاهتمامات:
يتعين على المبرمج القيام بعدة أشياء في نفس الوقت، وهي:
- صف ما سيتم حسابه؛
- قم بتنظيم تسلسل الحساب في خطوات صغيرة؛
- تنظيم إدارة الذاكرة أثناء الحساب.
ويواصل ريد قوله،
من الناحية المثالية، ينبغي أن يتمكن المبرمج من التركيز على المهمة الأولى من المهام الثلاث (وصف ما سيتم حسابه) دون أن يشتت انتباهه المهمتان الأخريان، وهما أكثر إدارية. من الواضح أن الإدارة مهمة، ولكن بفصلها عن المهمة الرئيسية، يُرجح أن نحصل على نتائج أكثر موثوقية، ويمكننا تبسيط عملية البرمجة من خلال أتمتة جزء كبير من الإدارة.
تتمتع أنظمة SoC بمزايا أخرى. على سبيل المثال، يصبح إثبات البرنامج أكثر جدوى عند غياب تفاصيل التسلسل وإدارة الذاكرة. علاوة على ذلك، ينبغي أن تخلو أوصاف العمليات الحسابية من تلك الأوصاف التفصيلية خطوة بخطوة لكيفية تنفيذها، إذا ما أُريد تقييمها باستخدام بنى حاسوبية مختلفة. قد لا يكون وصف تسلسل التغييرات الطفيفة على كائن بيانات مُخزّن وصفًا مناسبًا لكيفية حساب شيء ما عند استخدام حاسوب عالي التوازي مزود بآلاف المعالجات الموزعة في جميع أنحاء الحاسوب، وباستخدام وحدات تخزين محلية بدلًا من وحدات تخزين عالمية.
إن أتمتة الجوانب الإدارية تعني أن مطور اللغة عليه التعامل معها، لكن لديه فرصة أكبر بكثير للاستفادة من آليات حسابية مختلفة تمامًا مع بنى أجهزة مختلفة.
أمثلة
حزمة بروتوكولات الإنترنت
يُعدّ نظام على شريحة (SoC) عنصرًا أساسيًا في تصميم الإنترنت. في مجموعة بروتوكولات الإنترنت ، بُذلت جهودٌ كبيرة لفصل المهام إلى طبقات مُحدّدة بوضوح . يسمح هذا لمصممي البروتوكولات بالتركيز على المهام في طبقة واحدة، وتجاهل الطبقات الأخرى. على سبيل المثال، يهتم بروتوكول SMTP في طبقة التطبيقات بجميع تفاصيل إجراء جلسة بريد إلكتروني عبر خدمة نقل موثوقة (عادةً TCP )، ولكنه لا يهتم إطلاقًا بكيفية ضمان خدمة النقل لهذه الموثوقية. وبالمثل، لا يهتم TCP بتوجيه حزم البيانات، إذ تتم هذه العملية في طبقة الإنترنت .
HTML، CSS، جافا سكريبت
تُعدّ لغات HTML و CSS و JavaScript لغاتٍ متكاملة تُستخدم في تطوير صفحات الويب والمواقع الإلكترونية. تُستخدم HTML بشكلٍ أساسي لتنظيم محتوى صفحات الويب، بينما تُستخدم CSS لتحديد أسلوب عرض المحتوى، وتُحدد JavaScript كيفية تفاعل المحتوى مع المستخدم. تاريخيًا، لم يكن هذا هو الحال: فقبل ظهور CSS، كانت HTML تقوم بمهمتي تحديد الدلالات والأسلوب معًا.
البرمجة الموجهة نحو الموضوع
تتيح البرمجة الموجهة نحو الموضوعات معالجة الاهتمامات المنفصلة كبنى برمجية مستقلة، لكل منها نفس القدر من الأهمية. يوفر كل اهتمام بنية فئوية خاصة به تُنظم فيها الكائنات المشتركة، ويساهم في الحالة والأساليب في النتيجة المركبة عند تقاطعها. تصف قواعد التوافق كيفية ارتباط الفئات والأساليب في الاهتمامات المختلفة ببعضها البعض عند نقاط التفاعل، مما يسمح باشتقاق سلوك مركب لأسلوب ما من عدة اهتمامات. تتيح البرمجة الموجهة نحو الموضوعات متعددة الأبعاد تحليل الاهتمامات وتركيبها كـ"مصفوفة" متعددة الأبعاد، حيث يوفر كل اهتمام بُعدًا تُحصى فيه نقاط الاختيار المختلفة، وتشغل خلايا المصفوفة العناصر البرمجية المناسبة.
البرمجة الموجهة نحو الجوانب
تتيح البرمجة الموجهة نحو الجوانب معالجة الاهتمامات المتداخلة كاهتمامات أساسية. على سبيل المثال، تتطلب معظم البرامج شكلاً من أشكال الأمان والتسجيل . غالبًا ما يُعتبر الأمان والتسجيل من الاهتمامات الثانوية، بينما ينصبّ الاهتمام الأساسي عادةً على تحقيق أهداف العمل. مع ذلك، عند تصميم برنامج، يجب تضمين الأمان في التصميم منذ البداية بدلاً من اعتباره اهتمامًا ثانويًا. غالبًا ما يؤدي تطبيق الأمان لاحقًا إلى نموذج أمان غير كافٍ يترك ثغرات كثيرة للهجمات المستقبلية. يمكن حل هذه المشكلة باستخدام البرمجة الموجهة نحو الجوانب. على سبيل المثال، يمكن كتابة جانب لفرض تسجيل جميع استدعاءات واجهة برمجة تطبيقات معينة، أو تسجيل جميع الأخطاء عند حدوث استثناء، بغض النظر عما إذا كان الكود الإجرائي للبرنامج يعالج الاستثناء أو ينشره. [ 6 ]
مستويات التحليل في الذكاء الاصطناعي
في علم الإدراك والذكاء الاصطناعي ، يشيع استخدام مستويات التحليل التي وضعها ديفيد مار . ففي أي وقت، قد يركز الباحث على ما يحتاجه جانب معين من الذكاء للحساب، أو الخوارزمية التي يستخدمها، أو كيفية تطبيق تلك الخوارزمية في الأجهزة. ويشبه هذا الفصل بين الاهتمامات التمييز بين واجهة المستخدم والتنفيذ في هندسة البرمجيات والأجهزة.
انظر أيضاً
مراجع
- 1 2 3 غزي، كارلو؛ الجزائري، مهدي؛ ماندريولي ، دينو (2003). أساسيات هندسة البرمجيات (2. ed.، [Nachdr.] ed.). أبر سادل ريفر، نيوجيرسي: برنتيس هول. رقم ISBN 978-0-13-305699-0.
- 1 2 3 ديكسترا، إدسكار دبليو (1982). "حول دور الفكر العلمي" . مختارات من كتابات في الحوسبة: منظور شخصي . نيويورك، نيويورك، الولايات المتحدة الأمريكية: سبرينغر-فيرلاغ. ص 60-66 . ISBN 0-387-90652-5.
- ↑ كروشتن، بي. بي. (1995). "نموذج الرؤية 4+1 للهندسة المعمارية" . مجلة IEEE للبرمجيات . 12 (6): 42-50 . arXiv : 2006.04975 . doi : 10.1109/52.469759 . ISSN 0740-7459 .
- ↑ لابلانت، فيليب (2007). ما يجب أن يعرفه كل مهندس عن هندسة البرمجيات . مطبعة سي آر سي. رقم ISBN 978-0-8493-7228-5.
- ↑ ريد، كريس (1989). عناصر البرمجة الوظيفية . بوسطن، ماساتشوستس، الولايات المتحدة الأمريكية: أديسون-ويسلي لونجمان. ISBN 0-201-12915-9.
- ↑ جيس نيلسن (يونيو 2006). "بناء تطبيقات آمنة" (ملف PDF) . تم الاطلاع عليه بتاريخ 8 فبراير 2012 .
روابط خارجية
- الفصل متعدد الأبعاد للمخاوف (مؤرشف بتاريخ 9 أغسطس 2016 في أرشيف الإنترنت )
- TAOSAD -- مؤرشف بتاريخ 19 ديسمبر 2016 في Wayback Machine
- دورة تدريبية وورشة عمل حول البرمجة الموجهة نحو الجوانب وفصل الاهتمامات، مؤرشفة بتاريخ 16 مايو 2008 على موقع Wayback Machine.
- مبادئ البرمجة
- الاختزالية
