Altınışık, Metin2018-08-022018-08-022016-05http://hdl.handle.net/10679/5897http://discover.ozyegin.edu.tr/iii/encore/record/C__Rb2122858?lang=enghttps://tez.yok.gov.tr/Large software systems have to be decomposed into separate, modular units for providing appropriate abstractions and improving maintainability. There exist clustering techniques that are applied to provide such abstractions by automatically grouping system modules based on dependencies among them. Hereby, dependency is usually measured as the extent to which a module refers to elements of another module. This approach cannot be directly applied for all types of programs. Some programs involve modules that are indirectly coupled. For instance, PL/SQL programs include procedures that are in most cases coupled due to their database operations although they do not make calls to each other. In this thesis, we provide an approach and a tool that supports automated modularization of software systems by considering this type of dependencies We also extend this approach for multiple, different types of dependencies. We construct several dependency matrices each of which captures a different type of dependency among the system modules. First, we perform clustering according to each of these matrices separately. Then, we perform cluster aggregation (meta clustering) on the obtained clustering results to propose a packaging structure to the designer. We performed two industrial case studies on real PL/SQL programs from the telecommunications domain. Many unexisted packages were proposed by our tool and the accuracy of the results were confirmed by domain experts.Büyük yazılım sistemlerinin bakımlarını daha verimli ve kaliteli bir şekilde gerçekleştirebilmek için bu sistemleri modüler ve daha küçük birimlere ayırmak bir zorunluluktur. Bu şekilde bir modüler yapı kurmak için bu tür sistemlerin aralarındaki bağımlılıklarına göre otomatik olarak gruplamak için mevcutta değişik gruplama teknikleri mevcuttur. Burada, bir modülün diğerine bağımlılığı genellikle bu modülün diğer modülün bileşenlerine bağımlılığı yönünden ölçülür. Bu yaklaşım tüm programlamlar için maalesef direk olarak uygulanamamaktadır. Çünkü bazı programlar dolaylı olarak birbirlerine bağımlı modüller içerebilirler. Örneğin, PL/SQL programları birbirlerini çağırmadıkları halde aynı veritabanı operasyonları yönünden birbirlerine oldukça bağımlı olan ayrık prosedürler içerirler. Bu tezde, bu tipteki bağımlılıkları dikkate alarak sistemleri modüler bir yapıya otomatik dönüştürebilecek bir yaklaşım ve araç geliştirdik. Ayrıca bu yaklaşımı farklı tipteki bağımlılıkları içerecek şekilde genişleterek, sistem modülleri arasındaki farklı tipte bağımlılıkları içeren bağımlık matrisleri oluşturduk. İlk olarak, her bir matris için ayrı ayrı olarak gruplama çalışması yaptık. Sonrasında, ilk çalışmadan çıkan gruplamaları kümüle bir gruplama mekanizmasına dahil ederek nihai gruplamaları elde ettik. Çıkan sonuçları mevcut modülleri bir paketleme önerisi olarak geliştiricilere sunduk. Bu çalışmayı telekomunikasyon alanında bulunan iki farklı büyük ve kompleks sistem için (CRM ve Faturalama) ayrı ayrı uyguladık. Bir çok ayrık prosedür geliştirdiğimiz bu araç ile gruplanabildiğini gördük. Ayrıca, çıkan sonuçları yazılım mimarları tarafından doğruluğunu teyit ettirdik.enginfo:eu-repo/semantics/restrictedAccessAutomated procedure clustering for reverse engineering PL/SQL programsPL/SQL programları için otomatik prosedür gruplamaMaster's thesisSözer, HasanGürsun, GoncaComputer Engineering and Computer Science and Control2122858