پدافند الکترونیکی و سایبری (Sep 2023)
ارائه روشی برای پیشبینی کدهای نابسامان سامانههای نرمافزاری با استفاده از شبکه عصبی
Abstract
مهندسان نرمافزار همواره به دنبال کاهش هزینههای تولید و افزایش کیفیت نرمافزار هستند. روشهای مختلفی برای افزایش کیفیت نرمافزار وجود دارد که بازسازی کد یکی از این روشها است. بازسازی و بازآرایی کد روشی برای تمیز کردن کدهای نرمافزار و یکی از روالهای بسیار مهم در حفظ کیفیت نرمافزار است. یکی از چالشهای اصلی در توسعه و تولید کدهای تمیز در نرمافزار وجود کدهای نابسامان یا بوهای کد است. بوی کد یک نشانه سطحی در کد است که احتمالاً نشاندهندهی یک مشکل عمیقتر در نرمافزار میباشد. وجود بوی کد ممکن است باعث کند شدن پردازش، افزایش خطر خرابی و همچنین خطاهای نرمافزار شود. از اینرو، توسعهدهندگان نرمافزار درصدد هستند که با شناسایی کدهای نابسامان، ضمن بازآرایی کد نرمافزار، توسعهپذیری و نگهداشتپذیری آن را در آینده تسهیل کنند. با این حال، شناسایی دستی و غیرخودکار بوهای کد چالشبرانگیز و خستهکننده است. بنابراین، روشهایی برای شناسایی این نوع کدها بهصورت خودکار و نیمهخودکار ارایه شده است. نکته حائز اهمیت در روشهای غیرخودکار آن است که پیشبینی کدهای نابسامان، نیاز به دانش فردی افراد است که هم زمانبر است و هم امکان خطا را افزایش میدهد. ازاینرو، استفاده از روشهای خودکار برای پیشبینی کدهای نابسامان، ارجحیت بیشتری دارد. تاکنون تحقیقات زیادی در حوزه پیشبینی و شناسایی کدهای نابسامان بهصورت خودکار انجام شده است. درصد زیادی از این تحقیقات بر روی پیشبینی چهار نوع بوی کد شامل؛ متد طولانی، خصیصه حسادت، کلاس خدا و کلاس داده تمرکز کردهاند. تمرکز ما نیز در این مقاله بر روی بهبود دقت استخراج این نوع از کدهای نابسامان است. یکی از روشهای رایج برای پیشبینی این نوع کدها، استفاده از روشهای مبتنی بر یادگیری ماشین است. شبکههای عصبی مصنوعی نوع خاصی از الگوریتمهای یادگیری ماشین است که مطابق با روش عملکرد مغز انسان مدل شدهاند. به این معنی که این شبکهها قادر هستند از دادههای ورودی یاد بگیرند و پاسخ را در قالب پیشبینیها و طبقهبندیها ارائه دهند. در این مقاله، برای پیشبینی کدهای نابسامان نرمافزار از شبکه عصبی چند لایه و همچنین از یک روش انتخاب ویژگی جدید بهمنظور افزایش دقت پیشبینی استفاده شده است.