Yazılım Notları

Spec, Domain ve Disposable Code

Atılabilir Kod, Kalıcı Domain: Spec-Driven Development'ın Eksik Katmanı

Disposable Code, Durable Domain: The Missing Layer of Spec-Driven Development

AI kodu ucuzlattıkça kod atılabilir hale geliyor; Spec araçları 2026'da olgunlaşsa da kalıcı kalması gereken şey, spec'lerin atıf yaptığı, repo içinde sürümlenen ve göreve göre yüklenen domain modeli.

Yükselen görüş

Kod yeniden üretilebilir hale geldikçe kalıcı varlık domain modelidir; spec'ler özellik başına kalırsa her üretimde kavramlar ve kurallar yeniden icat edilir.

SDD araçları spec ile kod uyumuna odaklanıyor ve Thoughtworks onları hâlâ 'Assess'te tutuyor; özellikler üstü domain katmanını DDD pratisyenleri savunuyor, araçlar henüz sunmuyor.

Zihinsel model

Kod çadırdır, domain modeli temel: çadırı her mevsim yeniden kurarsın, temeli bir kez dökersin.

Neden

  • Spec'in birimi özelliktir; özellik bitince spec bayatlar ve aynı kavram sonraki spec'te başka kelimelerle tanımlanır.
  • Testler örnektir, kural değildir; yeniden üretilen kod testleri geçip invariant'ın ruhunu ihlal edebilir.
  • Kuralların tek kaynağı eski kodsa, kodu attığın an kuralları da atmış olursun.

Kanıt

Spec Kit'in converge adımı, implementasyondan sonra kodun yalnızca o özelliğin spec'iyle uyumunu kontrol ediyor.

Spec Kit June 2026 Newsletter (github/spec-kit), 2026

Thoughtworks, ajan talimat dosyalarının şişmesini 'Caution' olarak işaretledi; talimata gömülen kurallar gözden kaçıyor.

Thoughtworks Technology Radar: Agent instruction bloat, 2026

Spec akışına repo bağlamı besleyen hook'lar, beş puanlık kalite skorunu yalnızca 0,15 puan artırdı.

Spec Kit Agents: Context-Grounded Agentic Workflows (arXiv), 2026

Karşı görüş

Fikir model-driven development hayalini hatırlatıyor; ayrı model katmanı küçük ekipte seremoniye dönüşebilir ve kodla model arasında yeni bir senkron yükü açar.

Kavramlar

Spec-anchoredSpec'in özellik bitince de korunup özellikle birlikte güncellendiği SDD seviyesi.
Ubiquitous Languageİş tarafı ve geliştiricinin aynı anlamda kullandığı, kodda da geçen terimler.
InvariantHer durum değişikliğinden sonra doğru kalması gereken iş kuralı.
Bounded ContextBir modelin ve terimlerinin geçerli olduğu açık sınır.
Progressive Context DisclosureAjanın ayrıntılı bağlamı yalnızca ilgili göreve gelince yüklemesi.

Pratikte

  • Repo içinde bağlam başına glossary ve kimlikli invariant listesi tut; spec'ler bunlara atıf yapsın.
  • Invariant kimliğini spec, kod ve test adında taşı; kapsamı script'le ölç.
  • Model değişikliğini ayrı PR türü yap; gerekçe ve domain sahibinin onayını iste.
Önce bunu okuUnderstanding Spec-Driven-Development: Kiro, spec-kit, and Tessl (martinfowler.com)SDD seviyelerini ve spec'in neden özelliğe bağlı kaldığını gösteren sınıflandırma.