هندسة البرمجيات القائمة على البحث

تُطبّق هندسة البرمجيات القائمة على البحث ( SBSE ) تقنيات البحث الاستدلالي ، مثل الخوارزميات الجينية ، والتقسية المحاكاة ، والبحث المحظور ، على مشاكل هندسة البرمجيات . يمكن اعتبار العديد من أنشطة هندسة البرمجيات مشاكل تحسين . غالبًا ما تكون تقنيات التحسين في بحوث العمليات ، مثل البرمجة الخطية أو البرمجة الديناميكية، غير عملية لمشاكل هندسة البرمجيات واسعة النطاق نظرًا لتعقيدها الحسابي أو افتراضاتها حول بنية المشكلة. يستخدم الباحثون والممارسون تقنيات البحث الاستدلالي ، التي لا تفرض سوى القليل من الافتراضات على بنية المشكلة، لإيجاد حلول شبه مثالية أو "جيدة بما يكفي". [ 1 ]

يمكن تقسيم مشاكل SBSE إلى نوعين:

  • مشاكل التحسين ذات الصندوق الأسود، على سبيل المثال، تعيين الأشخاص للمهام ( مشكلة تحسين توافقية نموذجية ).
  • مشاكل الصندوق الأبيض التي تتطلب مراعاة العمليات على شفرة المصدر. [ 2 ]

تعريف

تحوّل خوارزمية هندسة البرمجيات القائمة على النماذج (SBSE) مشكلة هندسة البرمجيات إلى مشكلة بحث حسابي يمكن معالجتها باستخدام خوارزمية فوقية . يتضمن ذلك تحديد فضاء البحث، أو مجموعة الحلول الممكنة. عادةً ما يكون هذا الفضاء كبيرًا جدًا بحيث لا يمكن استكشافه بالكامل، مما يُشير إلى ضرورة استخدام خوارزمية فوقية . ثم يُستخدم مقياس [ 3 ] (يُسمى أيضًا دالة اللياقة، أو دالة التكلفة، أو دالة الهدف، أو مقياس الجودة) لقياس جودة الحلول المحتملة. يمكن إعادة صياغة العديد من مشاكل هندسة البرمجيات كمشكلة بحث حسابي. [ 4 ]

أما مصطلح " التطبيق القائم على البحث "، على النقيض من ذلك، فيشير إلى استخدام تقنية محرك البحث ، بدلاً من تقنيات البحث، في تطبيق صناعي آخر.

نبذة تاريخية

أُبلغ عن إحدى المحاولات الأولى لتطبيق التحسين على مشكلة هندسة البرمجيات من قِبل ويب ميلر وديفيد سبونر عام 1976 في مجال اختبار البرمجيات . [ 5 ] وفي عام 1992، طبّق إس. زانثاكيس وزملاؤه تقنية بحث على مشكلة هندسة برمجيات لأول مرة. [ 6 ] استُخدم مصطلح SBSE لأول مرة عام 2001 من قِبل هارمان وجونز. [ 7 ] نما مجتمع البحث ليضم أكثر من 800 مؤلف بحلول عام 2013، موزعين على ما يقرب من 270 مؤسسة في 40 دولة. [ 8 ]

مجالات التطبيق

تُطبَّق هندسة البرمجيات القائمة على البحث على جميع مراحل عملية تطوير البرمجيات تقريبًا . ويُعدّ اختبار البرمجيات أحد أبرز تطبيقاتها. [ 9 ] كما طُبِّقت تقنيات البحث على أنشطة هندسة البرمجيات الأخرى ، مثل تحليل المتطلبات ، [ 10 ] [ 11 ] والتصميم ، [ 12 ] [ 13 ] وإعادة هيكلة الكود ، [ 14 ] والتطوير ، [ 15 ] والصيانة . [ 16 ]

هندسة المتطلبات

