پیش بینی خطای نرمافزار در توابع زبان برنامهنویسی جاوا با کمک شبکههای عصبی عمیق
چکیده
پیش بینی خطای نرمافزار در توابع زبان برنامهنویسی جاوا با کمک شبکههای عصبی عمیق
با توسعه صنعت نرمافزار و افزایش کیفیت و قابلیت اتکای محصولات نرمافزاری، آزمون نرمافزار موردتوجه مهندسین قرار گرفت. اما ازآنجاییکه آزمون تمام ورودیها حتی برای یک تابع ساده مشکل است و آزمون تمام واحدهای نرمافزاری نیز اغلب زمانبر و پرهزینه است، معمولاً از انجام آن صرفنظر میشود. بهاینترتیب برای کاهش هزینه کلی آزمون و کشف خطاهای احتمالی پیش از وقوع آنها، روش پیشبینی خطای نرمافزار مورداستفاده قرار میگیرد. یکی از چالشهای موجود در زمینه پیشبینی خطای نرمافزار این است که مدلهای پیشبینی قبلی، مدلهای قدیمیای بودند یا مجموعه دادههایی را به کار میگرفتند که روی پروژههای کوچک، محدود و قدیمی بودند؛ که به دلیل تغییر روند توسعه نرمافزارها، این مدلها کارایی چندانی را برای نرمافزارهای امروزی ارائه نمیدهند. در این تحقیق برای کمک به فرایند پیشبینی خطا در مقابل روشهای قدیمی، مجموعهداده جدیدی به نام باگهانتر مورداستفاده قرارگرفته است. این مجموعهداده ارزشمند و نسبتاً بزرگ، متشکل از 15 برنامه مرسوم و منبع باز جاوا است که امروزه بهطور گستردهای توسط مهندسین نرمافزار استفاده میشوند. تاکنون تکنیکهای گوناگون یادگیری ماشین نظیر بیز ساده، رگرسیون لجستیک، جنگل تصادفی و غیره جهت کشف خطاهای نرمافزاری برای این مجموعهداده مورداستفاده قرارگرفته است. چالش دیگری که وجود دارد این است که دقت مدلهای پیشبینی موجود، برای این مجموعه داده پایین است. این تحقیق باهدف افزایش عملکرد مدل پیشبینی خطا، تکنیک یادگیری عمیق و تکنیک ترکیبی را به کار میگیرد و با ترکیب شبکه عصبی و جنگل تصادفی دقت مدل پیشبینی را افزایش میدهد. شبکه عصبی مورداستفاده در این پروژه پرسپترون چندلایه و طبقهبندی کننده مورداستفاده در آن، مدل ترتیبی به همراه چندین لایه متراکم و حذف تصادفی است. روش ترکیبی پیشنهادی نیز از ترکیب یک شبکه عصبی و جنگل تصادفی تشکیلشده است. برای ایجاد مدلهای پیشبینی قدرتمند و جلوگیری از جانبدار شدن مدلها، تکنیک نمونهبرداری تصادفی رو به بالا مورداستفاده قرارگرفته است. درنهایت روش پیشنهادی بر روی مجموعه داده باگهانتر اعمال شد و نتایج بهبود روند پیشبینی خطا را بهخصوص برای تکنیک ترکیبی پیشنهادی نشان میدهد. بهطوریکه مقدار معیار امتیاز اف-1 بهدستآمده توسط تکنیک شبکه عصبی پیشنهادی 74/81% است و توسط تکنیک ترکیبی پیشنهادی 81/84% است که نسبت به بهترین روش قبل، به ترتیب افزایش 8% و 11% داشته است.
پیش بینی خطای نرم افزار , یادگیری عمیق , یادگیری ماشین , یادگیری ترکیبی , مجموعه داده های باگ هانتر , عدم تعادل کلاس , software fault prediction , deep learning , machine learning , ensemble learning , bughunter dataset , class imbalance
فصل اول: مقدمه
1-1پیش گفتار 2 2-1 هدف تحقیق 5 3-1 چالشها و راهحلهای آن 5 4-1 سؤالهای تحقیق 7 5-1 فرضیههای تحقیق 8 6-1 نوآوریهای تحقیق 8 7-1 ساختار پایاننامه 9
فصل دوم: ادبیات موضوع و پیشینه تحقیق
1-2 تکنیکهای یادگیری ماشین و تکنیکهای ترکیبی 12 2-2 رویکرد شبکه عصبی 19 3-2 تکنیکهای یادگیری عمیق 21
فصل سوم: ضروریات تحقیق
1-3 معیارهای نرمافزار 30 1-1-3 معیارهای محصول 31 2-1-3 معیارهای فرایند 31 2-3 انواع مجموعهداده خطا 32 3-3 مجموعهداده خطا باگهانتر و نحوه ایجاد آن 33 1-3-3 معیار پیچیدگی سیکلوماتیک مککیب 37 2-3-3 معیار تعداد خطوط کد 39 3-3-3 معیارهای تعداد دستورات برنامه، خطوط کامنت کد، تعداد پارامترها 40 4-3 پروژههای مورداستفاده در مجموعهداده باگهانتر 40 1-4-3 برنامه Elasticsearch 40 2-4-3 برنامه Hazelcast 41 3-4-3 برنامه Orientdb 41 4-4-3 برنامه Netty 42 5-4-3 برنامه Neo4j 42 6-4-3 برنامه ANTLR v4 42 5-3 جزئیات مجموعهداده باگهانتر 42 6-3 پیشپردازش مجموعهداده باگهانتر 44 1-6-3 گامهای اساسی پیشپردازش مجموعهداده hazelcast 45 2-6-3 پیشپردازش سایر مجموعهدادهها 48 7-3 معیارهای ارزیابی کارایی 50 8-3 ماتریس سردرگمی 51 9-3 رویکرد یادگیری عمیق 52 10-3 شبکه عصبی مصنوعی و نحوه عملکرد آن 53 11-3 پیشبینی خطای نرمافزار با استفاده از شبکههای عصبی 54 12-3 پرسپترون چندلایه 54 13-3 مدل شبکه عصبی 55 14-3 طبقهبندی کلاس برای ویژگی هدف 56 15-3 پارامترهای شبکه عصبی 56 16-3 بیش متناسب و کم متناسب شدن مدل یادگیری 59 1-16-3 راهحل رفع کم متناسب شدن مدل 60 2-16-3 راهحل رفع بیش متناسب شدن مدل 61
فصل چهارم: روش پیشنهادی
1-4 پیادهسازی روش پیشنهادی 67 2-4 گامهای اساسی ساخت مدل پیشبینی خطای پیشنهادی 67 1-2-4 خواندن مجموعهداده 67 2-2-4 ساخت مدل پیشبینی خطا با استفاده از شبکههای عصبی عمیق 67 3-2-4 کامپایل کردن مدل 68 4-2-4 مرحله یادگیری شبکه 68 5-2-4 نمودار ارزیابی کارایی برای آموزش مدل 69 6-2-4 مرحله پیشبینی 70 7-2-4 ارزیابی مدل پیشبینی 70 3-4 عدم تعادل کلاس 71 1-3-4 عدم تعادل کلاس در مجموعهداده باگهانتر 71 2-3-4 راهحلهای موجود برای ایجاد تعادل کلاس 72 3-3-4 ایجاد تعادل در کلاسهای مجموعهداده باگهانتر 73 4-4 روند کلی روش پیشنهادی با استفاده از شبکه عصبی عمیق 73 5-4 روند کلی روش پیشنهادی با استفاده از رویکرد ترکیبی 75
فصل پنجم: نتایج
1-5 جلوگیری از بیش متناسب شدن مدل 80 1-1-5 روش حذف تصادفی 80 2-1-5 روش منظمسازی max-norm 81 3-1-5 روش وزندهی به کلاسهای مجموعهداده 81 2-5 اعمال نمونهگیری تصادفی رو به بالا و ارائه نتایج روش پیشنهادی 82 1-2-5 نتایج رویکرد پیشنهادی برای مجموعهداده broadleafcommerce 82 2-2-5 نتایج رویکرد پیشنهادی برای مجموعهداده netty 88 3-2-5 نتایج رویکرد پیشنهادی برای مجموعهداده hazelcast 89 4-2-5 نتایج رویکرد پیشنهادی برای مجموعهداده elasticsearch 90 5-2-5 نتایج رویکرد پیشنهادی برای مجموعهداده neo4j 90 6-2-5 نتایج رویکرد پیشنهادی برای مجموعهداده orientdb 91 7-2-5 نتایج رویکرد پیشنهادی برای مجموعهداده ceylon-ide-eclipse 92 3-5 مقایسه روش پیشنهادی با روشهای دیگر 92
فصل ششم: نتیجهگیری و پیشنهاد
1-6 جمعبندی و نتیجهگیری 98 2-6 پیشنهاد برای کارهای آینده 99 پیوست 101 خودکارسازی ایجاد مدلهای شبکه عصبی برای پیشبینی خطا در توابع 102 مراجع 105