Nesneye dayalı yazılımların tasarım kalitesini ölçmek için öğrenme tabanlı bir yöntem
A learning-based measurement method for design quality of object oriented software systems
Yazar: NURDAN CANBAZ
Danışman: DOÇ. DR. FEZA BUZLUCA
İstanbul Teknik Üniversitesi / Bilişim Enstitüsü / Bilgisayar Bilimleri Ana Bilim Dalı
Derece: Yüksek Lisans, 2015
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Bilgisayar yazılımlarının insan hayatına her geçen gün daha çok girmesi sonucunda kaliteli yazılım geliştirmek ve bunun paralelinde yazılım kalitesini ölçebilmek önem kazanmaya başlamıştır.
Yazılım projelerinde kalite kavramı projenin başından itibaren değerlendirilmesi gereken bir olgudur. Bununla birlikte yazılım kalitesi ölçülmesinin de proje başından itibaren belirlenen kalite özelliklerine uygun şekilde yapılmalıdır. Çalışmamızda ISO/IEC 25010:2011[28] kalite modeli temel alınarak projeye uygun kalite özelliklerinin proje başında seçilmesi ve buna uygun metrikler belirlenerek projenin başından itibaren kalite özelliklerinin nasıl değiştiğinin takip edilmesi ve ölçülebilir kalitesi olan bir ürünün müşteriye sunulması hedeflenmiştir. 
Yazılım sektöründe en temel sorunlardan biri müşteri gereksinimlerindeki değişikliktir. Bu sorunun çözümü olarak çevik yazılım geliştirme metotları ortaya çıkmıştır. Günümüzde Scrum, Unified Process, XP gibi çevik yazılım geliştirme metodolojileri yazılım firmalar tarafından kullanılmaktadır. Bu metodolojilerle, ürün gereksinimlerini bölmek, ürün tam olarak bitmeden önce müşteriden geri bildirim almak ve bu geri bildirimlerle değişen gereksinimlere ayak uydurabilmek ya da gereksinimlerin değişmesini asgari seviyede tutmak amaçlanır. Ancak müşterinin her zaman ne istediğini tam olarak anlatamamasından, yazılımcının alan bilgisi eksikliğinden dolayı yinelemeli olarak ilerleyen bir süreç sonunda bile gereksinim değişikliği talebi gelmektedir. Bu yüzden bakımı kolay yazılım geliştirmek yazılım firmalarının çalışan ve zaman maliyetini düşürmek için önem teşkil etmektedir. 
Çalışmada, amaçlanan tanı eksikliğine bağlı olarak yazılımda düzenlenecek bölümlerin belirlenmesinde, düzeltilmesinde ve test edilmesinde gereken çabanın bulunmasıdır. Bunun için bunların karşılığı olan ISO/IEC 25010:2011[28] kalite modelinde belirlenen bakım kolaylığı temel alınmıştır. 
Bu modelde, bakım kolaylığının ISO/IEC 25010:2011[28] kalite modelinde bulunan alt kriterlerinden Analiz edilebilirlik, Yeniden kullanılabilirlik, Test edilebilirlik ve Değiştirilebilirlik seçilmiştir. 
Yazılımda Analiz edilebilirlik, Yeniden kullanılabilirlik, Test edilebilirlik ve Değiştirilebilirliğin nasıl değiştiğinin takip edilebilmesi, proje yürütücüleri için projenin ilerleyişinin izlenebilmesi, geliştiriciler için ortaya çıkabilecek sorunların önceden tahmin edilmesi açısından önem taşımaktadır. Bu kapsamda yazılım kalitesini ölçmeye dayalı metrikler ve istatistiksel analizler kullanılarak yazılım sınıflarının kalitesine ait değerlendirmeler yapılmıştır.
Değerlendirmeler neticesinde kalite özelliklerini karşılayan metrik kümeleri oluşturulmuştur. Metrik kümeleri oluşturulurken, yazılımın statik analizinden çıkan metrik kümelerini dışında, proje ekibinde çalışan kişilerin yazılım ile ilgili alan bilgileri ve tecrübelerini içeren metrikler eklenmiştir. Ayrıca her sürümde çıkan hata sayısı ve hataların çözülme süreleri de metrik kümelerine dahil edilmiştir.
Veri kümeleri kullanılarak hazırlanan veri seti karar ağacı ve Naive Bayes yöntemlerine tabi tutulmuş ve ilerleyen sürümlerde alt kalite özellikleri temel alınarak bakım kolaylığının nasıl değişebileceğinin tahmin edilmesi sağlanmıştır.
Çalışmanın sonucunda, projenin önceki sürümlerine ait sınıf bilgilerinin kullanılması ile projenin bakım kolaylığı alt özelliklerinin gelecek sürümlerinde nasıl değişeceğinin tahmin edilmesine yönelik başarılı sonuçlar alınmıştır. Sonuçlar yazılım ekibi ve yöneticileri ile de değerlendirildiğinde sonuçları başarılı olduğu gözlenmiştir.
 İlerleyen aşamalarda farklı veri madenciliği ve istatiksel yöntemler kullanılarak analiz yönteminin geliştirilmesi planlanmaktadır.

