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

تحليل البرامج الساكن  هو تحليل لبرمجيات الحاسوب يُجرى دون تنفيذ البرامج فعليًا، على عكس التحليل الديناميكي، الذي يُجرى على البرامج أثناء تنفيذها. يُجرى التحليل في معظم الحالات على بعض إصدارات الكود المصدري، أو على بعض أشكال الكود الهدف في حالات أخرى.

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

 السبب المنطقي لاستخدامه 
يختلف مدى تطور التحليل الذي تنفذه الأدوات من التي تبحث في سلوك التعليمات والتصريحات الفردية فقط، إلى التي تتضمن الكود المصدري الكامل للبرنامج في تحليلها.  تختلف استخدامات المعلومات الناتجة عن التحليل من تميز أخطاء الترميز المحتملة (مثل، أداة لنت) إلى الأساليب الرسمية التي تثبت رياضيًا خواص برنامج معين (يتوافق سلوكه مع مواصفاته مثلًا).

يمكن وصف المقاييس البرمجية والهندسة العكسية كأشكال من التحليل الساكن. يتزايد نشر المقاييس البرمجية المشتقة والتحليل الساكن معًا، خاصةً في إنشاء أنظمة مضمنة، من خلال تعريف ما يسمى أهداف جودة البرمجيات."Software Quality Objectives for Source Code"  (PDF). Proceedings: Embedded Real Time Software and Systems 2010 Conference, ERTS2010.org, Toulouse, France: Patrick Briand, Martin Brochet, Thierry Cambois, Emmanuel Coutenceau, Olivier Guetta, Daniel Mainberte, Frederic Mondot, Patrick Munier, Loic Noury, Philippe Spozio, Frederic Retailleau.

هناك استخدام تجاري متزايد للتحليل الساكن في التحقق من خصائص البرمجيات المستخدمة في الأنظمة الحاسوبية الحساسة للسلامة وتحديد موقع الكود الضعيف المحتمل. مثلًا، حددت الصناعات التالية استخدام تحليل الكود الساكن كوسيلة لتحسين نوعية البرمجيات المعقدة والمتطورة بصورة متزايدة:Improving Software Security with Precise Static and Runtime Analysis  (PDF), Benjamin Livshits, section 7.3 "Static Techniques for Security". Stanford doctoral thesis, 2006.

 البرمجيات الطبية: حددت إدارة الغذاء والدواء الأمريكية (إف دي إيه) استخدام التحليل الساكن للأجهزة الطبية.
 البرمجيات النووية: يوصي مكتب التنظيم النووي في المملكة المتحدة باستخدام التحليل الساكن لأنظمة حماية المفاعل.Computer based safety systems - technical guidance for assessing software aspects of digital computer based protection systems, 
 برمجيات الطيران (إلى جانب التحليل الديناميكي).Position Paper CAST-9. Considerations for Evaluating Safety Engineering Approaches to Software Assurance  // FAA, Certification Authorities Software Team (CAST), January, 2002: "Verification. A combination of both static and dynamic analyses should be specified by the applicant/developer and applied to the software."

أشارت دراسة أجرتها شركة فيّ دي سي ريسيرش عام 2012 إلى أن 28.7% من مهندسي البرمجيات المضمنة المشمولين بالاستقصاء يستخدمون حاليًا أدوات التحليل الساكن ومن المتوقع أن يستخدمه 39.7% في غضون عامين. وجدت دراسة من عام 2010 أن 60% من المطورين الذين جرت مقابلتهم في مشاريع بحثية أوروبية استفادوا على الأقل من برامج التحليل الساكن المدمجة في بيئة التطوير المتكامل الخاصة بهم. واستخدم نحو 10% فقط أداة تحليل أخرى (ربما أكثر تطوراً).Prause, Christian R., René Reiners, and Silviya Dencheva. "Empirical study of tool support in highly distributed research projects." Global Software Engineering (ICGSE), 2010 5th IEEE International Conference on. IEEE, 2010 http://ieeexplore.ieee.org/ielx5/5581168/5581493/05581551.pdf 

يستخدم في مجال صناعة أمن التطبيقات أيضًا ما يسمى اختبار أمن التطبيقات الساكن (إس إيه إس تي). يعتبر اختبار أمن التطبيقات الساكن جزءًا مهمًا من دورة حياة تطوير الأمن (إس دي إل) مثل دورة حياة تطوير الأمن من مايكروسوفت، وهو ممارسة شائعة في شركات البرمجيات.M. Howard and S. Lipner. The Security Development Lifecycle: SDL: A Process for Developing Demonstrably More Secure Software. Microsoft Press, 2006. Achim D. Brucker and Uwe Sodan. Deploying Static Application Security Testing on a Large Scale . In GI Sicherheit 2014. Lecture Notes in Informatics, 228, pages 91-101, GI, 2014. 

 أنواع الأدوات 
