كتب بنيامين فرانكلين في العام 1789 يقول: "في هذا العالم، لا شيء مؤكد باستثناء الموت والضرائب". ولو كان لا يزال حياً في العصر الحديث، فلربما كان أضاف إلى قائمته أيضاً "الأخطاء البرمجية".
إن البرمجيات الحاسوبية الحديثة معقدة للغاية إلى درجة أن الأخطاء ستظهر بشكل حتمي خلال عملية التطوير، وهذا ما يجعل العثور عليها وكتابة التصحيحات اللازمة لإصلاحها جزءاً مألوفاً من أي جدول زمني لتطوير البرمجيات. في الواقع، هناك شركات تقدم هذه الخدمة للمطورين مثل "ترافيس".
ولكن العثور على الأخطاء وتصحيحها هو عمل يتطلب الكثير من الوقت ويستهلك قدراً كبيراً من الموارد، وقد قام العديد من الباحثين بتطوير روبوتات برمجية (بوتات) يمكنها أتمتة هذه العملية، ولكن يغلب عليها البطء، أو توليد رماز برمجي مكتوب بشكل سيئ لا يفي بالمطلوب؛ لذا فإن المطورين يرغبون بشدة في أن يتمكنوا من الاعتماد على روبوت برمجي سريع ويتمتع بجودة عالية يمكنه تمشيط النصوص البرمجية بحثاً عن الأخطاء وكتابة تصحيحات لإصلاحها.
وقد تحقق حلمهم اليوم بفضل عمل مارتن مونبيروس وزملاؤه في المعهد الملكي للتكنولوجيا في ستوكهولم في السويد؛ حيث قام هؤلاء الشباب أخيراً بتطوير روبوت برمجي يمكنه أن ينافس المطورين البشر في العثور على الأخطاء وكتابة تصحيحات علة الجودة لها.
ويطلق هؤلاء الشباب على روبوتهم البرمجي اسم "ريبيرناتور" وقد اختبروه بنجاح من خلال السماح له بالتنافس مع مطورين من البشر للتوصل إلى التصحيحات اللازمة. يقول مونبيروس وزملاؤه: "هذا إنجاز هام بالنسبة للقدرة التنافسية البشرية في أبحاث هندسة البرمجيات في مجال الإصلاح الآلي للبرمجيات".
لقد عرف علماء الحاسوب منذ فترة طويلة أن كتابة التصحيحات البرمجية عمليةٌ يمكن أتمتتها، ولكن ليس من الواضح إن كان بإمكان البوتات القيام بهذا العمل بنفس السرعة والجودة اللتين يتمتع بهما البشر.
لذلك قام مونبيروس وزملاؤه بتجربة ذلك من خلال إخفاء ريبيرناتور في هيئة مطور بشري، والسماح له بالتنافس مع البشر لتطوير تصحيحات على موقع جيت هاب GitHub، وهو موقع إلكتروني يساعد مطوري البرمجيات على التحكم في إصدارات مشاريعهم البرمجية. يقول مونبيروس وزملاؤه: "الفكرة الرئيسية لريبيرناتور هي التوليد التلقائي للتصحيحات التي تعمل على إصلاح أخطاء عملية البناء build (ترجمة المشروع البرمجي إلى لغة الآلة)، ثم عرضها على المطورين البشر، لمعرفة ما إذا كان هؤلاء المطورون البشر سيقبلونها في نهاية المطاف كمساهمات صالحة بالنسبة للمشروع البرمجي الأساسي".
وقام الفريق بإنشاء مستخدم على جيت هاب باسم "لوك إسيب Luc Esape"، وقد ظهر على هيئة مهندس برمجيات يعمل في مختبرهم البحثي. يقول الفريق: "يمتلك لوك صورة شخصية، ويبدو كأنه مطور صغير السن، حريص على تقديم مساهمات مفتوحة المصدر على جيت هاب".
ولكن لوك في الواقع ما هو إلا ريبيرناتور في هيئة تنكرية، وقد كانت هذه الخدعة ضرورية لأن المشرفين البشر يميلون إلى تقييم عمل البوتات والبشر بشكل مختلف، حيث يقول مونبيروس وزملاؤه، الذين أبلغوا مَن انطلت عليهم الحيلة قُبيل نشر هذا المقال: "وجب القيام بهذا التمويه لكي نختبر فرضيتنا العلمية عن القدرة التنافسية البشرية".
وقد قام الفريق بتنفيذ مرحلتين لاختبار ريبيرناتور، أجريت الأولى من فبراير إلى ديسمبر 2017، حيث قاموا بتشغيل ريبيرناتور على قائمة مثبتة من 14,188 مشروعاً على جيت هاب بحثاً عن الأخطاء. يقول الفريق: "وجدنا أن نموذجنا الأوَّلي قادر على تنفيذ ما يقرب من 30 محاولة إصلاح في اليوم الواحد".
وخلال هذا الوقت، قام ريبيرناتور بتحليل أكثر من 11,500 عملية بناء باءت كل منها بالفشل. ومن بين هذه العمليات، تمكن من استخراج الفشل في أكثر من 3,000 حالة، ثم انتقل إلى تطوير تصحيح برمجي في 15 حالة منها.
ومع ذلك، تم رفض جميع هذه التصحيحات ضمن عملية البناء، لأن ريبيرناتور استغرق وقتاً طويلاً للغاية في تطويرها، أو لأنه كتب نصوصاً برمجية تصحيحية رديئة لم تكن لتلق القبول.
وكانت المرحلة التجريبية الثانية أكثر نجاحاً؛ ففي هذه المرة، أوكَلوا لـ "لوك" مهمة العمل على خدمة ترافيس لاختبارات التكامل المستمر "Travis" من يناير إلى يونيو 2018. على الرغم من أن الفريق لم يحدد ماهية التحسينات التي أجراها على ريبيرناتور، وقد تمكن في 12 يناير من كتابة تصحيح برمجي حظي بقبول أحد المشرفين البشر ضمن عملية البناء. يقول الفريق: "بعبارة أخرى، تمكَّن ريبيرناتور من منافسة البشر للمرة الأولى".
وعلى مدى الأشهر الستة التالية، واصل ريبيرناتور إنتاج 5 تصحيحات برمجية حظيت بقبول المشرفين البشر.
إنه عمل مثير للإعجاب، يمهِّد السبيل أمام جيل جديد من تطوير البرمجيات، كما أنه يثير بعض الأسئلة المثيرة للاهتمام، حيث يشير مونبيروس وزملاؤه إلى تصحيح برمجي طوره ريبيرناتور من أجل أحد المشاريع على جيت هاب -ويسمى "eclipse/ditto"- في 12 مايو الماضي.
بعد ذلك تلقى الفريق الرسالة التالية من أحد المطورين: "لا يمكننا قبول طلبات بإبلاغ الآخرين عن التغييرات التي حدثت إلا إذا كانت مرسلة من المستخدمين الذين وقَّعوا اتفاقية ترخيص المساهمين لدى مؤسسة إكليبس".
وهذا الأمر يثير قضية شائكة، لأن البوت لا يمكنه أن يوقِّع فيزيائياً على اتفاقية ترخيص، وقد تساءل موبيروس وزملاؤه: "من الذي يمتلك الملكية الفكرية والمسؤولية عن مساهمة روبوت برمجي؟ هل هو مشغل الروبوت، أم منفذ البوت، أم مصمم خوارزمية الإصلاح؟".
يجب العمل على حل هذا النوع من المشاكل قبل أن يتمكن البشر والبوتات من التعاون في المزيد من الجوانب التفصيلية، ولكن مونبيروس وزملاؤه متفاؤلون، حيث يقولون: "نعتقد أن ريبيرناتور يجسد مستقبلاً معيناً من تطوير البرمجيات، حيث سيتعاون البشر مع الروبوتات بسلاسة، لدرجة أننا سنشهد تعاونهم في إنتاج تحف برمجية".
حتى أن فرانكلين نفسه -الذي اشتُهر بأنه مخترع ومبتكر- كان لينبهر بلا شك لو كان حياً في ذلك الوقت.
مرجع: arxiv.org/abs/1810.05806، تصحيحات منافسة للبشر في الإصلاح الآلي للبرمجيات بمساعدة ريببيرناتور.