System Design Document adalah kontrak pemahaman antara bisnis dan tim teknik. Episode ini membedah struktur SDD yang rapi — dari overview, arsitektur, hingga data flow — beserta praktik menyusun SDD lengkap untuk sistem POS TokoKita yang siap jadi pegangan developer dan QA

Setelah di episode 6 kalian menguasai diagram UML — activity untuk alur, sequence untuk interaksi, class/domain untuk struktur data — saatnya menyatukan seluruh hasil analisis ke dalam satu dokumen induk: System Design Document (SDD).
Mengapa SDD masih relevan di era Agile yang anti-dokumen-tebal? Karena masalahnya bukan dokumen vs tanpa dokumen, melainkan informasi desain tersebar vs terpusat. Saat developer baru bergabung bulan ketiga, saat QA butuh konteks exception flow, saat owner bertanya "kenapa diputuskan begitu" enam bulan kemudian — jawabannya harus ada di satu tempat yang bisa dirujuk. SDD adalah single source of truth untuk keputusan desain, dengan bobot secukupnya (just enough).
Struktur berikut adalah pola yang terbukti bekerja lintas proyek — sesuaikan kedalamannya dengan risiko:
| Bagian | Isi | Pertanyaan yang Dijawab |
|---|---|---|
| 1. Introduction | Tujuan, scope, audiens, referensi | Dokumen ini untuk siapa & apa batasnya? |
| 2. Overall Description | Konteks produk, user classes, asumsi | Sistem ini hidup di lingkungan seperti apa? |
| 3. System Architecture | Arsitektur logis-fisik, komponen, teknologi | Bagaimana sistem disusun? |
| 4. Data Design | Model domain, ERD, data dictionary | Data apa dan bagaimana strukturnya? |
| 5. Component Design | Perilaku tiap modul utama | Tiap bagian bekerja bagaimana? |
| 6. Interface Design | API, integrasi eksternal, UI guideline | Sistem berkomunikasi dengan apa saja? |
| 7. Non-Functional Specs | Performance, security, availability | Seberapa baik harus bekerja? |
| 8. Deployment & Migration | Rencana rilis, migrasi data | Bagaimana sampai ke produksi? |
| 9. Decision Log | Keputusan penting + alternatif + alasan | Kenapa dipilih begini bukan begitu? |
Bagian nomor 9 adalah pembeda SDD dewasa dari SDD pelajaran sekolah: decision log. Desain tanpa alasan akan ditantang ulang setiap kali orang barunya datang; catatan "kami memilih sinkronisasi batch karena internet cabang tidak stabil, alternatif realtime ditolak karena biaya" menyelesaikan debat sebelum dimulai.
Tiga prinsip yang menjaga SDD tetap dibaca, bukan diarsipkan:
Arsitektur pada level analyst menjawab bentuk logis solusi — bukan memilih versi library. Untuk TokoKita, konteksnya: 12 cabang, internet tidak stabil, kasir harus tetap jalan offline, owner ingin laporan pusat.
Pola: offline-first edge + central server
[Kasir Cabang]
App POS desktop/web-PWA
DB lokal (SQLite) -- sumber kebenaran sementara saat offline
|
| sync HTTPS batch (retry, idempotent)
v
[Server Pusat - Cloud]
API transaksi & master data
DB pusat (PostgreSQL)
Modul laporan & dashboard owner
Keputusan kunci:
K1 Offline-first: kasir tidak boleh bergantung jaringan
K2 Sync batch + antrian pending, bukan realtime push
K3 Master data (produk/harga) didorong dari pusat,
perubahan harga hanya lewat modul pusat
K4 Setiap cabang database terpisah secara logis
(tenant = cabang), digabung di laporan pusatPerhatikan gaya penulisannya: pendek, bernomor, menyebut alternatif yang ditolak. Diagram pendampingnya bisa berupa component diagram sederhana — kotak komponen dan panah protokol komunikasi, cukup satu halaman.
DFD melengkapi arsitektur dengan pertanyaan: data mengalir ke mana dan diubah oleh proses apa. Notasi klasiknya empat simbol: proses (lingkaran/rounded), data store (garis ganda/terbuka), entitas eksternal (persegi), aliran data (panah berlabel).
Level DFD juga bertingkat: context diagram (satu lingkaran = seluruh sistem + entitas eksternal) → DFD level 0 (proses utama) → level 1 (pecahan proses). Untuk SDD ukuran menengah, dua level sudah cukup.
Important
Uji mutu bagian arsitektur: minta satu developer senior membaca sendiri selama 15 menit, lalu jelaskan balik desain Anda. Jika ada salah paham fundamental, masalahnya di SDD — bukan di pembacanya.
Berikut kerangka aktual yang kita pakai di 03-design/sdd-tokokita.md — lengkap namun tetap ~12 halaman:
# System Design Document — TokoKita POS & Inventory
Versi: 1.0 | Status: Draft untuk review | Tanggal: 2026-08-16
## 1. Introduction
1.1 Tujuan dokumen — pegangan tim dev & QA fase pilot
1.2 Scope — POS inti, inventori, sync, laporan dasar;
OUT: member/poin, e-commerce, auto-order supplier
1.3 Referensi — BRD v0.2, backlog MoSCoW ep.04, use case ep.05
## 2. Overall Description
2.1 Konteks — 12 cabang, Excel legacy, internet flaky
2.2 User classes — Kasir, Manajer Cabang, Owner
2.3 Asumsi — 1 device kasir/cabang pilot; printer thermal USB
## 3. System Architecture
3.1 Pola offline-first edge + central (lihat K1-K4)
3.2 Diagram komponen
3.3 DFD level 0 & 1
3.4 Decision log
## 4. Data Design
4.1 Domain model & ERD (Produk, StokCabang, Transaksi,
TransaksiItem, Shift, PenyesuaianStok)
4.2 Data dictionary (tabel per entitas)
4.3 Strategi ID unik: UUID untuk sync-safety
## 5. Component Design
5.1 Modul Kasir — UC-01..UC-03
5.2 Modul Sinkronisasi — antrian pending_sync, retry eksponensial
5.3 Modul Inventori — opname & penyesuaian berjejak
## 6. Interface Design
6.1 API internal (endpoint utama + contoh payload)
6.2 Integrasi eksternal — QRIS gateway (detail ep.13)
6.3 UI guideline — target: kasir baru produktif < 30 menit
## 7. Non-Functional Specifications
NFR-01 respons kasir <= 2 detik (p95) mode online
NFR-02 transaksi offline tersinkron <= 60 detik setelah pulih
NFR-03 uptime jam operasional 99.5%/bulan
NFR-04 audit trail semua penyesuaian stok (siapa-kapan-apa)
## 8. Deployment & Migration
8.1 Pilot 1 cabang -> evaluasi 2 sprint -> rollout bertahap
8.2 Migrasi data awal: master produk dari gabungan 12 Excel
(strategi cleansing di episode 16)
## 9. Decision Log
DL-01 SQLite lokal vs web murni -> SQLite (kebutuhan offline)
DL-02 UUID vs auto-increment -> UUID (hindari bentrok saat sync)
DL-03 Harga diedit pusat saja -> konsistensi promo & pajakCatatan penting di bagian 4.3: keputusan UUID vs auto-increment adalah contoh keputusan desain yang lahir dari analisis — database lokal tiap kasir membuat nomor urut otomatis pasti bentrok saat sinkron. Inilah cara NFR offline memaksa keputusan data.
Tip
Ukuran SDD ideal bukan halaman, melainkan pertanyaan yang hilang: hitung berapa pertanyaan developer di dua sprint pertama. Yang terulang lebih dari dua kali wajib ditambahkan ke SDD — itulah cara dokumen berevolusi mengikuti risiko nyata, bukan tebakan.
Inti yang harus dibawa pulang:
Desain sistem tidak berdiri di atas proses yang benar saja, tapi juga proses bisnis yang benar. Di episode 8 selanjutnya kita membahas business process modeling: standar BPMN, teknik process mapping, dan cara menemukan peluang improvement — dipraktikkan pada alur stok opname TokoKita. Pastikan tetap semangat!