نشرت مجموعة إدارة الهدف (أو إم جي) دراسة تتعلق بأنواع تحليل البرمجيات المطلوب لقياس جودة البرمجيات وتقييمها. يصف هذا المستند عن «كيفية تسليم أنظمة تكنولوجيا معلومات المرنة والآمنة والفعالة وسهلة التغيير وفقًا لتوصيات اتحاد جودة برمجيات تكنولوجيا المعلومات (سي إس آي كيو)» ثلاثة مستويات من تحليل البرمجيات.

 مستوى الوحدة 
التحليل الذي يتم داخل برنامج أو روتين فرعي معين، دون الاتصال بسياق ذلك البرنامج.

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

 مستوى النظام 
التحليل الذي يراعي التفاعلات بين برامج الوحدة، لكن دون تقيد بتقنية أو لغة برمجة واحدة محددة.

يمكن تعريف مستوى آخر من تحليل البرمجيات.

 مستوى المهمة/العمل 
التحليل الذي يراعي مصطلحات وقواعد وعمليات طبقة العمل/المهمة المنفذة  ضمن نظام البرمجيات لتشغيله كجزء من أنشطة طبقة المؤسسة أو البرنامج/المهمة. تُنفذ هذه العناصر دون تقيدها بتكنولوجيا أو لغة برمجة محددة، وتوزع في حالات كثيرة على لغات متعددة، لكنها تُستخرج وتُحلل بشكل ساكن لفهم النظام وبالتالي لضمان المهمة.

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

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

تتضمن بعض تقنيات تنفيذ التحليل الساكن الشكلي ما يلي:

 التفسير المجرد، لنمذجة تأثير كل تعليمة على حالة الآلة المجردة (أي «يُنفذ» البرمجيات بناءً على الخصائص الرياضية لكل تعليمة وتصريح). تقارب هذه الآلة المجردة سلوكيات النظام بشكل مفرط: وبالتالي يصبح نظام المجرد أسهل في التحليل، على حساب عدم الاكتمال (ليس كل خاصية حقيقية في النظام الأصلي حقيقة في النظام المجرد). ولكن إذا أُجري التفسير المجرد على النحو الصحيح يكون سليمًا (يمكن تعيين كل خاصية حقيقية للنظام التجريدي إلى خاصية حقيقية للنظام الأصلي). يعتمد ملحق تحليل قيمة إطار التحليل المعياري لبرامج سي (فريما سي). وأداة التحليل بوليسبيس بشدة على التفسير المجرد.
 تحليل تدفق البيانات، تقنية تعتمد على الشبكية لجمع المعلومات عن مجموعة القيم المحتملة؛
 منطق هور، نظام شكلي مع مجموعة من القواعد المنطقية للتفكير بدقة حول صحة برامج الحاسوب. يوجد أداة دعم لبعض الغات البرمجة (مثل لغة البرمجة سبارك (مجموعة فرعية من لغة البرمجة أيدا) ولغة جافا للنمذجة -جاي إم إل- باستخدام المدقق الساكن الموسع للجافا  (إي إس سي/ جافا) والمدقق الساكن الموسع لجافا 2 ومحلق إطارالتحليل المعياري لبرامج سي ذات الشرط المسبق الأضعف (دبليو بّي) للغة سي الموسعة بلغة المحاكاة المستمرة المتقدمة إيه سي إس إل (لغة مواصفات سي حسب المعهد الوطني الأمريكي للمعايير/آيزو).
 التحقق من النموذج، يراعي الأنظمة ذات الحالات المنتهية أو يمكن اختزالها إلى حالة منتهية عن طريق التجريد؛
 التنفيذ الرمزي، مستخدم أيضًا لاشتقاق العبارات الرياضية التي تمثل قيمة المتغيرات المتحولة عند نقاط معينة في الكود.

 تحليل ساكن مُساق بالبيانات 
يستخدم التحليل الساكن المساق بالبيانات كميات كبيرة من التعليمات البرمجية لاستنتاج قواعد الترميز. مثلًا، يمكن استخدام جميع حزم جافا مفتوحة المصدر في موقع غيت هاب لتعلم إستراتيجية تحليل جيدة. يمكن لقاعدة الاستدلال أن تستخدم تقنيات التعلم الآلي. فمثلُا، تبين أنه عندما ينحرف كثيرًا عن طريقة استخدام واجهة برمجة التطبيقات كائنية التوجه، فمن المحتمل أن يكون هذا خطأ برمجي. من الممكن أيضًا التعلم من الإصلاحات والتحذيرات السابقة الكثيرة.

 انظر أيضًا 

 علم الدلالة الشكلي

 مراجع 


تصنيف:اختبار البرمجيات
تصنيف:ضمان الجودة
تصنيف:عملية تطوير البرمجيات
تصنيف:هندسة البرمجيات