Yazılım Kalite Metrikleri – Temel Kavramlar
Yazılımda Ölçüm (Software Measurement) Nedir?
"Ölçülemeyen şey yönetilemez!"
Yazılım geliştirme süreci ve aktiviteleri belirsiz koşullar altında sağlandığından (mesela gereksinimin değişmesi ya da geliştiricilerin projeden ayrılması gibi) yazılım ölçümü iyi bir yazılım yönetiminin en önemli bileşenlerinden biridir. Yazılım mühendisliğinde yönetme, planlama, modelleme, analiz etme, belirleme, tasarım, uygulama, test ve bakım aktiviteleri gibi her kademede ölçümler yapılır ve yazılım kalite metrikleri kullanılır.
Ölçüm nedir? Ölçüm (measurement) bir veya daha fazla gözleme dayanarak belirsizliklerin nicel karşılığıdır. Gözlemler, olumsuz olay riskini veya olumlu sonuç olasılığını nicel olarak ölçerek belirsizliği azaltabilir. Ölçüm, varlıkların özellikleri hakkında bilgi toplar. Ölçü (measure) ise bir ürünün veya sürecin özelliklerinin boyut, kapasite, miktarının nicel bir göstergesini sağlar. Örneğin bir yazılımda, ilgili modülün testi sonrasında çıkan hata sayısı ile ölçü sağlanmış olur. Ölçüm birden fazla modülün ölçüleri alındıktan sonra gerçekleşir (modül testlerinin araştırılması gibi). Ölçüm bir ölçü belirleme eylemidir. Yani genelde bu terimler birbirlerinin yerine kullanılsa da aralarında ufak farklar bulunmaktadır.
Ölçüm mühendislikte yaygındır: ağırlık, boyut, sıcaklık, voltaj vs. oranları ile ölçüm yapılır. Aynı şekilde yazılım mühendisliğinde de ölçümler kullanılmaktadır. Bir ölçümün sonucu ya nicelikseldir ya da nitelikseldir. Nicel ölçü sayılabilir değerlerle gösterilir (ağırlık, yaş, uzaklık, sıcaklık, uzunluk, para vs..) Nitel ölçü de özellik veya bir değer aralığı ile gösterilir (mutluluk oranı, cinsiyet, renk, doğru/yanlış, kategori, metin, tanım vs..)
Ölçüm Neden Kullanılır? Yazılım Kalite Metrikleri Temel Amaçları
Ölçümler hedef varlığı kontrol altında tutmak için, geliştirebilmek için veya anlamak için yapılır. Yazılım kalite metrikleri izleme ve analiz etmek, mevcut ürünün veya sürecin kalitesini belirlemek, bu kaliteyi artırmak ve yazılım geliştirme projesi tamamlandıktan sonra kaliteyi tahmin etmek için kullanılır.
Bu metriklerin temel kullanım amacı:
- Yatırım getirisini artırma
- İyileştirme alanlarını belirleme
- İş yüklerini yönetme
- Fazla eforu azaltma
- Maliyetleri azaltma şeklinde özetlenebilir.
Yazılım Kalite Metrikleri Nerede Kullanılır?
Yazılım kalite metrikleri birçok aktiviteyi kapsayan bir terimdir. Bu aktivitelerin hepsi bir dereceye kadar yazılım ölçümü içerir:
- Maliyet ve efor tahmini
- Metriklerle yönetim
- Verimlilik modelleri ve ölçüleri geliştirme
- Veri toplama
- Kalite modelleri ve ölçüleri geliştirme
- Güvenilirlik modelleri geliştirme
- Performans değerlendirmeleri
- Yapısal ve karmaşıklık metrikleri
- Yeterlilik, olgunluk değerlendirmeleri
- Yöntem ve araçların değerlendirmesi
Varlık (Entity) ve Nitelik (Attribute)
Ölçüm, başlangıçta da belirttiğimiz gibi varlıkların özellikleri hakkında bilgi toplar. Varlık (entity), bir kişi veya bir oda gibi bir nesne olabilir ya da bir yolculuk gibi, yazılımın testi gibi bir olay olabilir.
Nitelik, özellik ya da öznitelik (attribute) ise isminden de anlaşılacağı üzere bir varlığın niteliği veya özelliğidir. Tipik nitelik olarak odanın alanı veya rengi, test fazında geçen zaman olarak verilebilir. İşte ölçümleri yapılan şeyler niteliklerdir.
Metrik Nedir?
Metrik (ya da ölçüt) varlıkların, bunların kapsamlarının ve birimlerinin ölçülebilir niteliklerini belirleyen standartlardır. Metrik, nicel özelliklerin bir ölçüsüdür. Yazılım kalite metrikleri, yazılım performansının ölçülmesi, iş öğelerinin planlanması, verimliliğin ölçülmesi ve diğer pek çok konuda önemlidir. Bu alanda çokça duyduğumuz defect (kusur) sayısı veya defect sayısı/kod satırı sayısı (number of lines of codes) metriklere örnek olarak verilebilir.
Örnek:
Varlık: Kod
Nitelik: Boyut
Metrik: Yazılım Boyutu. Yazılımın boyutu kod satır sayısı (lines of code) veya yazılımın işlev puanları (function points) ile gösterilebilir.
Örnek:
Varlık: Sistemin kullanılabilirliği (availability)
Nitelik: Sistemin toplam çalışma süresi – sistemin kapalı kalma süresi (system uptime – system downtime)
Metrik: Sistemin kullanılabilirliği (availability)=Sistemin toplam çalışma süresi / (Sistemin ayakta olduğu süre – Sistemin kapalı olduğu süre)
Yazılım Kalite Metrikleri Süreç (Process) ve Proje Göstergeleri
Süreç Göstergeleri
Bir gösterge yazılım sürecine, yazılım projesine veya ürünün kendisine ilişkin bilgi sağlayan bir metrik veya metriklerin birleşimidir.
Süreç göstergeleri tüm projelerde ve uzun süreler boyunca toplanır. Amaçları uzun vadede yazılım süreç iyileştirmesini sağlayan göstergeleri sağlamaktır. Bu sayede mevcut bir sürecin verimliliği veya yararı hakkında fikir sahibi olunabilir.
Herhangi bir süreci iyileştirme için en makul yollardan biri; sürecin belirli niteliklerini ölçmek, bu niteliklere dayalı bir dizi anlamlı metrik geliştirmek ve ardından metrikleri iyileştirme stratejisine yol açacak göstergeler sağlamaktır. Süreç de yazılım kalitesini ve performansı iyileştirmeyi etkileyen bir dizi faktörlerden sadece biridir.
Proje göstergeleri
Yazılım süreç göstergeleri stratejik amaçlar için kullanılır. Proje metrikleri ve bunlardan türetilen göstergeler, bir proje yöneticisi ve bir yazılım ekibi tarafından proje iş akışlarında ve teknik faaliyetlerde gerçekten gösterge olarak kullanılır.
Proje göstergeleri ise yazılım proje yönetiminin;
- Devam eden bir projenin durumunu değerlendirmesine,
- Potansiyel riskleri takip etmesine,
- Kritik hale gelmeden sorunlu alanları ortaya çıkarmasına,
- İş akışını veya görevleri ayarlamasına,
- Proje ekibinin yazılım kalitesi ile ilgili yetkinliğinin değerlendirmesine olanak sağlar.
Çoğu yazılım projesinde proje metriklerinin ilk uygulaması tahmin sırasında gerçekleşir. Geçmiş projelerden toplanan metrikler, mevcut yazılım çalışması için çaba ve zaman tahminlerinin yapıldığı bir temel olarak kullanılır. Bir proje ilerledikçe, harcanan çaba ve takvim süresi orijinal tahminlerle (ve proje planıyla) karşılaştırılır. Proje yöneticisi bu verileri ilerlemeyi izlemek ve kontrol etmek için kullanır. Kalite iyileştikçe kusurlar en aza indirilir ve kusur sayısı azaldıkça proje sırasında gerekli olan yeniden çalışma miktarı da azalır. Bu, toplam proje maliyetinin azalmasını sağlar.
Doğrudan ve Türetilmiş Ölçüm
Doğrudan Ölçüm
Bir varlığın niteliğinin direkt ölçümü başka bir varlık veya niteliğin olmadığı ölçümdür. Mesela fiziksel bir nesnenin uzunluğu, başka herhangi bir nesneye veya niteliğe başvurmadan ölçülebilir.
Yazılım mühendisliğinde yaygın olarak kullanılan doğrudan ölçümlere örnekler:
- Kaynak kodun boyutu (LOC yani kod satırı ile ölçülebilir.)
- Test süreci programı (geçen süre saat cinsinden ölçülebilir.)
- Tespit edilen hata sayısı (defect sayımı ile ölçülebilir.)
- Bir programcının projeye harcadığı zaman (çalışılan aylara göre ölçülebilir.)
Türetilmiş Ölçüm
Türetilmiş ölçüm, doğrudan ölçümlerin arasındaki etkileşimi görünür kılmak için yapılan ölçümlere denir. Mesela fiziksel bir nesnenin yoğunluğu kütlesi ve hacmi ölçülerek elde edilebilir. Bu ölçümlerin ilişkisini yoğunluk=kütle/hacim şeklinde gösterebiliriz. Türetilmiş ölçümleri aslında projenin gidişatını ve ne durumda olduğunu daha iyi görebilmemizi kolaylaştırır.
Yazılım mühendisliğinde yaygın olarak kullanılan türetilmiş ölçümler:
- Geliştirici üretkenliği (Üretilen LOC/Ay-adam eforu)
- Modül defect yoğunluğu (Defect sayısı/Modül boyutu)
- Defect tespit verimliliği (Tespit edilen defect sayısı/Toplam defect sayısı)
- Gereksinim kararlılığı (Başlangıç gereksinim sayısı/Toplam gereksinim sayısı)
- Test kapsamı (Ele alınan test gereksinimlerinin sayısı/Toplam test gereksinimleri sayısı)
- Sistem arıza ölçümü (Hataları düzeltmek için harcanan efor/Toplam proje eforu)
Tahminsel Ölçüm
Geçici bir değerlendirme veya kaba hesaplama anlamına gelen tahmin, projenin maliyet ön hesabını yapmak için kullanılır. Tahmin, izlenime dayanan bir karar veya bir görüştür. Bir hedefin planlandığı gibi gerçekleşmesi için önceden verilen bir taahhüttür diyebiliriz. Hedef, arzu edilen bir iş hedefinin ifadesidir (örneğin bir fonksiyonun 1 ay sonrasına kadar tamamlanması gibi.) Bir hedefin zorunlu olması veya çok istenmesi onun mutlaka ulaşılabilir olduğu anlamına gelmez.
Ölçüm tahmin için de kullanılır. Bir tahmin sistemi sonuçları yorumlamak için ve bilinmeyen parametreleri belirlemek için bir dizi tahmin prosedüründen oluşur. Örneğin Ankara’dan İstanbul’a arabayla seyahatin maliyetini şu şekilde yorumlayabiliriz:
Maliyet= Aradaki mesafe * (litre başına yakıt maliyeti / bir litre ile gidilebilecek ortalama mesafe)
Aslında burada gerçekte ölçüm yapmıyoruz, maliyetini tahmin ediyoruz.
Ölçümlerin Sınıflandırılması
Verilerin analizini yapmak için öncelikle değişkenleri tanımlamak ve bu değişkenler kullanılarak neyin ölçülmesi gerektiğini anlamak önemlidir. Bununla ilgili farklı ölçüm seviyeleri vardır ve bunları kullanarak ölçülen veriler geniş ölçüde nitel ve nicel olmak üzere sınıflandırılabilir.
Matematik ve istatistik bilim dalları için ölçüm skalası, belirli ortak ölçüleri temsil etmek için önceden tanımlanmış bir dizi sembol veya değerdir. 1940’larda Harvard’da psikolog olan Stanley Stevens bir hiyerarşi tanımlamak ve istatistiksel prosedürleri sınıflandırmak için nominal, ordinal, interval ve ratio terimlerini tanımladı.
Ölçek türlerini anlamak ölçümlerle ilgili ifadelerin ne zaman anlamlı olduğunu belirlememizi sağlar.
İsimsel Ölçek (Nominal scale)
En basit ölçektir. Öğeleri belirli bir özelliğine göre sınıflandırır. Sınıfları veya kategorileri tanımlar ve her varlığı özelliğin değerine göre belirli bir sınıfa veya kategoriye yerleştirir. Yani eşit olanlar aynı sınıftadır. Dolayısıyla eşit olanları ve olmayanları ayırt eder. Sınıflar arasında sıra kavramı yoktur, ortalaması alınamaz, 4 işlem vb. matematiksel işlem yapılamaz. Sınıfların herhangi bir belirgin numaralandırması veya sembolik gösterimi bir ölçüdür ancak sayılar veya sembollerle ilişkili büyüklük kavramı yoktur. Örnekler:
Örnek 1: Medeni Durum: Evli / Bekâr / Boşanmış
Örnek 2: Sonuç: Doğru / Yanlış
Örnek 3: Renk: Kırmızı / Beyaz / Mavi / Yeşil / Siyah
Sırasal Ölçek (Ordinal Scale)
Öğelerin sıralamasını da gösteren 2. seviye ölçüm düzeyidir. Öğeleri belirli bir özelliğe göre sınıflandırır ve bunları sıralar. Eşit olanları ayırt etmenin yanında sınıflar arasında da büyüklük küçüklük ilişkisini tanımlar. Yani sınıfların veya kategorilerin sıralaması için kullanılır. Aynı kategorideki öğeler sıralanamaz. Yani aynı sınıf içerisinde öğeler birbirine eşittir ancak sınıflar arasında üstünlük vardır. Örnekler:
Örnek 1: Dersin karne notu: 1. Başarısız 2. Geçer 3. Orta 4. İyi 5. Pekiyi
Örnek 2: Anket sorusu: 1. Hiç katılmıyorum 2. Katılmıyorum 3. Nötr 4. Katılıyorum 5. Tamamen katılıyorum.
Aralıksal Ölçek (Interval Scale)
Sınıfları ayıran aralıkların boyutu hakkında bilgi toplar. Veri noktalarının sırası ve bu noktalar arasındaki aralıkların boyutu hakkında bilgi verir. Bir anlamda bir sınıftan diğerine atlamanın boyutunu anlayabiliriz. Ordinal skalada olduğu gibi düzeni korur. Toplama ve çıkarma, aralık ölçeğinde kabul edilebilir, ancak çarpma ve bölme yapılamaz. Yani sıcaklık olarak 10 ve 20 derece arasındaki fark 80 il 90 derece arasındaki fark ile aynıdır ama 80 derece 40 derecenin 2 katıdır diyemeyiz. Örnekler:
Örnek 1: Sıcaklık aralığı; Minimum değer, maksimum değer
Örnek 2: Proje planı; Gereksinim analizi – 3 hafta, tasarım – 4 hafta, kodlama – 4 hafta, Test 11 haftanın sonunda başlar.
Örnek 3: Celsius ölçeğini kullanarak, sıcaklık.
Oransal Ölçek (Ratio Scale)
Sıralamayı, varlıkar arasındaki aralıkların boyutunu ve varlıklar arasındaki oranları koruyan ölçektir. Burada ölçüm sıfırdan başlar ve aralıklar bilinen bir birim üzerinden eşit aralıklarla artar. Mesela zaman birimi (milisaniye), uzaklık veya uzunluk (santimetre), ağırlık (kilo), hacim (litre) bunların tümü oransal ölçektir. Aynı zamanda iki oransal ölçeğin birbirlerine oranı da oransal bir ölçektir. Örneğin km/saat, kg/L oranları da oransal ölçeklerdir. Ölçeğin 0 (sıfır) değeri olsa da gerçekte değişken hiçbir zaman bu değerde görülmeyebilir (bir nesnenin uzunluğu gibi). Örnekler:
Örnek 1: Defect sayısı
Örnek 2: Yazılımın boyutu
Örnek 3: Mutlak sıfıra sahip Kelvin ölçeğini kullanarak, sıcaklık.
Bu yazımızdan sonra yazılım kalitesi için yapılan hedefe dayalı ölçüm ve goal question metric (hedef soru metrik) konularının anlatıldığı Yazılım Kalitesi – Yazılımda Ölçülebilir Varlıklar, Özellikleri ve GQM Yaklaşımı yazısı ile devam edebilirsiniz.