Yazılım Mühendisliği

Yazılım Nitelik Güvencesi

image_pdfimage_print

1.YAZILIM NİTELİK GÜVENCESİ (SOFTWARE QUALITY ASSURANCE)

Bilgisayar tabanlı sistemlerin düzgün çalışması, insanların isteklerini en iyi şekilde karşılamak için uygun niteliğe sahip olmaları gerekir. Nitelik kelimesiyle anlatmak istediğimiz bir ürün veya hizmetin belirlenen istekleri karşılayabilme yeteneğine yönelik özelliklerin tümüdür.

1.Yazılım Niteliği (Software Quality)

Yazılım mühendisliğinin temel amacı yüksek nitelikli yazılım üretmektir. Bunun için yazılımda belirli nitelikler belirleriz. Yazılım niteliği;

Kullanım amaçlarına göre işlev ve başarım gereksinimlerine uyum,

İşlev ve başarım gereçlerine uyum,

Kullanıcı isterlerine yanıt verebilme,

Yazılım geliştirme standartlarına sadık kalma,

Yüksek güvenirlilik sağlama,

Teslim sonrası destek,

İşlevselliklerle tanımlanır.

1.1 Nitelik Etmenleri (Quality Factors)

İyi bir yazılımda aranan ve ürünün kalitesini anlamamızda yardımcı olan nitelikler vardır. Nitelik etmenleri farklı ürünleri birbirleriyle kıyaslamak amacıyla 3 grup altında incelenir.

  • Kullanıma yönelik özellikler
  • Taşınmaya yönelik özellikler
  • Yenileştirmeye yönelik özellikler

Tablo 1. Nitelik Etmenleri Sınıflandırması

 

 

1.2 Nitelik Metrikleri (Quality Metrics)

Nitelik etmenlerinin ölçülmesi çoğu zaman oldukça zordur, hatta bazen de imkansızdır. Bu nedenle bazı metrikler ya da bir diğer ismiyle ölçütler tanımlanır her metrik için bir not verilir (1 ile 10 arasında) ve bu notlar yardımıyla sayışıl değerler elde edilir. Değerlendirmede dikkate alınabilecek metriklerin bir kısmı şunlardır;

  • Denetlenebilirlik
  • Doğruluk
  • Hassaslık
  • Başarım
  • Arayüzün yaygınlığı
  • Verilerin yaygınlığı
  • Bütünlük
  • Büyüklük
  • Tutarlılık
  • Hata dayanıklılığı
  • Verimlilik
  • Genişleyebilirlilik
  • Donanım bağımlılığı
  • İzlenebilirlilik
  • Modülerlik
  • Kullanım kolaylığı
  • Bakım kolaylığı
  • Belgelendirme
  • Müşteri tatmini

1.3 Nitelik Güvence Gereksinimi (Quality Assurance Requirement)

Her yazılım geliştirici grup, kurum ya da fırına niteliği artırmaya ve korumaya yönelik birtakım düzenler kurmaktadırlar. Her türlü düzenin en alt düzeyinde mühendislik işlerini yürüten bireyin nitelik anlayışı bulunmaktadır. En üst düzeyde ise, nitelikli yazılım geliştirebilmek üzere standartları koyan, yöntemleri belirleyen ve bunların uygulanmasını sağlayan yazılım nitelik güvence ekibi bulunur. Yazılım geliştiren grup veya firmalar bu düzeyler arasında herhangi bir yerde bulunabilirler.

Genel yönetim işlevlerinin nitelik politikası belirleyen ve uygulayan bölümüne Nitelik Yönetimi denir. Nitelik yönetimi uygulaması için geliştiricinin yeterli nedeni olması gereklidir.

Nitelik güvence etkinliklerinin olumlu yanları;

Geliştirilen yazılımın sonradan ortaya çıkan kusurları azaltılmış olur

Test ve bakım aşamalarında daha az işgücü gerekir
Yüksek güvenilirlik müşteri memnuniyetini arttırır
Bakım maliyeti düşer
Yazılımın tüm yaşam çevrimi maliyeti düşer
Çalışanlar arasında kurulan iş disiplini sayesinde verimlilik artar.

Nitelik güvence etkinliklerinin olumsuz yanları;

Küçük örgütlenmelerde ayrı bir ekip oluşturmak güçtür. Çünkü asıl geliştirme etkinlikleri için ayrılacak özkaynaklar dahi kısıtlıdır.