هندسة المتطلبات هي العملية التي يتم من خلالها تحديد احتياجات مستخدمي البرنامج وبيئته وإدارتها. وقد استُخدمت أساليب البحث لاختيار المتطلبات وتحسينها بهدف إيجاد أفضل مجموعة فرعية ممكنة من المتطلبات التي تُلبي طلبات المستخدمين في ظل قيود مثل محدودية الموارد والترابط بين المتطلبات. غالبًا ما تُعالج هذه المشكلة كمسألة اتخاذ قرار متعددة المعايير ، وتتضمن عمومًا تقديم مجموعة من الحلول الوسطية الجيدة لصانع القرار بين التكلفة ورضا المستخدم، بالإضافة إلى مخاطر المتطلبات. [ 17 ] [ 18 ] [ 19 ] [ 20 ]

تصحيح الأخطاء والصيانة

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

استُخدمت البرمجة الجينية ، وهي تقنية مستوحاة من علم الأحياء وتتضمن تطوير البرامج من خلال التزاوج والطفرة، للبحث عن إصلاحات للبرامج عن طريق تعديل بضعة أسطر من شفرة المصدر. وقد أصلح برنامج GenProg Evolutionary Program Repair خمسة وخمسين خطأً من أصل مئة وخمسة أخطاء بتكلفة تقارب ثمانية دولارات لكل خطأ في إحدى التجارب. [ 21 ]

استُخدم التحليل التجريبي لأنماط إصلاح الأخطاء المستخرجة من مستودعات البرمجيات لتوصيف فضاء البحث الخاص بإصلاح البرامج الآلي رياضيًا. [ 22 ] وقد تم تطبيق فضاء البحث هذا لاحقًا في Cardumen، وهو أسلوب إصلاح يقوم بتوليف التصحيحات من قوالب التعليمات البرمجية المستخرجة تلقائيًا من التعليمات البرمجية المصدرية للتطبيق قيد الإصلاح. [ 23 ]

يتبنى التطور المشترك استعارة "المفترس والفريسة" حيث تتطور مجموعة من البرامج ومجموعة من اختبارات الوحدة معًا وتؤثر على بعضها البعض. [ 24 ]

الاختبار

تم تطبيق هندسة البرمجيات القائمة على البحث في اختبار البرمجيات، بما في ذلك التوليد التلقائي لحالات الاختبار (بيانات الاختبار)، وتقليل حالات الاختبار، وتحديد أولوياتها. [ 25 ] كما حظي اختبار الانحدار ببعض الاهتمام.

تحسين البرامج

يُعدّ استخدام هندسة البرمجيات القائمة على البرمجيات (SBSE) في تحسين البرامج ، أو تعديل برنامج ما لزيادة كفاءته من حيث السرعة واستخدام الموارد، موضوعًا للعديد من الأبحاث الناجحة. [ 26 ] في إحدى الحالات، تم تحسين برنامج مكون من 50,000 سطر برمجيًا، مما أدى إلى زيادة سرعته بمقدار 70 ضعفًا في المتوسط. [ 27 ] تُظهر دراسة حديثة أجراها باسيوس وآخرون أن تحسين بنية البيانات في برنامج جوجل جوافا حقق تحسنًا بنسبة 9% في وقت التنفيذ، و13% في استهلاك الذاكرة، و4% في استخدام وحدة المعالجة المركزية. [ 28 ]

إدارة المشاريع

يمكن تنفيذ عدد من القرارات التي يتخذها مدير المشروع عادةً بشكل تلقائي، على سبيل المثال، جدولة المشروع. [ 29 ]

أدوات

تشمل الأدوات المتاحة لهندسة البرمجيات القائمة على البرمجيات OpenPAT، [ 30 ] و EvoSuite ، [ 31 ] و Coverage ، وهي أداة لقياس تغطية الكود للغة بايثون. [ 32 ]

الأساليب والتقنيات

تتوفر عدة طرق وتقنيات، منها:

قبول الصناعة

باعتبارها مجالاً بحثياً جديداً نسبياً، فإن تقنية SBSE لم تحظ بعد بقبول واسع النطاق في الصناعة.

