Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
18 yazı bulundu #uml
Uçtan Uca Modelleme: İzin Modülünü Requirement'tan Çalışan Koda Taşımak
Yazılım Tasarımı SERİ 18

Uçtan Uca Modelleme: İzin Modülünü Requirement'tan Çalışan Koda Taşımak

Diyagramlar, requirement'tan endpoint'e, state machine'den domain koduna ve ER'den migration'a izlenebilir bir zincir kurduğunda ve değişiklikten önce "hangi diyagram değişiyor?" sorusunu cevaplamak için kullanıldığında değer üretir. Serinin finalinde İzin modülünü .NET 10 API, EF Core ve Angular 22 koduna taşıyor, yarım gün izin requirement'ının etkisini git diff'le ölçüyor ve yol boyunca diyagramların yakaladığı gerçek hataları gösteriyoruz.

7 Kas 2026 17 dk 4
Mermaid ve Structurizr DSL: Markdown İçinde Diyagram, Model Tabanlı C4 ve Hangisini Seçmeli?
Yazılım Tasarımı SERİ 17

Mermaid ve Structurizr DSL: Markdown İçinde Diyagram, Model Tabanlı C4 ve Hangisini Seçmeli?

Mermaid, GitHub ve Azure DevOps Markdown'ında doğrudan render edilen hızlı diyagramlar için, Structurizr DSL ise tek bir modelden tutarlı C4 view'ları türetmek için doğru araçtır. Bu yazıda serinin diyagramlarını Mermaid'e çevirip söz dizimi tuzaklarını gerçek çıktılarla gösteriyor, aynı container diyagramını Structurizr ile çiziyor ve PlantUML, Mermaid ve Structurizr'i karşılaştırıyoruz.

7 Kas 2026 15 dk 6
PlantUML ile Diagrams-as-Code: Söz Dizimi, C4-PlantUML, include'lar ve CI'da Render
Yazılım Tasarımı SERİ 16

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.

7 Kas 2026 14 dk 4
ER Diagram: Chen ve Crow's Foot Notasyonu, Cardinality, Optionality ve Class Diagram'dan Tabloya
Yazılım Tasarımı SERİ 15

ER Diagram: Chen ve Crow's Foot Notasyonu, Cardinality, Optionality ve Class Diagram'dan Tabloya

ER diagram, verinin hangi tablolarda durduğunu ve her ilişkinin iki ucunda en az ve en fazla kaç kayıt olabileceğini gösterir: Chen kavram konuşmasına, Crow's Foot tablo ve FK konuşmasına uygundur. Bu yazıda İzin modülünü iki notasyonla çizip composition, association class ve inheritance'ın tablolara dönüşünü EF Core çıktısıyla gösteriyor, Mermaid erDiagram'ı doğrudan EF Core modelinden üretiyoruz.

7 Kas 2026 15 dk 5
C4 Model: Context, Container, Component, Code ve Notation Kuralları
Yazılım Tasarımı SERİ 14

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.

7 Kas 2026 11 dk 4
Deployment Diagram: Node, Artifact, Execution Environment ve Docker/Azure Topolojisi
Yazılım Tasarımı SERİ 13

Deployment Diagram: Node, Artifact, Execution Environment ve Docker/Azure Topolojisi

Deployment diagram, yazılımın hangi node ve execution environment'ta çalıştığını, hangi artifact'in nereye yerleştiğini ve node'ların hangi protokol ve port'la konuştuğunu gösterir. Bu yazıda İK Portalı'nın docker compose geliştirme ortamını ve Azure production topolojisini çizip artifact ile component arasındaki «manifest» köprüsünü kuruyoruz.

7 Kas 2026 10 dk 6
Component Diagram: Provided/Required Interface, Port ve .NET Modüllerini Çizmek
Yazılım Tasarımı SERİ 12

Component Diagram: Provided/Required Interface, Port ve .NET Modüllerini Çizmek

Component diagram, sistemi değiştirilebilir modüllere ayırıp her modülün hangi interface'i sağladığını (lollipop) ve hangisini istediğini (socket) gösterir; .NET'te bu, public sözleşme project'i, internal implementasyon ve composition root'taki DI kayıtları demektir. Bu yazıda İzin, Bordro ve Bildirim modüllerini port ve delegation connector'larıyla çizip DI registration'ından geri okuyoruz.

7 Kas 2026 11 dk 6
State Machine Diagram: State, Transition, Guard, Entry/Exit ve İzin Talebinin Yaşam Döngüsünü Koda Dökmek
Yazılım Tasarımı SERİ 11

State Machine Diagram: State, Transition, Guard, Entry/Exit ve İzin Talebinin Yaşam Döngüsünü Koda Dökmek

State machine diagram, bir object'in hangi durumlarda bulunabileceğini ve hangi event'in, hangi guard'la onu nereye taşıdığını gösterir; her ok bir switch kolu, bir Stateless PermitIf'i ve bir unit test olur. Bu yazıda İzin Talebi'nin yaşam döngüsünü composite state, choice ve entry/effect ayrımıyla çizip C#'a ve testlere dönüştürüyoruz.

7 Kas 2026 16 dk 4
Activity Diagram: Action, Decision, Fork/Join, Swimlane ve Onay İş Akışını Modellemek
Yazılım Tasarımı SERİ 10

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.

7 Kas 2026 11 dk 4
Sequence Diagram 2: alt, opt, loop, par, break ve ref ile Hata Yolları ve Asenkron Akışlar
Yazılım Tasarımı SERİ 09

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.

7 Kas 2026 12 dk 5
Sequence Diagram 1: Lifeline, Mesaj Türleri, Activation ve Bir API İsteğinin Yolculuğu
Yazılım Tasarımı SERİ 08

Sequence Diagram 1: Lifeline, Mesaj Türleri, Activation ve Bir API İsteğinin Yolculuğu

Sequence diagram, bir senaryoda participant'lar arasındaki mesajları zaman sırasıyla gösterir: lifeline'lar yan yana, zaman yukarıdan aşağı, synchronous call dolu ok ucuyla, reply kesikli çizgiyle çizilir. Yazıda İK Portalı'nın POST /leave-requests isteği Angular'dan SQL Server'a kadar gerçek koddan ve EF Core log'undan çizilip Mermaid ile kod olarak da veriliyor.

7 Kas 2026 9 dk 4
Object Diagram ve Package Diagram: Anlık Görüntü ve .NET Solution'ının Bağımlılık Haritası
Yazılım Tasarımı SERİ 07

Object Diagram ve Package Diagram: Anlık Görüntü ve .NET Solution'ının Bağımlılık Haritası

Object diagram belli bir andaki somut instance'ları ve link'leri çizerek class diagram'daki multiplicity hatalarını yakalar, package diagram ise project'ler arasındaki bağımlılıkları göstererek katman ihlallerini görünür kılar. Yazıda #42 talebinin snapshot'ı yanlış bir 0..1'i ortaya çıkarıyor, solution'ın package diagram'ı da csproj dosyalarından üretilip Domain'e sızan EF Core bağımlılığı CI'da yakalanıyor.

7 Kas 2026 12 dk 3
Blog Haritası