Alışık olmayan kurum ya da firmalar için köklü değişiklikler gerekir.

Belirli bir düzene uyum sağlama kültürel bir sorun olabilir.

Yazılım geliştirme etkinlikleri dışında önemli bir bütçe ayrılması gereklidir.

1.4 Nitelik Güvence Etkinlikleri (Quality Assurance Activities)

Yazılım mühendisliği yöntembilimleri;

Yazılım mühendisliği çözümleme, tasarım, gerçekleştirim ve test için kullanılan yöntemlerin ve araçların tanımlandığı belirli geliştirme yöntemlerini ve standartları uygulayan bir yöntembilime göre yürütülür.

Standartlar ve yöntemler;

Yazılım nitelik güvencesi, çözümleyici ve tasarımcının işini daha iyi yapabilmesine yardımcı olan bir dizi kurallardan oluşan teknik yöntemlerle yapılır. Bu iş için çeşitli araçlarda kullanılabilir. Nitelik güvence, çeşitli standartları olan bu yöntem ve araçların tanımlanması ve kullanımının kabul edilmesiyle başlar.

Nitelik güvence denetimi;

Nitelik güvence denetimi nitelikle ilgili etkinliklerin ve sonuçlarının. planlanan düzenlemelere uyup uymadığının, bu düzenlemelerin etkili olarak uygulanıp uygulanmadığının ve amaca ulaşmak için uygun olup olamadığının sistematik ve tarafsız olarak incelenmesidir.

Resmi teknik gözden geçirmeler;

Resmi teknik gözden geçirmeler, her aşamada ortaya çıkan her ürün için uygulanan bir inceleme yöntemidir. Çözümleme ve tasarımın nitelikli bir şekilde yapıldığının denetlenmesi için teknik personel ile belirli kurallara bağlı olarak toplantılar yapılır. Bu gözden geçirme toplantıları yazılımın testten geçirilmesi gibidir; hatta, olası hataların önceden bulunup giderilmesini sağladığı için daha da etkindir.

Yazılım düzenleşim yönetimi;

Yazılımın herhangi bir geliştirme aşamasında ya da kullanımı sırasındaki bakım aşamasında isterlerde çeşitli değişiklikler yapılması olağandır. Fakat denetim altında yapılmayan her değişiklik, aslında, yeni bir kusura neden olması veya yan etkiler yaratması açısından potansiyel birer tehlikedir. Yazılım niteliğini düşürecek bu tehlikeyi en aza indirgemenin tek yolu da düzenleşim yönetiminin bir parçası olan değişiklik denetim sürecinin uygulanmasıdır.

Ölçme;

Ürün niteliği ile ilgili temel veriler genellikle kullanıcı ile beraber çalışan geliştirme, test, destek, hizmet ve satış birimlerinde toplanır ve değerlendirilir. Yazılım niteliğini ölçmek, harcanan özkaynakları saptayabilmek ve daha iyi planlama yapabilmek için yazılım metrikleri kullanılır. Nitelik güvence etkinliklerinden biri olan yazılım metrikleri önceden belirlenir, toplanır, değerlendirilir ve somut sonuçlar elde edilerek daha sonraki geliştirme etkinliklerinde kullanılır. Teknik gözden geçirmeler, denetimler, değişiklik denetimi, testler ve diğer nitelik güvence etkinliklerinin kayıt altında tutulması ile projenin bir tarihçesi oluşturulur. Gerektiğinde bu tarihçe hem hata gidermede bir başvuru kaynağı olarak kullanılabilir, hem de diğer projeler için örnek oluşturur. Geliştirici personel bu teknik ve nitelik güvence kayıtlarını inceleyerek daha nitelikli yazılım üretir.

Test;

Yazılımın bir ürün haline gelip kusurlarından arındırılması için önceden tasarlanmış test yordamlarıyla bir dizi test yapılır. Dikkatli bir şekilde ve belirli yöntemlere göre yapılan testler hataların ayıklanması için önemli bir aşama olur. Ancak, nitelik güvence denetimi altında yapılmayan testler yalnızca deneme-yanılma taktiği ile, ya zaman elverdiği sürece yapılır ya da yeteri kadar kusursuz yazılım üretilinceye kadar devam ettirilir. Her iki durumda da aşırı maliyet artışı söz konusudur.

