Yazılım Projelerinde Kalitenin Önemi
Merhaba;
Bu yazımda yazılım projelerinde kalitenin öneminden bahsedeceğim. İster yazılım olsun ister farklı bir sektör olsun, başarılı bir ürün ortaya çıkartmak için en önemli unsurlardan biri hiç şüphesiz; KALİTE’dir. Peki; kaliteyi, yazılım geliştirmenin hangi aşamasında daha çok uygulamalıyız? Kaliteli bir yazılım nasıl olur? gibi soruları yanıtlamaya çalışacağım.
Yazılarımın klasik girişlerinden olan; cevabını bulacağımız konunun tanımı ile başlamak istiyorum. Çünkü bir konu ile ilgili bilgi aktarmadan önce, tanımını öğretmek, bilgiyi alacak kişilerin o konuya daha şeffaf bakmasını sağlamaktadır. Kalite nedir ile başlamak istiyorum. Kalite; bir mal veya hizmetin belirli ihtiyaçları karşılayabilme yeteneklerini ortaya koyan özelliklerin tamamıdır. Kısacası; müşterilerin beklentilerini doğru şekilde karşılamaktır.
Kalitenin ne olduğunu öğrendik, şimdi sınıf ile arasındaki farklara değinelim. Kalite ile sınıf kavramları çok karıştırılmaktadır. Sınıf; bir ürünün benzerleri arasındaki derecesidir. Kişilere göre farklılık göstermez. Basit bir örnek olarak; otomobillerin sınıflandırılmasını kullanabiliriz. Otomobiller A – F harf aralığında özelliklerine, konforuna, ek donanımlarına, malzeme türüne göre sınıflandırılmaktadır. F segmenti araç en yüksek sınıftır, fakat en kaliteli araç değildir. Çünkü kalite müşterilerin isteklerine göre değişmektedir. Eğer ihtiyaç; minimum fiyatlı, düşük konfor düzeyinde bir araçsa A segmenti için kaliteli bir araç diyebiliriz. Bu nedenle; kalite ile sınıf birbirleri ile karıştırılmamalıdır.
Çoğu zaman; teslim edilen yazılım ürünleri yüksek sınıf olmasına rağmen, müşterinin ihtiyaçlarını karşılayamadığı için kalitesiz sayılmaktadır. Bu nedenle; üreteceğimiz yazılımın sınıfından çok müşterimizin ihtiyacının ne kadarını karşıladığına odaklanmalıyız. Tamamlanmış bir yazılım projesinin sonunda (özellikle birçok firma aynı yazılımı kullanıyorsa) şu diyaloğu çok duyarsınız ‘Bu yazılımı birçok firma başarılı bir şekilde kullanıyor, siz kullanamıyorsunuz.’ Tabi ki çoğu zaman doğrudan bu cümle kullanılmaz, fakat konuşmanın ana mesajı genellikle budur. Bu nedenle bazı durumlarda suçu müşteriye atmak yerine, ‘O müşteri için kaliteli bir ürün ortaya çıkarttık mı’ sorusunu kendimize sormalıyız.
Peki kaliteli bir yazılım geliştirme süreci için neler yapmalıyız?
- Öncelikle kaliteyi; yazılım yaşam döngüsü boyunca uygulamalıyız. Hangi metodu kullanırsak kullanalım; yazılım geliştirmenin her aşamasında ekipteki herkes kaliteli bir yazılım üretmek için elinden geleni yapmalıdır. Gözden kaçan her bir sorun veya önemsenmeyen her bir boşluk; geliştirmenin bir safhasında veya ürün teslim edildikten sonra ortaya çıkacaktır. Bu nedenle sorun ne kadar erken tespit edilirse; maliyeti o kadar düşük olur.
- Yazılım projelerinin ilk aşaması olan ‘Analiz’ aşamasında müşterinin ihtiyacını doğru şekilde anlayabilmek gerçekten çok önemlidir. Yöntem Agile’da olsa Waterfall da olsa tüm yazılım geliştirme modellerinde ilk aşama her zaman talebi almaktır. Sadece Waterfall’da Analiz daha detaylı yapılır, Agile’da ise parça parça yapılır. Bu konuyla ilgili detaylı bilgiyi ‘Yazılım Projelerinde Analizin Önemi’ başlıklı yazımda detaylı olarak paylaşacağım. Şimdilik sadece analizin önemine değinmek istiyorum.
- Yazılım testi. Birçok kişi tarafından yazılımın test edilmesi; hataların bulunması anlamına gelmektedir, fakat yazılım testinin asıl amacı yazılımın kalitesinin ölçülmesidir. Yazılım testi kendi başına bir uzmanlık konusudur ve bu konuda çok detaya inilebilir, bu yazımda sadece birkaç temel fikir vermeye çalışacağım. Yazılım geliştirme ekipleri tarafından yazılan her yazılım parçası için ‘Birim Test’ yapılmalı, ‘Nasıl olsa yazılım test edilecek’ şeklinde düşünülmemelidir. Yazılım testi yapılırken ise; Test case’lerine çok dikkat edilmeli, son kullanıcı tarafından kullanılabilecek tüm case ler çıkartılmış olmalıdır.
- Kullanılabilirlik. Aslında bu kavram, kalite ile doğru orantılıdır. Kaliteli bir yazılım, müşterinin ihtiyaçlarını doğru şekilde karşılamaksa; kullanılabilir bir yazılım da son kullanıcıyı dikkate alarak, yazılımı kullanacak kişiyi memnun etmektir. Yanlış bilinen bir konuya daha değinmek istiyorum. Özellikle ERP sistemleri gibi büyük fonksiyonlu yazılımların son kullanıcılar tarafından kullanılmadığı / kullanılamadığı durumlar genellikle ‘Direnç’ olarak algılanmakta, bu konuya çözüm olarak da üst yönetim baskısı düşünülmektedir. Bu yazılımların kullanılmamasının birçok sebebi olduğu gibi bunlardan biri de ‘Kullanılabilirlik’tir. Geliştirilen yazılımlar her ne kadar temel görevini yerine getirmek için yazılmış olsalar da; tasarımsal olarak da son kullanıcılar için basit ve kullanılabilir olmalıdır. Bu konunun detayına farklı bir yazımda ayrıca değineceğim.
Sonuç olarak; kaliteli bir yazılım için, öncelikle kalitenin ne demek olduğunu bilmeli, müşteriyi iyi anlamalı, kaliteyi yazılım yaşam döngüsü boyunca uygulamalı ve tüm ekiplerimizi bu konuda bilinçli ve sorumlu hale getirmeliyiz.