Gereksinim Mühendisliği
2026
Bu dersin sonunda:
Gereksinim Mühendisliği, “Ne inşa edeceğiz?” ve “Hangi kurallar çerçevesinde inşa edeceğiz?” sorularını sistemli biçimde yanıtlama sürecidir. Geliştirilecek sisteme ilişkin ortak bir anlayış oluşturur.
Süreç iki şeyi ortaya koyar:
Bu sürecin çıktısı gereksinimlerdir; geliştirme ve değerlendirme sırasında başvurulacak ortak çerçeveyi oluştururlar.
Gereksinim (Requirement) Nedir?
Bir projenin en başındaki genel bir fikirden (“kullanıcı dostu bir sistem”), geliştiricinin kod yazabileceği teknik bir detaya (“giriş butonu 300ms içinde tepki vermeli”) kadar uzanan tanımlardır.
Pratikte bu terim iki farklı düzeyde kullanılır:
Davis’in Soyutlama Yaklaşımı: Büyük projelerde, çözümün önceden tanımlanmaması için ihtiyaçlar başlangıçta soyut olmalıdır. Sözleşme imzalandıktan sonra ise, doğrulama ve geliştirme için daha ayrıntılı bir tanım yazılmalıdır.
Kullanıcı ve Sistem Gereksinimleri
Bu iki seviye, gereksinimleri farklı paydaş grupları için ayırır:
Gereksinim belgeleri, farklı rollere ve beklentilere sahip paydaşlar tarafından okunur.
| 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. |
Uyarı
Eğer bu sorulardan herhangi birinin cevabı “hayır” ise, projeye devam etmek risklidir.
Akıl Sağlığı Hasta Yönetim Sistemi (AS-HYS), ruh sağlığı kliniklerinde hasta kayıtlarını, randevuları ve tedavi bilgilerini yöneten bir bilgi sistemidir.
Bu dersteki örneklerin çoğu bu vakadan gelir. Sistemi Sistem Modelleme dersinde ayrıntılı inceleyeceğiz.
İ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
Belirsizlik, Eksiklik ve Tutarsızlık
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ığı |
Bu metrikler, soyut hedefleri (“güvenli olsun”) somut mühendislik görevlerine (“AES-256 kullan”) dönüştürür.
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.AES-256 at-rest: Veritabanı çalınsa bile, içindeki kişisel veriler (at-rest: diskte dururken) endüstri standardı AES-256 ile şifrelendiği için okunamaz olmalıdır.TLS 1.3 in-transit: Veri, kullanıcının tarayıcısından sunucuya giderken (in-transit: hareket halindeyken) ağ trafiğini dinleyenler tarafından okunamasın diye modern TLS 1.3 protokolü ile şifrelenmelidir.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 ihlali = 0: Sistem, engelli kullanıcıların da rahatça kullanabilmesi için uluslararası kurallara (renk kontrastı, klavye ile kullanım vb.) uymalıdır.Metrik tek başına yetmez: kim, hangi koşulda, neyi yaparken ölçüleceği de belli olmalıdır. Kalite özelliği senaryosu bunu altı parçada yazar.
Belirsiz hedef: “Randevu arama hızlı olmalıdır.”
| Parça | Sorduğu soru | AS-HYS örneği |
|---|---|---|
| Kaynak (Source) | Kim başlatıyor? | Resepsiyon görevlisi |
| Uyarıcı (Stimulus) | Sisteme ne oluyor? | Aynı klinik için 1 dakikada 50 arama |
| Ortam (Environment) | Hangi koşulda? | Yoğun saat (09:00-10:00), üretim |
| Eser (Artifact) | Sistemin hangi parçası? | Randevu arama uç noktası |
| Tepki (Response) | Sistem ne yapar? | Sonuçları döndürür ve loglar |
| Ölçüt (Measure) | Başarı nasıl ölçülür? | p95 yanıt süresi ≤ 300 ms, hata oranı ≤ %1 |
Bir önceki tablodaki ilk dört parça, testin koşullarını netleştirir:
Kaynak & Eser (Kim, Neyi?): Resepsiyon görevlisi, sistemin randevu arama özelliğini kullanıyor. Testin odağı netleşir.
Uyarıcı & Ortam (Nasıl ve Nerede?): Tek bir arama değil, 1 dakikada 50 arama gibi bir stres yükü altında ve en yoğun saatteki üretim ortamında test edilir; böylece gerçek dünya performansı ölçülür.
Son iki parça, testin geçme koşulunu belirler:
Tepki (Ne Olmalı?): Sistemin sadece çökmemesi değil, beklenen işlevi (sonuçları döndürme) doğru bir şekilde yerine getirmesi gerekir.
Ölçüt (Başarı Nedir?):
p95 yanıt süresi ≤ 300 ms: “Yapılan 100 isteğin 95 tanesi 300 milisaniyeden hızlı olmalı” demektir. Ortalama yerine p95 (95. persentil) kullanmak, isteklerin büyük bölümündeki yanıt süresini görmemizi sağlar.hata oranı ≤ %1: Yoğun yük altında bile sistemin hata verme payının en fazla %1 olabileceğini belirtir. %100 başarı her zaman gerçekçi bir hedef değildir.Aynı sayılar, Kabul Kriteri Örnekleri slaytında NFR-PERF-005 olarak yeniden karşımıza çıkacak.
Bu örnekte fren hesabı bir işlevdir; gereksinimin kaynağı demiryolu alanının fiziksel koşullarıdır.
Etki Alanı Gereksinimlerinin Zorlukları
AS-HYS için şu İOG hedefi verilmiştir:
“Sistem, hasta kayıtlarına erişimde güvenli olmalıdır.”
Sıra sizde (3 dk, ikili çalışın):
Gereksinim mühendisliği, birbiriyle iç içe geçmiş, yinelemeli (iterative) bir süreçtir. Genellikle bir sarmal (spiral) model olarak görselleştirilir.
Ana faaliyetler şunlardır:
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. |
| Etik Yöneticisi | Sistem tüm yasalara (KVKK) %100 uysun. | Yasal kurallar, bazı pratik özelliklerin eklenmesini engelleyebilir. |
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örler ile sistem arasındaki etkileşimleri modelleyen UML tabanlı teknik. | Sistem davranışını formal olarak modellemek. |
| 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.
Toplanan gereksinimleri önem ve aciliyetlerine göre sıralamak için farklı yöntemler kullanılır.
Must have, Should have, Could have, Won’t have (this time) - Must (Olmazsa Olmaz): Bunlar olmadan sistemin bir anlamı yok. Ö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.
(İş Değeri + Zaman Kritikliği + Risk Azaltma) / EforAS-HYS ürün birikiminde üç özellik var (puanlar 1-8 arası):
| Özellik | İş değeri | Zaman kritikliği | Risk azaltma | Efor |
|---|---|---|---|---|
| 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 |
Sıra sizde (3 dk): Her özelliğin WSJF puanını hesaplayın, sıralayın ve MoSCoW etiketi verin.
Sıra: B → A → C. MoSCoW etiketi puandan bağımsız, bağlama göre verilir: B yasal ve güvenlik zorunluluğu nedeniyle Must’tır; WSJF yalnızca sıralamayı belirler.
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.
Bu süreç, keşfedilen gereksinimlerin Yazılım Gereksinimleri Belgesi (SRS - Software Requirements Specification) içine yazılmasını içerir.
Modern Yaklaşım: SRS vs. Ürün Birikimi (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
EARS (Easy Approach to Requirements Syntax), gereksinimi birkaç sabit cümle kalıbıyla yazmayı öğretir:
| 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.”
İyi (olay güdümlü): “Resepsiyon görevlisi randevu araması yaptığında, sistem sonuç listesini en geç 300 ms içinde (p95) döndürmelidir.”
Kötü: “Kullanıcı kolayca giriş yapar.”
İyi (olay güdümlü): “Kullanıcı geçerli kimlik bilgilerini girdiğinde, sistem oturumu en geç 2 saniye içinde açmalıdır.”
Süreç Modelleri dersindeki insülin pompası senaryosunu hatırlayın.
Fonksiyon: Kan şekeri ölçümü ve doz iletimi
Girdi: sensör_glukoz, önceki_ölçümler
Çıktı: insülin_dozu
Önkoşul: cihaz çevrimiçi
Sonkoşul: doz iletildi ve loglandı
Kısıt: ölçüm aralığı 10±1 dk
Tablo Spesifikasyonu (Özet)
| Durum | Aksiyon |
|---|---|
| Glukoz düşüyor / sabit | insülin_dozu = 0 |
| Glukoz artıyor, artış hızı ↓ | insülin_dozu = 0 |
| Glukoz artıyor, artış hızı sabit/artan (Δ: son iki ölçüm farkı) | insülin_dozu = round(Δ/4); sonuç 0 ise MinDose |
Aşağıdaki iki gereksinimi uygun bir EARS kalıbıyla yeniden yazın:
İpucu: İkinci cümlede kaç farklı gereksinim var?
“Tek gereksinim = tek cümle” ilkesi, İG ve İOG’nin karışmasını da önler.
Gereksinim Doğrulama 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/ |
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ümle iki gereksinimi birleştirir: “rotaları hesaplayıp iletmek” bir İG, “en geç 120 saniye” ise bir performans İOG’sidir. “Tek gereksinim = tek cümle” ilkesi gereği ikiye ayrılmalıdı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Ü | 🏠