Belgelendirme;

Yapılan her işin ve etkinliğin seçilmiş olan yöntembilimin gerektirdiği şekilde belgelendirilmesi, hem yapılanların kayıt altına alınması hem de daha sonraki geliştirme ve değişiklik işlerinde kolaylık sağlaması nedeniyle nitelik güvence etkinliklerinin tanımında kullanılır.

1.6 Nitelik Güvence Yönetimi (Quality Assurance Management)

Her projede mutlaka belirli bir nitelik güvence yönetimi bulunmalıdır. Bir yazılım geliştirme kurumu ya da firması yazılım nitelik güvence etkinliklerini yerine getirmeni karar verdiyse belirli standartlar seçilerek kullanılmalı ve bir yazılım nitelik güvence planı (software Quality assurance plan) hazırlanmalıdır. Bu plan için IEEE  730 standardı kullanılabilir.

Yazılım nitelik güvence planı geliştirme etkinlikleri boyunca nitelik yönetimine ait ne tür işlerin yapılacağını hangi standartların kullanılacağını gözden geçirme ve denetimlerin ne şekilde yapılacağını belirleyen ve diğer destek etkinliklerini tanımlayan bir yol haritası gibidir.

Nitelik güvence yöneticisi bulunmalıdır. Bu yöneticinin sorumlulukları maddeler halinde sıralanırsa;

Proje yönetimine yardımcı olmak üzere kendi sorumluluk alanıyla ilgili bir plan (Nitelik Güvence Planı) hazırlamak ve proje yönetimine onaylatmak,
Nitelik Güvence Planı kapsamında düzenli aralıklarla proje etkinliklerini değerlendirmek, ortaya çıkan hataları derlemek, düzeltici işlem talebinde bulunmak ve takibini yapmak; bu kapsamda durum raporları hazırlamak ve yönetimin dikkatine sunmak,

Proje uygulamalarını standartlar ve sözleşme isterleri doğrultusunda denetlenmesiyle ilgili etkinliklerin yürütülmesinde proje yönetimine yardımcı olmak,

1.Kendi sorumluluk alanıyla ilgili olarak yönetime yardımcı olabilecek tüm bilgileri derleyip toplamak.

2.Yönetimin dikkatine sunmak, proje yönetimi ile ilgili toplantılara katılmak, gözden geçirmeleri yapmak
3.Belgelendirme çalışmaları sonunda ortaya çıkan belgeleri onaylamak ya da geri çevirmek

4. Belgelerde içerik denetimi yapmak, içeriğin şablonlara uygunluğunu denetlemek

5.Yazılım geliştirmede kullanılan gereçlerin seçilmiş olan standartlara uygunluğunu denetlemek

6.Yazılım geliştirme süreciyle ilgili her türlü planlamayı onaylamak

7.Geliştirilen her ürünün kayıt altında olduğunu denetlemek, belgelerin ve kaynak kodların tahsisli yerlerinde olduğunu denetlemek, eksiklikleri uyarmak ve tedbir alınmasını sağlamak

8.Uygulama alanı ile ilgili standartları ve yenilikleri takip etmek

1.7 Toplam Nitelik Yönetimi (Total Quality Management)

Toplam Nitelik Yönetimi, yürütülen bir işin bütününde etkinliğin, esnekliğin. iyileştirici ve rekabeti artırıcı düzenlemelerin tümüne verilen addır. Örgütlenmenin her düzeyinde ve çalışan herkesi kapsar. Gerçekten etkin bir örgüt içinde tüm bölümler birlikte çalışırlar; her birey diğerini etkiler ve kendisi de etkilenir. Nitelik tanımlaması işletme içinde yukarıdan aşağıya doğru tanımlanır.

Niteliği sağlamada başarı yatay örgüt yapısındadır. Örgüt içindeki bir bölümün başarısızlığına neden olabilecek yanlış ürün üretilmesini ya da geliştirilmesini diğer bölüm önlemeye çalışır. Toplam Nitelik Yönetimi uygulayarak fırına ya da kurumlar asıl hedeflere odaklanırlar, yüksek başarım elde ederler, sorunları daha kısa sürede çözerler, ürün niteliğini giderek artırırlar. Tabii ki, bunun için niteliği anlamak, inanmak, belirli bir politika ortaya koymak, iyi örgütlenmek, iyi planlama ve ölçüm yapabilmek, denetimi sağlamak gerekmektedir.