تُعدّ تطبيقات هندسة البرمجيات القائمة على النماذج (SBSE) الناجحة في الصناعة، وخاصةً في مجال اختبار البرمجيات، جذابةً للشركات لقدرتها على توليد مدخلات اختبار عشوائية تلقائيًا للكشف عن الأخطاء على نطاق واسع. في عام 2017، استحوذت فيسبوك على شركة ماجيك المحدودة الناشئة في مجال البرمجيات، والتي طورت تطبيق سابينز، وهو تطبيق للبحث عن الأخطاء يعتمد على البحث. [ 34 ]

في سيناريوهات تطبيقية أخرى، قد يتردد مهندسو البرمجيات في تبني أدوات لا يملكون عليها سيطرة تُذكر، أو تُنتج حلولًا تختلف عن تلك التي يُنتجها البشر. [ 35 ] في سياق استخدام هندسة البرمجيات القائمة على الأنظمة (SBSE) لإصلاح البرامج أو تحسينها، يحتاج المطورون إلى التأكد من أن أي تعديل يتم إنتاجه تلقائيًا لا يُولّد سلوكًا غير متوقع خارج نطاق متطلبات النظام وبيئة الاختبار. ونظرًا لأن البرمجة المؤتمتة بالكامل لم تُحقق بعد، فإن إحدى الخصائص المرغوبة لهذه التعديلات هي سهولة فهمها من قِبل البشر لدعم أنشطة الصيانة. [ 36 ]

ومن المخاوف الأخرى أن يؤدي استخدام هندسة البرمجيات القائمة على النماذج (SBSE) إلى الاستغناء عن مهندس البرمجيات. ويزعم المؤيدون أن الدافع وراء استخدام هندسة البرمجيات القائمة على النماذج هو تعزيز العلاقة بين المهندس والبرنامج. [ 37 ]

انظر أيضاً

