Yazar: Dr. Alp Kaçar
Giriş
Havacılık sektöründe yazılımın tarihi, 1960’lı yıllarda dijital bilgisayarların uçaklarda kullanılmaya başlamasıyla şekillenmeye başladı. İlk başlarda, bu yazılımlar yalnızca basit hesaplamalar ve otomatik pilot gibi temel görevler için kullanılıyordu. Ancak, 1970’ler ve 1980’ler boyunca, yazılımın rolü hızla büyüyerek uçuş kontrol sistemlerinden navigasyon ve iletişim sistemlerine kadar genişledi. Bu dönemde, havacılık yazılımlarının güvenilirliği ve emniyeti konusunda artan bir bilinç oluştu ve bu da DO-178 gibi yazılım geliştirme standartlarının ortaya çıkmasına zemin hazırladı. 1990’lı yıllara gelindiğinde, yazılım, havacılık sistemlerinin ayrılmaz bir parçası haline geldi ve modern uçaklarda milyonlarca satır kod içeren karmaşık yazılım sistemleri geliştirilmeye başlandı. Günümüzde, yazılım, hem ticari hem de askeri havacılıkta kritik bir bileşen olarak, uçuş emniyetini ve verimliliğini artırmada temel bir rol oynamaktadır. DO-178, ilk kez 1980’lerin başında havacılık yazılımı için emniyet standartlarını belirlemek amacıyla geliştirildi. 1992’de revize edilerek DO-178B adını aldı ve bu sürüm, 2011’de daha gelişmiş süreçleri ve yöntemleri içeren DO-178C’nin yayımlanmasına kadar sektör standardı olarak kullanıldı. Yazılım geliştirirken emniyetini sağlamak için DO-178C, havacılık için oluşturulmuş bir rehberdir. Bu makalede, DO-178C uyumlu bir yazılım geliştirme sürecinin ana hatlarını anlatılmaktadır.
DO-178C Nedir?
DO-178C, “Software Considerations in Airborne Systems and Equipment Certification” (Havacılık Sistemleri ve Ekipmanı Sertifikasyonunda Yazılımla İlgili Hususlar) olarak bilinen bir yönergelerin en son sürümüdür. Bu standart, havacılık için yazılımların geliştirilmesi sırasında uygulanması gereken süreçleri ve yöntemleri tanımlamaktadır. Amaç, yazılım hatalarını en aza indirerek yazılımın emniyet seviyesini Tablo 1’de gösterildiği üzere güvence altına alır.
1. Planlama
DO-178C uyumlu bir yazılım geliştirme süreci, kapsamlı planlama ve standartlara bağlılıkla başlar. Sertifikasyonun Yazılım Yönleri Planı (PSAC), Yazılım Geliştirme Planı (SDP), Yazılım Doğrulama Planı, Yazılım Konfigürasyon Yönetimi Planı (SCMP) ve Yazılım Kalite Güvence Planı (SQAP) dokümanları hazırlanır. Bu dokümanlar, yazılımın emniyet gereksinimlerini karşılayacak şekilde nasıl geliştirileceğini ve doğrulanacağını ayrıntılarıyla belirtir. Geliştirme seviyesine göre Yazılım Gereksinim Standardı (SRStd), Yazılım Tasarım Standardı (SDStd), Yazılım Kodlama Standardı (SCStd) yine bu aşamada yayınlanmış olmalıdır. Bu fazda sonunda yazılım sertifikasyon otoritesi tarafından yapılan SOI1 denetimi sırasında plan ve standartların DO-178C ile uyumluluğu sorgulanır.
2. Geliştirme
2.1. Gereksinimlerin Geliştirilmesi
Yazılım gereksinimleri süreci, üst seviye yazılım gereksinimleri geliştirmek için sistem yaşam döngüsü süreçlerinin çıktılarını kullanmaktadır. Yazılım Gereksinim Standardı (SRStd), kullanılarak bu üst seviye yazılım gereksinimleri işlevsel, performans, arayüz ve emniyetle ilgili gereksinimleri içerir.
2.2. Yazılım Tasarımı
Üst seviye yazılım gereksinimleri, Yazılım Tasarım Standardı (SDStd) kullanılarak yazılım mimarisini geliştirmek için yazılım tasarım sürecindeki bir veya daha fazla yinelemeyle geliştirilir ve Kaynak Kodunu uygulamak için kullanılabilecek alt seviye gereksinimler oluşturulur.
2.3. Kodlama
Tasarım aşamasından sonra, yazılımın kodlanması başlar. DO-178C, Yazılım Kodlama Standardı (SCStd) kullanılarak Kaynak Kod, yazılım mimarisinden ve alt seviye gereksinimlerden yararlanılarak geliştirilir.
2.4. Entegrasyon
Entegre sistem veya ekipmanı geliştirmek için, entegrasyon sürecinde kaynak kodlarının derlenmesi, hedefe yüklenmesinde, yazılım kodlama sürecinden elde edilen hedef bilgisayar ve çalıştırılabilir nesne kodu kullanılır. Bu fazda sonunda yazılım sertifikasyon otoritesi tarafından yapılan SOI2 denetimi sırasında yazılım yaşam döngüsü kayıtlarının plan dokümanları ile uyumluluğu sorgulanır.
3. Doğrulama
Yazılım doğrulama sürecinin amacı, yazılım geliştirme süreçleri sırasında ortaya çıkmış olabilecek hataları tespit etmek ve raporlamaktır. Yazılım doğrulama aşamasında gözden geçirme, test ve analiz faliyetlerinden oluşmaktadır. Hataların giderilmesi, yazılım geliştirme süreçlerinin bir etkinliğidir. Yazılım doğrulama süreci şunları doğrular:
a. Yazılıma indirgenecek edilen sistem gereksinimleri(SRATS), bu sistem gereksinimlerini karşılayan üst seviye gereksinimlere doğru ve eksiksiz dönüştürülmüştür,
b. Üst düzey gereksinimler, üst düzey gereksinimleri karşılayan yazılım mimarisi ve alt seviye gereksinimlere doğru ve eksiksiz dönüştürülmüştür, üst seviye gereksinimler ile alt seviye gereksinimler arasında ve türetilmiş gereksinimler ile izlenilebilirlik bağlantıları doğru ve eksiksiz oluşturulmuştur,
c. Yazılım mimarisi ve alt seviye gereksinimler, gereksinimleri ve yazılım mimarisini karşılayan Kaynak Kod’a doğru ve eksiksiz dönüştürülmüştür,
d. Çalıştırılabilir Nesne Kodu, yazılım gereksinimlerini eksiksiz karşılar ve amaçlanmayan işlevselliğin yokluğundan emin olur,
e. Çalıştırılabilir Nesne Kodu, anormal girdilere ve koşullara doğru şekilde yanıt verebilecek şekilde çalıştığına emin olur,
f. Bu doğrulamayı gerçekleştirmek için kullanılan araçlar, yazılım seviyesi için teknik olarak doğru ve eksiksizdir.
Bu fazda sonunda yazılım sertifikasyon otoritesi tarafından yapılan SOI3 denetimi sırasında doğrulama kanıtları(gözden geçirme, test ve analiz) ile birlikte yazılım yaşam döngüsü kayıtlarının plan dokümanları ile uyumluluğu sorgulanır.
4. Konfigürasyon Yönetimi
Yazılım Konfigürasyon Yönetimi süreci, yazılım planlama süreci ve Yazılım Konfigürasyon Yönetimi Planında(SCMP) tanımlandığı şekilde uygulanır. Yazılım Konfigürasyon Yönetimi sürecinin çıktıları, kayıtlarına veya diğer yazılım yaşam döngüsü verilerine kaydedilir. Bu süreç tüm diğer süreçlerle birlikte işletilir.
5. Kalite Güvence
Yazılım kalite güvence süreci, yazılım planlama süreci ve Yazılım Kalite Güvence Planı (SQAP) ile tanımlandığı şekilde uygulanır. Yazılım kalite güvence süreci faaliyetlerinin çıktıları, Yazılım Kalite Güvence Kayıtları’na veya diğer yazılım yaşam döngüsü verilerine kaydedilir. Yazılım kalite güvence süreci, hedeflerin karşılandığına, eksikliklerin tespit edildiğine, değerlendirildiğine, izlendiğine ve çözüldüğüne ve yazılım ürünü ve yazılım yaşam döngüsü verilerinin sertifikasyon gerekliliklerine uyduğuna dair güvence elde etmek için yazılım yaşam döngüsü süreçlerini ve çıktılarını değerlendirir.
6. Sertifikasyon
Sertifikasyon sürecinin hedefleri, yazılım yaşam döngüsü boyunca başvuru sahibi ile sertifikasyon otoritesi arasında iletişimi kurarak sertifikasyon sürecine ilerletmek Sertifikasyonun Yazılım Yönleri Planının (PSAC) onaylanması ve sürece uyumluluğunun kanıtlarının sunulmasıdır. Yazılım Başarı Özetinin (SAS) yayınlanmasını takiben yazılım sertifikasyon otoritesi tarafından yapılan SOI4 kapanış denetimi sırasında tüm birlikte yazılım yaşam döngüsü kayıtlarının doğruluğu plan dokümanları ile uyumluluğu sorgulanır.
7. Yazılım Yaşam-döngüsü Verileri
Aşağıdaki listedeki veriler süreç boyunca ilgili seviyenin gereksinimlerini yerine getirecek şekilde tutulur:
· Plan for Software Aspects of Certification
· Software Development Plan
· Software Verification Plan
· Software Configuration Management Plan
· Software Quality Assurance Plan
· Software Requirements Standards
· Software Design Standards
· Software Code Standards
· Software Requirements Data
· Design Description
· Source Code
· Executable Object Code
· Software Verification Cases and Procedures
· Software Verification Results
· Software Life Cycle Environment Configuration Index
· Software Configuration Index
· Problem Reports
· Software Configuration Management Records
· Software Quality Assurance Records
· Software Accomplishment Summary
· Trace Data
· Parameter Data Item File