1.8 Örgütleme Ve Nitelik (Organizing and Quality)

Örgütlenmelerin olgunlaştırılması için yazılım ve süreç arasındaki ilişkinin bilinmesi ve uygulanması gereklidir. Süreç (process), belirli bir işi yapmakta izlenen yordamdır. Genellikle, altsüreçlerden, onlar da adım ve işlemlerden oluşur.

Sürecin amacı belirli bir standart oturtmak, değişkenliği azaltmak ve iyileştirmeye olanak sağlamaktır. Süreç yazılı halde bulunur, tekrarlanabilir şekilde tanımlanmıştır. Girdileri ve çıktıları vardır.

Örneğin;

İsterler çözümlemesi süreci.

2.NİTELİK SİSTEM STANDARTLARI (QUALITY SYSTEM STANDARDS)

Standart oluşturan kuruluşlar;

Amerikan Ulusal Standartlaştırma Enstitüsü (American National Standardization Institute -ANSI)

  1. BSI(ingiltere)
  2. AFNOR(fransa)
  3. Amerika Birleşik Devletleri Savunma Bakanlığı (Department Of Defense-DOD)
  4. NATO
  5. Uluslararası Standartlaştırma Ofisi(ınternational Standardization Office-ISO)
  6. Elektrik Ve Elektronik Mühendisleri Enstitüsü(ınstitute Of Electrical And Electronics Engineers-IEEE)
  7. Yazılım Mühendisliği Enstitüsü (Software Engineering Institute-SEI)

Standart oluşturan kuruluşlar birbirleri ile sürekli ilişki içerisinde olup ortak standart üretmektedirler. Ortak çalışmalar sonucu uluslararası kabule sahip nitelik yönetim sistemi standartları oluşmuştur:

  1. Watts Humphrey ve Yetenek olgunluk Modeli (CMM)
  2. ISO-9000 Nitelik Yönetimi ve Nitelik Güvence Standartları Seçim ve Kullanım Rehberi
  3. ISO 9001 Nitelik Sistemleri Tasarım, Geliştirme, Üretim, Tesis ve Servis İçin Nitelik Güvence
  4. ISO 9002 Nitelik Sistemleri Üretim ve Tesis İçin Nitelik Güvence
  5. ISO 9003 Nitelik Sistemleri Son Muayene ve Testlerde Nitelik Güvence
  6. ISO 9004 Nitelik Yönetimi ve Nitelik Sistemi Öğeleri
  7. Trillium (Kanada)
  8. SPICE

2.1 CMM (Capability Maturity Model)

CMM Amerika Savunma Bakanlığının 1980’lerde ortaya çıkan yazılım krizine çözüm bulması amacıyla Carnegie Mellon Üniversitesinden yardım istemesi üzerine üniversitede kurulan SEI tarafından geliştirilmiştir. İlk CMM yazılım için geliştirilmiş ve 1990’da yayımlanmıştır.

CMM yazılım süreç iyileştirmede kullanılacak araç ve olgunluk sorguları aracılığıyla oluşturulmuş bir modeldir. Bu modelin ortaya çıkmasının nedeni yazılım sektöründeki kalite ve verimlilik sorunlarıdır. Bunlar; zaman, para, durağanlık olarak sayılabilir. Tüm bu sorunlar için yazılım sürecinin olgunluğu hakkında karar vermek ve endüstrideki pratiklerle karşılaştırmak amacıyla çeşitli ölçüm araçları ortaya atılmıştır.

CMM asıl olarak olgun olmayan bir süreçten olgun ve disiplinli bir sürece giden evrimsel bir yol çizer. Olgun bir yazılım örgütlenmesine giden aşamaları öncelik sırasıyla veren bir modeldir.

CMM nin yapısı;

1.Olgunluk düzeyleri (maturity levels):Süreç yeteneğini tanımlar.

2.Anahtar süreç alanları (key process area):hedefleri belirler.

3.Ortak öznitelikler (common features):gerçekleştirim ve kurumsallaşma için gerekli özelliklerdir.

4.Anahtar uygulamalar (key practices):Temel etkinliklerdir.

CMM uygulaması için sıradüzensel olarak;

Düzey belirleme,

Bir sonraki düzeye geçmeden önce eksiklikleri belirleme,

Eksiklikleri sıradüzensel 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.