مراجع

  1. موهان، م.؛ جرير، د. (1 أغسطس 2019). "استخدام منهج متعدد الأهداف لدراسة إعادة هيكلة البرمجيات الآلية" . تكنولوجيا المعلومات والبرمجيات . 112 : 83-101 . doi : 10.1016/j.infsof.2019.04.009 . ISSN 0950-5849 . 
  2. هارمان، مارك (2010). "لماذا سيظل تحليل ومعالجة شفرة المصدر مهمًا دائمًا". المؤتمر العاشر لمعهد مهندسي الكهرباء والإلكترونيات حول تحليل ومعالجة شفرة المصدر (SCAM 2010) . الصفحات 7-19 . doi : 10.1109/SCAM.2010.28 . 
  3. هارمان، مارك؛ جون أ. كلارك (2004). "المقاييس هي دوال لياقة أيضًا". وقائع الندوة الدولية العاشرة حول مقاييس البرمجيات، 2004. الندوة الدولية العاشرة حول مقاييس البرمجيات، 2004. الصفحات 58-69 . doi : 10.1109/METRIC.2004.1357891 . 
  4. كلارك، جون أ.؛ دولادو، خوسيه خافيير؛ هارمان، مارك؛ هيرونز، روبرت م.؛ جونز، برايان ف.؛ لومكين، م.؛ ميتشل، برايان س.؛ مانكوريديس، سبيروس؛ ريس، ك.؛ روبر، مارك؛ شيبرد، مارتن ج. (2003). "إعادة صياغة هندسة البرمجيات كمشكلة بحث". وقائع معهد مهندسي الكهرباء والإلكترونيات - البرمجيات . 150 (3): 161-175 . CiteSeerX 10.1.1.144.3059 . doi : 10.1049/ip-sen:20030559 (غير نشط في 12 يوليو 2025). ISSN 1462-5970 .  {{cite journal}}: صيانة CS1: رقم التعريف الرقمي غير نشط اعتبارًا من يوليو 2025 ( رابط )
  5. ميلر، ويب؛ سبونر، ديفيد ل. (1976). "التوليد التلقائي لبيانات اختبار الفاصلة العائمة". معاملات IEEE في هندسة البرمجيات . SE-2 (3): 223-226 . Bibcode : 1976ITSEn...2..223M . doi : 10.1109/TSE.1976.233818 . ISSN 0098-5589 . S2CID 18875300 .  
  6. S. Xanthakis, C. Ellis, C. Skourlas, A. Le Gall, S. Katsikas and K. Karapoulios, “Application of genetic algorithms to software testing,” in Proceedings of the 5th International Conference on Software Engineering and its Applications , Toulouse, France, 1992, pp. 625–636
  7. هارمان، مارك؛ جونز، برايان ف. (15 ديسمبر 2001). "هندسة البرمجيات القائمة على البحث". تكنولوجيا المعلومات والبرمجيات . 43 (14): 833-839 . CiteSeerX 10.1.1.143.9716 . doi : 10.1016/S0950-5849(01)00189-6 . ISSN 0950-5849 .  
  8. هارمان، مارك؛ منصوري، س. أفشين؛ تشانغ، يوانيوان (1 نوفمبر 2012). "هندسة البرمجيات القائمة على البحث: الاتجاهات والتقنيات والتطبيقات" . مجلة ACM Computing Surveys . 45 (1): 1–61 . doi : 10.1145/2379776.2379787 . S2CID 207198163 . 
  9. ماكمين، فيل (2004). "توليد بيانات اختبار البرمجيات باستخدام البحث: دراسة استقصائية". اختبار البرمجيات، والتحقق منها، وموثوقيتها . 14 (2): 105-156 . CiteSeerX 10.1.1.122.33 . doi : 10.1002/stvr.294 . ISSN 1099-1689 . S2CID 17408871 .   
  10. جرير، ديس؛ روه، غونتر (15 مارس 2004). "تخطيط إصدار البرمجيات: منهج تطوري وتكراري". تكنولوجيا المعلومات والبرمجيات . 46 (4): 243-253 . CiteSeerX 10.1.1.195.321 . doi : 10.1016/j.infsof.2003.07.002 . ISSN 0950-5849 . S2CID 710923 .   
  11. ^ كولاريس، فيليبي. سوزا، جيفسون. كارمو، رافائيل. بادوفا، كلاريندو؛ ماتيوس، جيرالدو ر. (2009). “نهج جديد لتخطيط إصدار البرمجيات”. الندوة البرازيلية الثالثة والعشرون حول هندسة البرمجيات، 2009. SBES '09 . الندوة البرازيلية الثالثة والعشرون حول هندسة البرمجيات، 2009. SBES '09. ص 207 – 215. دوى : 10.1109/SBES.2009.23 . 
  12. كلارك، جون أ.؛ جاكوب، جيريمي ل. (15 ديسمبر 2001). "البروتوكولات برامج أيضًا: البحث الاستدلالي الميتا-هيروستيكي عن بروتوكولات الأمان". تكنولوجيا المعلومات والبرمجيات . 43 (14): 891-904 . CiteSeerX 10.1.1.102.6016 . doi : 10.1016/S0950-5849(01)00195-1 . ISSN 0950-5849 .  
  13. رايها، أوتي (1 نوفمبر 2010). "دراسة استقصائية حول تصميم البرمجيات القائمة على البحث" (ملف PDF) . مجلة علوم الحاسوب . 4 (4): 203-249 . CiteSeerX 10.1.1.188.9036 . doi : 10.1016/j.cosrev.2010.06.001 . ISSN 1574-0137 .  
  14. مارياني، ثاينا؛ فيرجيليو، سيلفيا ريجينا (1 مارس 2017). "مراجعة منهجية لإعادة هيكلة البرمجيات القائمة على البحث". تكنولوجيا المعلومات والبرمجيات . 83 : 14-34 . doi : 10.1016/j.infsof.2016.11.009 . ISSN 0950-5849 . 
  15. ألبا، إنريكي؛ تشيكانو، ج. فرانسيسكو (1 يونيو 2007). "إدارة مشاريع البرمجيات باستخدام الخوارزميات الجينية". علوم المعلومات . 177 (11): 2380-2401 . doi : 10.1016/j.ins.2006.12.020 . hdl : 10630/8145 . ISSN 0020-0255 . 
  16. أنطونيول، جوليانو؛ دي بنتا، ماسيميليانو ؛ هارمان، مارك (2005). "تقنيات البحث المُطبقة على تحسين تخطيط مشروع صيانة ضخم". وقائع المؤتمر الدولي الحادي والعشرين لهندسة البرمجيات التابع لمعهد مهندسي الكهرباء والإلكترونيات، 2005. ICSM'05 . الصفحات 240-249 . CiteSeerX 10.1.1.63.8069 . doi : 10.1109/ICSM.2005.79 .  
  17. تشانغ، يوانيوان (فبراير 2010). اختيار المتطلبات وتحسينها باستخدام البحث متعدد الأهداف (أطروحة دكتوراه). ستراند، لندن، المملكة المتحدة: جامعة لندن.
  18. Y. Zhang و M. Harman و S. L. Lim، " تحسين إدارة تفاعل المتطلبات القائم على البحث "، قسم علوم الحاسوب، كلية لندن الجامعية، مذكرة بحثية RN/11/12، 2011.
  19. لي، لينغبو؛ هارمان، مارك؛ ليتير، إيمانويل؛ تشانغ، يوانيوان (2014). "مشكلة الإصدار التالي القوية". وقائع المؤتمر السنوي لعام 2014 حول الحوسبة الجينية والتطورية . جيكو '14. ص 1247-1254 . doi : 10.1145/2576768.2598334 . ISBN  9781450326629. S2CID 8423690 . 
  20. لي، ل.؛ هارمان، م.؛ وو، ف.؛ تشانغ، ي. (2017). "قيمة التحليل الدقيق في اختيار المتطلبات" (ملف PDF) . مجلة IEEE للمعاملات في هندسة البرمجيات . 43 (6): 580-596 . Bibcode : 2017ITSEn..43..580L . doi : 10.1109/TSE.2016.2615100 . ISSN 0098-5589 . S2CID 8398275 .  
  21. لو غويس، كلير ؛ ديوي-فوغت، مايكل؛ فورست، ستيفاني؛ وايمر، ويستلي (2012). "دراسة منهجية لإصلاح البرامج الآلي: إصلاح 55 من أصل 105 أخطاء مقابل 8 دولارات لكل خطأ". المؤتمر الدولي الرابع والثلاثون لهندسة البرمجيات ( ICSE) لعام 2012. الصفحات 3-13 . doi : 10.1109/ICSE.2012.6227211 . 
  22. مارتينيز، ماتياس؛ مونبيروس، مارتن (2015). "استخراج نماذج إصلاح البرمجيات للاستدلال في فضاء البحث الخاص بإصلاح البرامج الآلي". هندسة البرمجيات التجريبية . 20 (1): 176-205 . arXiv : 1311.3414 . doi : 10.1007/s10664-013-9282-8 .
  23. مارتينيز، ماتياس؛ مونبيروس، مارتن (2018). "مساحة بحث إصلاح فائقة الضخامة باستخدام قوالب مستخرجة تلقائيًا: نمط كاردومين في أستور". هندسة البرمجيات القائمة على البحث : 65-86 . arXiv : 1712.03854 . doi : 10.1007/978-3-319-99241-9_3 .
  24. أركوري، أندريا؛ ياو، شين (2008). "نهج تطوري مشترك جديد لإصلاح أخطاء البرمجيات تلقائيًا". مؤتمر IEEE للحوسبة التطورية، 2008. CEC 2008. (المؤتمر العالمي لـ IEEE حول الذكاء الحسابي). الصفحات 162-168 . CiteSeerX 10.1.1.159.7991 . doi : 10.1109/CEC.2008.4630793 .  
  25. هارمان، مارك؛ جيا، يو؛ تشانغ، يوانيوان (أبريل 2015). "الإنجازات والمشاكل المفتوحة والتحديات في اختبار البرمجيات القائم على البحث". المؤتمر الدولي الثامن لاختبار البرمجيات والتحقق منها والتحقق من صحتها (ICST) لعام 2015. غراتس، النمسا: IEEE. الصفحات 1-12 . CiteSeerX 10.1.1.686.7418 . doi : 10.1109/ICST.2015.7102580 . ISBN   978-1-4799-7125-1. S2CID 15272060 . 
  26. ميميتي، سوجب؛ بلانا، صبري؛ بينوتو، أليسيو؛ كولودزيج، جوانا؛ برانديتش، إيفونا (2018). "استخدام الخوارزميات الاستكشافية والتعلم الآلي لتحسين برمجيات أنظمة الحوسبة المتوازية: مراجعة منهجية للأدبيات". الحوسبة . 101 (8 ) : 893-936 . arXiv : 1801.09444 . Bibcode : 2018arXiv180109444M . doi : 10.1007/s00607-018-0614-9 . S2CID 13868111 . 
  27. لانغدون، ويليام ب.؛ هارمان، مارك. "تحسين البرمجيات الحالية باستخدام البرمجة الجينية" (ملف PDF) . معاملات IEEE في الحوسبة التطورية .
  28. باسيوس، ميخائيل؛ لي، لينغبو؛ وو، فان؛ كانثان، ليزلي؛ بار، إيرل ت. (9 سبتمبر 2017). "تحسين هياكل البيانات الداروينية على جوجل جوافة". هندسة البرمجيات القائمة على البحث (ملف PDF) . سلسلة محاضرات في علوم الحاسوب. المجلد 10452. الصفحات 161-167 . doi : 10.1007/978-3-319-66299-2_14 . ISBN   978-3-319-66298-5.
  29. مينكو، لياندرو ل.؛ سودولت، ديرك؛ ياو، شين (2012). "الخوارزميات التطورية لمشكلة جدولة المشاريع: تحليل وقت التشغيل والتصميم المُحسَّن". وقائع المؤتمر الدولي الرابع عشر حول الحوسبة الجينية والتطورية . GECCO '12. نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 1221-1228 . doi : 10.1145/2330163.2330332 . ISBN  978-1-4503-1177-9.
  30. مايو، م.؛ سبيسي، س. (2013). "التنبؤ بفشل اختبارات الانحدار باستخدام مقاييس تحليل الأداء الديناميكي المختارة بواسطة الخوارزمية الجينية" (ملف PDF) . هندسة البرمجيات القائمة على البحث . سلسلة محاضرات في علوم الحاسوب. المجلد 8084. الصفحات 158-171 . doi : 10.1007/978-3-642-39742-4_13 . hdl : 10289/7763 . ISBN   978-3-642-39741-7.
  31. "الصفحة الرئيسية" . evosuite.org .
  32. آخرون، نيد باتشيلدر و100، التغطية: قياس تغطية الكود للغة بايثون ، مؤرشف من الأصل في 28 يوليو 2020 ، تم استرجاعه في 14 مارس 2018{{citation}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  33. "أدوات تحليل الأداء مفتوحة المصدر في جافا" .
  34. "سابينز: مساعي فيسبوك لأتمتة اختبار البرمجيات" . فينشر بيت . 30 ديسمبر 2018. تم الاطلاع عليه بتاريخ 29 سبتمبر 2020 .
  35. جونز، ديريك (18 أكتوبر 2013). "البرمجة باستخدام الخوارزميات الجينية: أليس هذا ما يفعله البشر بالفعل ;-)؟" . شكل الكود . تم الاسترجاع في 31 أكتوبر 2013 . 
  36. لو غويس، كلير ؛ فورست، ستيفاني؛ وايمر، ويستلي (1 سبتمبر 2013). "التحديات الراهنة في إصلاح البرمجيات الآلي". مجلة جودة البرمجيات . 21 (3): 421-443 . CiteSeerX 10.1.1.371.5784 . doi : 10.1007/s11219-013-9208-0 . ISSN 1573-1367 . S2CID 16435531 .   
  37. سيمونز، كريستوفر ل. (مايو 2013). إلى أين يتجه مهندسو البرمجيات في هندسة البرمجيات القائمة على البحث؟ ورشة العمل الدولية الأولى حول دمج النمذجة مع هندسة البرمجيات القائمة على البحث. سان فرانسيسكو، الولايات المتحدة الأمريكية: مطبعة IEEE. الصفحات 49-50 . تاريخ الاسترجاع: 31 أكتوبر 2013 .