Ana içeriğe geç

Kapsam Analizi Kontrol Listesi

Bu kontrol listesi (checklist), gereksinim tabanlı testlerin (requirements-based testing) kredi amaçlı (for-credit) koşusundan sonra hazırlanan kapsam analizlerinin akran gözden geçirmesi (peer review) içindir: gereksinim kapsam analizi (requirements-based test coverage analysis), yapısal kapsam analizi (structural coverage analysis), veri ve kontrol bağlaşımı (data and control coupling) analizi ve Seviye A'da kaynak koda izlenemeyen nesne kodunun analizi. Gözden geçiren, tercihen analizi yapmamış bir doğrulama mühendisidir; bu bağımsızlık Seviye A'da bütün kapsam hedeflerinde, Seviye B'de yapısal kapsam ve bağlaşım hedeflerinde zorunludur. Analiz testlerle birlikte artımlı yürüdüğü için liste her kapsam raporu sürümünde uygulanır; son kez doğrulamadan sertifikasyon teslimine geçişten önce (Ek A: Örnek Geçiş Kriterleri, G5).

Gözden geçirme, DO-178C'nin test kapsamı analizi faaliyetlerinin (§6.4.4) çıktısını sınar ve doğrulamanın doğrulanmasına ilişkin A-7 #3–#9 hedeflerine (objective) kanıt üretir. Ölçütlerin ne istediği 9. Yazılım Doğrulama bölümünde, boşluk sınıfları 17. Kapsanmayan Kodlar bölümünde anlatılır; burada tekrarlanmaz. Testlerin kendisi bu listenin konusu değildir: test durumlarının doğruluğu Test Durumu ve Prosedürü Kontrol Listesi, koşunun sonuçları Test Sonuçları Kontrol Listesi ile gözden geçirilir. Bu liste, o testlerin gereksinimleri ve kodu ne ölçüde sınadığına bakar. Bütün listelerin ortak kullanım kuralları genel bakış sayfasındadır.

Yüzdeden değil boşluk listesinden başlayın

Kapsam raporundaki yüzde, gözden geçirmenin sonucu değil girdisidir. Önce kapsanmayan yapıların listesini ve her birinin gerekçesini okuyun. Sonra raporda kapsanmış görünen birkaç kararı seçip hangi testin, hangi gereksinimle ve hangi beklenen sonuçla kapsadığını geriye doğru izleyin. İki yönde de takılmadan ilerleyebiliyorsanız rapora güvenmek için bir dayanağınız vardır.

Bir bakışta​

ÖzellikDeğer
DO-178C maddesi§6.4.4: 6.4.4.1 gereksinim tabanlı test kapsamı, 6.4.4.2 yapısal kapsam, 6.4.4.3 kapsam boşluklarının çözümü; kayıt §11.14
Ek A hedefleri: gereksinim kapsamıA-7 #3, yüksek seviyeli gereksinimler: A'da bağımsızlıkla, B, C ve D'de gerekli; A-7 #4, düşük seviyeli gereksinimler: A'da bağımsızlıkla, B ve C'de gerekli
Ek A hedefleri: yapısal kapsamA-7 #5, değiştirilmiş koşul/karar kapsama (modified condition/decision coverage, MC/DC): yalnız A'da, bağımsızlıkla; A-7 #6, karar kapsama (decision coverage): A ve B'de bağımsızlıkla; A-7 #7, satır kapsama (statement coverage): A ve B'de bağımsızlıkla, C'de gerekli
Ek A hedefleri: bağlaşım ve nesne koduA-7 #8, veri ve kontrol bağlaşımı: A ve B'de bağımsızlıkla, C'de gerekli; A-7 #9, kaynak koda izlenemeyen ek kod: yalnız A'da, bağımsızlıkla
Gözden geçirilen veriKapsam analizi sonuçları: gereksinim–test kapsam tablosu, yapısal kapsam raporu, boşluk listesi ve çözüm kayıtları, bağlaşım analizi; Seviye A'da nesne kodu analizi
Başvuru verisiYüksek ve düşük seviyeli gereksinimler ve iz verisi (trace data); mimarideki arayüz ve çağrı tanımları; test durumları (test case), test prosedürleri (test procedure) ve kredi koşusunun sonuçları; doğrulama planının kapsam bölümü; geliştirme planında dondurulan derleyici seçenekleri; sertifikasyon planındaki devre dışı kod beyanı
Kaydın gideceği yerGözden geçirme kaydı → yazılım doğrulama sonuçları (Software Verification Results, SVR); bulgular → temel çizgiye (baseline) alınmış veride problem raporu (problem report), temel çizgi öncesinde gözden geçirme kaydı (sınır konfigürasyon yönetimi planındadır)
İlgili şablonSVP Şablonu ve Yazım Rehberi: kapsam analizleri; derleyici, bağlayıcı ve yükleyici varsayımları
Madde önekiKAP