2.2 CMMI (CMM Integration)

Çeşitli uygulamalardan edinilen deneyimlerle, pazarlama, sistem, yazılım ve donanım temsilcilerinin bir arada çalışmalarıyla verimliliğin arttığı gözlemlenmiştir. CMM ile sağlanan başarımdan sonra, sistem mühendisliği, insanlar, tümleşik ürün geliştirme, yazılım edinme, yazılım nitelik güvence, ölçme gibi konulardaki istekler üzerine başka CMM’ler geliştirilmiştir.

Bu kadar çok çeşitli model olunca da birbirine karışmalar, örtüşmeler ve tezatlar oluşmuş, kolay anlaşılır olmayan arayüzler ve standartlar ortaya çıkmıştır. Bunlara ek olarak ISO 9001 ve ISO 9000-3 denetimlerinin kullanılması sonucunda da yüksek maliyetler ve kafa karıştırıcı uygulamalar oluşmuştur.

Karşılaşılan sorunları çözmek üzere, var olan gelecekte var olacak modelleri birleştirecek bir yapı kurmak ve başlangıç için bir tümleşik modeller seti oluşturmak amacıyla, Amerikan Savunma Bakanlığı’nın desteğiyle SEI tarafından CMM Tümleştirme (CMM Integration) Projesi başlatılmıştır.

Projenin amacı, üç kaynak modelini birleştirmekti. Bunlar:

  • Capability Maturity Model for Software (SW-CMM) v2.0
  • Electronic Industries Alliance Interim Standard (EIA/IS) 731
  • Integrated Product Development Capability Maturity Model (IPB-CMM) v0.98

CMMI sürüm-1.1 Mart 2002 yılında ortaya çıkartılmıştır.

CMMI, sürekli ve basamaklı olmak üzere iki gösterim şekli kullanmaktadır. Sürekli (continuous) CMM gösterimi yetenek düzeylerini tanımlarken basamaklı CMM gös-ı terimi olgunluk düzeylerini tanımlar. Yetenek düzeyleri, bir örgütün herbir süreç alanında süreç iyileştirmede gösterdiği başarı için uygulanır. 6 yetenek düzeyi vardır:

Eksik (incomplete)

Yerine getirilen (performed)

Yönetilen (managed)

Tanımlı (defined)

Nicel olarak yönetilen (quantitatively managed)

Eniyilenen (optimizing)

2.3 Trillium

Trillium modeli kanada iletişim sektörü tarafından geliştirilmiştir.

Yol haritası yaklaşımını getirmiştir bu yaklaşım ürün geliştirme süreci içerisinde bir örgüt alanına bir gereksinime yada bir öğeye odaklanan uygulamalar seti olarak tanımlanır. Trillium un 8 yetenek alanından oluşur.

Örgüt süreç niteliği

İnsan kaynakları geliştirme ve yönetimi

Süreç

Yönetim

Nitelik

Sistem geliştirme uygulamaları

Geliştirme ortamı

Müşteri desteği.

 

2.4 TickIT

Daha çok İngiltere ve Norveç yazılım geliştiricileri tarafından desteklenen TickIT, yazılım sektöründeki yetkili belgelendirme kuruluşları aracılığıyla nitelik yönetim sistemi belgelendirmesi yaparak;

  • Pazar güvenilirliğini artırmak.
  • Bu sektördeki nitelik yönetim sistemi denetleyicileri için profesyonel yöntemleri geliştirmek.
  • Yetkili bir kılavuz yayınlamak.

Amacıyla oluşturulmuş bir yordamlar topluluğudur.

ISO 9001 ’in karşılaştığı bir takım güçlükler nedeniyle ISO 9000-3 çıkarılmış, onun da yetersiz kalması üzerine TickIT modeli ortaya çıkarılmıştır. TickIT, değerlendirdiği nitelik sisteminde ISO 9001 standardına göre uyumsuzluk olup olmadığını araştırır.

Yazılım geliştiricilerin nitelik güvence sistemlerinin belgelendirmesi Ingiliz ve Norveç kurumları tarafından yetkilendirilmiş üçüncü parti bağımsız ve yetkili organlar tarafından yapılır. İngiltere devlet daireleri tarafından resmi olarak tanınan TickIT içinde ISO 9001, ISO 9002 ve ISO 9003 standartları kullanılmaktadır.

