Memahami LLD: Dari Diagram Kotak-Kotak ke Kode yang Siap Di-commit
Series: Memahami SDLC — Part 5 dari 10
Empat artikel sebelumnya kita udah bahas BRD (masalah bisnis), PRD (fitur yang harus dibangun), SRS (spesifikasi teknis), dan HLD (arsitektur sistem). Sekarang saatnya turun ke level paling granular: LLD — Low-Level Design.
Kalau HLD itu cetak biru arsitektur yang ngasih tau komponen apa aja yang ada dan gimana mereka saling terhubung, LLD jawab pertanyaan: “Class ini method-nya apa aja? Database query-nya gimana? Algoritma sorting-nya pake yang mana?”
LLD adalah jembatan antara arsitektur dan kode. Tanpa LLD, developer senior dan junior bisa ngoding module yang sama dengan pendekatan berbeda — hasilnya kode yang inconsistent, sulit di-maintain, dan penuh technical debt dari hari pertama.
LLD vs HLD — Bedanya Apa?
| Dimensi | HLD | LLD |
|---|---|---|
| Pembaca | Arsitek, Tech Lead | Semua Developer |
| Fokus | Komponen & interkoneksi | Detail implementasi per modul |
| Output | Diagram sistem, data flow | Class diagram, sequence diagram, pseudocode |
| Level detail | Makro (seluruh sistem) | Mikro (per class/function) |
| Tools | Draw.io, Lucidchart, C4 Model | UML, PlantUML, Swagger |
Apa Saja Isi LLD?
1. Class Diagram
Ini diagram paling penting di LLD. Class diagram menunjukkan:
- Attributes — data apa yang disimpan class ini
- Methods — operasi apa yang bisa dilakukan
- Relationships — inheritance, composition, aggregation antar class
Contoh: Kalau lo lagi design sistem e-commerce cart, class diagram lo bakal punya Cart, CartItem, Product, Discount — lengkap dengan relasi dan method masing-masing.
2. Sequence Diagram
Sequence diagram menunjukkan alur interaksi antar objek dalam urutan waktu. Ini penting buat ngejelasin flow yang kompleks — misalnya gimana checkout bekerja dari user klik tombol sampai payment confirmation.
Setiap panah di sequence diagram mewakili satu method call. Ini ngasih tau developer exact urutan panggilan yang harus mereka implementasiin.
3. Pseudocode atau Algortima Detail
Untuk bagian yang kompleks secara logika, LLD kadang menyertakan pseudocode. Misalnya: algoritma price calculation dengan diskon bertingkat, atau logika inventory reservation pas checkout.
Pseudocode ini bukan kode production — tapi cukup detail buat jadi patokan semua developer nulis dengan approach yang sama.
4. Database Query & Schema Detail
LLD yang baik nyertain contoh query-query penting: “SELECT products WHERE stock > 0 JOIN prices WHERE region = ‘ID’.” Ini prevents situasi di mana dua developer ngambil data yang sama tapi pake query berbeda dengan performance yang beda drastis.
5. Interface Contract
Method signature, parameter, return type, exception handling — semua di-detail-in di LLD. Kalau lo pake TypeScript, ini mirip kayak interface definition yang lo tulis sebelum implementasi.
Contoh Sederhana: LLD untuk Fitur “Tambah ke Cart”
Bayangin lo nulis LLD buat fitur add to cart. Ini yang bakal ada di dokumen:
Class: CartService
addItem(userId: string, productId: string, quantity: number): CartResponseremoveItem(userId: string, itemId: string): voidupdateQuantity(userId: string, itemId: string, quantity: number): CartResponsegetCart(userId: string): CartResponse
Sequence addItem:
- Validate product exists → query ke ProductService
- Check stock availability → query ke InventoryService
- Check existing cart → query ke CartRepository
- If item exists → update quantity. If not → create CartItem baru
- Apply active discounts → query ke DiscountService
- Return updated cart dengan total price
Database query:
SELECT p.id, p.price, p.stock, pi.url as image
FROM products p
LEFT JOIN product_images pi ON pi.product_id = p.id AND pi.is_primary = true
WHERE p.id = :productId AND p.status = 'active'
Dengan LLD kayak gini, dua developer berbeda bisa ngerjain fitur yang sama dan hasilnya bakal konsisten. Testing juga lebih gampang karena expected behavior udah di-document dari awal.
Tools Buat Bikin LLD
- PlantUML — text-based UML diagrams. Bisa di-version control.
- Draw.io / diagrams.net — gratis, integrasi Google Drive
- Lucidchart — kolaborasi real-time, tapi berbayar
- Mermaid.js — buat diagram langsung di Markdown/Notion
- Swagger/OpenAPI — buat API contract documentation
Kapan LLD Gak Dibutuhin?
Jujur aja — gak semua project butuh LLD formal. Skip LLD kalau:
- CRUD sederhana — create-read-update-delete tanpa logic rumit
- Quick prototype / MVP — yang penting cepet launch, bukan rapi
- One-person project — lo sendiri yang ngoding, gak ada miskomunikasi
- Package/modul standar — integrasi API pihak ketiga yang udah jelas dokumentasinya
Tapi untuk fitur kompleks di project tim (minimal 2 developer), LLD itu investasi yang balik modal berkali-kali lipat. Satu hari nulis LLD bisa nghemat minggu-minggu debugging dan refactoring.
Next: Part 6 — UI/UX Design (Wireframe & Prototype). Dari kode ke tampilan: gimana desain UI/UX di SDLC, dan bedanya wireframe vs mockup vs prototype.
Series: “Memahami SDLC” — Part 5 dari 10. Follow di teknologinow.com
Discover more from Teknologinow
Subscribe to get the latest posts sent to your email.