سنعيد كتابة العلم بأبجدية عربية

  • الرئيسية
  • الفئات
  • الباحثون السوريون TV
  • من نحن
  • اتصل بنا
  • About Us
x
جارِ تحميل الفئات

كود المعكرونة Spaghetti code؛ الرِماز البرمجي المُتشابك

المعلوماتية >>>> برمجيات


تم حفظ حجم الخط المختار

Image: https://scontent.ffjr1-3.fna.fbcdn.net/v/t1.0-9/103306781_1470127203191357_9196166736496037787_o.jpg?_nc_cat=103&ccb=2&_nc_sid=9267fe&_nc_ohc=fJQF1pQkKosAX9-kElM&_nc_ht=scontent.ffjr1-3.fna&oh=b47b6ad9a60675721845c318dbba23f2&oe=60208B46

قد يتفاجأ مُحبّو معكرونة السباغيتي بأنّ مُهندسي البرمجيات قد يصفون نظامًا برمجيًّا ما بها، ليس على نحو إيجابي لأنها ذات طعم لذيذ، ولكن بدلالة سلبية على جودة النظام البرمجي؛ فعندما يُوصَف نظامك البرمجي بمعكرونة السباغيتي فهو يُوصَف بأنّه نظامٌ ذو جودة منخفضة، وغير مُهيكل (Unstructured)، ومليء بالحلقات المتداخلة (Nested Loops)، والشروط البرمجية المُعقدة والمتداخلة (Deeply Nested Condition)؛ أي إنّه شديد التشابك كالمعكرونة (1).

على الرغم من أنّ البرمجيات لا تَبلى مع الزمن؛ فهي غالبًا ما تُعدّل باستمرار.
فإذا أُجرِيَت عديدٌ من التعديلات بدون اتباع منهجيات هندسة البرمجيات، وعند وجود ضغط كبير مستمر لتسليم المنتج النهائي لهذه التعديلات من الإداريين؛ ستقل جودة البرمجية مع الزمن وتَحُول حالته إلى الرماز المتشابك Spaghetti code (كود معكرونة السباغيتي) (2). 

هناك العديد من العوامل التي تسبب تحول النظام البرمجي إلى معكرونة السباغيتي، ومنها:
  • أن تكون مُتطلبات الزبون غير كاملة ومتغيرة باستمرار.
  • أن يكون هناك العديد من التغييرات ويجب أن تُنجَز في زمن قصير ضيق.
  • الاستخفاف أو التساهل بتقدير تعقيد النظام الذي يُراد بناؤه.
  • عدم وجود قواعد كتابة رِماز برمجي ضمن الفريق، وعدم وجود توثيق (Documentation) جيد للنظام.
  • التأخر أو عدم إجراء اختبارات مؤتمتة (Automated tests) للنظام.
  • تخلي قائد الفريق البرمجي عن المشروع على نحو مفاجئ واستقالته من الشركة.
  • أن يكون الفريق البرمجي مؤلفًا من مبرمجين عديمي الخبرة (2).
يدلّ الرِماز المتشابك على وجود تصميم سيّئ للنظام Design smell وحتى تنفيذ سيئ له، ومن دلالاته أن يُصمّم بفكر إجرائي عند اتباع منهجية البرمجة الغرضية التوجه؛ إذ تكون الأصناف (Classes) بدون بُنية مُحددة، وتحتوي على دالات (Methods) ضخمة ذات أسماء إجرائية بدون أي بارامترات (parameters). إضافةً إلى عدم استغلال مفهومات *منهجية البرمجة الغرضية التوجه؛ مثل مفهومي الوراثة (Inheritance) والتعددية الشكلية (Polymorphism) (3).

هوامش:
لمعرفة المزيد عن البرمجة الغرضية التوجه: هنا

المصادر:
1. Koopman P. Avoiding Spaghetti Code [Internet]. Course.ece.cmu.edu. 2020 [cited 30 December 2020]. Available from: هنا
2. Pizka M. Straightening Spaghetti-Code with Refactoring? [Internet]. Citeseerx.ist.psu.edu. 2004 [cited 30 December 2020]. Available from: هنا
3. Moha N, Gueheneuc Y, Duchien L, Le Meur A. DECOR: A Method for the Specification and Detection of Code and Design Smells [Internet]. Citeseerx.ist.psu.edu. 2009 [cited 30 December 2020]. Available from: هنا

مواضيع مرتبطة إضافية

المزيد >


شارك

تفاصيل

12-01-2021
70

المساهمون في الإعداد

تدقيق علمي: Mujeeba Haj Najeeb
تدقيق لغوي: Hiba Alasadi
تعديل الصورة: Juman Hasan
إعداد ونشر: Wael Alshabani

تابعونا على تويتر


من أعد المقال؟

Mujeeba Haj Najeeb
Hiba Alasadi
Juman Hasan
Wael Alshabani

مواضيع مرتبطة

وشوم مؤقتة للاستشعار من خلال الجلد!

كيف تعملُ خوارزمياتُ الحاسب للتّعرف على الأجساد العارية؟

جوجل تطلق خدمتها الجديدة Helpout

انترنت الأشياء

ماذا بعد البيانات الكبيرة؟

البرمجيات مفتوحة المصدر ج1 نظم إدارة المحتوى صمّم موقعك الشخصي الآن

نموذج الصندوق في تصميم صفحات الويب

الخيال العلمي يصبح حقيقة: الطفل X

باحثون أستراليون يكتشفون طريقة لتخزين 1000 تيرا بايت على قرص سي دي CD

الدكتور «واتسون» من شركة IBM سيعاينك يوماً ما!

شركاؤنا

روابط مهمة

  • الشركاء التعليميون
  • حقوق الملكية
  • أسئلة مكررة
  • ميثاق الشرف
  • سياسة الكوكيز
  • شركاؤنا
  • دليل الشراكة
جميع الحقوق محفوظة لمبادرة "الباحثون السوريون" - 2019