Değerlendirme en az iki aşamalı bir süreçtir. llkinde, örgütün nitelik sistemi, standarda (Ticle için: ISO 9001) göre değerlendirilir. İkincisinde, örgütün pratikte gerçekten kendi nitelik sistemine ve standarda uyumlu çalışıp çalışmadığı denetlenir, nitelik sisteminin etkinlik derecesine bakılır.

2.5 SPICE (Software Process Improvement and Capability dEtermination )

Yazılım Süreci  İyileştirme ve Yetenek Belirleme’dir. 1995 yılında ISO ve IEC tarafından çıkarılmıştır. Yazılım geliştirme projelerinin yönetim tarafı çoğunlukla yetersiz planlama, geliştirme süreçlerin tam anlaşılmaması, iyi bir yönetim çerçevesinin olmayışı gibi problemlerle karşı karşıyadır. Bu çerçevede daha disiplinli geliştirme süreçleri için standartlar geliştirilmeye başlanmıştır. SPICE da bu standartlardan biri olup,  yazılım süreçlerini iyileştirmek ve süreç yeteneklerini belirler.

SPICE İlkeleri;

  • Standartlaşma
  • Değerlendirme, yetenek belirleme ve iyileştirme
  • Diğer modellere uyum sağlama
  • Gelişmeyi ölçme
  • Nesnel, tutarlı ve tekrarlanabilir olma
  • Sertifikasyon amacı taşımaz

SPICE süreç boyutu ve yetenek seviyeleri olmak üzere iki boyuttan oluşur.

Süreç boyutları 5’e ayrılmaktadır. Bunlar:

  • Müşteri-satıcı süreçleri (Customer-supplier)
  • Mühendislik süreçleri (Engineering)
  • Yönetim süreçleri (Management)
  • Destek süreçleri (Support)
  • Organizasyon süreçleri (Oganization)

İkinci boyut olan yetenek düzeyleri altı adet olarak tanımlanmıştır. Bunlar;

Düzey Düzey adı Açıklama
5 Eniyileşen (optimizing) Geri beslemelerde sürekli iyileştirme vardır
4 Kestirilebilir(predictable) Denetim altındaki süreçte ayrıntılı başarım ölçümleri toplanır ve ona göre yönetilir.
3 Yerleşmiş (established) Örgütlenmede belgelendirilmiş standart süreçler ve uygulamalar vardır.
2 Yönetilen (managed) Süreç tanımlanır. İş planı uygulanır
1 Yerine getirilen(performed) Planlama yapılmadan süreçler genel olarak yerine getirilir.
0 Eksik (incomplate) Başarı sadece bireylere bağlıdır.

Tablo 2. SPICE ye ait yetenek düzeyleri

2.6 ISO 9000

Uluslararası Standartlaştırma Örgütü (International Standardization Organization -ISO) tarafından yayınlanan ISO 9000 serisi Nitelik Sistemi ve Güvencesi Standartları Özellikle Avrupa‘da büyük ilgi görmüştür.

1987 yılında ilk ISO 9000 (Ed. l ) serisi standartlar oluşturulmuştur. 1994 yılında ikinci ISO 9000 (Ed.2) serisi standartlar tamamlanmıştır.

ISO 9000 serisi standartlar çok çeşitlidir, ancak ana kaynaklar ele alındığında, yayınlanmış ve sürekli güncellenen bu nitelik sistemlerine ilişkin beş temel ISO standardı vardır.

ISO 9000

Nitelik Yönetimi ve Nitelik Güvence Standartları Seçim ve Kullanım Rehberi

ISO 9001
Nitelik Sistemleri Tasarım, Geliştirme, Üretim, Tesis ve Servis İçin Nitelik Güvence

ISO 9002

Nitelik Sistemleri Üretim ve Tesis İçin Nitelik Güvence

ISO 9003

Nitelik Sistemleri Son Muayene ve Testlerde Nitelik Güvence

ISO 9004

Nitelik Yönetimi ve Nitelik Sistemi Öğeleri

ISO 9000 Kalite Standartları Serisi, kuruluşların kaliteye önem verdiğini ve kalite ihtiyaçlarını karşılayabileceklerini müşterilerine kanıtlayacak etkin bir kalite sistemini kurulması, dökümante edilmesi ve sürekliliğinin sağlanması konusunda yol gösterir. Bu nedenle bir çok resmi veya özel kuruluş tarafından ihale şartı olarak istenmektedir.