Gözden geçirmeye giriş koşulları​

  • Gözden geçirilecek kapsam raporları ve boşluk listesi bir sürümle tanımlanmış; hangi yazılım sürümüne, hangi test temel çizgisine ve hangi kredi koşusuna ait oldukları yazılıdır.
  • Kapsam verisinin toplandığı koşunun test sonuçları gözden geçirilmiş, başarısız testler problem raporuna bağlanmıştır.
  • Gereksinimler, mimari ve iz verisi temel çizgidedir; analiz bunların hangi sürümüne dayandığını belirtir.
  • Doğrulama planının kapsam bölümü (ölçüt, araç, ölçülen kod biçimi, boşluk kabul yetkisi) onaylı sürümündedir.
  • Gözden geçirenler belli; bağımsızlığın arandığı hedeflerde analizi yapan kişi gözden geçiren değildir.
  • Kullanılan kontrol listesinin sürümü kayda yazılacaktır.

Kontrol listesi​

Her madde, sonunda geçerli olduğu seviyeler ve dayanağı yazılı bir evet/hayır sorusudur; "Evet" istenen durumdur, "Hayır" yanıtı bir bulgudur (finding).

Gereksinim kapsamı​

  • KAP-01 Her yüksek seviyeli gereksinim, türetilmiş gereksinimler (derived requirements) dahil, iz verisinde en az bir test durumuna bağlı mı? Örneğin testle değil analizle karşılanan gereksinimde analiz kaydı iz verisine bağlanmış ve gerekçesi yazılı mı? (A–D · A-7 #3)
  • KAP-02 Her düşük seviyeli gereksinim iz verisinde en az bir test durumuna bağlı mı; bağlı olmayanlar adıyla listelenmiş ve her biri için test eklenmesi ya da gerekçeli analiz kararı kayıtlı mı? (A–C · A-7 #4)
  • KAP-03 Analiz eşlemeyle yetinmeyip yeterliliğe de bakmış mı: bağlı testler gereksinimin bütün aralıklarını, kiplerini ve durum geçişlerini sınıyor mu? Örneğin üç kip tanımlayan bir gereksinimde üç kipin de denendiği analizde görülüyor mu? (A–D · §6.4.4.1.b)
  • KAP-04 Yeterlilik analizi gürbüzlüğü (robustness) de kapsıyor mu: geçersiz girdi, sınır dışı değer ya da arıza durumu tanımlayan her gereksinim için bu durumları deneyen test gösterilmiş mi? (A–D · §6.4.4.1.b)
  • KAP-05 Gereksinim kapsamında bulunan her eksiklik çözülmüş mü: test eklenmiş ya da genişletilmiş, test edilemeyecek biçimde yazılmış gereksinimde ise test değil gereksinim düzeltilmiş mi? (A–D · §6.4.4.1.c)
  • KAP-06 Yapısal kapsamın toplandığı koşudaki her test durumu bir gereksinime izleniyor mu? Örneğin boşluk kapatmak için sonradan eklenen testler de iz verisinde adıyla bir gereksinime bağlı ve o gereksinimin beklenen davranışını bir çıktı üzerinden sınıyor mu? (A–C · §6.4.4.1.d)

Ölçüt ve ölçüm yöntemi​

  • KAP-07 Kapsam raporu her bileşen için o bileşenin seviyesini ve seviyenin istediği her ölçütün sonucunu ayrı ayrı veriyor mu: C'de satır kapsama (statement coverage), B'de ayrıca karar kapsama (decision coverage), A'da ayrıca MC/DC? Örneğin farklı seviyeli bileşenler içeren bir imajda Seviye A bileşeni yalnızca karar kapsamayla raporlanmamış ve ölçütler tek bir yüzdede birleştirilmemiş mi? (A–C · §6.4.4.2.a)
  • KAP-08 Araç, karar sayarken standardın tanımını kullanıyor mu: yalnızca dallanma noktaları değil, atamada, dönüş değerinde ya da parametrede kullanılan Boole ifadeleri de karar sayılıyor mu? Örneğin uyari = a && b; satırındaki kararın iki sonucu da raporda görünüyor mu? (A–B · A-7 #6)
  • KAP-09 Kapsam verisi, test sonuçlarıyla aynı yazılım sürümünden ve aynı prosedür sürümleriyle yapılan gereksinim tabanlı koşudan mı toplanmış? Örneğin başarısız ya da sonucu değerlendirilmemiş bir testin çalıştırdığı kod kapsanmış sayılmıyor mu? (A–C · §6.4.4.2.a)
  • KAP-10 Ölçüm, doğrulama planındaki araç, araç sürümü ve kod biçimiyle mi yapılmış; kapsam donatılmış (instrumented) derlemeden toplandıysa donatılmış koşunun geçti/kaldı sonuçlarının, donatılmamış imajla yapılan kredi koşusununkilerle aynı olduğu gösterilmiş mi? (A–C · iyi uygulama)
  • KAP-11 Çevirici dili (assembly language) modülleri, başlatma kodu ve imaja giren kütüphane kodu için kapsam kanıtı var mı: ölçüme dahil edilmiş, aracın ölçemediği yerde donanım izleme (hardware trace), hata ayıklayıcı betiği ya da elle analiz gibi planda tanımlı başka bir yolla ölçülmüş ya da kanıt hazır bir sertifikasyon paketinden geliyorsa paketin bu derleyici sürümüne ve yapılandırmaya uygulanabilirliği gösterilmiş mi? (A–C · §6.4.4.2.a)
  • KAP-12 Kapsam birden çok koşudan, test ortamından ya da test seviyesinden birleştirildiyse birleştirme kuralı doğrulama planında tanımlı mı ve koşular aynı yazılım sürümüne mi ait; değilse aradaki değişikliğin birleştirilen kapsamı geçersiz kılmadığı değişiklik etki analiziyle (change impact analysis) gösterilmiş mi? (A–C · iyi uygulama)
  • KAP-13 Kapsam nesne kodunda ölçüldüyse, nesne kodundaki ölçütün seviyenin kaynak düzeyinde gerektirdiği ölçütü karşıladığı gösterilmiş mi? Örneğin eniyileme (optimization) sırasında dalsız komutlara çevrilen kararlar ayrıca ele alınmış mı? (A–C · §6.4.4.2.b)

MC/DC​

  • KAP-14 Her bileşik kararda her koşul için bir bağımsızlık çifti (independence pair) gösterilmiş mi; eksik kalan çiftin hangi kararın hangi koşuluna ait olduğu raporda okunabiliyor mu? (A · A-7 #5)
  • KAP-15 Kullanılan MC/DC biçimi, benzersiz neden MC/DC (unique-cause MC/DC) ya da maskeleme MC/DC (masking MC/DC), doğrulama planında belirtilmiş ve araç bu biçimle mi hesaplıyor? Örneğin bağlı koşul (coupled condition) içeren kararlarda seçilen biçim tutarlı uygulanmış mı? (A · A-7 #5)
  • KAP-16 Kısa devre değerlendirmesi (short-circuit evaluation) çiftlerde doğru ele alınmış mı? Örneğin a && b kararında a yanlışken koşulan test, b için çiftin parçası sayılmıyor mu? (A · A-7 #5)
  • KAP-17 Çiftin iki testinde kararın farklı sonucu, testin beklenen sonuçla karşılaştırdığı bir çıktıda da görünüyor mu? Örneğin karar sonucu yalnızca kapsam aracında görünen, çıktıda hiçbir farka yol açmayan bir çift kanıt sayılmamış mı? (A · iyi uygulama)

Veri ve kontrol bağlaşımı​

  • KAP-18 Analiz mimarideki arayüz ve çağrı tanımlarından türetilmiş bir listeye mi dayanıyor: her veri bağlaşımı (paylaşılan değişken, mesaj, parametre) ve her kontrol bağlaşımı (çağrı, kip seçimi, görev etkinleştirme, kesme) listede bir kalem mi? (A–C · §6.4.4.2.c)
  • KAP-19 Listedeki her kalem için onu işleten gereksinim tabanlı test adıyla gösterilmiş mi; veri bağlaşımında değerin üreten bileşenden tüketene ulaştığı ve tüketenin davranışını değiştirdiği, kontrol bağlaşımında ise çağrının tasarımda öngörülen sırayla ve koşulda gerçekleştiği bileşenler birlikte çalışırken gözlenmiş mi? (A–C · A-7 #8)
  • KAP-20 Analiz sırasında mimaride tanımlı olmayan bir bağlaşım (örtük global değişken, adres üzerinden paylaşım) bulunduysa bulgu olarak kaydedilip mimariye ya da koda geri bildirilmiş mi? (A–C · iyi uygulama)

Nesne kodu izlenebilirliği​

  • KAP-21 Kaynak koddan nesne koduna izlenebilirlik analizi (source to object code traceability analysis), uçacak kodu üreten derleyici sürümü ve seçenekleriyle mi yapılmış; analiz edilen çevirici listesinin (assembly listing) ya da ters çevirme (disassembly) çıktısının uçacak imajla aynı derlemeden geldiği gösterilmiş mi? (A · A-7 #9)
  • KAP-22 Analiz temsilî örnek kodla yapıldıysa, proje kodunun örnekte bulunmayan bir dil yapısı kullanmadığı kodlama standardı (software code standards) denetimi ya da statik analizle, aynı yapının proje kodunda örnektekinden farklı derlenmediği de ayrıca gösterilmiş mi? Örneğin proje kodunun çevirici listesinden alınan bir örneklem, temsilî örneğin listesiyle karşılaştırılmış mı? (A · A-7 #9)
  • KAP-23 Bulunan her ek kod dizisi (çalışma zamanı denetimi, kütüphane çağrısı, atlama tablosu sınırı, koruma kodu) kaynağıyla birlikte listelenmiş, doğruluğu gözden geçirilmiş ve içindeki dalların her yönü testle işletilmiş ya da normal girdilerle işletilemeyen yön için hata enjeksiyonu (fault injection), gürbüzlük testi veya gerekçeli analiz kullanılmış mı? (A · §6.4.4.2.b)

Kapsam boşluklarının çözümü​

  • KAP-24 Kapsanmayan her yapı (deyim, karar sonucu, koşul çifti, bağlaşım kalemi) boşluk listesinde kaynak konumuyla tek tek yer alıyor ve test eksikliği, gereksinim eksikliği, gereksiz kod (extraneous code), devre dışı bırakılmış kod (deactivated code) ya da savunmacı programlama (defensive programming) gerekçesinden birine atanmış mı? (A–C · §6.4.4.3)
  • KAP-25 Test eksikliğine atanan boşlukta eklenen ya da genişletilen test gereksinimden türetilmiş, koşulmuş ve kapsam yeniden ölçülmüş mü; gereksinim kapsam analizinin bu eksikliği neden yakalamadığı da sorulmuş mu? (A–C · §6.4.4.3.a)
  • KAP-26 Gereksinim eksikliğine atanan boşlukta yazılan gereksinim gerçek bir ihtiyacı anlatıyor, gözden geçirilmiş, türetilmiş gereksinimse sistem emniyet değerlendirme sürecine (system safety assessment process) iletilmiş ve bu gereksinim için test eklenip koşularak kapsam yeniden ölçülmüş mü? Örneğin gereksinim, mevcut kodun davranışını olduğu gibi yeniden anlatmakla kalmıyor mu? (A–C · §6.4.4.3.b)
  • KAP-27 Gereksiz koda atanan her boşluk, ölü kod (dead code) dahil, ya bir problem raporuyla kaldırılıp etkilenen doğrulama değişiklik etki analizine göre yinelenmiş ya da kaynakta bırakıldıysa bağlayıcı haritasında (linker map) ve ters çevrilmiş imajda bulunmadığı gösterilip bu denetimin eniyileme ya da bağlayıcı seçeneği her değiştiğinde yinelenmesi derleme prosedürüne yazılmış mı? (A–C · §6.4.4.3.c)
  • KAP-28 Devre dışı bırakılmış kodun kategorisi belli ve yazılım sertifikasyon planında beyan edilmiş mi; birinci kategoride istem dışı etkinleşmenin (inadvertent enabling) önlendiği analiz ve testle, ikinci kategoride kapsam o konfigürasyonda ek testlerle gösterilmiş mi? (A–C · §6.4.4.3.d)
  • KAP-29 Savunmacı programlama yapısı diye gerekçelendirilen her boşluk bir gereksinime, tasarım kararına ya da kodlama standardı kuralına dayanıyor ve testle ulaşılamayan kısmın analizi yazarı dışında biri tarafından gözden geçirilmiş mi? (A–C · iyi uygulama)
  • KAP-30 Çözümü bu sürümde tamamlanmayan her boşluk açık bir problem raporuna bağlı ve kapsam analizi sonuçlarında görünür mü; sertifikasyona açık kalan boşluk varsa yazılım başarım özetine (Software Accomplishment Summary, SAS) de yansıtılmış mı? (A–C · iyi uygulama)

Araçla denetlenebilecek maddeler​

MaddeAraç türüGözden geçirene kalan
KAP-01, KAP-02, KAP-06Gereksinim yönetim aracı sorgusu: testi olmayan gereksinim, gereksinimi olmayan testEşlenen testlerin yeterliliği (KAP-03, KAP-04); testin gerçekten gereksinimden türetildiği
KAP-07, KAP-14Yapısal kapsam aracının raporuAraç ayarının karar tanımına ve MC/DC biçimine uyduğu (KAP-08, KAP-15); birkaç kararın çiftleri elle ya da MC/DC Test Seti Üretici ile yeniden hesaplanıp raporla karşılaştırılır
KAP-09, KAP-12Kapsam verisindeki yazılım ve test sürümlerini koşu kaydıyla karşılaştıran betikBirleştirme kuralının doğrulama planıyla tutarlılığı; farklı sürümden gelen kapsam için etki analizinin yeterliliği
KAP-18, KAP-19Statik analizle çıkarılan çağrı çizgesi ve paylaşılan değişken listesi; entegrasyon testlerinin kapsam verisiListenin mimariyle karşılaştırılması; tüketenin davranışının gerçekten değiştiğinin gözlenmesi
KAP-21, KAP-23Ters çevirici ve eski/yeni çevirici listelerinin farkını çıkaran betikEk kodun ne yaptığı, doğruluğu; dallarının işletildiğinin ya da işletilemeyen yönün gerekçeli analizinin kanıtı
KAP-24Kapsanmayan yapı dökümünü boşluk listesiyle karşılaştıran betikHer boşluğun sınıfının ve gerekçesinin doğruluğu

Bir maddeyi araç çıktısına güvenerek atlıyor ve çıktıyı başka bir yoldan doğrulamıyorsanız araç kalifikasyonu (tool qualification) sorusu doğar. Kapsam aracı da, iz verisini ya da izleme kaydını ayrıştıran proje betiği de bir hatayı gözden kaçırabilecek araçlardır (bkz. 13. DO-330 ve Yazılım Aracı Kalifikasyonu).

Sık bulgular​

BulguTipik nedeniİlgili madde
İz matrisi tam diye gereksinim kapsamı tam sayılmış; gürbüzlük durumlarına bakılmamışAnalizin yalnızca eşleme sorgusundan ibaret kalmasıKAP-03, KAP-04
Kapsam boşluğu koda bakılarak yazılmış, gereksinimsiz testle kapatılmışYüzdeyi kapatma baskısı; kök nedenin aranmamasıKAP-06, KAP-25
Karar kapsama raporu atamalardaki Boole ifadelerini saymıyorAracın varsayılan ayarının yalnızca dallanma noktalarını karar saymasıKAP-08
Kapsam, kod değiştikten sonra yeniden ölçülmemiş; rapor eski bir yazılım sürümüne aitKapsam koşusunun kredi koşusundan ayrı ve daha seyrek yapılmasıKAP-09, KAP-12
Bağlaşım analizi "bütün birim testleri geçti" cümlesinden ibaretBağlaşımın bileşen içi kapsamla karıştırılmasıKAP-18, KAP-19
Seviye A'da nesne kodu analizi, uçacak koddan farklı bir eniyileme düzeyiyle yapılmışAnalizin projenin başında yapılıp seçenek değişince yenilenmemesiKAP-21
Devre dışı kod "kapalı" denip bırakılmış, kapatma mekanizması sınanmamışKategorinin belirlenmemesi; sertifikasyon planında beyanın eksik kalmasıKAP-28
Boşluk listesi "savunmacı kod" satırlarıyla dolu, dayanak gösterilmemişAçıklanamayan her boşluğa savunmacı etiketi verilmesiKAP-29

İyi yazılmış bulgu​

Zayıf bulguİyi yazılmış bulgu
"MC/DC eksik.""KAP-14: fren_izleme.c içindeki ust_sinir_asildi && !bakim_kipi kararında bakim_kipi için bağımsızlık çifti yok; kapsam raporu yalnızca karar başına yüzde veriyor. Doğrulama planı koşul başına çift gerektirir; eksik çift gereksinim tabanlı bir testle tamamlanmalı ya da boşluk sınıflandırılmalı."
"Bağlaşım analizi yetersiz.""KAP-19: Arayüz listesindeki irtifa_gecerli bayrağı (sensör işleme → kontrol yasası) için yalnızca bayrağın doğru değeriyle koşan bir entegrasyon testi gösterilmiş; yanlış değerde kontrol yasasının davranışını sınayan test yok, eklenmeli."
"Gerekçe zayıf.""KAP-29: Boşluk listesinin 17. kaydı kip_kodu() içindeki default dalını savunmacı yapı sayıyor, ama dayanak olarak gereksinim, tasarım kararı ya da kodlama standardı kuralı göstermiyor; dayanak eklenmeli ya da dal gereksiz kod olarak sınıflandırılmalı."

Seviyeye göre uyarlama​

Maddelerin seviye etiketi, bağlı olduğu A-7 hedefinin geçerli olduğu seviyelerdir. Bir seviyede düşen maddeyi listeden silmek yerine kayıtta seviye gerekçesiyle "Uygulanmaz" diye işaretlemek, kayıtları sürümler ve projeler arasında karşılaştırılabilir tutar.

SeviyeUygulanan maddelerBağımsızlık
ABütün maddeler (KAP-01 … KAP-30)A-7 #3–#9'un hepsinde: analizi yapan kişi gözden geçiremez
BMC/DC (KAP-14 … KAP-17) ve nesne kodu (KAP-21 … KAP-23) grupları düşerYapısal kapsam ve bağlaşımda (A-7 #6, #7, #8) aranır; gereksinim kapsamında (A-7 #3, #4) aranmaz
CAyrıca KAP-08 düşer; yapısal ölçüt satır kapsamadırAranmaz
DYalnızca KAP-01, KAP-03, KAP-04 ve KAP-05 kalır; bu maddeler yalnızca yüksek seviyeli gereksinimlere uygulanırAranmaz

Seviye D'de yapısal kapsam ve bağlaşım hedefi olmadığı için boşluk listesi de beklenmez; gereksinim kapsamında bulunan eksiklik ise yine çözülür. Bağımsızlığın aranmadığı seviyelerde de analizi yazarından başka birinin gözden geçirmesi iyi uygulamadır (bağımsızlık). Bölümlenmiş bir yazılımda seviyesi farklı bileşenler varsa liste her bileşene kendi seviyesiyle uygulanır.

İlgili bölümler​