Topluluk öğrenimi yöntemi ile yazılım gereksinimlerinin sınıflandırma performansının iyileştirilmesi
Improving performance of software requirements classification with ensemble learning method
Yazar: SEVGİ AKIN
Danışman: DR. ÖĞR. ÜYESİ FATİH YÜCALAR
Manisa Celal Bayar Üniversitesi / Fen Bilimleri Enstitüsü / Yazılım Mühendisliği Ana Bilim Dalı / Yazılım Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2022
Konu: Mühendislik Bilimleri = Engineering Sciences
Dizin: Metin inceleme = Text examination ; Oylama = Voting ; Sınıflandırma = Classification ; Öğrenme teknikleri = Learning techniques

Özet:
Günümüzde gelişen teknoloji ile yazılım projeleri hayatımızın vazgeçilmez bir parçası haline getirmektedir. Bu durum, kullanıcılarla buluşan yazılım projelerinin sayısında büyük bir artışa sebep olmaktadır. Yazılım projelerinin sayındaki artışa paralel olarak firmaların rekabet etme noktasında verimli ve başarılı yazılım projelerini ortaya koyması daha da önem kazanmaktadır. 
Yazılım projelerinde başarı, belirlenen bütçe ve süre içerisinde müşterinin talep etmiş olduğu özellik ve işlevlerin eksiksiz yerine getirebilmesi yönlerinden değerlendirilmektedir. Yazılım projelerinin başarılı bir şekilde sonuçlanması için dikkat edilmesi gereken en önemli adımlardan biri yazılım gereksinim analizi çalışmalarıdır. Proje yaşam döngüsü içerisindeki ilk adım olan gereksinim analizi adımında, gereksinimler ne kadar doğru bir şekilde belirlenir ve belirlenen bu gereksinimler ne kadar doğru bir şekilde analiz edilirse, projenin sonraki adımları daha kontrollü bir biçimde gerçekleştirilmektedir. Yazılım projelerinde özellikle işlevsel ve işlevsel-olmayan gereksinimlerin dikkatli bir şekilde ele alınması gerekmektedir.
Bu çalışmada işlevsel ve işlevsel-olmayan gereksinimlerin sınıflandırılmasında veri bilimi kullanarak, harcanan zamanın düşürülmesi ve insan bağımsız hale getirilmesi amacıyla çeşitli makine öğrenimi algoritmalarının performansları test edilmiştir. PROMISE-NFR veri seti kullanılarak, yapılan testler ile makine öğrenimi algoritmalarının tekil sonuçları değerlendirilmiştir. Algoritmaların performansları doğruluk metriği kullanılarak kıyaslanmıştır. Yapılan kıyaslama sonucu 0,8992 doğruluk değeri ile en yüksek performans değerine Naive Bayes algoritması ile ulaşılmıştır. Algoritmalarının tekil performanslarının arttırılması hedefi ile kolektif öğrenme yöntemleri kullanılmış ve Vote uygulaması ile algoritmalarının ikili ve üçlü etkileşimleri incelenmiştir. İkili ve üçlü değerlendirmeler için her gruptaki makine öğrenmesi algoritmalarından on adet algoritma belirlenmiş ve aralarındaki ilişkiler incelenmiştir. İkili olarak ele alınan algoritmaların performansları değerlendirildiğinde istenilen başarıya ulaşılamamıştır. Üçlü olarak ele alınan algoritmaların performansları değerlendirildiğinde ise 0,9024 doğruluk değeri ile en iyi sonuca SMO, PART ve Random Forest algoritmalarının birlikte kullanımı ile ulaşılmıştır. Sonuç olarak topluluk öğrenimi yöntemlerinin tekil makine öğrenimi yöntemlerine göre daha iyi sonuçlar verdiği ortaya koyduğu tespit edilmiştir.

Abstract:
In recent years, the widespread use of developing technology and environmental factors such as pandemic, which negatively affects society, make software applications an indispensable part of our lives. This situation causes a great increase in the number of software projects that meet with users. In parallel with the increase in the number of software projects, it becomes more important for companies to put forward efficient and successful software projects at the point of competition. Success in software projects is evaluated in terms of the ability to fully fulfill the features and functions requested by the customer within the determined budget and time. One of the most important steps to be considered for the successful conclusion of software projects is software requirement analysis studies. In the requirements analysis step, which is the first step in the project life cycle, the more accurately the requirements are determined, and the more accurately these determined requirements are analyzed, the next steps of the project are carried out in a more controlled manner. In software projects, especially functional and non-functional requirements need to be handled carefully.
In this study, the performances of various machine learning algorithms are tested in order to reduce the time spent and make people independent by using data science in the classification of functional and non-functional requirements. Using the PROMISE-NFR dataset, the individual results of the machine learning algorithms were evaluated with the tests performed. The performances of the algorithms are compared using the accuracy metric. As a result of the comparison, the highest performance value was achieved with the Naive Bayes algorithm, with an accuracy value of 0.8992. Ensemble methods were used with the aim of increasing the singular performance of the algorithms and the double and triple interactions of the algorithms with the Vote application were examined. For double and triple evaluations, ten machine learning algorithms in each group were determined and the relationships between them were examined. When the performances of the algorithms considered as binary were evaluated, the desired success could not be achieved. When the performances of the algorithms, which are considered triples, are evaluated, the best result with an accuracy value of 0.9024 was obtained with the use of SMO, PART, and Random Forest algorithms together. As a result, it has been determined that ensemble learning methods give better results than single machine learning methods.