Terzi kendi söküğünü dikemez. Bilindik bir atasözüdür ve gerçekliği birçok mecrada karşımıza çıkmıştır. Hayatın belli gereksinimlerini yerine getirme noktasında artık vazgeçilmez bir unsur olan yazılım için de bu ifadenin doğru olduğunu iddia edebilir miyiz? Artık bu soruya hayır diyebileceğimiz bir tecrübe ve birikim oluşmuş durumda.
Yazılım dünyası, varlığı itibariyle temelde kendine değil, diğer disiplinlere, iş alanlarına, akademiye, sanayiye, ticari unsurlara yardımcı olacak sistemler, yapılar ve entegrasyonlar geliştirmek için ortaya çıkmıştır. Bu varlığı da her geçen gün artan oranda yeni alanlarla çeşitlenmektedir. Ancak, yazılımın kendi içine dönmesi ve kendi değerleriyle ilgili çalışma yapması, buna göre birtakım platformlar oluşturması bir süre öncesine kadar pek rastlanmayan, en azından odak noktasında olmayan bir durumdu.
Yazılım denilince akla sadece bir ürün/platform/site gelmiyor, bir bütün olarak, yapısal özelliklerle beraber bazı donanım nitelikleri, kullanıcılar ve tabii ki veri yığınları geliyor. Bunlara ek olarak, yazılım süreçleri, kalite ve entegrasyon kontrol aşamaları, iletişim kanalları gibi maddeler de var. Yukarıdan baktığımızda, yazılım, aslında içerisinde kod kütüphanelerinden, geliştirme planlarına, mail yazışmalarından, proje planlarına, risk raporlarından, performans ölçümlerine, kullanıcı bilgilerinden, içerik parçalarına, taşıyıcı alt model katmanlardan, kullanıcıya dokunan arayüz ve arabirim özelliklerine kadar oldukça geniş bir veri bütünü üzerine bina edilmiş bir süreç-daha doğrusu süreçler bütünü. Bu kadar bilginin üretildiği, yönetildiği ve sunulduğu bir yapı da haliyle kendi içindeki bu hazinenin kıymetini bilmek durumunda.
Yazılım kendine dönüyor diyoruz çünkü yukarıda sayılan unsurların artık çok daha aktif kullanıldığı bir döneme girmiş durumdayız. Bu kullanımlar, akademik yaklaşım ve araştırmalarla da destekleniyor ve sektör içerisinde her geçen gün daha fazla yer kazanıyor. Örneğin Mining Software Repositories konu başlıklı çalışma grubu, 10 yılı aşkın bir süredir düzenli olarak çalışmalarını paylaşıyor, kendi programları dahilinde de her yıl konuyla ilgili araştırmacıları davet eden konferanslar düzenliyor. Çalışma alanı, yazılım geliştirmede üretilen temelde yazılımsal/kodsal parçalar olmakla beraber, hata raporları, çalışma planları gibi kaynakların da dahil edildiği büyük bir veri yığını üzerinde analiz yapmak ve anlamlı bulgular çıkararak, yazılımın bizatihi kendisine katkıda bulunmak. Mesela bir araştırma, yazılım üzerinde hangi gün yapılan değişikliklerin hataya daha açık olduğunu incelerken, bir diğeri var olan bir yazılım hatasının, kategorileştirilerek ne kadar sürede çözülebileceğini analiz ediyor. Özellikle konferans yayınları incelendiğinde, eldeki verinin çeşitliliği de göz önünde bulundurulduğunda, türlü seçenekler ve kombinasyonlarla birçok sorunun irdelenebileceği anlaşılıyor.
Sadece kod tabanlı incelemeler değil, artık yazılımı analitik modellerle incelemek, süreç içerisinde otomatize edilen/edilecek parçalarla geliştirme performansının artırılması, paylaşılacak bulgularla kapsamlı yazılım analiz tabanları oluşturulması gibi alanlarda ve daha özel başlıklarla çalışmalar var. bu çalışmaların bazıları PROMISE, ESEM, ICST, ISSRE, FSE gibi birçok konferans ve yayın grubu içerisinde yer alıyorken, akademik yönü daha kapsamlı olan incelemeler IEEE kapsamındaki diğer yayın grupları ve benzeri ortamlarda sürekli olarak ilgili kişilerle paylaşılmaktadır.
Özellikle PROMISE ve MSR konferans içerikleri ve geçmiş yayınları incelendiğinde ufuk açıcı birçok çalışma görülecektir. Bu çalışmaların pratik hayatta uygulamaya geçmesi için ne tür yaklaşımların kullanılabileceği artık daha fazla gündemde olacaktır.
Ülkemizde de söz konusu alanlarda çalışmalar mevcuttur ancak henüz akademik seviyeden sektöre aktarılan bilgi yeterli düzeyde değildir. Münferit bazı çalışmalar ve bulguların sektöre aktarılması örnekleri vardır ancak potansiyelin farkındalığı noktasında ciddi eksiklik olduğu aşikardır. Uluslararası standartlar, frameworkler, yaklaşım bütünlükleri ve manifestoları belli bir ciddiyette takip eden ülkemizdeki yazılım paydaşlarının artık kendilerinde var olan veri üzerinden bu tür çalışmalara da girmesi gerektiğini ifade etmek lazım. Sürekli iyileştirme, Kaizen, ampirik yöntemler gibi bazı kuramların revaçta olduğu bu zaman diliminde, somut çıktılar üretebilecek yazılım verisi, tüm unsurlarıyla, değerlendirmeye alınmalıdır.
Yazılım dünyası, kendi ürettiği ve öncesinde çok da önem vermediği her bilgi kırıntısını da artık düşünür ve değerlendirir olmuştur. Buna göre bir yapılanmaya gitmek, yazılım analitiği çerçevesinde, veri madenciliği ve benzeri teknikleri de dikkate alarak çalışma yapmak, gerçekte bu eforun altına giren firma ve kurumlara fazlasıyla artı değer sağlayacaktır.