Yazılımda nitelik için ISO 9001 öngörülebilir. Ancak bu standart bir süreç modelinden farklı olarak, dışarıya nitelik güvencesi vermeye yönelik belgelendirmeye önem verirler. Bir denetim yöntemine gereksinim duyan bu standartlar, firma düzeyi hakkında ayrıntı değil, genel bir bilgi verirler

2.7 AQAP (Allied Quality Assurance Publications) 150/160

NATO içinde müşterek uygulamaların temini için standardizasyon anlaşması (STANAG-MOS) çerçevesinde Müttefik Nitelik Güvence Yayınları (Allied Quality Assurance Publications-AQAP) 1983’ten itibaren uygulamaya alınmıştır. NATO tarafından ISO nitelik standartlarındaki son gelişmeler göz önüne alınarak savunma sistemlerinin edinilmesinde ISO 9000 serisi nitelik güvence standartlarının 1994’ten itibaren uygulanması zorunlu kılınmıştır. Daha sonra, ISO 9000 1994 sürümü dikkate alınarak 1995 Şubat’ında yeni AQAP belgelerinin kullanımına başlanmıştır.

NATO ülkelerinde askeri amaçlı ürün geliştiren firma veya kuruluşlarda AQAP-150 veya 160 belgesi aranmaktadır. Bu belgeler her devletin yetkilendirdiği organlarca verilmekte, belirli aralıklarla yenilenmektedir. Türkiye’de bu konudaki denetimleri Milli Savunma Bakanlığı yapmakta, savunma sistemleri ile ilgili ihalelere giren firmalardan bu belge istenmektedir.

2.8 Karşılaştırma

                                              Tablo 3.Nitelik sistem standartları karşılaştırılması

3. RESMİ NİTELİK GÜVENCE SİSTEMLERİ (OFFICIAL QUALITY ASSURANCE SYSTEMS)

Nitelikli bir yazılım geliştirmek her geliştiricinin sorumluluğundadır. Bu sorumluluğun belirli kurallar çerçevesinde yürütülmesi için resmi yöntemler ortaya atılmıştır. Bu yöntemlerden birkaçı şunlardır;

  • Doğruluğun kanıtlanması
  • İstatiksel yaklaşım
  • Temiz oda süreci
  • Yardımcı araç desteği

3.1 Doğruluğun Kanıtlanması

Bilgisayar bilimlerinde bir programın istenen özellikleri yerine getirip getirememesine verilen isimdir. Buna göre şayet bir program, istenen durumu tam ve eksiksiz yerine getiriyor, istenmeyen sonuçlar ortaya çıkmıyor ve program başladıktan sonra her durumda başarılı bir şekilde bitiyorsa bu programa tam doğru ( total correctness) ismi verilir.

Bazı program hataları yalnızca zarar verir, ancak bazıları yaşamı ve ekstremiteyi tehlikeye atabilir. Bir daha ki sefere, uçağın seyir sisteminde doğru program davranışının önemini düşünerek bir dakika harcayın. Üreticinin programın bir takım ampirik testlere dayanılarak doğru olduğunu “düşün” istemesini mi, yoksa kesin ve kesin bir ispatı mı tercih edersiniz?

Program doğruluğunun hem mühendislik hem de teorik sorun olarak önemini ortaya koyduğumuzda, dikkatimizi aslında onu çözmeye dönebiliriz.

Örneğin, bir programın belirli bir belirtimi doğru bir şekilde uyguladığını kontrol eden (veya kanıtlayan) genel algoritmaların bulunmadığı kanıtlanabilir. Daha basit problemler için de genel çözümler veremiyoruz.

Örneğin, rasgele bir programın belirli bir girdi için yürütmeyi durdurup durdurmayacağına karar verebilecek bir algoritma yoktur.

Yazılımın doğruluğunun matematiksel olarak kanıtlanması oldukça pahalı bir yöntemdir.Ancak, otomatik kod üreten yazılım araçlarının geliştirilmesinde bu  yaklaşımın da kullanımında yarar vardır.

3.2 İstatiksel Yaklaşım

