Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
PlantUML ile Diagrams-as-Code: Söz Dizimi, C4-PlantUML, include'lar ve CI'da Render
PlantUML diyagramı bir metin dosyasında tarif edip yerelde ya da CI'da render eder; böylece diyagram kodla aynı PR'da değişir, diff'lenir ve --check-syntax ile doğrulanır. Bu yazıda serinin use case, class, sequence, state ve C4 diyagramlarının PlantUML kaynaklarını, ortak stili !include ile paylaşmayı, GitHub Actions'ta render'ı ve public sunucu ile SVG'ye gömülü kaynağın gizlilik riskini gerçek çıktılarla anlatıyoruz.
C4 Model: Context, Container, Component, Code ve Notation Kuralları
C4 model, bir yazılım sistemini Context, Container, Component ve Code seviyelerinde, her biri ayrı bir okuyucuya hitap eden yakınlaşan haritalarla anlatır; çoğu ekip için ilk iki seviye yeterlidir ve C4'teki container bir Docker container değil, çalışan bir uygulama ya da veri deposudur. Bu yazıda İK Portalı'nın Context, Container ve Component diyagramlarını notation checklist'ine uygun çizip C4-PlantUML ile koda döküyor ve UML ile nasıl birlikte kullanılacağını gösteriyoruz.
Activity Diagram: Action, Decision, Fork/Join, Swimlane ve Onay İş Akışını Modellemek
Activity diagram bir iş akışını adımlar, guard'lı decision'lar, fork/join ile paralellik ve kimin yaptığını gösteren swimlane'lerle çizer; semantiği token akışıdır, bu yüzden decision'dan çıkan yollar bir merge'de birleşmezse akış implicit join'de takılır. Yazıda İK Portalı'nın izin onay süreci swimlane'lerle çiziliyor, token kuralları küçük bir C# simülatörüyle gösteriliyor ve akış handler'lara bölünüyor.
Sequence Diagram 2: alt, opt, loop, par, break ve ref ile Hata Yolları ve Asenkron Akışlar
Combined fragment'ler sequence diagram'a koşul (alt, opt), erken çıkış (break), tekrar (loop), paralellik (par) ve bölünmezlik (critical) ekler, ref ise başka bir diyagramı çağırır; asenkron mesaj açık ok ucuyla çizilir ve await edilse bile gönderen sonucu beklemiyorsa asenkrondur. Yazıda İK Portalı'nın onay akışı, yetersiz bakiye hatası ve queue üzerinden giden e-posta ile takvim kaydı gerçek koddan çiziliyor.
Class Diagram'dan Koda ve Koddan Diyagrama: Domain Model, Design Model ve puml-gen
Domain model iş dünyasının kavramlarını tipsiz ve operation'sız gösterir, design class diagram ise aynı vakanın C#'a yakın tasarım kararlarını; ilki elle çizilir, ikincisinin dilimleri koda dökülür ve puml-gen gibi araçlarla koddan üretilen diyagramlar yalnız gözlem ve drift kontrolü için kullanılır. Yazıda İK Portalı'nın izin modülü diyagramdan EF Core configuration'ına ve DDL'e, oradan da puml-gen ile tekrar PlantUML'e taşınıyor.