Gereksinim Mühendisliği
2026
Geniş salon, açık mutfak.
Gece vardiyasından sonra uyuyabilecekleri sessiz bir oda ve basamaksız giriş.
İnşaata başlamadan hangi soruları sormalıydık?
Bu dersin sonunda:
Gereksinim mühendisliği, geliştirilecek sistem hakkında paydaşların aynı şeyi anlamasını sağlar.
Sistemin sunacağı hizmetleri ve kullanıcıların hangi işleri yapacağını belirler.
Güvenlik, performans, bütçe ve teslimat süresi gibi sınırları açıklar.
Bu ihtiyaçlar belirlenir, yazılır, doğrulanır ve değiştikçe yönetilir.
Akıl Sağlığı Hasta Yönetim Sistemi (AS-HYS), ruh sağlığı kliniklerinde hasta kayıtlarını, randevuları ve tedavi bilgilerini yönetir. Randevu aramaya bakalım:
Görevli, bir hastanın randevusunu tüm kliniklerin listelerinde arayabilir.
Aramaya yalnızca yetkili roller erişebilir; yoğun saatlerde de yanıt süresi hedefi karşılanmalıdır.
Bu ifadeler, geliştirme ve değerlendirme sırasında başvurulacak gereksinimlerin başlangıcıdır.
İhtiyacı anlatır; çözümü ve ölçümü henüz belirlemez.
Koşul ve ölçüt artık açık. p95, aramaların %95’inin aşmadığı yanıt süresidir.
Teklifte genel bir çerçeve yeterli olabilir. Sözleşme ve uygulama için daha açık, doğrulanabilir gereksinimler gerekir.
İhtiyaç başlangıçta çözümü peşinen belirlemeyecek kadar genel tutulur. Geliştirme ve doğrulama için sonra ayrıntılandırılır.
Müşterinin ve son kullanıcının anlayacağı doğal dilde yazılır.
Geliştiriciler ve test ekibi için davranışı ve kısıtları açıklar; sözleşmenin parçası olabilir.
Bu ayrım, Davis’in soyutlama yaklaşımındaki genel ihtiyaçtan ayrıntılı tanıma geçişi gösterir.
AS-HYS’de aylık ilaç maliyeti raporu
Kullanıcı gereksinimiAS-HYS, her kliniğin ay boyunca reçete ettiği ilaçların maliyetini gösteren aylık yönetim raporları oluşturmalıdır.
Yönetimin istediği çıktı belli. Raporun ne zaman üretileceği, içeriği ve kimlerin erişeceği henüz açıklanmadı.
Aynı istek, uygulanabilir kurallara ayrıldığında:
Her ayın son iş gününde, reçete edilen ilaçları, maliyetlerini ve reçeteleyen klinikleri içeren bir özet oluşturulmalıdır.
Sistem, ayın son iş gününde saat 17.30’dan sonra raporu yazdırılmak üzere otomatik olarak üretmelidir.
Her klinik için ayrı rapor hazırlanmalı; ilaç adları, reçete sayıları, reçete edilen doz sayıları ve toplam ilaç maliyeti gösterilmelidir.
İlaç farklı dozlarda sunuluyorsa (ör. 10 mg, 20 mg), her doz için ayrı rapor oluşturulmalıdır.
Maliyet raporlarına yalnızca yönetimin erişim kontrol listesinde bulunan yetkili kullanıcılar erişebilmelidir.
AS-HYS’nin aylık rapor isteği yönetici için tek cümleydi; geliştirici ve test ekibi için beş ayrı kurala dönüştü. Herkes aynı ayrıntıyı okumaz.
| Okuyucu | İlgilendiği Tür | Amacı |
|---|---|---|
| Müşteri Yöneticileri | Kullanıcı | İş hedeflerinin karşılanıp karşılanmadığını kontrol etmek. |
| Son Kullanıcılar | Kullanıcı | İhtiyaçlarına cevap verilip verilmediğini anlamak. |
| Sistem Mimarları | Her ikisi | Üst düzey yapıyı tasarlamak, fizibiliteyi değerlendirmek. |
| Geliştiriciler | Sistem | Neyin kodlanacağını ayrıntısıyla anlamak. |
| Test Mühendisleri | Sistem | Doğrulama ve kabul/geçerleme testlerini türetmek. |
AS-HYS’de acil bir görüşme öncesi
“Hastanın geçmişine gecikmeden ulaşmam gerekiyor.”
“Bu kayıtları yalnızca yetkili kişiler görmeli.”
Acil erişim hangi koşullarda açılmalı ve nasıl kayda geçmeli?
Gereksinimleri ayrıntılandırmadan önce, bu sistemi geliştirmenin kuruluş için anlamlı ve uygulanabilir olup olmadığına bakılır.
Uyarı
Bir sorunun cevabı “hayır” ise kapsamı, bütçeyi veya yaklaşımı yeniden konuşmak gerekir.
Şimdi AS-HYS’de gördüğümüz ifadeleri türlerine ayıralım. İG ve İOG, gereksinimin neyi tanımladığını; etki alanı ise ihtiyacın nereden kaynaklandığını gösterir:
İşlevsel Gereksinimler (İG, Functional): Sistemin ne yapması gerektiğini: sunacağı hizmetleri, girdilere nasıl tepki vereceğini ve belirli durumlardaki davranışını tanımlar.
İşlevsel Olmayan Gereksinimler (İOG, Non-Functional): Sistemin karşılaması gereken kalite hedeflerini ve kısıtları tanımlar (performans, güvenlik, güvenilirlik gibi).
Etki Alanı Gereksinimleri (Domain): Sağlık, bankacılık veya havacılık gibi alanların kurallarından doğar; bir işlev ya da kalite/kısıt gereksinimi olarak ifade edilebilir.
Kimliklerde (ID) İngilizce FR- ve NFR- önekleri kullanılır.
Functional Requirements
“Bir kullanıcı, tüm kliniklerin randevu listelerinde arama yapabilmelidir.”
Bu cümleden hangi ekran çıkar?
Yorum 1 Hasta adı bir kez girilir; bütün kliniklerde aranır.
Yorum 2 Önce klinik seçilir; yalnız o kliniğin listesi aranır.
Hasta yanlış kliniğe geldiyse ikinci yorum ihtiyacı karşılamaz.
İptal edilen randevuların gösterilip gösterilmeyeceği de henüz belirtilmemiştir.
Non-functional Requirements (NFR)
Tek bir İOG, onu sağlayacak bir dizi İG doğurabilir. Örneğin “sistem güvenli olmalıdır” İOG’si; kimlik doğrulama, yetkilendirme ve denetim kaydı gibi işlevleri gerektirir. İOG’ler ayrıca mimariyi yönlendirir (örn. performans hedefi, önbellekleme kararını etkiler).
Not
İOG’ler üç kaynaktan gelir
Gereksinimler ve Tasarım Gereksinim, beklenen davranışı, kalite hedefini veya uyulacak kısıtı belirtir. Tasarım, bunları karşılamak için seçilen çözümü açıklar. Bazen belirli bir teknoloji kullanma zorunluluğu da (örn: “sistem belirli bir veritabanını kullanmalıdır”) entegrasyon ortamı veya yasal koşullar nedeniyle gereksinim haline gelir.
İOG’ler, belirsiz ifadeler yerine doğrulanabilir ölçütlerle belirtilmelidir.
| Özellik | Ölçüm / Metrik |
|---|---|
| Hız | İşlem/saniye, kullanıcı-olay yanıt süresi, ekran yenileme süresi |
| Boyut | Bellek kullanımı (MB), kurulum paketi veya konteyner imajı boyutu |
| Kullanılabilirlik (Usability) | Eğitim süresi, görev tamamlama oranı, yardım menüsü sayısı |
| Güvenilirlik (Reliability) | Arızaya kadar ortalama süre (MTTF), hata oranı |
| Hizmet Sürekliliği (Availability) | Çalışma süresi yüzdesi (örn. %99,9), planlı kesinti süresi |
| Sağlamlık (Robustness) | Hata sonrası yeniden başlama süresi, veri bozulma olasılığı |
Ölçüt, hedefin karşılanıp karşılanmadığını söyler. AES-256 gibi bir teknoloji seçimi ise bu hedefi karşılamak için alınabilecek tasarım kararlarından biridir; tek başına güvenliği kanıtlamaz.
Aylık ≥ %99,5: 30 günlük bir ayda sistem toplamda en fazla 3,6 saat kapalı kalabilir. Bu süreyi aşmak, sözleşmeyi ihlal etmektir.planlı bakım ≤ 2 saat/ay: Bu örnekte planlı bakım da 3,6 saatin içinde sayılır; geriye kalan süre beklenmedik arızalar içindir. Birçok SLA planlı bakımı bu hesabın dışında tutar, bu yüzden sözleşmede açıkça yazılmalıdır.Yetkisiz erişim reddedilir: Hasta kaydına yalnızca ilgili rolün erişebilmesi beklenen sonuçtur; farklı rollerle yapılan testlerde bu kural sınanır.Şifreleme: Diskteki veriyi ve ağ trafiğini korumak için şifreleme kullanılabilir. Algoritma, anahtar yönetimi ve bağlantı ayarları tasarımda ayrıca belirlenir.CC ≤ 10: Kodun karmaşıklığı (“spagetti kod” olup olmadığı) ölçülebilir bir sınırın altında kalmalıdır; sonradan gelen geliştiricilerin kodu anlamasını kolaylaştırır.lint hatası = 0: Kod, belirlenen stil ve kalite kurallarına tam uymalıdır; ekibi ortak bir standartta tutar.WCAG 2.2 AA değerlendirmesi: Otomatik taramada ihlal görülmemesi yeterli değildir; klavye kullanımı ve ekran okuyucuyla görev tamamlama da kontrol edilir.Belirsiz bir hız hedefini, altı parçalı bir kalite senaryosuyla ölçülebilir hâle getirelim.
“Randevu arama hızlı olmalıdır.” Kaynak: resepsiyon görevlisi. Uyarıcı: randevu araması başlatır. Eser: randevu arama uç noktası. Ortam: yoğun saat testinde tüm kliniklerde dakikada 50 arama. Tepki: sonuçları döndürür ve loglar. Ölçüt: p95 yanıt süresi ≤ 300 ms, hata oranı ≤ %1.
Animasyonda neyi, hangi koşulda kabul edeceğimizi belirledik. Testi çalıştırmadan önce şu ayrıntılar da gerekir:
p95 ≤ 300 ms demek, ölçülen aramaların en az %95’inin 300 ms veya daha kısa sürede yanıtlanması demektir; ortalama süreyi ya da en yavaş aramayı göstermez. Hata oranı ayrıca en fazla %1 olmalıdır.
İşlev ve kaliteyi tanımladıktan sonra bir de gereksinimin kaynağını sorarız: Alanın kendi kuralları bize ne söylüyor?
Bu örnekte fren hesabı bir işlevdir; gereksinimin kaynağı demiryolu alanının fiziksel koşullarıdır.
Etki Alanı Gereksinimlerinin Zorlukları
Şimdi AS-HYS’ye dönelim: Aynı arama hizmetinin davranışını, hızını ve erişim koşullarını ayrı ayrı nasıl sınarız?
AS-HYS için şu İOG hedefi verilmiştir:
“Sistem, hasta kayıtlarına erişimde güvenli olmalıdır.”
Buraya kadar gereksinimlerin nasıl göründüğünü konuştuk. Şimdi bunların nasıl ortaya çıktığına bakalım: keşif, belirleme ve geçerleme iç içe ilerler; yönetim ise değişiklikleri süreç boyunca izler.
Sarmalın her turunda üç faaliyet birbirini besler:
Süreç boyunca yönetim: Gereksinimlere kimlik verir, bağlantılarını tutar ve değişikliklerin etkisini izler.
Amaç: Müşterinin yalnızca “ne söylediğini” değil, “neye ihtiyacı olduğunu” da anlamaktır.
Zorluk: İhtiyaçlar genellikle belirsiz, eksik veya çelişkilidir. Keşif sırasında bunları sorular ve gözlemlerle açıklığa kavuştururuz.
Paydaş, projeden doğrudan veya dolaylı olarak etkilenecek herkestir; tek bir paydaşı gözden kaçırmak bile projeyi riske atar. AS-HYS örneği:
| Paydaş Grubu | En Önemli Önceliği | Potansiyel Çatışma Noktası |
|---|---|---|
| Hasta | Verilerim güvende olsun, randevu kolay alınsın. | Yüksek güvenlik, bazen kullanım kolaylığını yavaşlatabilir. |
| Doktor | Hasta bilgilerine saniyeler içinde ulaşayım. | Hız için yapılan optimizasyonlar, BT’nin bakım yükünü artırabilir. |
| BT Personeli | Sistem çökmesin, bakımı kolay ve güvenli olsun. | Aşırı güvenli bir sistem, doktor için yavaş ve hantal olabilir. |
| Veri koruma sorumlusu | Hasta verileri ilgili mevzuata uygun işlensin. | Veri toplama ve paylaşma istekleriyle çatışabilir. |
Ana Fikir: Farklı öncelikler her zaman aynı anda karşılanamayabilir. Amaç, ihtiyaçları görünür kılıp gerekçeli bir denge kurmaktır.
Gereksinimleri ortaya çıkarma süreci genellikle dört adımlık bir döngüdür:
Bu Süreç Neden Zordur?
| Teknik | Açıklama | Güçlü Yönü |
|---|---|---|
| Görüşmeler | Paydaşlarla kapalı (belirli sorular) veya açık (serbest) formatta yapılan toplantılar. | Genel bir anlayış kazanmak, beklentileri öğrenmek. |
| Senaryolar | Sistemin belirli bir durumda nasıl kullanılacağını anlatan yapılandırılmış hikayeler. | Karmaşık etkileşimleri ve istisnai durumları detaylandırmak. |
| Kullanım Durumu | Aktörün hedefini ve sistemle etkileşimini anlatır; UML diyagramıyla da gösterilebilir. | Temel akışı ve istisnaları belirlemek. |
| Etnografi | Analistin kullanıcıları iş başında gözlemlemesi (gölgeleme, sessiz gözlem). | İfade edilmemiş, örtük gereksinimleri ortaya çıkarmak. |
Dört tekniğin ikisine yakından bakalım: biri insanların ne söylediğini, diğeri gerçekte ne yaptığını ortaya çıkarır.
Kitaptaki keşif döngüsünde önceliklendirme ve müzakere yer alır. MoSCoW ve WSJF, bu konuşmayı somutlaştırmak için eklediğimiz iki pratik araçtır; uzlaşmanın yerini almazlar.
Must have, Should have, Could have, Won’t have (this time) - Must (Olmazsa Olmaz): Bu sürümde yerine getirilmesi zorunlu olan gereksinimler. Örn: Randevu oluşturma. - Should (Olmalı): Çok önemli ama bunlar olmadan da sistem bir şekilde çalışır. Örn: Randevu hatırlatma SMS’i. - Could (Olabilir): Güzel olurdu ama olmaması büyük eksiklik değil. Örn: Doktorun profil fotoğrafı. - Won’t (Bu Sürümde Olmayacak): Şimdi değil, belki gelecek versiyonda.
Gecikme maliyeti / iş büyüklüğü. SAFe’de gecikme maliyeti; iş değeri, zaman kritikliği ve risk azaltma/fırsat yaratma puanlarıyla tahmin edilir.AS-HYS ürün birikiminde üç özellik var (puanlar 1-8 arası):
| Özellik | İş değeri | Zaman kritikliği | Risk azaltma / fırsat | İş büyüklüğü |
|---|---|---|---|---|
| A: Randevu hatırlatma SMS’i | 5 | 3 | 1 | 3 |
| B: Hasta kaydına rol tabanlı erişim | 8 | 8 | 8 | 5 |
| C: Doktor profil fotoğrafı | 2 | 1 | 1 | 2 |
İkili çalışın (5 dk): Her özelliğin WSJF puanını hesaplayın, sıralayın ve MoSCoW etiketi verin.
WSJF sonuçları: B = 4,8; A = 3,0; C = 2,0. Sıralama B, A, C. MoSCoW etiketleri sırasıyla Must, Should, Could; bu etiketler WSJF puanlarından otomatik çıkmaz.
Sıra: B → A → C. MoSCoW etiketi puandan bağımsız, bağlama göre verilir: B hasta verilerine erişim için zorunlu olduğundan Must’tır. WSJF ise bu örnekte işlerin göreli sırasını gösterir.
Farklı paydaşların çelişen isteklerini yönetmek kaçınılmazdır.
Viewpoints (Bakış Açıları): Her grubun (doktor, hasta, BT) önceliklerini ayrı ayrı analiz edin. Çakışma noktalarını bulun ve bu noktalar üzerinden pazarlık yapın.
Win-Win (Kazan-Kazan): Tek bir tarafın talebini kabul etmek yerine, doktorun hız ihtiyacı ile BT’nin güvenlik ihtiyacını birlikte karşılayan bir çözüm aranır.
Keşifte ortaya çıkan ve müzakere edilen ihtiyaçlar şimdi farklı okurların kullanabileceği bir biçime girer. Çıktı bir Yazılım Gereksinimleri Belgesi (SRS - Software Requirements Specification), ürün iş listesi veya ikisi birlikte olabilir.
SRS ve Ürün İş Listesi (Product Backlog)
| Bölüm | İçerik |
|---|---|
| Önsöz | Belgenin hitap ettiği okuyucu kitlesi, sürüm geçmişi ve değişikliklerin gerekçesi. |
| 1. Giriş | Sistemin amacı, kapsamı, hedefleri ve genel bir bakış. |
| 2. Genel Tanım | Ürün perspektifi, sistem arayüzleri, kullanıcı özellikleri, kısıtlamalar ve varsayımlar. |
| 3. Özel Gereksinimler | Detaylar. Örn: 3.1 Arayüz (UI, API), 3.2 İşlevsel, 3.3 Performans, 3.4 Güvenlik, 3.5 Loglama. |
| Ekler | Sözlük (Glossary), analiz modelleri ve referanslar. |
Uyarı
Doğal Dil Sorunları
Yazım Yönergeleri
Kitaptaki yapılandırılmış doğal dil yaklaşımına ek bir uygulama olarak EARS (Easy Approach to Requirements Syntax), gereksinimleri tutarlı bir söz dizimiyle yazmak için birkaç kalıp sunar:
| Kalıp | Biçim |
|---|---|
| Sürekli | Sistem <yanıtı> vermelidir. |
| Olay güdümlü | <Olay> gerçekleştiğinde, sistem <yanıtı> vermelidir. |
| Durum güdümlü | <Durum> süresince, sistem <yanıtı> vermelidir. |
| İstenmeyen durum | <Koşul> oluşursa, sistem <yanıtı> vermelidir. |
| İsteğe bağlı özellik | <Özellik> varsa, sistem <yanıtı> vermelidir. |
Kötü: “Sistem hızlı yanıt vermelidir.”
Daha açık (olay güdümlü): “Resepsiyon görevlisi randevu araması yaptığında, sistem sonuç listesini döndürmelidir.” Yanıt süresi hedefi, yük ve ölçüm aralığıyla birlikte ayrı bir İOG olarak yazılır.
Kötü: “Kullanıcı kolayca giriş yapar.”
Daha açık (olay güdümlü): “Kullanıcı geçerli kimlik bilgilerini girdiğinde, sistem oturumu açmalıdır.” Açılış süresi ayrıca ölçülebilir bir İOG olarak belirtilir.
Tablo Spesifikasyonu (Özet)
| Durum | Sistemin tepkisi |
|---|---|
| Doktorun seçilen saati boş | Randevuyu oluşturur, kimliğini döndürür. |
| Doktorun seçilen saati dolu | İsteği reddeder, takvimi değiştirmez. |
| Kullanıcının randevu oluşturma yetkisi yok | İsteği reddeder, takvimi değiştirmez. |
Bu özet, eşzamanlı istekler ve iptal kuralları gibi durumlar eklenmeden tam bir spesifikasyon sayılmaz.
Aşağıdaki iki gereksinimi uygun bir EARS kalıbıyla yeniden yazın:
İpucu: İkinci cümlede kaç farklı gereksinim var?
Buradaki ayrımın nedeni cümle sayısı değil, farklı beklentilerin bağımsız olarak doğrulanabilmesidir.
Belirlemede yazdığımız metni şimdi paydaşlarla kontrol ederiz: Gereksinimler gerçek ihtiyacı anlatıyor mu, kendi aralarında tutarlı mı, uygulanabilir ve sınanabilir mi?
Ürünün sonradan spesifikasyona uygun yapılıp yapılmadığını sınamak ayrı bir doğrulama işidir. Kitabın bu bölümündeki odak, gereksinimlerin geçerlenmesidir.
Gereksinim Geçerleme Kontrolleri
| Req ID | Kaynak/Story | Tasarım Öğesi | Test Senaryoları | Kod/Modül |
|---|---|---|---|---|
| FR-APPT-001 | US-12 | SearchService.v1 | TC-APPT-01..04 | svc-search/ |
| NFR-PERF-005 | NFR-Backlog | CacheStrategy-A | TC-PERF-01..03 | lib-cache/ |
| NFR-SEC-010 | Security Spec | OAuth2 Gateway Config | TC-SEC-01..05 | gateway/ |
CR-2026-014, FR-APPT-001 ve NFR-PERF-005 gereksinimlerini etkiler. Randevu arama servisi ve önbellek stratejisi gözden geçirilir. TC-APPT-01..04 ile TC-PERF-01..03 testleri yeniden değerlendirilir; bellek etkisi ayrıca ölçülür.
Modern yazılım paradigmaları, gereksinim mühendisliği disiplinine yeni zorluklar ve fırsatlar getirmektedir.
Yapay Zeka (AI/ML) ve Yazılım 2.0
DevOps ve SRE Bağlamında İOG’ler
Okuma: Sommerville, Software Engineering, 10. Baskı, Bölüm 4.
AŞAYS, akıllı çöp kutularının doluluk oranlarını sensörler aracılığıyla takip ederek, atık toplama rotalarını dinamik olarak optimize edecektir.
Soru 1 (İG vs İOG): “Sistem, dinamik rotaları hesaplayıp toplama araçlarına en geç 120 saniye içinde iletmelidir.” Bu bir İşlevsel Gereksinim midir, İşlevsel Olmayan Gereksinim midir? Neden?
Soru 2 (Keşif Tekniği): Eğer bu sistemin başarısızlık durumunda (örneğin bir sensör arızalandığında) saha personelinin gerçekte nasıl tepki verdiğini ve geçici çözümler ürettiğini anlamak istiyorsanız, hangi keşif tekniği (Görüşme, Etnografi, Senaryo) en etkili olur? Açıklayınız.
Soru 3 (Modern Kapsam): Eğer AŞAYS’a, toplanan atıkların türüne göre geri dönüşüm için optimal sıralamayı belirleyen bir Makine Öğrenimi (ML) modülü eklenirse, hangi yeni İşlevsel Olmayan Gereksinim türünü (AI/ML odaklı) dahil etmelisiniz?
Soru 1: Cümlede iki ayrı beklenti vardır: rotaları hesaplayıp iletmek bir İG, bunu en geç 120 saniyede yapmak bir performans İOG’sidir. Ayrı yazılmaları, her birinin bağımsız doğrulanmasını kolaylaştırır.
Soru 2: Etnografi. Görüşmede personel kendi geçici çözümlerini dile getirmeyebilir; sahada gözlem, örtük gereksinimleri ortaya çıkarır.
Soru 3: Örneğin adillik/önyargı (bölgelere eşit hizmet), model doğruluğu ve açıklanabilirlik ya da veri kalitesi ve gizliliği. Bu İOG’ler ölçülebilir metriklere bağlanmalıdır (örn. gruplar arası hata oranı farkı ≤ eşik).
Yazılım Mühendisliği – OMÜ | 🏠