İstatistiksel olarak toplanmış bilgilere göre niteliği artırıcı yaklaşımda şu aşamalar bulunur:

  1. Yazılım kusurları toplanır ve sınıflandırılır.
  2. Her kusur izlenerek neden kaynaklandığı bulunur ve bu bilgiler de kaydedilir.
  3. Neden olan ortak kusurlar bulunur.
  4. Bulunan kusurlar düzeltilir.

Bu yöntemin işleyebilmesi için uzun süreli, yoğun bir geliştirme yapılması ve bilgilerin eksiksiz toplanması gereklidir. Yazılım kusurlarının oluşmasına neden olan en yaygın nedenler arasında şunları sayabiliriz:

  1. Hatalı yapılmış isterler çözümlemesi ortaya çıkan hatalı belirtim
  2. İsterlerin yanlış anlaşılması
  3. Kodlama standartlarına uyulmaması
  4. Veri yapılarında hata
  5. Tutarlı olmayan modül arayüzleri Tasarımda mantık hatası
  6. Tasarımı koda geçirmede yapılan hata
  7. Kodlamada yapılmış hatalar
  8. Yetersiz yapılmış testler
  9. Hatalı veya eksik belgelendirme
  10. İnsan-makine arayüzündeki eksiklikler ve hatalar
  11. Dikkatsiz ve isteksiz çalışma

Yazılım kusurunun oluşmasına neden olan durumun belirlenmesinden sonra her bir kusura ilişkin istatiksel veriler toplanır ve bir sıraya konulur. Buradan yola çıkılarak yeni bir hata oluştuğunda çözüm için incelenecek yol konusunda bir fikir elde edilmiş olur

3.3 Temiz Oda Süreci (Clean Room Process)

Nitelikli yazılım geliştirmenin ve doğruluğunu kanıtlanmanın bir tekniği de temiz oda sürecidir (cleanroom process).Endüstride çeşitli alanlarda kullanılan bu teknikte ilke olarak geliştirme ortamının her türlü zararlı etmenden arındırıldığı kabul edilir.

Örneğin, yüksek nitelikli bir elektronik tümdevre üretim hattında havanın temizliği esastır. Bunun için ortam hataya sebebiyet verecek en küçük toz parçacıkları dahi ortamdan uzaklaştırılır.

Burada hatanın oluşmasına engel olmak amaçlanır. Benzer bir şekilde istatiksel nitelik denetimi uygulanarak, matematiksel olarak yapılan doğrulama işlemleri ile, ilk testlerden bile daha önce, hataların büyük ölçüde bulunup giderilmesi sağlanır. Amaç, hatanın oluşabileceği ortamı ortadan kaldırmaktır. Fakat bunun için matematik modellerinin çok iyi geliştirilmiş ve oturtulmuş olması gereklidir. Bu nedenle, temiz oda süreci daha çok, küçük ölçekli yazılım projelerinde kullanılmaktadır.

3.4 Yardımcı Araç Desteği 

Günümüzde pek çok yardımcı araç nitelikli kod üretimi ve üretilen kodun sınanması (bellek ve işlemci kullanımının ölçülmesi gibi) amacıyla kullanılmaktadır.

Sıkça kullanılan yazılım modüllerinin ortak hale dönüştürülmesi ve kalıpsal bir yapıya sokulması hem hataları azaltır hem de geliştirme süresini düşürür. Bunun yanında, verilen parametrelere göre aynı tür kod üreten araçlar da bulunmaktadır. Hatta, bu koddan belgelendirme de yapabilen araçlar da vardır.

Genel olarak nitelik güvence ekibi tarafından benimsenmiş araçlarla yapılan yazılım geliştirme sonucu elde edilen ürün yüksek nitelikli olarak kabul edilir.

4.REFERANSLAR

  1. https://www.slideshare.net/nuricankaya/capability-maturity-model-7650442
  2. http://www.turhaltemizer.com/2014/04/ts-isoiec-15504-spice-software-process.html
  3. http://www.avinal.net/index.php/tr/insaat-proje-yoenetim-suerecleri-safhalar/yueruetme/kalite-yoenetimi/iso-9000-nedir
  4. https://www.cs.cornell.edu/courses/cs312/2004fa/lectures/lecture9.htm
  5. http://bilgisayarkavramlari.sadievrenseker.com/2009/09/10/program-dogrulugu-program-correctness/
  6. Dr. M. Erhan SARIDOĞAN Yazılım Mühendisliği (İstanbul Papatya yayıncılık Ocak 2008 ) 327-347
0
0

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir