• عنوان

    ترميم خودكار برنامه با استفاده از الگوهاي ترميم كد

  • نويسنده اصلي

    سعيد اميري

  • مقطع تحصيلي
    كارشناسي ارشد
  • چكيده
    برطرف كردن اشكالات برنامه يكي از متداول‌ترين فعاليت‌ها در چرخه حيات نرم‌افزار به شمار مي‌رود. با توجه به رشد پيوسته برنامه‌هاي نرم‌افزاري از نظر پيچيدگي و اندازه، لازم است فعاليت‌هاي اشكال‌زدايي و نگهداري برنامه در مدت زمان كوتاه‌تري انجام شود. انجام اين امور هزينه‌هاي مالي و زماني بسياري در بر دارد، به‌طوري‌كه تقريبا نيمي از هزينه‌هاي توسعه يك محصول را شامل مي‌شود. در همين راستا، طي ساليان اخير روش‌هاي ترميم خودكار برنامه پديد آمدند تا به صورت خودكار اصلاحات مناسبي براي برطرف كردن اشكالات برنامه ايجاد كنند. متاسفانه برطرف كردن اشكالات در روش‌هاي ترميم خودكار نيز مي‌تواند دشوار و هزينه‌بر باشد. به‌طوري‌كه ممكن است اين روش‌ها براي ترميم يك اشكال موجود در برنامه، زمان نامحدودي را براي يافتن يك وصله صرف كنند. به‌عنوان نمونه وجود اشكال در يك محصول نرم‌افزاري تجاري مي‌تواند خسارت مالي سنگيني به بار آورد، لذا يافتن ترميم در كوتاه‌ترين زمان اهميت ويژه‌اي پيدا مي‌كند. يكي از اهداف اصلي در اين پايان‌نامه نيز كاهش اين زمان براي يافتن يك راه‌حل در ترميم برنامه است. در اين پايان‌نامه، اصلاحات مورد نياز براي ترميم برنامه در قالب چندين الگوي ترميم دسته‌بندي شده است كه هر يك با توجه به ويژگي‌هاي موجود در برنامه، دسته‌اي از اشكالات را مورد هدف قرار مي‌دهند. اين الگوها كه اغلب بر اساس اشكالات رايج در برنامه‌نويسي تعريف شده‌اند، با بررسي ويژگي‌هاي كد منبع براي برنامه وصله ايجاد مي‌كنند. اما متاسفانه استفاده از اين راه‌كار، فضاي جستجوي بزرگي از وصله‌هاي احتمالي را به‌وجود مي‌آورد. براي مقابله با مشكلات اين فضاي جستجوي بزرگ، از يك مدل آموزش ديده در شبكه عصبي براي اولويت‌دهي به الگوهاي ترميم استفاده مي‌كنيم. اين اولويت‌بندي بر اساس تشابه كدهاي خطادار برنامه به كدهاي ترميم شده قبلي عمل مي‌كند. بنابراين اندازه فضاي جستجوي وصله‌هاي نامزد، بدون از دست رفتن قدرت روش ترميم، كاهش يافته و در نتيجه فرآيند ترميم را در زمان كمتري به سرانجام مي‌رسد. به اين ترتيب در روش پيشنهادي، با ارائه يك چارچوب كلي توانستيم عملگرهاي ترميم موجود در 5 روش مختلف را در يك مجموعه جمع‌آوري كرده و قدرت ترميم را بهبود دهيم. نتايج آزمايشات نيز نشان مي‌دهد كه با استفاده از يك فرآيند اولويت‌بندي مناسب، 84 درصد از وصله‌هاي قابل قبول در سه اولويت ابتدايي توليد شدند. همچنين در مورد زمان ترميم خودكار كه يكي از اهداف اصلي اين پايان‌نامه بود، به طور متوسط زمان ترميم در مجموعه برنامه‌هاي بزرگ به اندازه يك چهارم كاهش يافته و براي برنامه‌هاي كوچك‌تر به يك هفتم رسيد. به اين ترتيب زمان يافتن اولين ترميم نسبت به روش‌هاي پايه به‌طور قابل توجهي كاهش پيدا كرد.
  • شماره ركورد
    195460
  • دانشگاه
    دانشگاه علم و صنعت ايران
  • استاد مشاور
    دكتر مجتبي وحيدي اصل
  • رشته تحصيلي
    نرم‌افزار
  • استاد راهنما
    دكتر سعيد پارسا