ارائه دهنده:
سعید امیری
استاد راهنما:
دکتر سعید پارسا
استاد مشاور:
دکتر مجتبی وحیدی اصل
هیات داوران:
دکتر محمد عبداللهی ازگمی ، دکتر حسن حقیقی
زمان:
سه شنبه ۱۳۹۹/۰۳/۲۷
ساعت ۱۶:۰۰
آقای سعید امیری دانشجوی کارشناسی ارشد آقای دکتر سعید پارسا سه شنبه ۲۷ خردادماه ساعت ۱۶:۰۰ از پروژه کارشناسی ارشد خود تحت عنوان "ترمیم خودکار برنامه با استفاده از الگوهای ترمیم کد" دفاع خواهند نمود.
چکیده پایان نامه:
برطرف کردن اشکالات برنامه یکی از متداولترین فعالیتها در چرخه حیات نرمافزار به شمار میرود. با توجه به رشد پیوسته برنامههای نرمافزاری از نظر پیچیدگی و اندازه، لازم است فعالیتهای اشکالزدایی و نگهداری برنامه در مدت زمان کوتاهتری انجام شود. توسعهدهندگان وظیفه برطرف کردن اشکال و ارائه بهموقع یک نرمافزار عاری از نقص را عهدهدار هستند و از آنجا که این وظایف شامل انجام کارهای دستی بسیاری است، فعالیتی زمانبر به حساب میآید. لذا انجام این امور هزینههای مالی و زمانی بسیاری در بر دارد، بهطوریکه تقریبا نیمی از هزینههای توسعه یک محصول را شامل میشود. در همین راستا، طی سالیان اخیر روشهای ترمیم خودکار برنامه پدید آمدند تا به صورت خودکار اصلاحات مناسبی برای برطرف کردن اشکالات برنامه ایجاد کنند. یکی از اهداف اصلی در روشهای ترمیم خودکار برنامه کاهش هزینههای اشکالزدایی برنامه در مقایسه با فعالیتهای انسانی است.
متاسفانه برطرف کردن اشکالات در روشهای ترمیم خودکار نیز میتواند دشوار و هزینهبر باشد. بهطوریکه ممکن است این روشها برای ترمیم یک اشکال موجود در برنامه، زمان نامحدودی را صرف یافتن یک وصله از بین تعداد بسیار زیادی راهحلهای کاندید کنند. بهعنوان مثال وجود اشکال در یک محصول نرمافزاری تجاری ممکن است برنامه را از دسترس خارج کرده یا باعث رفتار عملیاتی نادرستی شود، که این موضوع خسارت مالی سنگینی به بار میآورد. در این صورت یافتن ترمیم در کوتاهترین زمان اهمیت ویژهای پیدا میکند، بهطوریکه باعث کاهش زمان اصلاح و انتشار محصول نرمافزاری شده و در نتیجه خسارات به حداقل میزان ممکن کاهش خواهد یافت. یکی از اهداف اصلی در این پایاننامه کاهش این زمان در یافتن یک راهحل برای ترمیم برنامه است.
در این پژوهش، اصلاحات مورد نیاز برای ترمیم برنامه در قالب چندین الگوی ترمیم دستهبندی شده است که هر یک با توجه به ویژگیهای موجود در برنامه، دستهای از اشکالات را مورد هدف قرار میدهند. این الگوها که اغلب بر اساس اشکالات رایج در برنامهنویسی تعریف شدهاند، با بررسی ویژگیهای کد منبع تعدادی وصله برای ترمیم برنامه ایجاد میکنند. به این ترتیب با استفاده از چند الگوی کاربردی، قدرت روش ترمیم افزایش یافته و همچنین امکان پیادهسازی راهکارهایی مد نظر برنامهنویسان میسر میشود. اما متاسفانه در استفاده از این تکنیک، فضای حالت بزرگی از وصلههای احتمالی بهوجود میآید که ارزیابی وصلهها و یافتن یک راهحل زمان زیادی میطلبد. برای مقابله با این مشکل از یک تکنیک هوش مصنوعی برای کاهش اندازه فضای حالت وصلهها استفاده میشود. بهطوریکه الگوهای ایجاد کنندهی فضای حالت، توسط یک مدل آموزش دیده در شبکه عصبی که مبتنی بر شباهت ویژگیهای کد در ترمیمهای قبلی است، انتخاب و اولویتبندی میشوند. برای آموزش این شبکه عصبی از مجموعهای از برنامههای خطادار واقعی که توسط برنامهنویسان ایجاد و گردآوری شده است، استفاده میشود. به این ترتیب میتوان اندازه فضای حالت وصلههای کاندید را بدون از دست رفتن قدرت روش ترمیم، کاهش داد. استفاده از این دو تکنیک، کارایی فرآیند ترمیم خودکار را افزایش داده و آن را قادر میسازد وصلههایی که قبلا پیدا نشده را نیز بیابد.
نتایج آزمایشهای انجام شده در پایاننامه نشان میدهد که استفاده از الگوها در ترمیم خودکار برنامه میتواند بسیار موثر باشد. بهطوریکه قدرت روش ترمیم را در یافتن راهحل بهبود داده و با بهینهسازی فضای حالت ترمیمهای کاندید، زمان یافتن ترمیم برای اشکالات بهطور قابل توجهی نسبت به روشهای پایه کاهش پیدا میکند.
دانشکده مهندسی کامپیوتر مدیریت تحصیلات تکمیلی |