TS ISO/IEC 25051 Standardı Kapsamında Yazılım Kalitesi ve Test Yönergeleri İnan ÖZKAN Türk Standardları Enstitüsü, Ankara iozkan@tse.org.tr Özet: Teknolojiyi hayatımızın önemli bir parçası haline getirmiş bulunmaktayız. Alışverişlerimizi, fatura ödemelerimizi, sosyal ilişkilerimizi, resmi işlemlerimizi ve daha birçok faaliyetimizi yazılımlar aracılığı ile yapabilmekteyiz. Yazılımları kullanırken bazen hata alır, bazen tam olarak nereye tıklamamız gerektiğini dakikalarca araştırır bazen de keşke şu özelliği de olsa diye düşünürüz. Kullanıcıların yazılımlardan memnun olmasını sağlayabilmek, geliştiricinin istediği faydayı görmesini mümkün kılmak için üretilen yazılımlar kaliteli üretilmek zorundadır. Kalite için yazılımlarda test vazgeçilmez bir unsur olmaktadır. Bu yazıda hem yazılım kalite gereksinimleri ve değerlendirmesinden hem de test dokümantasyonunun nasıl tutulması gerektiğinden bahsedilmeye çalışılmaktadır. Anahtar Sözcükler: TS ISO/IEC 25051, Yazılım Kalitesi Gereksinimleri, Test Yönergeleri, Cots Kavramı TS ISO/IEC 25051, Yazılım Kalitesi Gereksinimleri, Test Yönergeleri, Cots Kavramı Summary: Technology has big importance in our lives. We all, make shopping, bill payment, socaility, govermantal works and more with softwares. While using softwares, sometimes we get errors, sometimes we confuse about clicking which button and sometimes want something more from softwares. To make users satisfy and to make developer get what he wants from software, Softwares must be developed in a quality way. For quality, Test is a need for softwares. In this text we will talk about software quality and test instructions. Key Words: TS ISO/IEC 25051, Software Quality Requirements, Test Instructions, Cots 1. Giriş Yazılım sektörü hızla gelişen ve büyüyen sektörlerden birisidir. Hayatımızın her alanında yazılımlar tarafından kuşatılmış durumdayız. Yazılımların bize sağladıkları kolaylıklar ve imkanlar, yazılım üreticilerinin en büyük silahı halini almış durumdadır. Kullanıcı taleplerine karşılık verebilmek için sürekli gelişen, büyüyen, yeni yaklaşımlar üreten ve kendini sürekli olarak güncelleyen yazılım sektörü, yaptığı her geliştirmeden sonra yeni bir sorun, yeni bir hata ve açıklık, yeni bir acaba ile karşı karşıya kalmaktadır. Kullanıcıların ve üreticilerin tatmin olabilmesi için, sağlık geliştirme için ve geliştirme sonucu hem kullanıcıların hem de üreticilerin yaşanan sorunlardan dolayı maddi olarak zarara uğramaması, iş planlarının ertelenmemesi için yazılan yazılımların bir sistematik içerisinde geliştiriliyor olmaları kaçınılmazdır. Yazılacak yazılımlar ile ilgili olarak kullanılacak sistematik içerisinde nelere bakmamız gerektiği yazılımda hangi yönlerin bulunduğuna dair bilgiyi bize şimdiye kadar en iyi kalite modelleri sunmuştur. Yazılımda kalitenin nasıl ele alındığına bakmadan önce kalitenin ne olduğunun cevabını araştırmamız gerekmektedir. Kalite, Amerikan Kalite Kontrol Derneği (ASQC) ne göre bir mal ya da hizmetin belirli bir gerekliliği karşılayabilme yeteneklerini ortaya koyan karakteristiklerin tümü, Avrupa Kalite Kontrol Organizasyonu (EOQC) ye göre bir malın ya da hizmetin tüketicinin isteklerine uygunluk derecesi, Japonya Sanayi Standartları Komitesi (JIS) a göre ürün ya da hizmeti ekonomik bir yoldan üreten ve tüketicinin isteklerine cevap veren bir üretim sistemi ve Uluslararası Standartlar Teşkilatı (ISO) na göre de bir ürün ya da hizmetin belirlenen veya olabilecek ihtiyaçları karşılama kabiliyetine dayanan özelliklerinin toplamı ifadeleri ile tanımlanmaktadır. Kısaca tanımlamak gerekirse kalite, kusursuzluk anlayışına sistemli bir yaklaşımdır denilebilir. Yazılımda kaliteyi anlayabilmek için öncelikle yaklaşım ardından kalite sistemlerinden örnekleri anlamamız gerekmektedir. 2. Yazılım Kalitesine 5 Açıdan Bakış 2. Kalite Nedir?
Ürün merkezli bakış açısındaki ana fikir, eğer bir ürün iyi içsel özellikler ile üretilmiş ise dışsal özelliklerinin de o kadar iyi olacağı yönündedir. İç ve dış özellikler arasında nedensel bir ilişki kurmaya çalışmaktadır. Kullanıcı merkezli bakış açısındaki kalite ölçütü ise ürünün kullanıcı gereksinimlerini ve beklentilerini karşılayabilme yeteneğidir. Ürünün kalitesi kullanıcıyı ne kadar tatmin ettiği ile alakalıdır. Üretim merkezli bakış açısı imalat sanayii kökenine dayanan bir bakıştır. Bu bakış açısındaki temel soru ürün üretimden önce belirlenen gereksinim listesini ne kadar karşılıyor? sorusudur. Ürünlerdeki tekdüzelik gereksinimlere olan uygunluğu ifade eder. Ürün kalitesi, üretim süreçlerini geliştirerek arttırılabilir. Değer merkezli bakış, iki varlık tanımlar. Birisi mükemmellik ve diğeri değer. Kalite, mükemmelliğin ölçüsü, değer ise ederinin ölçüsüdür. Hangi mükemmellik seviyesinde en iyi değeri elde edeceğini ele alan bir bakış açısıdır. Son olarak, anlatılması gereken bakış açısı ise deneyüstü bakış açısı olarak adlandırılmaktadır. Deneyle kazanılması imkansız, akılla ilgili olan kalite ölçütüdür. Ne kadar deneyim kazanılırsa o kadar kaliteli ürün ortaya çıkacağını söyler. İzlenebilir bir biçime sokulamaz ya da bir kalite sistemi oluşturmasından bahsedilemez. 3. Yazılım Kalite Sistemleri 3.1. McConnell ın Yazılım Kalite Sistemi McConnell ın yazılım kalite sisteminde yazılım kalite ölçütleri ikiye ayrılmaktadır. Bu bakış açısı ile hem yazılım firmaları açısından hem de kullanıcı açısından yazılımın kalitesinin arttırılması için çaba harcanması gerekmektedir. 3.1.1. Dış Kalite ölçütleri Yazılım kullanıcılarını ilgilendiren ölçütlerdir. Doğruluk(Correctness): Yazılımın hatalar içermemesi, gereksinimlerde belirtildiği şekilde çalışması. Etkinlik(Efficiency): Bellek ve işlemci gibi sistem kaynaklarının en az oranda kullanımı. Güvenilirlik(Reliability): Sistemin her koşulda istenildiği gibi çalışması, hatalar arasındaki ortalama zaman aralığının (MTBF) yüksek olması. Güvenlik(Security): İzinsiz ve yetkisiz işlemler mümkün olmamalı. Bütünlük(Integrity): Veriler ve işlemler arasındaki tutarlılığın korunması. Uyarlanabilirlik(Adaptability): Sistemin değişik uygulamalar veya ortamlarda kullanılabilmesi için mümkün olduğunca az değişiklik gerektirmesi. Hassaslık (Accuracy): Sistemin kendisinden beklenen işi mümkün olduğunca iyi yapabilmesi. Sağlamlık(Robustness): Aykırı girişlere veya güç çalışma ortamlarına karşılık sistemin çalışmayı sürdürebilmesi. Kullanılabilirlik(Usability): Yazılımın kolay kullanılabilir olması. 3.1.2. İç kalite ölçütleri Yazılımı geliştirenleri ilgilendiren ölçütler. Yeniden kullanılabilirlik(reusability): Sistemin parçalarının başka sistemlerde kullanılabilmesinin kolay olması. Bakım kolaylığı (Maintainability): Yazılıma yeni yetenekler eklemenin, yazılımdaki hataları gidermenin veya yazılımın başarımını attırmanın mümkün olduğunca kolay olması. Esneklik(Flexibility): Yazılımın orijinal olarak tasarlandığı uygulamanın dışında çalışabilmesi için gerekli olan değişikliklerin olduğunca az olması. Taşınabilirlik(Portability): Yazılımın farklı donanım ve işletim sistemleri gibi değişik çalışma ortamlarına kolaylıkla aktarılabilmesi. Okunabilirlik(Readability): Kodun kaynak kodunun incelenmesinin kolay olması. Anlaşılabilirlik(Understandablility): Yazılımın sistem, bileşen ve kod düzeylerinde anlaşılabilirliğinin mümkün olduğunca kolay olması. Okunabilirlik sadece kod düzeyinde anlaşılabilirliği sağlar.
Sınanabilirlik(Testability): Sistemin istenen gereksinimleri karşılayıp karşılamadığının sınanabilmesinin bileşen ve tüm sistem çapında mümkün olduğunca kolay olması. 3.2. McCall s Yazılım Kalite Sistemi McCall yazılım kalite sistemini oluştururken ürünün farklı bakış açıları ile ele alınması gerektiğini belirtmiştir. ölçütleri: İşlevsel ölçütler Doğruluk, Güvenilirlik, Bütünlük, Kullanılabilirlik, Verimlilik Değiştirilme ölçütleri Bakım kolaylığı, Esneklik, Sınanabilirlik Taşınma ölçütleri Taşınabilirlik, Yeniden Kullanılabilirlik, Birlikte Çalışabilirlik Burada aşağıdaki şemayı incelememiz bizlere fikir verecektir: fonksiyonlar belirtilen ya da genel olarak olması gerektiğine inanılan fonksiyonlardır. Uygunluk: Belirlenmiş fonksiyonlar setini yazılımın sahip olması ve buna fonksiyonlar setine uygunluk becerisidir. Doğruluk: Yazılımın üzerinde uzlaşıya varılmış veya doğru etkiyi veya sonucu doğurması becerisidir. Birlikte Çalışabilirlik: Yazılımın belirlenmiş sistemlerle etkileşim içinde olabilme becerisidir. Güvenlik: Hatayla veya kasten programlara ve verilere yetkilendirilmemiş erişimi önleyebilme özelliğidir Uyum: Yazılımın uygulama ile ilişkili standartlara, anlaşmalara veya kanuni düzenlemelere ve dengi talimatlara uygun olması becerisidir Güvenilirlik - Bir yazılımın, belli bir zaman aralığında belli şartlar altında performans seviyesini koruyabilme kapasitesi ile ilişkili özellikler bütünüdür. Olgunluk: Yazılımdaki hatalar nedeniyle yazılımın çökme frekans sıklığının düşük olması becerisidir. Hata toleransı: Yazılım hatalarında veya tanımlanmış ara yüzün ihlal edilmesi durumlarında yazılımın belirlenmiş performans seviyesini sürdürebilme becerisidir. Kurtarılabilirlik: Sistemin göçmesi durumunda doğrudan etkilenen verinin geri yüklenebilme ve performans seviyesinin yeniden oluşturulabilme becerisidir. 3.3. ISO 9126 Yazılım Kalite Modeli Uluslararası Standardizasyon Örgütü olan ISO 9126 numaralı standardı ile yazılım kalite değerlendirmesine kendi bakış açısını yansıtmıştır. Daha çok ürün odaklı bir bakış açısıyla konuyu ele alan ISO aşağıdaki ürün karakteristiklerini ve alt karakteristikleri tanımlar: İşlevsellik Bir takım fonksiyonların varlığına ve bu fonksiyonların özelliklerine dayanır. Bu Kullanılabilirlik - Yazılım belli bir kullanıcı grubu tarafından kullanılabilmesi için harcanan çaba ile alakalı olan özellikler bütünüdür. Anlaşılabilirlik: Yazılımın mantıksal yapısının ve onun uygulanabilirliğinin kullanıcı tarafından tanınabilmesi için harcanması gereken kullanıcı çabası ile ilgili yazılım becerisidir. Öğrenilebilirlik: Yazılım uygulamalarının kullanıcı tarafından öğrenilebilmesi için harcanması gereken kullanıcı çabası ile ilgili yazılım becerisidir
İşletişebilirlik: Operasyon ve operasyon kontrolü için gereken kullanıcı çabası ile ilgilenen yazılım becerisidir Verimlilik - Yazılımın belli şartlar altında, belli bir performans seviyede kullandığı kaynak miktarı ile alakalı özellikler bütünüdür. Zaman Davranışı: Üretilen iş oranı ve işlem zamanları fonksiyonunu yerine getirirken talebin yanıtlaması ile ilgili yazılım becerisidir. Kaynak Yararlanımı: Kaynak kullanımı ve kaynak kullanım süresinin fonksiyonları yerine getirirken kullanılan miktarı ile ilgilenen yazılım becerisidir Bakılabilirlik - Yazılım üzerinde değişiklikler yapabilmek için harcanan çaba ile alakalı özellikler bütünüdür. Analiz edilebilirlik: Tanı eksikliği ve çökme sebepleri veya düzenlenecek parçaların belirlenmesinde tanımlama için gereken çaba ile ilgilenen yazılım becerisidir [5, 6]. Değiştirilebilirlik: Hata giderme, uyarlama veya çevresel değişiklik için gereken çaba ile ilgilenen yazılım becerisidir [5, 6]. Durağanlık: Modifikasyon sonucunda yazılımın beklenmeyen etki doğurması riski ile ilgilenen yazılım becerisidir [4-6]. TS ISO/IEC 9126 da durağanlık kavramı, kararlılık olarak adlandırılmıştır [5]. Test edilebilirlik: Uyarlanan yazılımın onaylanması için gereken çaba ile ilgilenen yazılım becerisidir. Taşınabilirlik - Bir çevreden başka bir çevreye taşınabilme yeteneğini ilgilendiren özellikler bütünüdür. Adapte Edilebilirlik: Göz önüne alınan yazılım için belirlenen amacın sağlanabilmesinde değişiklik gerçekleştirmeden yazılımın belirli bir farklı çevrede adapte edilebilme becerisidir. Kurulum Kolaylığı: Tanımlanmış çevrede yazılımın kurulumu için gereken çaba ile ilgili yazılım becerisidir. Uygunluk: Taşınabilirlik ile ilgili anlaşmalar veya standartlara bağlı yazılım geliştirilmesi ile ilgili yazılım becerisidir. Yer değiştirilebilirlik: Yazılımın başka bir yazılım ortamında kullanılabilmesi için fırsat sağlama ve harcanması gereken çaba ile ilgili yazılım becerisidir. 4. Standart (TS ISO/IEC 25051) ISO nun yayınlamış olduğu ISO/IEC 25000 serisi : Yazılım Ürünü Kalite Gereksinimleri ve Değerlendirmesi (Software Product Quality Requirements and Evaluation - SQuaRE) serisinin bir üyesi olan ISO/IEC 25051 standardı serinin uzantı bölümü denilen bölümünde yer almaktadır. Çünkü standart genel olan Ticari kullanıma hazır ürünün kalite gereksinimleri ve değerlendirmesi üzerinde durmaktadır. Standart temel olarak 3 ana başlıktan oluşmaktadır. - COTS yazılım ürünleri için Kalite Gereksinimleri - COTS yazılım ürünlerinin testi için test gereksinimlerini, test örneklerini ve test raporlarını kapsayan test dokümantasyonu gereksinimleri - COTS yazılım ürünlerinin uygunluk değerlendirmesi için komutlar Standardın kapsamındaki veya hedefindeki yazılım ürünleri ise Ticari olarak rafta kullanıma hazır (COTS) yazılım ürünleridir. Bunların içerisine, bilgi yönetimi ve bilgi sistemi yazılımları, kaynak yönetimi yazılımları, kurumsal planlama yazılımları, web uygulamaları gibi birçok sınıftan yazılım girebilir. Standarttan faydalanacak olan hedef kitle ise yazılım üreticileri, tedarikçileri, belgelendirme kuruluşları, test laboratuvarları gibi yazılım ve yazılım kalitesi ile ilgilenen herkestir. 4.1. COTS Yazılım Ürünleri için Kalite Gereksinimleri Bu bölümde kalite gereksinimi olarak üreticiden iki farklı doküman oluşturması beklenmektedir. Bu dokümanlar: - Ürün Açıklaması - Kullanıcı Dokümantasyonu 4.1.1. Ürün Açıklaması Kalite Gereksinimleri Kullanıcıya yazılımın özelliklerini açıklayan dokümanlardır. Kullanıcılar kendi gereksinim listeleri ile dokümanda belirtilen ürün
özelliklerini karşılaştırarak ürünün kendileri için uygun olup olmadığına karar verebilmelidirler. Her bir başlık altında birden fazla gereksinim, dokümanda olması gereken bilgileri ve özellikler sıralanır. Genel başlık listesi aşağıdaki gibidir: - İçerik (Tanımlar, Kısaltmalar, Referanslar vb) - İşlevsellik açıklamaları - Güvenilirlik açıklamaları - Kullanılabilirlik açıklamaları - Verimlilik açıklamaları - Sürdürülebilirlik açıklamaları - Taşınabilirlik açıklamaları - Kullanım kalitesi açıklamaları 4.1.2. Kullanıcı Dokümantasyonu için Gereksinimler Kullanıcı ürünü satın aldıktan sonra nasıl kuracağından nasıl kullanacağına kadar ürün ile ilgili tüm bilgilerin detaylı bir şekilde anlatılmasını istemektedir. Genel başlık listesi aşağıdaki gibidir: - Tamlık - Doğruluk - Tutarlılık - Anlaşılabilirlik - Öğrenilebilirlik - Çalışabilirlik 4.1.3. Yazılım Kalite Gereksinimleri Yazılımın dokümantasyon kısmının gereksinimleri haricinde içsel özelliklerinden bahseden kısımdır. Bu kısımda yazılımın kendisine özel kalite gereksinimlerinden bahsedilir. Yazılımın sahip olması gereken özelliklerin neler olduğundan ve bu özellikleri nasıl karşılayacağını belirtir. Genel başlık listesi aşağıdaki gibidir: - İşlevsellik - Güvenilirlik - Kullanılabilirlik - Verimlilik - Sürdürülebilirlik - Taşınabilirlik - Kullanım Kalitesi 4.2. Test Dokümantasyonu için Gereksinimler Standart yazılımın sahip olması gereken özelliklerinin denetlenebilmesi için test yönergeleri bölümünü de içerisinde barındırır. Yazılım kalite gereksinimlerinin sağlanması ve sağlandığının gözlemlenebilmesi için ihtiyaç duyulan testlerin nasıl yapılacağı, test öncesinde, test sırasında ve test sonrasından üretilmesi gereken test dokümantasyonunun nasıl olması gerektiğini tanımlar. Test dokümantasyonu başlığı altında 3 ana test dokümanından bahsedilir: - Test Planı - Test Açıklaması - Test Sonuçları 4.2.1. Test Planı Gereksinimleri Test için oluşturulması gereken ilk dokümanlardır. Bu dokümanların hedefi yapılacak testi tekrar edilebilir şekilde tanımlayabilmektedir. Kendi içerisinde 4 alt başlığı bulunur. - Yaklaşım : Yapılacak test yaklaşımının ne olduğunun anlatılması istenmektedir. - Geçti / Kaldı Kriteri : Testler sonucunda alınan çıktıların değerlendirilmesinde kullanılacak olan kriterdir. - Test Ortamı : Testin icra edileceği çevredeki gereksinimlerin tanımlandığı alandır. - Zaman Planı : Testlerin kim tarafından ve ne zaman yapılacağını takvimleştirmek isteyen gereksinimdir. 4.2.2. Test Açıklaması Gereksinimleri Testlerin tanımlandığı bölümdür. 2 alt başlıktan oluşur: - Test Örnekleri Açıklaması : Bir test senaryosu içinde olması gereken bilgileri listeler. (testin amacı, tek ve benzersiz bir tanımlayıcı, girdi ve beklenen çıktılar, testin
yorumlanması için gereken kriter vb.) - Test Prosedürleri : Bir test senaryosunun adımlarının icra edilebilmesi için izlenecek yolu ve yöntemi anlatan alandır. 3- Erdemir U., Tekin U., Buzluca F., Nesneye Dayalı Yazılım Metrikleri ve Yazılım Kalitesi 4- Rüdiger Lincke, Validation of a Standart- and Metric-based Software Quality Model, Licentiate Thesis, Vaxjö University 4.2.3. Test Sonuçları Gereksinimleri Testler sonucunda oluşturulması gereken raporları ve gereksinimleri tanımlayan bölümdür. 2 alt başlıktan oluşur: - Yürütme Raporu : Test senaryolarının kim tarafından, hangi tarihte icra edildiğini ve bulguların yazılmasının zorunlu kılan alan - Anormallik Raporu : Test icrası esnasında bulunan anormalliklerin (uygunsuzlukları / hataların) rapor edilmesini sağlayan alandır. Test yapan tarafın üreticiye en önemli geri dönüşleri bu raporlar sayesinde yapılmaktadır. 5. Sonuç Yazılım ürünlerinin, satın alacak kişi için gereksinim listesi kontrolü yapabilmesi, daha kaliteli üretilebilmesi, ürünlerin hedefledikleri ortamlarda doğru şekilde yüklenmesi ve beklenen işlevleri yerine getirmesi, kullanıcının ihtiyaç duyduğu bilgiye kolayca ulaşabilmesi, yazılımın bağımsız değerlendirmesinin ve testinin yapılarak belgelendirilmesi ile satın alanlar için güvenin oluşması gibi birçok gözle görülebilecek faydası mevcuttur. 6. Kaynakça 1- TS ISO/IEC 25051 Yazılım Mühendisliği Yazılım Ürünü Kalite Gereksinimleri ve Değerlendirmesi ve Test Yönergeleri Standardı, Türk Standartları Enstitüsü, Nisan 2011 2- ISO/IEC 9126 Software Engineering Ürün Kalitesi, ISO, 1991