Yazılım Kalitesi için Yazılım Ölçme
Yazılım kalitesi, yazılım ölçme ve yazılım metrikleri (yazılım ölçütleri) ile ilgili Yazılım Kalite Metrikleri yazısında öncelikle ölçüm ve metrik nedir, neden ve nerede kullanılır, yazılım neden ölçülür, göstergeler, ölçüm çeşitleri ve sınıflandırmalar nelerdir öncesinde bu temel kavramları görebilirsiniz. Bu yazımızda yazılım kalitesi için hedefe dayalı ölçüm ve yazılımın ölçülebilir unsurları ile devam ediyoruz.
Herhangi bir mühendislik disiplininde olduğu gibi yazılım geliştirme de geri bildirim ve değerlendirme için bir ölçüm mekanizması gerektirir. Ölçüm, kurumsal bir hafıza oluşturmak için güzel bir mekanizmadır. Bunun için de hedefe dayalı ölçüm kullanılır.
Yazılım kalitesi için yapılan hedefe dayalı ölçümde temel soru şudur: neyi bilmek veya neyi öğrenmek istiyoruz? (yani temel soru hangi metrikleri kullanmak istiyoruz değildir.) Çünkü cevaplar hedeflere bağlı olduğundan bunun için kullanılacak sabit bir ölçüm mekanizması olmayacaktır. Burada süreç genel anlamda süreç şu şekilde işler: Öncelikle neyin ölçüleceği belirlenir. Yazılım varlıkları tanımlanır ve bunlar sınıflandırılır. Sonrasında bunlarla ilgili hedefler ve hedeflerin nasıl ölçüleceği netleştirilir. Bu aşamadan sonra metriklerle ilgili bilgi toplanarak ilgili hedeflere atanır.
Bu çalışma yazılım sürecinin devreye alınmasıyla ilgili çeşitli soruları cevaplamaya yardımcı olur:
- Yeni bir projenin maliyeti nedir? → Proje planlamanın desteklenmesine yardımcı olur.
- Belirli hata türlerinin sıklığı nedir? → Mevcut süreçlerin ve ürünlerin güçlü ve zayıf yanlarını belirlememize izin verir.
- Kullanılan özel bir tekniğin projelerin verimliliği üzerindeki etkisi nedir? → Tekniklerin benimsenmesi veya özümsenmesi için bir çıktı sağlar.
- Devreye alımdan sonra belirli bir sistemdeki hata yoğunluğu nedir? → Belirli süreçlerin ve ürünlerin kalitesini değerlendirmemize olanak tanır.
- Ölçüm aynı zamanda bir proje sırasında ilerlemesini değerlendirmeye, bu değerlendirmeye dayanarak düzeltici önlemler alma ve bu tür eylemlerin etkisini değerlendirmeye yardımcı olur.
Yazılımda Varlıklar Ve Özellikleri
Herhangi bir yazılım ölçüm aktivitesinin birinci adımı, ölçmek istediğimiz varlık ve nitelikleri tanımlamaktır. Yazılımda ölçüm ve yazılım kalite metrikleri için Yazılım Kalite Metrikleri yazısını inceleyebilirsiniz. Yazılımda varlıklar 3 ayrı şekilde sınıflandırılabilir:
- Süreç (Process): Yazılımla ilgili faaliyetler. Genellikle zaman ölçeği ile ilişkilendirilen yazılımla ilgili aktivitelerden oluşan derlemeler de diyebiliriz. Farklı yazılım mühendisliği süreçlerine geliştirme, bakım, test, tekrar kullanım, yapılandırma veya yönetimi örnek olarak verebiliriz.
- Ürün (Product): Bir süreç aktivitesinden gelen tüm çıktı veya dokümanlar. Örneğin, tasarım dokümanı tasarım aktivitesinin bir ürünü olabilir. Bu doküman da kodlama aktivitesinde girdi olarak kullanılacaktır.
- Kaynak (Resource): Süreç aktivitesinin ihtiyaç duyduğu varlıklar.
Süreç, ürün ve kaynak varlıklarının özellikleri de dâhili (iç) ve harici (dış) olmak üzere yani internal attributes ve external attributes olmak üzere ikiye ayrılır. İç ve dış özellikler ölçüm için kullanılır.
İç Özellikler (Internal Attributes)
Sürecin, ürünün veya kaynağın, nasıl davrandıklarını dikkate almadan kendi başlarına incelenerek ölçülebilen özelliklerdir. Örneğin boyut, çaba/efor, maliyet birer iç özelliktir. Ayrıca işlevsellik (functionality), modülerlik (modularity), yeniden kullanım özelliği (reuse), fazlalık (redundancy), yapısallık(structuredness), modül bağlılığı (module coupling and cohesiveness) daha ileri özellikler olarak verilebilir.
Dış Özellikler (External Attributes)
Sürecin, ürünün veya kaynağın çevresiyle olan ilişkisine göre yani ortamdaki davranışını gözlemleyerek ölçülebilen özelliklerdir. Kullanılabilirlik (usability), güvenilirlik (reliability), verimlilik (efficiency), test edilebilirlik (testability), tekrar kullanılabilirlik (reusability), taşınabilirlik (portability), birlikte çalışabilirlik (interoperability) ve anlaşılabilirlik (understandability) gibi bazı dış özellikler bulunmaktadır.
İç ve dış özelliği ayırt etmek için basit bir yöntemi kullanabiliriz. Bir yazılım ürününde kodu çalıştırmadan bazı özelliklerinin ne olduğunu söyleyebiliriz; boyutunu, kod satır sayısını, karmaşıklığını ve modüller arasındaki bağımlılıkları gibi kodu çalıştırmadan söyleyebileceğimiz bu özellikler dâhili özelliklerdir. Bir de sadece kod çalıştırıldığı takdirde ölçülebilecek başka özellikler vardır. Mesela veri tabanı sorgusunun tamamlanma süresi, istek dönüş süresi, kullanıcıların aldığı hata sayısı gibi kodun davranışına bağlı olan bu özellikler harici özelliklerdir.
Yazılım varlıklarının özelliklerinin iç özellikler ve dış özellikler olarak ayrılmasının sebebi, ölçümde kullanılan yöntemlerin ve yapılarının farklı olmasıdır. Süreç, ürün ve kaynak olarak sınıflandırılan yazılım varlıklarının ölçümlerinin yapıldığı iç ve dış özelliklerinin neler olduğunu ayrıca göreceğiz.
Hedef-Soru-Metrik (Goal-Question-Metric) Yaklaşımı
Hedef Soru Metrik (Goal Question Metric) yaklaşımında amaç kalite hedefleri ile bunlara uygun metrikleri birbileriyle ilişkilendirmektir. Bu yaklaşım bir kuruluşun amaçlı bir şekilde ölçmesi için önce kendisi ve projeleri için hedefleri belirtmesi, daha sonra bu hedefleri, bunları tanımlamaya yönelik verilere kadar izlemesi gerektiği varsayımına dayanır ve son olarak verilerin belirtilen hedeflere göre yorumlanması için bir çerçeve sağlar. Bu nedenle, en azından genel anlamda, kuruluşun hangi bilgi ihtiyacına sahip olduğunu açıklığa kavuşturmak önemlidir, böylece bu bilgi ihtiyaçları mümkün olduğunda ölçülebilir ve hedeflenen bilgilere ulaşılıp ulaşılmadığına dair sayısal bilgiler analiz edilebilir.
Bu yaklaşım başlangıçta NASA Goddard Uzay Uçuş Merkezi ortamındaki bir dizi projenin kusurlarını değerlendirmek için tanımlandı. Uygulama bir dizi vaka çalışması deneyi içeriyordu ve çeşitli tiplerde deneysel yaklaşımları içerecek şekilde genişletildi. Her ne kadar yaklaşım başlangıçta belirli bir ortamdaki belirli bir projenin hedeflerini tanımlamak ve değerlendirmek için kullanılmış olsa da, kullanımı daha geniş bir içeriğe genişletilmiştir.
Ölçüm belirli bir amaca istinaden yapılır. Bir hedefe göre yapılan ölçümde temel soru “hangi metrikleri kullanmalıyız?” yerine “neyi öğrenmek istiyoruz” şeklinde olmalıdır. Çünkü cevaplar bu hedefe bağlı olacaktır. Sabit belirli metrikler her zaman uygun olmayabilir. Genel amaçlı ölçü geliştirmeye çalışmak yerine kullanıcıların sorunlarına ilişkin ölçü tanımlama ve bunları kullanabileceği uyarlanabilir bir süreç tanımlanmalıdır.
Metrik seçimi için Hedef-Soru-Metrik yaklaşımı ilk olarak Basili ve Weiss tarafından önerilmiştir. Metriklerin seçilmesi ve uygulanmasında özellikle etkili bir yaklaşım olduğu kanıtlanmıştır.
GQM Yaklaşımının 3 Ana Adımı
- Kavramsal seviye (Hedef): Belirli bir ortama göre, çeşitli kalite modellerine göre, çeşitli bakış açılarına göre, çeşitli nedenlerle bir hedef tanımlanır. Geliştirme veya bakım işinin ana hedeflerini listeleyin.
- Operasyonel seviye (Soru): Belirli bir hedefin değerlendirilmesinin / başarılmasının dayanarak nasıl yapılacağını karakterize etmek için bir dizi soru kullanılır. Sorular, varlığı (ürün, süreç, kaynak) seçilen bir kalite sorununa göre karakterize etmeye ve kalitesini seçilen bakış açısından belirlemeye çalışır. Her bir hedeften hedeflerin karşılanıp karşılanmadığını belirlemek için cevaplanması gereken soruyu türetin.
- Nicel seviye (Metrik): Her soruya nicel bir şekilde cevap verebilmek için bir veri kümesi ilişkilendirilir. Veriler program boyutu gibi nesnel bir değer olabileceği gibi, bir metnin okunabilirliği, kullanıcı memnuniyeti gibi öznel bir değer de olabilir. Sorulara yeterince cevap verebilmek için neyin ölçülmesi gerektiğine karar verin.
Örnek:
Hedef= Bir kuruluşun kodlama standardının etkinliğini değerlendirme.
Soru= Kod kalitesi nedir?
Metrik 1= Kod boyutu (LOC, class sayısı, method sayısı vs.)
Metrik 2 = Kodla ilgili alınan hatalar.