Bilgi Merkezi
Yazılımda Kalitenin Önemi
Son yıllarda teknolojinin hız kazanmasıyla birlikte Endüstri 4.0 kavramı ortaya çıktı ve bir çok ülke buna adapte olmaya başladı bile. Günümüzde hemen her sektörde bir yazılım ihtiyacı bulunmakta ve süreçler bu şekilde sürdürülmektedir. Muhasebe departmanları, Satış Departmanları, Üretim departmanları vb. birçok departmanda sistemler yazılım (ERP Programları) üzerinden yürütülmektedir. Yazılımın bu kadar içinde olduğu bir dünyada yazılıma olan ihtiyaç her geçen gün daha da artmakta ve önem kazanmaktadır.
Müşterilerin ürün ve/veya hizmetten beklentileri gereksinimlerinin karşılanması ve devam ettirilmesi yönündedir. Hal böyleyken kalite olmazsa olmaz hale gelmektedir. Üretim fabrikalarında bile otomasyona bağlı birçok makine kullanılmaktadır. Otomatik CNC robotları, kaynak robotları vb. bunları çoğaltabiliriz. Bunlar bir yazılıma bağlı oldukları için iş sürekliliği ve üretimin aksamaması ve en iyi kalite de ürün elde edilebilmesi için de yazılım kalitesi ön plana çıkmaktadır.
Yazılım kalitesi, projenin en başından sonuna kadar her aşamasının kontrol edilmesini ve tespit edilen aksaklıkların giderilmesi sürecini içermektedir.
Yazılım firmaları kalite ve belirli standartlara tabi olduğunda, yazılım geliştirme süreçlerini ve yazılımın belirli bir kalitede üretilmesini güvence altına almakta ve müşteriler için güven oluşturmaktadır. Bunların yanında iş yerinde çağdaş bir çalışma ortamı sağlamakta ve bu sayede çalışan motivasyonunu artırmakta birlikte yazılımın pazarlanmasını kolaylaştırmaktadır. Standartlar ve standartların getirdiği yükümlülükler ile birlikte firma minimum maliyet imkânları ile daha iyi rekabet imkânı kazanmakta ve firmanın sürekli gelişimine, olumsuz yönlerinin iyileşmesine katkı sağlamaktadır.
Yazılım geliştirme süreci yapısı itibariyle riskler taşıyabilir. Bu riskler, teknik veya program ile ilgili olabilir. Bu durum, yazılımın beklentileri karşılamasına engel olabilir. Kalite güvencesi, bu hedefleri sağlamaya ve riskleri azaltmaya yöneliktir. Yazılım kalite güvencesi ile ilgili kuruluş ve sertifikalara örnek olarak, Yazılım Mühendisliği Enstitüsü (Software Engineering Institute - SEI), IEEE Standartları, Amerika Kalite Topluluğu, Yazılım Kalitesi Topluluğu (Society for Software Quality), Kalite Güvence Enstitüsü (Quality Assurance Institute), Amerika Kalite Topluluğu (American Society for Quality) gibi kurumlar sayılabilir.
Bir yazılım ürününün belirli bir standardı veya standartları karşılaması sonucu belgelendirilmesi ile ürün tüm müşterilere hitap eder ve kaynakların daha verimli ve etkin kullanımını sağlayarak maliyeti optimize eder, hizmetleri çalışır durumda tutar, hizmet süreçlerinde güvenlik, sürat ve erişilebilirlikte artış, zaman tasarrufu ve rekabet avantajı sağlar. Müşterilerin ihtiyacının doğru analizi, zamanında ve uygun destek ile müşteri memnuniyeti sağlanır.
Yazılım projesine baktığımızda temelde 5 ana başlık karşımıza çıkmaktadır. Planlama, Analiz, Tasarım, Uygulama ve Test. Tüm bu adımlar bir yaşam döngüsü içinde ele alınır. Projenin büyük veya küçük olması durumuna göre belli yaşam döngülerinden faydalanılır. Bunları şöyle özetleyebiliriz:
Waterfall Model (Şelale Modeli): Planlama ile başlayıp testlere ulaşana kadar sisteme çok dokunma şansımız yoktur. Ancak yeni bir şey yapılacaksa tekrar planlamaya gelinip yeni bir proje olarak ele alınabilir. Uzun süren projeler için çok ciddi bir tehdittir. Çünkü bir proje 1-2 yıl sürüyorsa şayet 1-2 yıl boyunca bu projenin hangi aşamasında ise o aşamasının bitmesini beklemek zorundayızdır. Müdahale etme şansımız yoktur.
V Model: V-Şeklinde model aslında biraz daha alta inip yukarı çıkan ve her aşamasının karşılığının olduğu bir modeldir. “Bir şey yapıldı ama bunun karşılığı doğru mudur?” sorgulamasının yapıldığı, en alta bulunan kodlamaya kadar inip sonra da yukarıya doğru sistemi taşıyan bir yapıya sahiptir.
Artırımlı Model (Iteratif Incremental): Modelde bir döngü söz konusudur. Planlama aşaması ile başlar. Planlamalardan geçip bu planlamanın ardından bir döngüye girilir. Her fazda her süreç üzerinden geçilir.
Spiral Model:
Spiral model, diğer modellerden farklı olarak süreci oluşturan aşamalardan tekrar tekrar geçilmesini ve her geçişte projenin ilerleme kat etmesini hedeflemektedir.
Bu modeller projenin tipine ve büyüklüğüne göre belirlenmektedir. En yaygın kullanılan model Iteratif Incremental modelidir.
CMM (Capability Maturity Model)
Olgunluk anketini (maturity questionnaire) kullanarak yazılım sürecini değerlendiren CMM, Amerikan Savunma Bakanlığı’nın 1970-80’lerde yaşanan yazılım krizine çözüm bulması amacıyla Carnegie Mellon Üniversitesi’nden yardım istemesi üzerine, üniversite bünyesinde kurulan Yazılım Mühendisliği Enstitüsü (Software Engineering Institute-SEI) tarafından geliştirildi. Genellikle büyük boyutlu firmalara hitap eden CMM’ de, hem dışa karşı belgelendirme, hem de iç süreçlerin detaylı bir şekilde değerlendirilmesi söz konusudur.
CMM 5 seviye (1-5 arası) sunar. Parantez içerisinde her seviyeye ait anahtar süreç alanları verilmiştir:
1.Başarının sadece bireylere bağlı olduğu “başlangıç” seviyesi (initial).
2.Yazılı olmayan ve kısmen tutarlı süreçlerin olduğu “tekrarlanabilir” seviye (repeatable-isterler yönetimi, proje planlaması, proje takibi, taşeron yönetimi, kalite güvencesi, konfigürasyon yönetimi).
3.Şirket kültürünün yazılı hale geldiği “tanımlı” seviye (defined-süreç odaklaması, süreç tanımı, eğitim programı, bütünleşik yazılım yönetimi, yazılım ürün mühendisliği, gruplar arası koordinasyon, ayrıntılı değerlendirme)
4.Tanımlı hale gelen süreçlerin artık ölçülebildiği, performans göstergelerinin değerlendirilebildiği “yönetilen” seviye (managed-nicel süreç yönetimi, yazılım kalite yönetimi)
5.Kurumsallaşmanın gerçekleşip, geri beslemelerin sistematik bir şekilde değerlendirilmeye başlandığı “en iyilenen” seviye (optimizing-hata önleme teknoloji değişim yönetimi, süreç değişim yönetimi)
CMM uygulaması için hiyerarşik olarak, seviye belirleme, bir sonraki seviyeye geçmeden önce eksiklikleri belirleme, eksiklikleri hiyerarşik sıraya dizme, eksikliklerin giderilmesi için plan yapma, planı hayata geçirmek için kaynak ayırma ve uygulama, döngüye yeni baştan başlama aşamaları uygulanır.
CMM değerlendirme süreci 6 aşamadan oluşur:
1.Kurumun şeçildiği “seçim” aşaması.
2.Değerlendirme sürecinin onaylandığı “taahhüt” aşaması.
3.Değerlendirme grubunun eğitildiği “hazırlık” aşaması.
4.Uygulamalanın değerlendirildiği “değerlendirme” aşaması.
5.Değerlendirmenin raporlandığı “rapor” aşaması.
6.Değerlendirme izlendiği “takip” aşaması.
ISO 9000
International Standards Organization tarafından 1987 yılında yayınlanan, ISO 9000 serisi Kalite Sistemi ve Güvencesi Standartları özellikle Avrupa’da büyük ilgi gördü. ISO 9000 kalite yönetimi ve kalite güvencesi için, ISO 9000-3 yazılımda kalite sistemi denetleyicileri ve uygulayıcılarına rehberlik için bir standarttır. Yazılımda kalite için ISO 9001 ön görülebilir. Ancak bu standartlar bir süreç modelinden farklı olarak, dışarıya kalite güvencesi vermeye yönelik belgelendirmeye önem verirler. Denetim mekanizmasına gereksinim duyan bu standartlar, şirket seviyesi hakkında detay değil, genel bir bilgi verirler.
Kalite değerlendirme uygulaması için hiyerarşik olarak, belgelendirilecek kurumunun seçilmesi, ön değerlendirme aktiviteleri, değerlendirme süreci, yeniden değerlendirme aşamaları uygulanır.
Sonuç
Kalite asla tesadüf değildir. Ancak bilinçli bir çabanın sonucudur. (John Ruskin).
Kaynaklar
- “Software Engineering A Practitioner’s Approach” (7th. Ed.), Roger S. Pressman, 2013.
- “Software Engineering” (8th. Ed.), Ian Sommerville, 2007.
- “Guide to the Software Engineering Body of Knowledge”, 2004
- Jenner, Software Quality Management and Iso 9001, John Wiley and Sons, 1995
- IBM Systems Journal, Vol 33, No:1, 1994, Software Quality
- ISO/IEC TR15504:1998(E) International Standart Organization, 1998
Oğuz TAŞBOLAT
KalDer Üyesi
TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş.
Kalite Sistemleri Sorumlusu