SMC-S-012 Yazılım Geliştirme
ABD Hava Kuvvetleri Uzay Komutanlığı Uzay ve Füze Sistemleri Merkezi (SMC) tarafından yayınlanan “SMC-S-012 Yazılım geliştirme” standardının amacı, kritik görev sistemleri için yazılım geliştirme faaliyetlerine yönelik tek tip gereksinimleri belirlemektir. Bu standart, Amerika Birleşik Devletleri Savunma Bakanlığı tarafından geliştirilen “MIL-STD-498 Askeri standart: Yazılım geliştirme ve dokümantasyon” standardında dayanmaktadır.

Bu standart, yazılım (donanım-yazılım sistemleri gibi), sadece yazılım sistemleri ve bağımsız yazılım ürünleri içeren kritik görev sistemlerinin geliştirilmesine uygulanır. Bu standart, yazılım geliştirme gerçekleştiren yükleniciler veya satın alan şirket içi ajanslar için uygulanabilir. Bu standart, uygulandığı her yazılım kategorisi için uyarlanabilir.
Bu standart, herhangi bir özel yazılım geliştirme yöntemi veya aracından bağımsızdır. Bu standarttaki hiçbir gereklilik, belirli bir yöntem veya aracın kullanılmasını zorunlu kılmaz.
Yazılım geliştirme sürecinde büyük yazılım faaliyetlerini düzenlemek için kullanılan çerçeveye yazılım geliştirme yaşam döngüsü modeli denir.
- Geliştirici, geliştirilen yazılıma uygun yazılım geliştirme yaşam döngüsü modelini veya modellerini seçmelidir. Bir yazılım projesi, geliştirilen farklı yazılım kategorileri için birden fazla yazılım geliştirme yaşam döngüsü modeline sahip olabilir.
- Geliştirici, seçilen yazılım geliştirme yaşam döngüsü modelini veya modellerini ekte verilen “Yazılım geliştirme planı” şablonuna kaydetmelidir.
- Geliştirici, yazılım geliştirme planında projede kullanılacak her yazılım geliştirme yaşam döngüsü modelinin bir açıklamasını sağlamalıdır.
- Geliştirici, kullanılacak her yazılım geliştirme yaşam döngüsü modeli için yazılım geliştirme planında şunları tanımlamalıdır:
- Sistem geliştirme yaşam döngüsünün hangi kısmında kullanılacağı
- Hangi koşullar altında kullanılacağı
- Hangi yazılım öğeleri için kullanılacağı
- Geliştirici, sözleşme gereksinimleri ile tutarlı bir yazılım geliştirme süreci oluşturmalıdır.
- Yazılım geliştirme süreci şu ana faaliyetleri ve bütünleşik süreçleri içermelidir:
- Proje planlama ve denetim
- Yazılım geliştirme ortamı oluşturma
- Sistem gereksinimleri analizi
- Sistem mimarisi tasarımı
- Yazılım gereksinimleri analizi
- Yazılım mimarisi ve tasarımı
- Yazılım uygulaması ve birim testi
- Birim entegrasyonu ve testi
- Yazılım öğesi nitelik testi
- Yazılım-donanım öğesi entegrasyonu ve testi
- Sistem nitelik testi
- Yazılımın operasyonlara geçişine hazırlık
- Yazılımın bakıma geçişine hazırlık
- Entegre süreçler:
- Yazılım yapılandırma yönetimi
- Yazılım akran incelemeleri ve ürün değerlendirmeleri
- Yazılım kalite güvencesi
- Düzeltici eylem
- Ortak teknik ve yönetim incelemeleri
- Yazılım risk yönetimi
- Yazılım ölçümü
- Güvenlik ve gizlilik
- Yazılım ekip üyesi yönetimi
- Yazılım IV&V aracılarıyla arayüz
- Ortak geliştiricilerle koordinasyon
- Proje süreçlerinin iyileştirilmesi
Bu önemli aktiviteler çakışabilir, yinelemeli olarak uygulanabilir, farklı şekilde uygulanabilir. Yazılımın çeşitli unsurlarına aittir ve yukarıda listelenen sırayla gerçekleştirilmesi gerekmez.
- Geliştiricinin yazılım geliştirme süreçleri yazılım geliştirme planında açıklanmalıdır.
Yazılım geliştirme için genel gereksinimler, bu standartta tanımlanan ayrıntılı gereksinimleri yerine getirmek için genel geliştirici gereksinimleri içerir. Daha ayrıntılı gereksinimler standart ekinde yer almaktadır (Ek H.1).
- Yazılım geliştirme yöntemleri: Geliştirici, tüm yazılım geliştirme faaliyetleri için sistematik, belgelenmiş yöntemler kullanmalıdır. Bu sistematik yazılım geliştirme yöntemleri yazılım geliştirme planında belirtilmelidir.
- Yazılım ürünleri için standartlar: Geliştirici, gereksinimleri, mimariyi, tasarımı, kodu, test durumlarını, test prosedürlerini ve test sonuçlarını temsil etmek için standartlar geliştirir. Bu ürün temsil standartları yazılım geliştirme planında belirtilir. Geliştirici, gereksinimleri, mimariyi, tasarımı, kodu, test durumlarını, test prosedürlerini ve test sonuçlarını temsil etmek için yazılım geliştirme planında belirtilen standartları uygular.
- İzlenebilirlik: İzlenebilirlik, iki ilgili ürünün içerikleri arasında bir ilişki sağlar, örneğin her bir yazılım gereksiniminden gereksinimi karşılayan yazılım tasarım bileşenlerine olan ilişki. Çift yönlü izlenebilirlik, iki ilgili ürünün içerikleri arasında çift yönlü bir ilişki sağlar. Bu tür çift yönlü bir ilişkiye örnek olarak, her bir yazılım gereksiniminden gereksinimi karşılayan yazılım tasarım bileşenlerine olan izlenebilirlik ve her bir tasarım bileşeninden tasarım bileşeni tarafından karşılanan yazılım gereksinimlerine olan izlenebilirlik verilebilir. Bu bölümdeki çift yönlü izlenebilirlik gereksinimlerinin amacı hem yukarı hem de aşağı doğru izleme yaparak şunları sağlamaktır:
- Tüm gereksinimlerin bileşenlere tahsis edildiğini, uygulandığını ve test edildiğini göstermek
- Hiçbir ek gereksinimin uygulanmadığını göstermek
- Önerilen değişikliklerin etkileri hakkında bilgi sağlamak
- Keşfedilen sorunların etkileri hakkında bilgi sağlamak
- Yazılım bakımı için bilgi sağlamak.
- Yeniden kullanılabilir yazılım ürünleri: Geliştirici, sözleşmenin gereksinimlerini yerine getirmek için kullanılacak yeniden kullanılabilir yazılım ürünlerini belirlemelidir. Yeniden kullanılabilir yazılım ürünü aramasının kapsamı yazılım geliştirme planında belirtilmelidir. Geliştirici, sözleşmenin gereksinimlerini yerine getirmek için kullanılacak yeniden kullanılabilir yazılım ürünlerini değerlendirmelidir. Yeniden kullanılabilir yazılım ürününün değerlendirilmesi için kullanılacak kriterler yazılım geliştirme planında belirtildiği gibi olmalıdır. Geliştirici, yeniden kullanılabilir yazılım ürünlerini seçmek için en azından standart ekinde yer alan değerlendirme kriterlerini kullanmalıdır (Ek B). Değerlendirme kriterleri, farklı yazılım kategorileri ve farklı kritik gereksinimler için farklı şekilde ağırlıklandırılabilir. Seçilen yeniden kullanılabilir yazılım ürünleri, sözleşmedeki veri hakları gereksinimlerini karşılamalıdır. Yeniden kullanılabilir yazılım ürünü olduğu gibi kullanılabilir veya değiştirilebilir ve tüm gereksinimi veya gereksinimin bir kısmını karşılamak için kullanılabilir.
Yıllardır çok geniş bir yelpazede gerçekleştirdiği test, ölçüm, analiz ve değerlendirme çalışmaları ile her sektörden işletmelere destek olmaya çalışan kuruluşumuz, bilim ve teknoloji alanında dünyada yaşanan gelişmeleri yakından takip eden ve sürekli kendini geliştiren güçlü bir çalışan kadrosuna sahiptir. Bu çerçevede işletmelere “SMC-S-012 Yazılım geliştirme” standardına uygun test hizmetleri de verilmektedir.