الهام محمودزاده
امروزه نرمافزارها بهصورت گسترده در همه زمینهها از جمله تولید، کشاورزی، سلامت، صنعت استفاده میشوند و همچنین صنعت نرمافزار بهسرعت درحالرشد است. به همین علت کیفیت نرمافزار برای توسعهدهندگان به یک چالش تبدیل شده است. وجود خطا در نرمافزار یکی از عوامل اصلی جهت کاهش کیفیت نرمافزار است. لزوم ارزیابی خطاهای نرمافزاری پیش از عرضه آنها به بازار و بهکارگیری آنها در بخشهای مختلف، امری اجتنابناپذیر است. جستجو و تصحیح خطاهای موجود نرمافزار، مستلزم به بکار گیری امکانات و هزینههای بسیاری است که گاهی اوقات برای توسعهدهندگان توجیه اقتصادی و عملی نخواهد داشت و در برخی موارد در صورت وجود خطا در نرمافزار منجر به خلل در ایجاد فرایندها میگردد. برای مثال در صورت وجود خطا در یک خط تولید میتواند منجر به حوادث جانی و مالی جبرانناپذیرگردد. از طرفی، با توجه به محدودیت نیروی انسانی و همچنین افزایش خطا بر اثر خستگی امکان بررسی خطا و جستجوی تمامی خطاهای یک نرمافزار، توسط انسان، عملاً امکانپذیر نیست. پیداکردن خطا در مراحل اولیه چرخه توسعه نرمافزار، به دلیل جلوگیری از خسارات مالی و جانی، قبل از انتشار نرمافزار لازم است. در چند سال اخیر در زمینه طبقهبندی ماژولهای نرمافزار به دو دسته مستعد خطا و عدم مستعد خطا از تکنیکهای مختلف یادگیری ماشین استفاده شده است. در این پایاننامه، به بررسی روشهای هوشمند جهت پیشبینی خطای نرمافزار و بهبود عملکرد آنها پرداخته شده است. هر نرمافزار دارای ویژگیهای مربوط به خطوط برنامهنویسی و طراحی به تفکیک برای هر نسخه منتشر شده، میباشد. با درنظرگرفتن این اطلاعات که از نسخههای قبل در دسترس هست و مشخصبودن وجود خطا و یا عدم وجود خطا در آن نسخه میتوان به پیشبینی خطای نرمافزار پرداخت. مدلهای بیز ساده، درخت تصمیمگیری و شبکه پرسپترون چندلایه و الگوریتم XGBoost مورداستفاده قرار گرفتهاند. با استفاده از روشهای هوشمند، میتوان ویژگیهای مؤثر نرمافزار که دارای اهمیت بالاتری در پیشبینی خطای نرمافزار هستند، را انتخاب نمود. به همین دلیل از روش های هوشمند برای انتخاب ویژگیهای مؤثر که شامل تفسیر درخت تصمیمگیری و استفاده از الگوریتم پردازش تکاملی مورد بررسی قرار گرفته است. نتایج این پایاننامه، نمایشدهنده بهبود عملکرد مدل پیشبینی خطای نرمافزار با استفاده از انتخاب ویژگیهای مؤثر نرمافزار توسط تفسیر درخت تصمیمگیری و همچنین استفاده از الگوریتم پردازش تکاملی است.

