مولود :
1976
الجنسیة:
مصر
الأعمال:
التنقيب في مستودعات البرمجيات (MSR)
رحلة في تطور البرمجيات
مستكشف مستودعات البرمجيات
قبل سنوات عديدة، عندما كانت الحواسيب تعرف فقط كأدوات لحساب المعادلات الرياضية، كان المخترعون الذين لا يكلون يعملون على إدخال الحاسوب إلى عالم العمل، يجب أن يدركوا أن ما يخلقونه هو أكثر من مجرد آلة حاسبة. في بداية التسعينيات من القرن العشرين، كانت أولى آلات الحساب مثل الآلة التحليلية1 لتشارلز باباج2 تستخدم بطاقات مثقبة لإدخال نصوص البرامج والبيانات إلى النظام وتخزين المعلومات. في هذه الطريقة، وجود ثقب في جزء معين يعني قيمة واحد في جبر بول (Boolean Algebra) . استُخدمت بطاقات المثقبة على نطاق واسع حتى عام 1950، بحيث كانت شركة IBM في عام 1937 تنتج عشرة ملايين من هذه البطاقات يوميا. ومع ذلك، كانت كل بطاقة مثقبة قادرة فقط على تخزين 70 بايت من البيانات. ومن ثم، جميعها معا لم تكن قادرة سوى على تخزين 679 ميجابايت من البيانات.
تجاوز القيود
في عالم اليوم، حجم معلومات شركة برمجيات بسيطة يمكن أن يتراوح في المتوسط بين عدة تيرابايتات إلى عدة عشرات من التيرابايتات! في الواقع، يبدو أن تطور الذكاء الاصطناعي ساهم بشكل كبير في التحسين المستمر في مجالي الذاكرة والتخزين في الحواسيب. عندما وصلت تقنية الذاكرة إلى مستوى يمكنها فيه معالجة وتخزين البيانات الهائلة بسرعة وكفاءة عالية، شهدت خوارزميات التعلم الآلي المعقدة3، وبالأخص فرع يسمى التعلم العميق4، انفجارا في النمو. في الماضي، كانت قيود الذاكرة تمنع تشغيل نماذج تحوي مليارات المعاملات. مع تحسن هذا الجانب، أصبح بالإمكان معالجة البيانات الكبيرة، وتوسعت حدود الابتكار في الذكاء الاصطناعي. زيادة سرعة الوصول إلى الذاكرة، تحسين سعة التخزين وتقليل التأخير، بالإضافة إلى الاستخدام المتزايد لتقنيات حديثة مثل ذواكر DRAM الحديثة ومحركات NVMe، أتاح للحواسيب القدرة على إجراء حسابات كثيفة وثقيلة في نفس الوقت. لذا، كانت التزامن بين التقدم في الأجهزة والخوارزميات العامل الرئيسي في التطور السريع للذكاء الاصطناعي.
خلف كواليس الأكواد
هندسة البرمجيات5 هي العلم والفن في إنشاء أنظمة برمجية معقدة، وهي منهجية منظمة لتصميم وتطوير واختبار ونشر وصيانة هذه الأنظمة. بمعنى آخر، يهدف هذه التخصص إلى إنتاج برمجيات ذات جودة وأداء عالٍ وكذلك قابلة للصيانة والتطوير المستقبلي من خلال تطبيق مبادئ الهندسة. بالتالي، تساهم التكنولوجيا والخدمات في هذا المجال في مساعدة المستخدمين على تحسين الإنتاجية والاستفادة. يعتبر أحمد حسن، الباحث المعروف في هذا المجال، أن هندسة البرمجيات وسيلة تجمع عددا كبيرا من الأشخاص معا لخلق شيء متميز ومبتكر. النقطة المهمة هي جمع الناس معا والتعقيدات المتعلقة بإدارتهم، لأن هندسة البرمجيات لا تشمل فقط الجوانب الفنية للحاسوب، بل تدمج الأبعاد الإدارية وكذلك الجوانب المتعلقة بمستخدمي الحاسوب لتعمل معا على إنتاج منتج له تأثير واضح على المجتمع.
من البيانات إلى المعرفة
استكشاف مستودعات البرمجيات6 (MSR) هو مجال جديد يهدف إلى تحليل وفحص البيانات الغنية المتاحة لاستخلاص معلومات مفيدة وموثقة من مستودعات البرمجيات مثل مستودعات التحكم في الإصدارات7، أرشيف قوائم البريد الإلكتروني، أنظمة تتبع الأخطاء وغيرها8، بخصوص نظام البرمجيات الخاص بنا. يركز هذا المجال أيضا على كشف التبعيات والنظام المتعلق بالبيانات المرتبطة. مستودعات البرمجيات في الواقع قاعدة بيانات ذات حجم كبير للاحتفاظ بالسجلات التي تخزن بيانات متعلقة بمنتجات شركة حاسوبية. عادة ما تتكون مستودعات البرمجيات من جزأين؛ تُخزن البيانات في نظام التحكم في الإصدارات أو التحكم بالمصدر، بينما تُخزن بيانات التعريف (الميتاداتا) الخاصة بالتغييرات المتعلقة بكل جزء من هذه البيانات في الجزء الثاني. بعض الباحثين يعرفون استخراج أرشيفات البرمجيات على أنه عملية للحصول على الأدلة الأولية عبر استخراج البيانات من مستودعات البرمجيات. إضافة إلى ذلك، يعرف البعض مصادر البيانات كمنتجات موجهة مثل الشيفرة المصدرية9، وثائق المتطلبات، أو أرشيفات النسخ، بمعنى أن هذه المصادر هي وثائق تم إنشاؤها ذاتيا بناء على عملية بناء المنتجات نفسها. ويزعمون أن هذه المصادر لم تتأثر بشكل مباشر، ولكنها مع ذلك تظل متأثرة ومجزأة إلى حد ما.
من تقنيات MSR يمكن الإشارة إلى تحليل التغييرات الزوجية10. تقوم فكرة تحليل التغييرات الزوجية على أساس أن المطورين يقومون بشكل متكرر بتغيير الكيانات البرمجية معا لإصلاح أخطاء أو إضافة ميزات جديدة. غالبا لا تُذكر هذه العلاقات بين مكونات الشيفرة بشكل صريح داخل الكود أو الوثائق الأخرى. خاصة المطورون الجدد في المشروع قد لا يعرفون أي الكيانات يجب أن تتغير معا. هدف تحليل التغييرات الزوجية هو استخراج هذه العلاقات من نظام التحكم في النسخ الخاص بالمشروع. من خلال دراسة التغييرات المسجلة في مواقع مختلفة (commits) وتوقيت هذه التغييرات، يمكن التعرف على الكيانات التي تغيرت بشكل متزامن بشكل مستمر. بعد ذلك، يمكن تقديم هذه المعلومات للمطورين القريبين من تعديل أحد هذه الكيانات لدعمهم في التغييرات القادمة.
من تقنيات أخرى لاستكشاف مستودعات البرمجيات تحليل مواقع التغييرات المسجلة11 في عملية إنتاج البرمجيات والتي تعرف بـ commit في أنظمة التحكم في النسخ، هناك أنواع مختلفة من الـ commits مثل تلك الـ commits المتعلقة بإصلاح الأخطاء، إضافة الميزات، التوثيق، وغيرها. لاتخاذ قرارات مبنية على حقائق بناء على الـ commits السابقة التي تؤدي إلى نتائج أدق، من الضروري اختيار مجموعات فرعية من الـ commits المتعلقة بالجزء المعني وإثراء المعلومات. كما تعد إنتاج الإحصائيات والوثائق12 من التقنيات المهمة في هذا المجال؛ حيث تسمح بإنتاج وثائق مفيدة عبر استخراج البيانات المتوفرة في مستودعات البرمجيات. على سبيل المثال، بحساب إحصائيات الاستهلاك، تساعد هذه العملية المطورين الجدد على التعرف بسرعة على الأجزاء الأكثر استخداما. بحيث يتم استخراج البيانات الأساسية من أنظمة التحكم في النسخ.
أبحاث أحمد حسن في هندسة البرمجيات تسهم بشكل ملحوظ في تسريع تقدم مجالات البرمجة والبرمجيات. وهو يعتقد أن "الفكرة العامة لجمع هذا الكم من البيانات تحولت إلى مجال واسع وناجح من الأبحاث في جميع أنحاء العالم، والآن العديد من الشركات الكبرى مثل جوجل، مايكروسوفت، وأمازون دمجت هذه الطريقة في بيئات الإنتاج والتطوير الخاصة بها ورفعت جودة برمجياتها." يمكن القول إن أبحاث استكشاف مستودعات البرمجيات تعد بمثابة دليل تجريبي يشجع المبرمجين ويمنعهم من التكرار والإعادة غير الضرورية للأخطاء. ولحسن الحظ، مع وجود باحثين مثل حسن، يتواجد هذا الدليل في الشركات الكبرى في العالم ويمنحنا أملا في تقدم أكثر ذكاءً وسرعة في التكنولوجيا.