شماره ركورد
21043
شماره راهنما(اين فيلد مربوط به كارشناس ميباشد لطفا آن را خالي بگذاريد)
۲۱۰۴۳
پديد آورنده
محسن اميريان
عنوان
ترميم خودكار برنامه به روش شباهت هاي كد
مقطع تحصيلي
كارشناسي ارشد
رشته تحصيلي
نرم افزار
سال تحصيل
۱۳۹۵
تاريخ دفاع
1398/4/4
استاد راهنما
دكتر سعيد پارسا
دانشكده
كامپيوتر
چكيده
يكي از پرهزينهترين فرآيندهاي توسعهي يك نرمافزار، اشكالزدايي خطاهاي برنامه است. مطالعات اخير نشان ميدهد فعاليتهاي مربوط به اشكالزدايي كد برنامه، به طور ميانگين، 50 درصد از هزينهي توسعهي محصول نرمافزاري را در بر ميگيرد. دستهاي از پژوهشها با عنوان «ترميم خودكار برنامه» سعي دارند روشهايي ارائه نمايند كه بتوان با استفاده از آنها وصلههايي براي كد يك برنامهي خطا دار به صورت خودكار توليد نمود. در ادامه ميبايست برنامه تعمير شده را اعتبارسنجي كرد؛ به اين معني كه برنامه بايد بهگونهاي تعمير شده باشد كه هيچگونه اثر جانبي بر روي ساير نقاط برنامه نداشته باشد.
بسياري از روشهاي موجود در حوزه تعمير خودكار برنامه از فرض افزونگي استفاده ميكنند. اين فرض ادعا ميكند كه برنامههاي بزرگ حاوي قطعه كد مورد نياز براي تعمير خود هستند. با اين حال، بسياري از روشهاي تعمير خودكار برنامه مبتني بر افزونگي، قطعه كد مدنظر جهت استفاده در محل خطا را به صورت تصادفي انتخاب ميكنند. اين امر موجب توليد وصلههاي نادرست بسيار زيادي خواهد شد. بعدها روشهايي مطرح شدند كه سعي داشته اند با به كار گيري فنون مختلف، الگوهايي از خطاهاي رايج را استخراج نموده و از آنها در ترميم برنامههاي خطادار استفاده كنند.
در اين پژوهش با استفاده از روشهاي يادگيري ژرف، مدلي ارائه خواهيم كرد كه توالي كلمات و دستورات استفاده شده در برنامههاي صحيح را آموزش ديده و به كمك آن، در محل خطاي يك برنامهي خطادار جملات صحيح توليد نمايد. روش پيشنهادي بر روي مجموعه دادهي Defect4j آزمايش شده است. نتايج به دست آمده نشان دهندهي اين است كه روش پيشنهادي اين پژوهش در توليد وصلههاي صحيح از نظر كامپايل شدن، وصلههاي به مراتب با كيفيت تري نسبت به روش پايه ارائه ميكند. در خصوص توليد وصلههايي كه توانايي گذراندن مجموعه آزمون مربوط به برنامهي خطادار را دارند، روش پيشنهادي در مواردي كه برنامهي خطادار از لحاظ حوزهي كاربردي (به عنوان مثال برنامههاي محاسباتي و يا برنامههاي سيستمي) با مجموعه دادهاي كه جهت آموزش مدل شبكهي عصبي استفاده شده است، يكسان باشد، بهبود چشم گيري را نشان ميدهد. اين موضوع به آن معنا است كه در صورت جمعآوري و استفاده از مجموعه دادههاي با كيفيت در روش پيشنهادي براي آموزش شبكهي عصبي، ميتوان به نتايج به مراتب بهتري نيز دست يافت.
تاريخ ورود اطلاعات
1398/06/16
عنوان به انگليسي
Automatic Program Repair by Learning Code Similarities
تاريخ بهره برداري
6/25/2019 12:00:00 AM
دانشجوي وارد كننده اطلاعات
محسن اميريان
چكيده به لاتين
One of the most costly processes of developing a software program is the debugging of program failures. Recent studies indicate that code debugging activities, on average, account for 50 percent of the cost of software development. A bunch of research titled "Automatic Program Repair" are trying to provide methods that can be used to generate patches for the code of an faulty program automatically. The program should then be validated, which means that the program should be repaired so that it does not have any side effects on the rest of the program.
Many of the methods available in the automated repair area use Redundancy Assumptions. This assumption asserts that large programs contain a piece of code that is needed to repair itself. However, many automated repair methods of redundancy-based applications will randomly select the code portion to be used at the fault location. This will produce a lot of incorrect patches. Later, there are some methods that have tried to extract patterns of common bugs using different techniques and use them to repair faulty programs.
In this study, using deep learning methods, we will provide a model for learning the sequence of words and instructions used in the correct programs and to generate correct statement in the faulty program with that model. The proposed method has been tested on the Defect4j data set. The results show that the proposed method in producing compilable patches, provides more accurate patches than the baseline method. In the case of producing patches that are capable of passing the test suite for an faulty program, the proposed method in cases where an error-contained program application area (eg, computational programs or system programs) are similar with the data set used to train the neural network model, shows a dramatic improvement. This means that if a high quality data set is collected and used in the proposed method for training the neural network, far better results could be achieved.