Abstract:
Since computer software has earned a more prominent place in our lives day by day, it has become increasingly important to develop quality software, and correspondingly, to measure software quality.  Even low-scale software cannot be developed by a single person, but rather by a software team. This fact complicates the design, development and management of the software systems. 
Software measurement studies are complemented by software engineering concepts, both of which aim to encourage the increase in software development efforts and quality improvement. There has been great interest in the measurement of software development processes in the last two decades; however, dealing with the measurement of software products also has equal importance.
In software projects, it is a must to evaluate the concept of quality starting from the beginning of the project. 
Additionally, software quality measurement should be conducted according to the quality criteria, which are set at the beginning of the project.
 In this work, we aimed to set the applicable criteria for the project based on the quality model ISO/IEC 25010:2011[28] at the beginning of the project, to monitor changes in quality criteria as of the start of the project by specifying relevant metrics and to present a product of measurable quality to the customer. 
One of the basic problems in software sector is changing customer requirements. As a solution, agile software development methods have emerged. 
Today, software companies use agile software development methodologies such as Scrum, Unified Process and XP. By using these methodologies, it is aimed to divide all product requirements, to receive feedback from customers before completing the product and to respond to changing requirements through customer feedback or to minimize such changes. 
Even at the end of a recursive process due to inconveniences such as customers' inability to explain exactly what they want, and software specialist's lack of knowledge/expertise in his field, requirement changes are requested.  Therefore, it is crucial to develop software that is easy to maintain to reduce employee and time costs in software companies. 
The purpose of this work is to determine how much effort will be required to detect the relevant parts needs editing in software due to lack of diagnosis and to perform necessary edition and testing. In order to do so, as the equivalent of these steps in ISO/IEC 25010:2011[28] quality model, maintainability is taken as the basis of this work. 
In this model, Analyzability, Reusability, Testability and Modifiability are selected from the sub criteria of maintainability in ISO/IEC 25010:2011[28] quality model. 
Monitoring how Analyzability, Reusability, Testability and Modifiability change in software is important for project coordinators to track the progress of the project and for developers to predict probable problems in advance. 
Within this scope, the quality of software classes is evaluated by using metrics and statistical analyses relating to software quality measurement.
As the result of these evaluations, metric sets - corresponding to the quality criteria - are created. 
Apart from those concluded as the result of software statistical analyses, metrics including field knowledge and expertise of the project team members are also added while creating metric sets. 
Additionally, the number of errors occurring in each version and time spent to fix these errors are also included in metric sets. 
Following general analysis of the program, it was studied whether or not the Decision Tree method, which is one of the machine learning methods, would be compatible with quality properties (Maintainability, Flexibility and Reusability) specified for future versions. 
This dataset is trained with decision tree and Naive Bayes methods. By means of this training model, it is shown that changes in maintainability can be predicted by considering the sub quality criteria in following versions.
In the decision tree learning, a tree structure is created to reflect class labels with tree leaves, and processes on properties with branches going to such leaves and coming out of the beginning. 4In our study we determined 2 criteria to classify quality properties (Maintainability, Reusability and Flexibility).
Quality criteria; Good, Bad (Needs refactoring) According to the criteria specified, software developers were asked to define one of the classification criteria specified to individual quality properties of different versions of each class. This dataset is trained with decision tree and Naive Bayes methods.
By means of this training model, it is shown that changes in maintainability can be predicted by considering the sub quality criteria in following versions. Basic concepts used in evaluation of success of the model are error rate, precision, recall and F-measure. 
Success of the model is related to quantity of number of examples assigned to correct class and number of examples assigned to wrong class. Success information of results obtained from the test can be reflected with a complexity matrix. In complexity matrix, lines reflect actual numbers of examples in test set while columns reflect estimation of the model. 
As the result of this work, we obtained successful results in predicting how the sub criteria of project maintainability may change in following versions by means of using class information pertaining to the previous versions of the project. The results are proved to be successful after being evaluated by software team and managers. 
The study carried out has enabled to determine that quality properties to be specified in projects by using data mining techniques can be predicted in future versions and such predictions match the actual world. It is targeted to produce higher quality products by addressing to quality models specified in the project at development stage of the project. 
In the forthcoming phases, it is being planned to develop analysis method by using different data mining and statistical methods.
The conclusion of the study reveals that, estimates constructed on the model for the project studied are consistent with the results in the real world. 
During the flow of the study, it is intended to develop a computer vs aided software tool capable of automatically analyzing by means of different machine learning techniques, and scoring the quality attributes defined for the project. Hence, it is proposed to ensure that both the project coordinators can readily have inhand a full picture of the project, and also that the customer can track the current progress of the software.