YAZILIM GEREKSİNİMLERİ BELİRTİMİ STANDARDI
Hazırlayan Tarih İmza Ö.T. 15.08.2006 Onaylayan Tarih İmza S.B. 16.09.2006
Revizyon Takip Tablosu Güncel Revizyon Yayımlanma Tarihi Açıklama 1.0 30.12.2002 İlk revizyon 2.0 16.08.2003 DDIF_11 e göre düzeltildi 3.0 04.09.2003 DDIF_13 e göre düzeltildi 4.0 26.01.2004 DDİF_45 formu sonucunda revizyon atladı. 5.0 12.11.2004 DDIF.179 6.0 25.01.2005 DDIF.194, DDIF.193 7.0 15.08.2006 DDİF.314 Sayfa No:3/11
1. GENEL 1.1. Amaç Bu standart, analiz aşamasından sonra geliştirilecek olan Yazılım Gereksinimleri Belirtimi dokümanının nasıl oluşturulacağı konusuna açıklık getirmektedir. Yazılım Gereksinimleri Belirtimi, bir yazılım ürününün, programın ya da bir özel bir fonksiyonu yerine getiren program parçasının özelliklerini belirten dokümandır. Bu dokümanın hazırlanmasındaki temel amaçlar şunlardır : -Müşteri ve tedarikçi arasında yazılım ürününün ne yapacağına dair bir fikir birliği sağlayacaktır.yazılım tarafından gerçekleştirilecek fonksiyonların tamamının YGB de tariflenmesi, potansiyel kullanıcıların yazılımın kendi ihtiyaçlarını karşılayıp karşılamadığını görmelerine yardımcı olacaktır. -YGB ile yazılımın sınırları belirlenecektir. Sistemin ne yapacağının tüm hatlarıyla belirleneceği bu aşama ile tüm yaşam döngüsü çerçevesi de çizilmiş olacaktır. -YGB dokümanının hazırlanması, müşteriyi tasarım aşamasından önce tüm gereksinimleri göz önüne alması yönünde zorlayacaktır. YGB de belirtilen gereksinimlerin müşteri tarafından dikkatlice incelenmesi, olası yanlış anlamaların, eksikliklerin veya var ise analizdeki tutarsızlıkların ortaya çıkmasını sağlayacaktır. -YGB de tarif edilen özelliklere göre geliştirilecek ürünün tarifi, proje maliyetinin belirlenmesinde realistik bir temel oluşturacağı gibi fiyat tahminlerinin ve tekliflerinin onaylanmasında da kullanılabilir. -Organizasyonlar, YGB dokümanından kendi organizasyonları için validasyon ve doğrulama planları üretebileceklerdir. YGB, tedarikçi firma, müşteri ya da her iki tarafın temsilcileri tarafından hazırlanabilir. Ancak bu dokümanın her iki taraf tarafından ortaklaşa hazırlanması tercih edilir. Bunun nedeni her iki tarafın da iyi bir YGB hazırlamak için farklı bilgi birikimine sahip olmasıdır. Müşterilerin yazılım geliştirme ve tasarım aşamasını yeterli derecede bilemeyecekleri gibi, tedarikçiler de müşterilerin problemlerini ve iş akışını, doğru ve memnun edici bir sistem yaratacak kadar bilemeyebilirler. 1.2. Uygulama Yazılım projelerinde hazırlanacak Yazılım Gereksinimleri Belirtimleri, bu standardın 2. İçerik maddesinde tanımlanan tüm madde numaralarını içermelidir. Projeye uygun olmayan maddeler boş bırakılabilir ya da ayrı yazılır başka planlara referans verebilir. 1.3. Referans Dokümanlar - Yazılım Gerekleri Belirtimi Rehberi, ANSI/IEEE Std., New York, 1984 - CSY.01 Analiz Çalışma Yöntemi, CS - CSY.02 Tasarım Çalışma Yöntemi, CS - CSKEK, CS Sayfa No:4/11
- Extreme Programming Explained: Embrace Change, Kent Beck, Addison- Wesley, 2000. - The Rational Unified Process An Introduction, Philippe Kruchten, Addison- Wesley, 2000. - Object-Oriented Software Construction, Bertrand Meyer, Prentice Hall, 1997 1.4. Tanımlar Tedarikçi Firma : Bir ürünü sağlayan kuruluş veya kişi Müşteri: Bir ürünü alan kuruluş veya kişi Arayüz : Kullanıcı ile yazılım arasındaki iletişimi sağlayan arabirim Kısıt : Bir olgunun uymak zorunda olduğu kurallar bütünü 1.5. Kısaltmalar YGB: Yazılım Gereksinimleri Bildirimi CSKEK: CS Kalite El Kitabı Sayfa No:5/11
2. İÇERİK Kapak Sayfası İmza Sayfası Revizyon Takip Tablosu 1. Giriş 1.1. YGB nin Amacı 1. 1.2. Ürünün Kapsamı 1.3. Tanımlar, Kısaltmalar 1.4. Referanslar 1.5. YGB Süreç ve Özeti 2. MEVCUT SİSTEMİN ANALİZİ 2.1. Organizasyonel Yapı 2.2. Bilgi Teknolojileri Alt Yapısı 3. GENEL TANIMLAR 3.1. Ürün Tanımı ve Fonksiyonları 3.2. Kullanıcı Karakteristikleri 3.3. Kısıtlar ve Varsayımlar 4. GEREKSİNİMLER 4.1. Temel Gereksinimler(7/24 çalışabilirlik...vs 4.2. İşlevsel Gereksinimler 4.3. Temel Arayüz Gereksinimleri 4.4. Performans ve Kapasite Gereksinimleri 4.5. Güvenlik Gereksinimleri 4.6. Tasarım Kısıtları 4.7. Diğer Gereksinimler 5. EKLER Sayfa No:6/11
2.1. Giriş (YGB Madde 1) Giriş Bölümü, YGB hakkında özet bilgi sağlamalıdır. Genellikle aşağıdaki bölümlerden oluşur: 2.1.1. YGB nin Amacı(YGB Madde 1.1) YGB dökümanının amacı ortaya konmalı ve kimlere yönelik olarak hazırlandığı belirtmelidir. 2.1.2. Ürün Kapsamı(YGB Madde 1.2) Bu bölümde üretilecek olan yazılım(lar) isimleriyle tanımlanmalı, ürünün neyi yapacağı ya da yapmayacağı açıklanmalı, yazılımın her uygulaması amaç ve hedefleriyle tarif edilmeli, daha üst seviye özelliklerin (sistem gereksinimleri, özellikler..vb) tanımlandığı kısımlar ile tutarlı olmalıdır. 2.1.3. Tanımlar, kısaltmalar(ygb Madde 1.3) YGB dokümanının doğru biçimde yorumlanması için gerekli tüm tanımlar ve kısaltmalar bu bölümde verilmelidir. YGB içindeki bölümlere ya da diğer dokümanlara referans verilebilir. 2.1.4. Referanslar(YGB Madde 1.4) Bu bölümde tüm YGB dokümanı içinde referans verilen dokümanlar listelenmeli, bu dokümanların her biri başlıklarına, varsa rapor numaralarına, tarihlerine ve basımevlerine göre tanımlanmalıdır. Ayrıca bu dokümanların elde edilebileceği kaynaklarda verilmelidir. 2.1.5. YGB Süreç ve Özeti(YGB Madde 1.5) Analiz safhasında neler yapıldığının (toplantılar gibi) anlatıldığı analiz süreci veygb dokümanının içeriğinde bundan sonra hangi bölümler olduğu kısaca anlatılmalıdır. 2.2. Mevcut Sistemin Analizi(YGB Madde 2) 2.2.1. Organizasyonel Yapı(YGB Madde 2.1) YGB Dokümanının bu bölümünde ürün geliştirilecek kurumun organizasyonel yapısı tanımlanacaktır. 2.2.2. Bilgi Teknolojileri Alt Yapısı(YGB Madde 2.2) Kullanılmakta olan mevcut bilgi sistemi alt yapısı kısaca tanımlanacaktır Var ise mevcut veri modeli belirtilecektir. Bu bölüme veri modelleri eklenmeyecek sadece YGB ekinde verilecek veri modeline referans verilecektir. 2.3. Genel Tanımlar(YGB Madde 3) YGB dokümanının bu bölümü, ürünü ve ürünün gereksinimlerini etkileyen genel faktörleri tanımlamalıdır. Bu bölümde özel ihtiyaçlar belirtilmemeli, onun yerine gerekli altyapı sağlanmalıdır. Sayfa No:7/11
2.3.1. Ürün Tanımı ve Fonksiyonları(YGB Madde 3.1) Bu bölümde geliştirilecek olan ürünün ne olduğu ve hangi fonksiyonları yerine getireceği (İşlevsel Gereksinimler başlığı altında detaylı gereksinimleri bütünleyecek bir biçimde ) anlatılacaktır. 2.3.2. Kullanıcı Karakteristikleri(YGB Madde 3.2) YGB dokümanının bu bölümü hedeflenen kullanıcı kitlesinin eğitim seviyesi, deneyimleri, teknik uzmanlıkları gibi genel özelliklerinin açıklandığı bölümdür. 2.3.3. Kısıtlar ve Varsayımlar(YGB Madde 3.3) Bu bölümde, Düzenleyici politikalar Hafıza kısıtları Donanım kısıtları Diğer uygulama arayüzleri Paralel işlemler Denetleme fonksiyonları Kontrol fonksiyonları Üst-seviye dil gereklilikleri Haberleşme protokolleri Güvenilirlik gereklilikleri Uygulamaların kritikliği Güvenlik ve emniyet hususları, ndan oluşan yazılım geliştiricilerin seçeneklerini kısıtlayan maddeler, ve YGB dokümanında listelenen ihtiyaçların herbirini etkileyen faktörler varsayımlar olarak belirtilir. Bu bölümde ayrıca sistemin ileriki versiyonlarına ertelenebilecek ihtiyaçlardan bahsedilmelidir. Bu bölümde belirtilen faktörler yazılım için tasarım kısıtları olmayıp (ki bunlar Tasarım Kısıtları başlığı altında belirtilecektir) değişmeleri halinde YGB de belirtilen ihtiyaçları etkileyen unsurlardır. 2.4. Gereksinimler(YGB Madde 4) 2.4.1. Temel Gereksinimler(YGB Madde 4.1) Yazılım ürünününün sahip olması gereken temel gereksinimler bu bölümde anlatılır. 7/24 çalışabilirlik, genişleyebilirlik, esneklik, ölçeklenebilirlik, güvenlik, kullanım kolaylığı...vb. Kalite gereksinimleri doğrulanabilir (verifiable) tanımlanmalıdır. Sayfa No:8/11
2.4.2. İşlevsel Gereksinimler(YGB Madde 4.2) Bu bölümde geliştirilecek olan ürünün sağlayacağı tüm fonksiyonlar tanımlanacaktır. Sistem çözümleme aşamasında üretilen nesneye yönelik çıktılar (Kullanım Durumu Diyagramları, Aktörler, Kullanım Durumları vb.) bu bölüm ve ekinde belirtilecektir. 2.4.3. Temel Arayüz Gereksinimleri(YGB Madde 4.3) Herbir sistem arayüzü bu bölümde listelenmeli, sistem ihtiyaçları ve arayüz tanımlarının gerçekleştirilecek sisteme uyması için yazılımın fonksiyonelliği tanımlanmalıdır. Bu arayüzler Kullanıcı Arayüzleri, Donanım Arayüzleri, Yazılım Arayüzleri, İletişim Arayüzleri ve Dış Arayüzler olabilir. Kullanıcı Arayüzleri Yazılım ürünü ile kullanıcısı arasındaki her bir arayüzün mantıksal özellikleri açıklanmalıdır. Bu özellikler, yazılım ihtiyaçlarının giderilmesine yönelik olan ekran formatları, pencere görünümleri, menü ya da rapor içerikleri, programlanabilir fonksiyon tuşları gibi konfigürasyon özellikleridir. Ayrıca arayüzler ile sistemin kendisini kullananlara nasıl görünmesi gerektiği de tarif edilmelidir. Donanım Arayüzleri Burada yazılım ürünü ile donanım bileşenleri arasındaki her bir arayüzün mantıksal özellikleri verilmelidir. Bunun yanında örnek olarak; hangi cihazların destekleneceği, nasıl ve hangi protokollerle destekleneceği gibi noktalar da belirtilmelidir. Yazılım Arayüzleri Diğer gerekli yazılım ürünlerinin kullanımı ve ürünün yazılımlar ile olan arayüzleri burada ortaya konmalıdır. Gerekli her bir yazılım ürünü için, isim, spesifikasyon numarası, versiyon ve kaynak belirtilmelidir. Tanımlanan her bir arayüz, mesaj içeriği ve format yönünden açıklanmalıdır. İletişim Arayüzleri Yerel ağ protokolleri..vs gibi iletişim arayüzleri burada açıklanmalıdır. Dış Arayüzler Dış Sistemlerle ilgili arayüzler bu bölümde belirtilmelidir. 2.4.4. Performans ve Kapasite Gereksinimleri(YGB Madde 4.4) Bu bölüm yazılımın hem statik hem dinamik nümerik ihtiyaçlarının belirtildiği kısımdır.statik nümerik ihtiyaçlar aşağıdakileri içerebilir: -Desteklenecek terminal sayısı -Desteklenecek kullanıcı sayısı -Kullanılan bilginin miktar ve tipi Dinamik nümerik ihtiyaçlar ise normal ve uç iş yükü durumlarında gerçekleştirilecek işlem ve transaction sayılarını içerebilir. Tüm bu ihtiyaçlar ölçülebilir olmalıdır. Sayfa No:9/11
Geliştirilecek sistemde yeni belge/kayıt eklenmesi, günleme ve raporlama gibi işlemlerde veri hacmi, güvenlik ve veri kontrolleri gözönünde bulundurularak kullanıcının kabul edeceği performans ve kapasite gereksinimleri de bu bölümde belirtilecektir. 2.4.5. Güvenlik Gereksinimleri(YGB Madde 4.5) Bu bölümde geliştirilecek sistem ile ilgili Gizlilik, Bütünlük ve Elverişlilik temel gereksinimlerinin yanında, İnkâr Edememe, Güvenilirlik gibi ikincil gereksinimlerden ihtiyaç duyulanlar tanımlanacaktır. Bu bölüm, Temel Gereksinimler altında bahsedilen güvenlik maddesi ile bütünler olmalıdır. Bu bölümde asgari aşağıdaki hususlardan uygulanabilir olanlar ele alınmalıdır: 2.4.5.1. Sistemin dış arayüzlerine ilişkin güvenlik gereksinimleri: Dış arayüz, yetkili kullanıcılara ihtiyaçları olan erişim hakkını verirken dışarıdan gelecek saldırılara karşı da güçlü bir koruma sağlamalıdır. 2.4.5.2. Sistemin katmanlari arasında veri/bilgi alışverişi sırasında duyulan güvenlik gereksinimleri: Sayısal sertifika ve buna bağlı olarak iki yönlü SSL kullanımı yöntemi, gibi yöntemlerin gerekliliği belirtilmelidir. 2.4.5.3. Tanıma/kimlik doğrulama/yetkilendirme gereksinimleri: Sistemin değişik noktalarına kullanıcı/program giriş çıkışları sırasında, sisteme girecek olan varlığın kimliğinin belirlenmesi gereklidir. Temelde kullanılan dört tip kimlik doğrulama yöntemi bulunur: o Bilinen bir şey (örneğin parola) o Sahip olunan bir şey (örneğin akıllı kart, usb jeton gibi) o Biyolojik olarak sahip olunan bir şey (Retina, iris, parmak izi gibi) o Bir davranış şekli (Islak imza, el yazısı karakteri gibi) Sistemin her bir giriş noktası için kimlik doğrulama ihtiyaçları belirtilmelidir. Kullanıcıların hangi sistemde hangi yetkiye sahip olacakları bir gereksinim olarak ortaya konmalıdır. 2.4.5.4. Veritabanı güvenlik gereksinimleri Veritabanına erişim kısıtları ile ilgili gereksinimler tanımlanmalıdır. Veritabanında saklanan bilginin kritiklik seviyesine göre ihtiyacı olan koruma şekillerine ait gereksinimler (kriptografik yöntemler dahil) tanımlanmalıdır. Veritabanında tutulacak parola bilgisinin güvenliği için duyulan gereksinimler tanımlanmalıdır. 2.4.5.5. Kriptografik fonksiyon gereksinimleri Gizli anahtarlı algoritmalar Açık anahtarlı algoritmalar Sayısal imza algoritmaları Sayfa No:10/11
Özet fonksiyonları Rastgele sayı üreteçleri Açık anahtar altyapısı Akıllı kart ve benzeri sayısal imza araçları gibi teknolojilerden hangilerine gereksinim duyulabilecegi belirtilmelidir. 2.4.5.6. Kriptografik anahtar yönetim gereksinimleri Eğer PKI gibi geniş kapsamlı Kriptografik bir sistem kullanılıyorsa, bu sistemde anahtar dağıtımının nasıl yapılacağı ile ilişkin gereksinimler tarif edilmelidir. 2.4.5.7. Elektronik imza gereksinimleri Sistemde elektronik imza kullanılacaksa bununla ilgili gereksinimler ve beklenen Kriptografik özellikler ifade edilmelidir. Yurt içi projelerde, bu güvenlik önlemleri yasal dayanağa ihtiyaca duyulacak şekilde kullanllacaksa, bu gereksinimler, 5070 sayılı Elektronik İmza Yasası ve bu yasa ile ilgili çıkmış yönetmeliklerle uyum içinde olmalıdır. 2.4.5.8. İşletim sistemi dosyalarına ve komutlarına erişim sınırlaması ile ilgili gereksinimler Sistem geliştiricilerin ve çalışanların sisteme ait sunuculara erişen kullanıcıların, yetki seviyelerine göre işletim sistemi komutlarına ve dosyalarına erişimlerinin uygun biçimde sınırlandırılması ile ilgili gereksinimler belirlenmelidir. 2.4.5.9. Sistem test verisinin kullanımının güvenliğinin garanti altına alınması ile ilgili gereksinimler Sistemi test etmekte kullanılan veri, gerçek sistemden fiziksel olarak ayrılacak sekilde Test verisine erişim hakları belirlenmelidir. 2.4.6. Tasarım Kısıtları(YGB Madde 4.7) Standartlar, donanım sınırlamaları..vs tarafından getirilen tasarım kısıtları burada verilmelidir. 2.4.7. Diğer Gereksinimler(YGB Madde 4.8) Yukarıda bahsedilmeyen gereksinimler (örn: işletim gereksinimleri) bu bölümde belirtilir. 2.5. Ekler(YGB Madde 5) Sayfa No:11/11