Spec, Domain ve Disposable Code
AI Çağında Domain Analizi
Domain Analysis in the Age of AI
AI kod yazmayı hızlandırdıkça darboğaz 'ne yazmalı' sorusuna kayıyor; 2026 verileri de kazancın basit, yeni işlerde yoğunlaştığını gösteriyor. Domain analizi bu sorunun cevabını üreten, AI'ın destekleyip yerine geçemediği iş.
AI kodu ucuzlattıkça darboğaz ne yazılacağını anlamaya kaydı; domain analizi bu cevabı üretir, LLM ancak aday çıkarır, kararı ekip verir.
DDD topluluğu ve verimlilik verileri bu yönde; karşı taraf LLM'lerin görüşme, soru sorma ve özetleme yeteneğinin analizi otomatikleştireceğini savunuyor.
Zihinsel model
LLM analizin tutanakçısıdır: her şeyi yazar ve taslak çıkarır, ama oy hakkı masadaki iş uzmanlarındadır.
Neden
- Ajan belirsiz isteği sormadan somut koda çevirir; seçtiği yorum yanlış olsa bile kodda yaşar.
- LLM genel iş bilgisini senin alanının gerçeği gibi sunar ve bilmediğini söylemez.
- LLM çelişkiyi tek makul tanımda birleştirir; oysa çelişki çoğu zaman iki ayrı bounded context sinyalidir.
Kanıt
DORA'nın ROI raporu, AI verim kazancının basit greenfield işlerde yüksek, karmaşık legacy kodda ise yüzde 10 ya da altında kaldığını aktarıyor.
InfoQ: New DORA Report on AI Return on Investment, 2026Geliştiricilerin yüzde 93'ü AI çıktısına güvenmek için kaynak gösterilmesini şart koşuyor.
Stack Overflow Developer Survey, 2026Thoughtworks, kararları, istisnaları ve gerekçeleri AI'ın sorgulayabileceği biçimde bağlayan context graph tekniğini değerlendirmeye aldı.
Thoughtworks Technology Radar: Context graph, 2026Karşı görüş
LLM'ler görüşme yapma, soru sorma ve özet çıkarmada hızla iyileşiyor; analizin büyük kısmı otomatikleşip insan rolü onaya daralabilir.
Kavramlar
Pratikte
- LLM çıktısındaki her terime ve event'e kaynak iliştir; kaynaksız öğeyi varsayım olarak işaretle.
- Event storming'i iş uzmanlarıyla yap; LLM taslağını tartışma girdisi olarak getir.
- Glossary, event kataloğu ve bağlam haritasını repo içinde tut; ajan talimatı bunlara işaret etsin.
Kod üretimi ucuzladıkça yazılım projelerinde zamanın ve hatanın asıl kaynağı, problemin yanlış anlaşılması haline geliyor: yanlış kavram, yanlış sınır, yanlış varsayım. Domain analizi; DDD (Domain-Driven Design), event storming ve bounded context tasarımı gibi araçlarla iş alanını keşfedip modele dökme pratiği. Asıl soru bu pratiğin AI çağında ne olduğu: LLM'ler bir iş alanını analiz etmeye ne kadar yardım edebilir, nerede yanıltır ve ekibin bu işteki rolü nasıl değişir? Ekim 2026 itibarıyla tablo daha net: Stack Overflow'un 2026 anketinde geliştiricilerin yüzde 66'sı coding agent kullanıyor, DORA'nın 2026 ROI raporu ise AI kazancının basit ve yeni işlerde yüzde 35-40'a ulaşırken karmaşık legacy kodda yüzde 10'un altında kaldığını aktarıyor. DDD Europe 2026'nın açılışında Eric Evans da aynı soruyu sordu. Konu, ajanlara verilen bağlamın kalitesini doğrudan belirlediği için önemini koruyor.
Çıkarımlar
- Kod ucuzladıkça pahalı olan yanlış anlaşılmış problem; analiz bu maliyeti koda geçmeden düşürür.
- 2026 verisine göre AI kazancı basit ve yeni işlerde yüksek, karmaşık legacy kodda düşük; fark büyük ölçüde problemin ne kadar iyi anlaşıldığından geliyor.
- LLM analiz girdisi üretir (aday terim, aday event, soru listesi), kararı ekip verir; çıktıyı bu şekilde etiketleyin.
- Çelişki bir sinyaldir; LLM'in iki tanımı tek tanımda birleştirmesine izin vermeyin, çoğu zaman iki ayrı bağlam vardır.
- Bounded context sınırı, ajana verilecek bağlamın da sınırıdır.
- Analizin çıktısı repo içinde glossary, event kataloğu ve bağlam haritası olmalı; ajanın kullandığı adların glossary ile eşleşmesini ölçün.
Alt başlıklar
Darboğaz koddan anlayışa kaydı
Bir özelliği yazdırmanın maliyeti saatlerden dakikalara inince, yanlış özelliği yazdırmanın maliyeti göreli olarak büyüdü. Ajan, belirsiz bir isteği kendinden emin bir şekilde somut koda çevirir; 'sipariş iptali' istediğinizde kısmi iptal, iade ve stok geri alma arasındaki farkı sizin yerinize, sormadan seçer.
Bu yüzden domain analizinin değeri artıyor. Analiz, ekibin şu sorulara ortak cevap vermesini sağlar: Hangi kavramlar var ve tam olarak ne anlama geliyorlar? Hangi kurallar asla çiğnenmemeli? Hangi süreçler hangi olaylarla tetikleniyor? Kim neyin sahibi? Somut bir eşik: bir özellik için iş birimi ile mühendislik aynı terimi iki farklı anlamda kullanıyorsa (ör. 'aktif müşteri' satışta son 90 günde alım yapan, destekte açık bileti olan), koda geçmeden önce o terimin bölünmesi gerekir. Aksi halde ajan hangisini seçtiyse o kodda yaşar.
Ekim 2026 itibarıyla durum
Son on iki ayda ajanla kod yazmak ana akım oldu. Stack Overflow'un 6 Ekim 2026'da yayımlanan ve 30 binden fazla katılımcıya dayanan anketinde geliştiricilerin yüzde 66'sı coding agent kullanıyor; AI çıktısına güvenmek için kaynak gösterilmesini şart koşanların oranı yüzde 93. DORA'nın 2026 başında yayımlanan 'ROI of AI-Assisted Software Development' raporu, aktardığı Stanford araştırmasıyla AI'ın basit greenfield işlerde yüzde 35-40 verimlilik kazancı sağladığını, karmaşık legacy kodda ise bunun yüzde 10 ya da altında kaldığını söylüyor; rapor bunu AI çıktısını doğrulamanın getirdiği 'verification tax' ile birlikte okuyor. Kısacası kazanç, problemin iyi anlaşıldığı yerde yoğunlaşıyor.
DDD topluluğu da bu soruyu merkeze aldı. Eric Evans, Haziran 2026'daki DDD Europe açılış konuşmasında domain modellerinin ve bounded context'lerin önemini koruyacağı hipotezini ve LLM ile deterministik hesabı birleştirip koddan domain sözlüğü çıkaran deneyini anlattı; Chelsea Troy da bounded context sezgisini LLM ile çalışırken bağlam yönetimi için önerdi. Vaughn Vernon, Mayıs 2026'da coding agent'ların ayrıntılı yönlendirmeye rağmen CRUD'a kaydığını aktardı. Thoughtworks'ün Nisan 2026 Radar'ı ise kararların gerekçesini sorgulanabilir tutan 'context graph' tekniğini 'Assess' halkasına aldı.
Event storming: keşfin en hızlı aracı
Event storming, Alberto Brandolini'nin geliştirdiği, iş uzmanları ve geliştiricilerin bir duvar (ya da Miro gibi dijital bir tahta) önünde iş sürecini domain event'leri üzerinden keşfettiği atölye formatı. Turuncu yapışkan notlara geçmiş zamanlı olaylar yazılır ('Sipariş verildi', 'Ödeme reddedildi'), sonra zaman çizgisine dizilir, ardından komutlar, aktörler, politikalar ve dış sistemler eklenir. Çelişkiler ve bilinmeyenler 'hot spot' olarak işaretlenir.
Gücü, farklı kişilerin kafasındaki farklı süreç modellerini birkaç saat içinde görünür kılması. Big picture formatında 10-15 kişilik bir atölye genelde yarım gün ile bir gün sürer. Anti-pattern: atölyeyi yalnızca geliştiricilerle yapmak. Event storming'in değeri, depo sorumlusunun 'aslında o adım hiç böyle işlemiyor' dediği andan gelir; bu cümleyi ne bir LLM ne de dokümantasyon üretir.
Bounded context: modelin nerede geçerli olduğunu çizmek
Bounded context, bir modelin ve onun terimlerinin tutarlı olduğu sınır. Aynı kelime iki bağlamda farklı anlama gelebilir ve bu bir hata değil, gerçekliğin kendisi. 'Ürün' katalog bağlamında açıklaması ve görselleri olan bir kayıt, stok bağlamında depo konumu ve adedi olan bir kalem, faturalama bağlamında vergi oranı olan bir satırdır.
Sınırları çizmek için kullanışlı sorular: Bu kavramı değiştirme yetkisi kimde? Bu kural hangi ekibin sorumluluğunda? Bu iki süreç farklı hızlarda mı değişiyor? DDD Crew'un Bounded Context Canvas'ı, her bağlam için amacı, ortak dili, gelen ve giden mesajları ve iş kararlarını tek sayfada toplamaya yarıyor. AI çağında ek bir fayda: bağlam sınırı, ajana verilecek bağlamın da sınırıdır. Faturalama bağlamında çalışan bir ajana katalog bağlamının tüm kurallarını vermek hem token israfı hem karışıklık kaynağıdır.
LLM'ler analizde nerede yardım ediyor
LLM'ler domain analizinde güçlü bir asistan olabilir, ama belirli işlerde. Ham materyali işlemek: toplantı transkriptleri, destek biletleri, mevcut veritabanı şeması ve eski kod tabanından aday terimler, aday event'ler ve aday kurallar çıkarmak. Event storming öncesinde 'bu 200 destek biletinde geçen süreç adımlarını geçmiş zamanlı event olarak listele' istemi, atölyeye boş duvarla değil, tartışılacak bir taslakla girmeyi sağlar.
Çelişki avı: aynı terimin farklı dokümanlarda farklı tanımlarını yan yana koymak. Soru üretimi: bir süreç için 'bu adım başarısız olursa ne olur?', 'bu kuralın istisnası var mı?' gibi sorular listesi çıkarmak. Dokümantasyon: atölye sonrası duvar fotoğrafından glossary, event kataloğu ve bağlam haritası taslağı üretmek. Ortak nokta şu: LLM bir aday üretiyor, ekip karar veriyor. Çıktıyı 'analiz sonucu' değil 'analiz girdisi' olarak etiketlemek bu ayrımı korur.
LLM'ler analizde nerede yanıltıyor
En büyük risk, LLM'in genel iş bilgisini sizin iş alanınızın gerçeği gibi sunması. Bir e-ticaret iade süreci sorduğunuzda model size endüstri ortalamasını, yani makul ama genel bir süreci anlatır. Sizin şirketinizde iadenin depo yerine mağazada onaylanıyor olması, ya da kurumsal müşterilere iade yerine alacak dekontu kesilmesi bu ortalamada yoktur. Model bunu bilmediğini de söylemez.
İkinci risk düzleştirme: LLM'ler çelişkiyi çözmeye, iki farklı tanımı tek bir 'makul' tanımda birleştirmeye eğilimli. Oysa analizde çelişki bir sinyaldir; çoğu zaman iki ayrı bounded context olduğunu gösterir. Üçüncü risk sahte tamlık ve kod tarafındaki yansıması: Vaughn Vernon'ın 2026'da aktardığı gibi, ajanlar zengin domain modeli yerine CRUD'a kayma eğiliminde; analizden gelen kurallar açıkça yazılı değilse kod onları anemik bir veri modeline indirger. Sahte tamlıkta ise model eksiksiz görünen bir event listesi üretir ve ekip boşlukları sorgulamayı bırakır. Pratik önlem: model çıktısındaki her öğeye kaynak (hangi transkript, hangi bilet) iliştirmesini isteyin; kaynağı olmayan öğe 'varsayım' olarak işaretlensin ve atölyede doğrulanmadan modele girmesin.
Analiz çıktısını ajan bağlamına dönüştürmek
Domain analizinin AI çağındaki yeni tüketicisi, kodu yazan ajanın kendisi. Duvarda kalan bir event storming fotoğrafı ajan için yok hükmündedir. Analiz sonunda üretilmesi gereken minimum paket: bağlam başına glossary (terim, tanım, karıştırılmaması gereken terim), event kataloğu (ad, tetikleyen komut, taşıdığı veri), temel kurallar listesi ve bağlam haritası (hangi bağlam hangisine ne gönderiyor).
Bu paket repo içinde, sürümlenen dosyalar olarak durmalı ve ajan talimat dosyası (CLAUDE.md, AGENTS.md vb.) hangi görevde hangi bağlamın dosyalarını okuyacağını söylemeli; tüm analizi talimat dosyasına yapıştırmak, Thoughtworks'ün 2026'da uyardığı instruction bloat sorununa yol açar. Ölçülebilir bir hedef koyabilirsiniz: ajanın ürettiği PR'larda kullanılan alan ve sınıf adlarının glossary'deki terimlerle eşleşme oranı. Glossary'de 'Shipment' varken kodda 'Delivery', 'Cargo' ve 'Parcel' görüyorsanız, ya glossary eksik ya da ajan onu okumuyor. Analiz artık bir kez yapılıp rafa kalkan bir doküman değil, her görevde tüketilen bir girdi.
Son gelişmeler
Ekim 2026 itibarıyla
Önce kendi cevabını düşün, sonra aç.
LLM'e şirketin dokümanlarını verip bounded context'leri çıkarmasını istesek olmaz mı?
Bir taslak için olur ve zaman kazandırır. Ama dokümanlar genelde olması gerekeni anlatır, olanı değil; sınırlar da çoğunlukla dokümanda değil, kimin neye karar verdiğinde saklıdır. Taslağı atölyeye girdi olarak götürün, iş uzmanlarına 'burada yanlış olan ne?' diye sorun.
Event storming uzaktan ekiplerle çalışır mı?
Miro veya benzeri tahtalarla çalışır, ama süreyi kısaltıp atölyeyi iki parçaya bölmek gerekir; dört saatlik uzaktan bir atölye dikkat açısından zor. Kolaylaştırıcının hot spot'ları aktif olarak toplaması ve sessiz kalanlara doğrudan söz vermesi yüz yüze olandan daha kritik.
Küçük bir ekipte ya da tek kişilik bir girişimde domain analizi gereksiz değil mi?
Ölçeği küçülür ama kaybolmaz. Tek kişilik bir ekipte bile müşterilerle yapılan görüşmelerden event listesi ve glossary çıkarmak bir iki saatlik iş ve ajanla çalışırken bağlam kalitesini doğrudan artırır. Gereksiz olan, büyük ekiplerin seremonisini taklit etmek.
AI ileride iş uzmanıyla doğrudan konuşup analizi tek başına yapamaz mı?
Görüşme yapmak, soru sormak ve özet çıkarmak konusunda giderek daha iyi oluyor. Ama analizin özü, çelişen çıkarları ve örtük kuralları görünür kılıp birilerinin karar vermesini sağlamak. 2026'da Eric Evans'ın DDD Europe açılışındaki hipotezi de bu yönde: domain modelleri ve bounded context'ler önemini koruyacak, ama biçimleri değişebilir. Kararın sahibi insan olduğu sürece analiz de en azından bir insanın onayladığı bir süreç olarak kalacak.
Notun kaynakları
- EventStorming (Alberto Brandolini)
- Bounded Context Canvas (DDD Crew, GitHub)
- BoundedContext (Martin Fowler)
- The results of the 2026 Developer Survey are here! (Stack Overflow, Ekim 2026)
- New DORA Report Claims Strong Engineering Foundations Drive AI Return on Investment (InfoQ, Mayıs 2026)
- Opening Keynote Eric Evans (DDD Europe 2026)
- This Is Your Agent on Domain-Driven Design (Vaughn Vernon, WSO2CON 2026)
- Context graph (Thoughtworks Technology Radar, Nisan 2026)
Sunum stili
12 slayt. Tıklarsan sunum o slayttan başlar.
Slayt notları
Agent aynı kodu dakikalar içinde yazıyor ama özelliğin teslim süresi aynı oranda kısalmıyor. Zaman artık yanlış anlaşılmış isteği düzeltmeye gidiyor.
Kısmi iptal mi, tam iade mi, stok geri alma mı? Agent'ın seçtiği şey kodda yaşamaya devam eder.
'Aktif müşteri' satışta son 90 günde alım yapan, destekte açık bileti olan kişi. İş birimi ve mühendislik aynı terimi iki anlamda kullanıyorsa koda geçmeden terim bölünmeli.
DORA'nın 2026 ROI raporunun aktardığı Stanford verisi. Fark kodun zorluğundan çok, problemin ve kuralların ne kadar iyi anlaşıldığından geliyor; analiz tam bu farkı kapatır.
Brandolini'nin formatı. Anti-pattern: atölyeyi yalnızca geliştiricilerle yapmak. Değer, depo sorumlusunun 'o adım aslında öyle işlemiyor' dediği andan gelir.
Bu bir hata değil, gerçekliğin kendisi. Faturalama bağlamında çalışan Agent'a kataloğun tüm kurallarını vermek hem token israfı hem karışıklık. Bounded Context Canvas'ı tek sayfalık araç olarak göster.
LLM sektör ortalamasını sizin süreciniz gibi anlatır: kurumsal müşteriye iade yerine alacak dekontu kesildiğini bilmez ve bilmediğini söylemez. Bir de sahte tamlık: eksiksiz görünen liste sorgulamayı durdurur.
Modelin iki tanımı tek 'makul' tanımda eritmesine izin vermeyin. Kural: LLM çıktısı analiz sonucu değil, analiz girdisi.
Kaynağı olmayan her öğe 'varsayım' etiketiyle atölyeye gider ve doğrulanmadan modele girmez.
Duvarda kalan Event Storming fotoğrafı Agent için yok hükmünde. Paket repo içinde, sürümlenen dosyalar olarak durmalı.
Glossary'de 'Shipment' varken kodda Delivery, Cargo ve Parcel görüyorsanız ya glossary eksik ya Agent onu okumuyor. Gereksiz olan, büyük ekiplerin seremonisini taklit etmek.
Soru olarak bırak: iş kurallarını Agent'a nasıl aktarıyorsunuz, glossary mi, uzun prompt mu, hiç mi?