Emniyet-Kritik Sistemlerin Yazılım Doğrulama Süreci

advertisement
YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul)
Emniyet-Kritik Sistemlerin Yazılım Doğrulama Süreci
Software Verification Process in Safety-Critical Systems
Mehmet Özbek
Bilişim Teknolojileri Enstitüsü,
TÜBİTAK MAM, Kocaeli
Ayşegül Kurt
Bilişim Teknolojileri Enstitüsü,
TÜBİTAK MAM, Kocaeli
Ali Gürbüz
Bilişim Teknolojileri Enstitüsü,
TÜBİTAK MAM, Kocaeli
[email protected]
[email protected]
[email protected]
Özet
Günlük hayatın her alanında karşılaşılan yazılım, her
geçen gün daha da yaygın bir şekilde kullanılmaktadır.
Emniyet-kritik sistemler yazılımın önemli kullanım
alanlarından biridir. Günümüzde kimyasal madde
üretimi yapan fabrikalardan, nükleer santrallere,
nükleer tıpta kullanılan biyomedikal cihazlardan, uçak,
helikopter ve hızlı tren gibi ulaşım araçlarına, oradan
silah sistemleri ve uzay araçlarına kadar birçok
emniyet-kritik sistemin kontrolü emniyet-kritik
yazılımlarla gerçekleştirilmektedir. Bu sistemlerin
kullanımları sırasında meydana gelebilecek en küçük
bir hata bile önemli can ve mal kayıplarına neden
olabilir. Oluşabilecek muhtemel kazalar can ve mal
kaybının yanında, çevre için de önemli zararlara neden
olabilirler. Bu nedenle bu tür sistemlerin kontrolünde
kullanılan emniyet-kritik yazılımların doğrulama
sürecinin başarılı bir şekilde gerçekleştirilmesi ayrı bir
önem arz etmektedir. Bu çalışma kapsamında emniyetkritik sistemlerdeki yazılımların doğrulama süreci
anlatılmıştır. Donanım doğrulama süreci bu çalışma
kapsamında ele alınmamıştır.
Abstract
In daily life software is everywhere in most fields and
becoming much more popular day by day. Nowadays
safety-critical software is used to control many types of
systems from factories producing chemicals to nuclear
power plants, from biomedical equipments used in
nuclear medicine to transport systems like aircrafts,
planes, helicopters, weapon systems and rapid trains.
During the use of these systems any simple defect may
cause serious accidents leading life or equipment
(system) loss and ecological disasters. Thus the success
of verification process of safety-critical software used in
such kinds of systems is much more important. In this
study the verification process of safety-critical software
is explained. Hardware verification process is out of the
scope of this study.
1. Giriş
Emniyet-kritik sistem, herhangi bir hataya bağlı kaza
olması durumunda:
• Can kaybı veya ciddi yaralanma,
• Ekipmanın kaybı veya ciddi bir şekilde hasar
görmesi,
• Çevrenin büyük zarar görmesi
gibi sonuçlara neden olabilecek sistemlere denir.
Emniyet-kritik yazılımlar ise bu sistemlerde kullanılan
yazılımlara denir.
Emniyet-kritik yazılımların kullanımı her geçen gün
yaygınlaşmaktadır. Bu tür yazılımlar nükleer
reaktörlerin
kontrolünde,
zararlı kimyasalların
üretildiği ve kullanıldığı endüstriyel merkezlerin
kontrol sistemlerinde, radyasyon kullanan tıp
cihazlarında önemli bir kullanım alanı bulmaktadır.
Emniyet-kritik yazılımlar ayrıca kara/hava/deniz
platformlarında kullanılan silah sistemlerinde, uzay
araçlarında, uçak, helikopter, hızlı tren gibi ulaşım
araçlarında da kullanılmaktadır. Bu yazılımlar
günümüzde otomotiv sektöründe de kullanılmaya
başlanmıştır.
Tüm bu sistemlerde meydana gelebilecek en küçük bir
hata olumsuz sonuçlar doğurabilir. Emniyet-kritik
sistemlerde oluşabilecek hatalar yazılım kaynaklı,
donanım kaynaklı veya insan faktörüne bağlı olabilir.
Bu sistemlerin donanımları genellikle yedekli olarak
tasarlanır ve arıza durumunda kesintiye uğramadan
çalışmaya devam edebilmeleri sağlanır. Bu sistemlerin
yazılımlarının da özel bir şekilde geliştirilmesi,
kullanıma sunulmadan önce olası tüm hatalardan
arındırılması gereklidir [1]. Bu nedenle bu tür
sistemlerin otomasyonunda kullanılan emniyet-kritik
yazılımların geliştirilmesi ve doğrulanması ayrı bir
önem taşımaktadır.
Yazılımda bulunan bir hatayı tespit etmek genelde
donanım hatasını tespit etmekten daha zordur. Bu
durum hatanın giderilmesi için de söz konusudur.
Emniyet-kritik yazılımların içerdikleri olası hatalar,
YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul)
yazılımın üzerinde çalıştığı donanımı da (dolayısı ile
tüm sistemi) devre dışı bırakıp tehlikeli sonuçlara yol
açabileceğinden bu tür yazılımlar kullanılmadan önce
sistematik bir doğrulama sürecinden geçirilmelidir.
Böylelikle yazılımdan kaynaklanacak tehlikelerinin
önceden belirlenmesi ve bunlar için önlem alınması
sağlanır. Bu çalışma kapsamında emniyet-kritik
yazılımlar geliştirilirken kullanılan doğrulama süreci
anlatılacaktır.
2. Yazılım Doğrulama Süreci
Doğrulama süreci, geliştirilen sistemin, tam olarak
istenen sistem olduğunu, kendisinden beklenen
davranışları gerçekleştirdiğini ve sistemde istenmeyen
özelliklerin bulunmadığını, istenmeyen davranışlar
göstermediğini ortaya koyan süreçtir. Yazılım
geliştirmede,
geliştirilen
sistemin
müşteri
gereksinimlerini tam olarak karşıladığı ve yazılım
geliştirmenin her evresindeki çıktıların doğru olduğuna
karar verilmesi gerekir. Bu kararı verme süreci, yazılım
doğrulama sürecidir. Doğrulama süreci, bu gibi
nedenlerle yazılım geliştirmede en önemli süreçlerden
birisidir. Böylelikle yazılımın kusursuz olarak çalışması
sağlanır.
Yazılım doğrulama sürecinin temel amacı, geliştirilen
yazılımda bulunan olası hataları ortaya çıkarmak ve
bunların sonunda gerekli düzeltici eylemleri
gerçekleştirmektir. Bu sürecin planlanması ve
uygulanması, yazılım geliştirme sürecinin mümkün
olduğunca erken evrelerinde başlatılmalıdır [2].
Yazılım
projelerinde
gerçekleştirilen
yazılım
doğrulama süreci iki aşamada gerçekleştirilir. Bunlar
gözden geçirmeler ve yazılım testleridir.
Yazılım
Doğrulama
Statik
Doğrulama
Gereksinim
Belirtimleri
Ön
Tasarım
Detay
Tasarım
Yazılım
Gerçekleme
Şekil 1: Yazılım doğrulama yöntemleri
Dinamik
Doğrulama
Gözden geçirmeler statik doğrulama, yazılım testleri ise
dinamik doğrulama yöntemidir [3,4]. Gözden
geçirmeler (statik doğrulama), bir yazılım ürününün
hedeflenen kullanıma uygunluğunu incelemek, kendi
belirtimlerinden ve standartlardan sapmalarını tespit
etmek
amacıyla
gerçekleştirilen
sistematik
değerlendirmelerdir [5].
Yazılım Testleri (dinamik doğrulama), kaynak kodun
çalıştırılarak bir yazılım ürününün kendisinden
beklenen işlevsel davranışları gösterdiğini, kusurlar
içermediğini ortaya koymak için hazırlanan test
durumlarının koşturulmasıyla gerçekleştirilen eylemler
dizisidir.
Şekil-1, yazılım doğrulama sürecini şematik olarak
göstermektedir. Statik doğrulama, yazılım yaşam
döngüsünde her evre ile ilgilenirken, dinamik
doğrulama sadece geliştirilen yazılım ile ilgilenir.
Statik doğrulama; yönetimsel gözden geçirme, teknik
gözden geçirme, üzerinden geçme (walkthrough),
inceleme (inspection), denetleme (audit) gibi çeşitli
gözden geçirme teknikleri ile gerçekleştirilirken,
dinamik doğrulama ise işlevsel, yineleme (regression),
performans, yükleme, stres, güvenlik, vb. testlerle
gerçekleştirilir.
Gözden geçirmelerin amaçlarından bazıları:
• Yazılım yaşam döngüsünün her evresinde
üretilen bütün dokümanların amaçlarına
uygun olarak üretildiğini,
• Gereksinimlerin tam, tutarlı, test edilebilir vb.
özellikleri karşıladığını,
• Tasarımın belirlenen gereksinimlere uygun,
tutarlı ve gerçekleştirilebilir olduğunu,
• Üretilen kaynak kodun tasarımı tam olarak
gerçeklediğini,
ortaya koymaktır [6].
Gereksinimlerin gözden geçirilmemesi durumunda
gereksinimdeki eksiklikler veya çelişkilerin ya farkına
varılamayacak ya da yazılım yaşam döngüsünün ancak
ilerlemiş evrelerinde tespit edilecektir. İleriki evrelerde
tespit edilen hataların düzeltilmesi daha uzun düzeltici
faaliyetlere neden olacağından, proje takviminin
uzaması ve maliyetin artması riski ile karşılaşılacaktır.
Gereksinim gözden geçirmenin amaçlarından biri de
gereksinimin tasarım, gerçekleme ve testleri yapmak
için yeterli detayı içerip içermediğinin tespit
edilmesidir.
Kod
gözden
geçirmeler
üzerinden
geçme
(walkthrough) şeklinde gerçekleştirilir. Bu teknikte
amaç, kod içerisindeki mantıksal hataları, geliştirilen
kodun kodlama standartlarına uymadığı durumları ve
koddaki hatalı durumları
(ilklendirilmemiş
değişkenler, tanımlanmış ve hiç kullanılmamış
değişkenler vb.) tespit etmektir.
Statik doğrulama hata önleme ve tespitinde önemli bir
YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul)
role sahip olup yazılım geliştirmenin erken evrelerinde
bu gibi tespitlerin yapılmasını sağladığı için, proje
maliyetinin artmasına ve proje takviminin uzamasına
engel olarak projenin başarı ile tamamlanmasını sağlar
[6].
Dinamik
doğrulama
yazılımın
geliştirilmesi
tamamlandıktan sonra, test eylemleriyle gerçekleştirilir.
Yazılım projelerinde gerçekleştirilen yazılım testlerinin
amacı hataların varlığının ortaya konulmasıdır. Testler
ile yazılımda hataların varlığı ortaya çıkarılır, yokluğu
gösterilmez [7]. Başarılı bir test bir veya birden fazla
hatanın bulunmasını sağlayan testtir.
Statik ve dinamik doğrulama birbirini bütünleyen iki
tekniktir. Birbirine karşı olan iki doğrulama tekniği
değildir. Yazılım doğrulama sürecinde her ikisi birlikte
kullanılmalıdır.
Gözden
geçirmeler
yazılımın
belirtimlere ve standartlara uygunluğunun kontrol
edilmesi olduğundan bu doğrulama yöntemi ile işlevsel
ve performans, güvenlik gibi işlevsel olmayan özellikler
kontrol edilemez. Statik doğrulama tek başına,
geliştirilen
yazılımın
müşterinin
gerçek
gereksinimlerine uygun olduğunu garanti edemez. Bu
amaçla gözden geçirmelere yani statik doğrulamaya
bütünleyici olarak yazılım testleri yani dinamik
doğrulama gerçekleştirilir.
3. Emniyet-Kritik Yazılım Doğrulama Süreci
Emniyet-kritik yazılımlarının doğrulama sürecinin
temel amacı, yazılımın kusursuz olarak çalışmasının
yanında güvenilir (safe) olarak geliştirilmesini
sağlamaktır. Emniyet-kritik yazılımlar için doğrulama
süreci,
emniyet-kritik
olmayan
yazılımlardaki
doğrulama sürecinde olduğu gibi statik ve dinamik
doğrulama kapsamında gerçekleştirilir. Ancak bu tür
yazılımların
doğrulanmasında
mevcut
gözden
geçirmelere ek olarak izlenebilirlik, ek gözden
geçirmeler ve kapsama (coverage) analizleri
gerçekleştirilir. Ayrıca geliştirilen emniyet-kritik sistem
için de sistem emniyet analizleri yapılır. Şekil 2’de
emniyet-kritik yazılımların statik doğrulama yöntemleri
gösterilmiştir.
Kod
Gözden
Geçirme
Emniyet-kritik yazılımlarda, emniyet-kritik olmayan
yazılımların
statik
doğrulamasına
ek
olarak
izlenebilirlik, gereksinim kapsama (requirement
coverage) analizi ve test durumları gözden geçirmeleri
gerçekleştirilmelidir. Dinamik doğrulamada ise testlere
ek olarak yapısal kapsama (structural coverage) analizi
ve test durumları ile kaynak kod arasındaki
izlenebilirlik gerçekleştirilmelidir.
İzlenebilirliklerin
kurulması
emniyet-kritik
yazılımların geliştirilmesinde ayrı bir öneme sahiptir.
Tüm müşteri gereksinimlerinin yeterli bir şekilde
detaylandırılarak
sistem
gereksinimlerinin
oluşturulduğu,
sistem
gereksinimlerinin
detaylandırılarak bunlardan yazılım gereksinimlerinin
oluşturulduğu ancak izlenebilirlik ile sistematik olarak
doğrulanabilir. İzlenebilirlik gereksinim kapsaması için
gereklidir. Bununla birlikte tüm gereksinimlerin test
edildiğinin gösterilebilmesi için de test durumları ile
gereksinimler
arası
izlenebilirliğin
kurulması
gereklidir.
Test durumları ile kaynak kod arası kurulan
izlenebilirlik dinamik doğrulamada gerçekleştirilen
yapısal kapsama için gereklidir. Yapısal kapsama
analizleri ile emniyet-kritik yazılımın sınır değerlerinin
aşılması, uyarı-dikkat-ikaz bölgelerine girilmesi gibi
olası bütün çalışma durumlarına karşı test edilmesi
sağlanır.
Gereksinimlerden
kaynak
koda
doğru giden
izlenebilirliğe ileri yönde izlenebilirlik; kaynak koddan
gereksinimlere doğru olan izlenebilirliğe geri yönde
izlenebilirlik denir. Şekil 3’de izlenebilirlik yapısı,
görülmektedir.
Müşteri
Gereksinimleri
Statik
Doğrulama
Gereksinim
Gözden
Geçirme
Şekil 2: Emniyet-kritik yazılımlarda statik doğrulama
yöntemleri
İzlenebilirlik
Sistem
Gereksinimleri
Test
Durumları
Gereksinim
Kapsama
Yazılım
Gereksinimleri
Test Durumları
Gözden
Geçirme
Kaynak
Kod
İleri Yönde İzlenebilirlik
YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul)
Şekil 3: Emniyet-kritik yazılımlarda izlenebilirlikler
Emniyet-kritik yazılımların doğrulanma sürecinde
diğer bir önemli konu da kapsama analizleridir. Bu tür
yazılımlarda iki tür kapsamaya bakılması gereklidir.
Gereksinim kapsaması statik doğrulamada, yapısal
kapsama ise dinamik doğrulamada gerçekleştirilir.
Şekil 4’de izlenebilirlik ve kapsama ilişkisi
gösterilmiştir. Şekilde görüldüğü gibi, her bir sistem ve
yazılım gereksinimini doğrulayacak en az bir test
durumunun yazıldığının analizinin yapılmasına
gereksinim kapsama denir. Böylelikle dinamik
doğrulamada
testler
gerçekleştirilirken
tüm
gereksinimleri doğrulayacak olan test durumlarının
mevcut olduğu gösterilir. Yapısal kapsamada ise
koşturulan test durumları ile kodun ne kadarının
çalıştırıldığı ve çalıştırılmayan kod parçasının olmadığı
doğrulanır. Yapısal kapsama analizleri ile kod
içerisindeki tüm satırların çalıştırılarak test edilmesi
sağlanır.
Sistem
Gereksinimleri
Gereksinim
Kapsama
Test
Durumları
Yazılım
Gereksinimleri
Yapısal
Kapsama
Kaynak
Kod
Şekil 4: İzlenebilirlik- kapsama ilişkisi
Statik ve dinamik doğrulamanın otomatikleştirilmesi ve
yazılım test araçlarının etkin bir şekilde kullanılması
büyük önem taşır. Bu araçlar, özellikle DO178B gibi
rehberler ve standartların öngördüğü doğrulama
faaliyetlerinin gerçekleştirilmesinde önemli kolaylıklar
sağlar.
Emniyet–kritik yazılımların doğrulama sürecinde ek
olarak gerçekleştirilen bir diğer işlem ise test
durumlarının gözden geçirilmesidir. Test durumlarını
gözden geçirmedeki amaç doğrulanacak olan
gereksinimlerin üretilen test durumu veya durumları ile
gerçekten
doğrulanıp
doğrulanmadığının
anlaşılmasıdır. Böylece her gereksinimin yeter sayıda
ve doğru yapıda test durumu ile doğrulanabileceği
garanti altına alınmaya çalışılır.
Emniyet-kritik yazılımların doğrulama sürecine
getirilen bu ek denetimler ile geliştirilen kritik
yazılımın hedeflenen tüm işlevleri doğru bir şekilde
yerine getirdiği, hedeflenenin dışında yazılımın
içerisinde fazladan kod parçacıklarının olmadığı ve
hedeflenen işlevlerin uygun bir yapıda test edildiği
doğrulanarak kayıt altına alınmış olur.
Ayrıca emniyet-kritik sistemler geliştirilirken yukarıda
değinilen yazılım doğrulama faaliyetlerinin yanında
sistem emniyeti çalışmaları yapılır.
3.1 Sistem Emniyeti Çalışmaları
Emniyet kritik sistemler geliştirilirken sistem emniyeti
ile ilgili çalışmalar projenin tasarım aşamasından
itibaren başlar ve projenin tüm hayat döngüsü boyunca
emniyet çalışmaları diğer süreçlere paralel olarak
devam eder.
Emniyet-kritik sistem geliştirilirken yapılan olası
hatalar sistemde kusurlar oluşmasına neden olur, bu
kusurlar sistemin başarısızlığa uğramasına neden
olabilir. Beklenmedik davranışlara neden olan bu
başarısızlıklar tehlikeli durumlara neden olur. Sonuçta
tehlikeli durumlar da kazalara yol açabilir. Bu nedenle
emniyet-kritik sistemler geliştirilirken doğrulama ve
geçerleme faaliyetlerine ek olarak fonksiyonel tehlike
analizi, hata modları ve etkileri analizi, hata ağacı
analizi, olay ağacı analizi, neden-sonuç analizi gibi
çeşitli analiz teknikleri de kullanılır.
Sistem emniyeti, geliştirilen sistemde hiçbir hatanın
olmaması veya olası hataların etkilerinin en aza
indirilerek insan, mal kaybı ve çevresel zararlara neden
olmayacak
şekilde
sistemin
geliştirilmesini
sağlamaktır.
Sistemin müşteriye tesliminden önce gerekli emniyeti
sağlamak için gerçekleştirilecek bazı etkinlikler
şunlardır:
•
•
•
•
•
Fonksiyonel Tehlike Analizi
Hata Modları ve Etkileri Analizi (FMEA)
Hata Modları ve Etkileri Kritiklik Analizi
(FMECA)
Hata Ağacı Analizi
Sistem Emniyet Değerlendirmesi
YKGS2008: Yazılım Kalitesi ve Yazılım Geliştirme Araçları 2008 (9-10 ekim 2008, İstanbul)
Emniyet çalışmaları kapsamında öncelikle sistem
fonksiyonları belirlenir. Bu fonksiyonlara ilişkin
potansiyel tehlikeler ve bunlara neden olabilecek olası
hatalar ve bunların etkileri fonksiyonel tehlike analizi
ve FMEA ile tespit edilip, hatalar türlerine göre
sınıflandırılır. Hatalar ayrıca emniyet seviyelerine göre
de sınıflandırılır. Bu hataların olma olasılıkları hata
ağacı analizleri ile hesaplanarak ilgili tablolara
kaydedilir. Bu hatalardan Tablo-1 veya Tablo-2’ de
örnek olarak gösterilen emniyet sınıfı tablolarında
belirtilen emniyet hedeflerini sağlayamayanları tespit
edilerek tehlike analizi tablolarına eklenir. Bu analizler
sonunda, sistem emniyeti değerlendirme raporu
hazırlanır. Raporda yer alan emniyet hedefini
sağlayamayan hataların önlenmesi için gerekli düzeltici
eylemlerin gerçekleştirilmesi sağlanır. Düzeltici
eylemler yapılırken gerektiğinde tasarım evresine geri
dönülerek tasarım değişikliğiyle, istenen emniyet hedefi
sağlanır. Böylece emniyet kritik yazılımların kullanımı
sırasında olası tehlikelerin ortaya çıkma olasılığı
sıfırlanamasa bile kabul edilebilir düzeye indirilmesi
amaçlanır. Bununla beraber emniyet hedefinin
sağlanamadığı
durumlarda,
mutlaka
önceden
tanımlanmış prosedürler, ikaz ışıkları ve sinyaller gibi
uyarıcılar kullanılarak gerekli önlemler alınır.
Geliştirilen emniyet-kritik sisteme göre analizler
sırasında kullanılacak emniyet seviyeleri farklılık
gösterir. Örnek olarak DO178B’ye göre havacılık
alanındaki emniyet-kritik yazılımlar için kullanılan
emniyet seviyeleri şu şekildedir[8]:
Tablo-1 Emniyet Seviyeleri (örnek)
Seviye
Emniyet Sınıfı
Seviye A Ölümcül
(Catastrophic)
Seviye B Kritik (Hazardous)
Seviye C Önemli (Major)
Seviye D Az Önemli (Minor)
Seviye E Etkisiz (No effect)
Emniyet Hedefi
<10-9
<10-7
<10-5
>10-5
-
Nükleer enerji alanında kullanılan emniyet seviyeleri
ise IEC 61226 standardına göre şu şekildedir:
Tablo-2 Emniyet Seviyeleri (örnek)
Seviye
Açıklama
Seviye A Can ve mal kaybı ile
çevresel hasara yol
açabilecek
nükleer
kaza
Seviye B A seviyesi kazaya
neden olabilecek kaza
Seviye C Nükleer kaza olmayıp,
yardımcı sistemlerde
meydana gelebilecek
kaza
Emniyet Hedefi
<10-8
<10-7
<10-5
4. Sonuç
Sonuç olarak, günümüzün gelişen Türkiye’sinin
yazılım sektörü şu an olmasa da yakın gelecekte yoğun
bir şekilde kara/hava/deniz platformlarında kullanılan
silah sistemlerinde, ulaşım araçları ve otomotiv
sektöründeki sistem kontrol ve yönetiminde, kimyasal
fabrika otomasyonlarında, biyomedikal cihazlarda,
hatta nükleer santral kontrol ve yönetiminde ve uzay
araçlarında emniyet-kritik yazılımlar geliştirmeye,
artan bir hızla devam edecektir. Bu yazılımlar doğası
gereği yüksek risk taşımaktadırlar. Bu nedenle
emniyet-kritik yazılımların doğrulanma süreci diğer
yazılımların
doğrulanma
sürecinden
farklılık
göstermelidir.
Bu çalışma kapsamında insan, ekipman ve çevre
açısından büyük önem taşıyan emniyet-kritik
yazılımların doğrulama sürecinde üzerinde önemle
durulması gereken noktalara ve sistem emniyeti
çalışmalarına değinilmiştir
5. Kaynaklar
[1] Sarıdoğan, M., E., “Yazılım Mühendisliği”,
Papatya yay., 2008
[2] Anderson, C., “Exploring the software Verification
and Validation Process with Focus on Efficient
Fault Detection”, Licentiate Thesis.Lund Institute
of Technology, 2003
[3] Amey, P., Chapman,R., “Static Verification and
Extreme Programming”, ACM SIGAda, 2003
[4] Bormann,J.,Fedeli,A.,Frank,R.Winkelmann,K.,
“Combined Static and Dynamic Verification”,
Research Report, FP6-IST-507219, Version 2Public Version, 31 March 2005
[5] IEEE Standard 1028, “Software Engineering Standard
Committee of The IEEE Computer Society”, IEEE
Standard 1028. IEEE Standard for Software review,
Institute of Electrical and Electronics Engineers Inc.,
New York, 1998
[6] Richard,
L.K.,
“Testing
Requirements”,
http://www.projectmangler.com/content/regular/art
20050516.htm, 2005
[7] Widera, M., “Why Testing Matters in Functional
Programming”, 7th Symposium on Trends in
Functional
Programming,
University
of
Nottingham, TFP 2006
[8] RTCA DO-178B “Software Considerations in
Airbone Systems and Equipment Certification”,
RTCA, 1992
Download