چكيده فارسي :
امروزه نرمافزارها بهصورت گسترده در همه زمينهها از جمله توليد، كشاورزي، سلامت، صنعت استفاده ميشوند و همچنين صنعت نرمافزار بهسرعت درحالرشد است. به همين علت كيفيت نرمافزار براي توسعهدهندگان به يك چالش تبديل شده است. وجود خطا در نرمافزار يكي از عوامل اصلي جهت كاهش كيفيت نرمافزار است. لزوم ارزيابي خطاهاي نرمافزاري پيش از عرضه آنها به بازار و بهكارگيري آنها در بخشهاي مختلف، امري اجتنابناپذير است. جستجو و تصحيح خطاهاي موجود نرمافزار، مستلزم به بكار گيري امكانات و هزينههاي بسياري است كه گاهي اوقات براي توسعهدهندگان توجيه اقتصادي و عملي نخواهد داشت و در برخي موارد در صورت وجود خطا در نرمافزار منجر به خلل در ايجاد فرايندها ميگردد. براي مثال در صورت وجود خطا در يك خط توليد ميتواند منجر به حوادث جاني و مالي جبرانناپذيرگردد. از طرفي، با توجه به محدوديت نيروي انساني و همچنين افزايش خطا بر اثر خستگي امكان بررسي خطا و جستجوي تمامي خطاهاي يك نرمافزار، توسط انسان، عملاً امكانپذير نيست. پيداكردن خطا در مراحل اوليه چرخه توسعه نرمافزار، به دليل جلوگيري از خسارات مالي و جاني، قبل از انتشار نرمافزار لازم است. در چند سال اخير در زمينه طبقهبندي ماژولهاي نرمافزار به دو دسته مستعد خطا و عدم مستعد خطا از تكنيكهاي مختلف يادگيري ماشين استفاده شده است. در اين پاياننامه، به بررسي روشهاي هوشمند جهت پيشبيني خطاي نرمافزار و بهبود عملكرد آنها پرداخته شده است. هر نرمافزار داراي ويژگيهاي مربوط به خطوط برنامهنويسي و طراحي به تفكيك براي هر نسخه منتشر شده، ميباشد. با درنظرگرفتن اين اطلاعات كه از نسخههاي قبل در دسترس هست و مشخصبودن وجود خطا و يا عدم وجود خطا در آن نسخه ميتوان به پيشبيني خطاي نرمافزار پرداخت. مدلهاي بيز ساده، درخت تصميمگيري و شبكه پرسپترون چندلايه و الگوريتم XGBoost مورداستفاده قرار گرفتهاند. با استفاده از روشهاي هوشمند، ميتوان ويژگيهاي مؤثر نرمافزار كه داراي اهميت بالاتري در پيشبيني خطاي نرمافزار هستند، را انتخاب نمود. به همين دليل از روش هاي هوشمند براي انتخاب ويژگيهاي مؤثر كه شامل تفسير درخت تصميمگيري و استفاده از الگوريتم پردازش تكاملي مورد بررسي قرار گرفته است. نتايج اين پاياننامه، نمايشدهنده بهبود عملكرد مدل پيشبيني خطاي نرمافزار با استفاده از انتخاب ويژگيهاي مؤثر نرمافزار توسط تفسير درخت تصميمگيري و همچنين استفاده از الگوريتم پردازش تكاملي است.
چكيده انگليسي :
Nowadays, software is widely used in all fields, including production, agriculture, health and industry, also the software industry is growing rapidly. For this reason, software quality has become a challenge for developers. The existence of faults in the software is one of the main factors to reduce the quality of the software. The need to evaluate software faults before releasing them to the market and using them in different sectors is inevitable. Searching and correcting existing software faults requires the use of many facilities and costs, which sometimes do not have economic and practical justification for developers, and in some cases, if there is a fault in the software, it leads to a disruption in the creation of processes. For example, if there is a fault in a production line, it can lead to irreparable financial and life accidents. On the other hand, due to the limitation of manpower and also the increase of faults due to fatigue, it is practically not possible to check the faults and search for all the faults of a software by humans. Finding faults in the first stages of the software development cycle is due to the prevention of financial and life losses in the early stages and before the release of the software. In recent years, various machine learning techniques have been used to classify software modules into fault-prone and non-fault-prone categories. In this thesis, intelligent methods for predicting software faults and improving their performance have been investigated. Each software has features related to program coding lines and design separately for each published version. By considering this information that is available from the previous versions and the presence of faults or the absence of faults in that version, it is possible to predict software faults. Naive Bayes models, Decision Tree and Multi-layer Perceptron network and XGBoost algorithm have been used. By using intelligent methods, it is possible to choose the effective features of the software that are more important in predicting the software fault. For this reason, smart methods for selecting effective features that include decision tree interpretation and the use of evolutionary processing algorithms have been investigated. The results of this thesis show the improvement of the performance of the software fault prediction model by using the selection of the effective features of the software by interpreting the decision tree and also using the evolutionary processing algorithm.