Gambaran besar dulu: apa sih dekomposisi itu?
Bayangin kamu disuruh makan seekor gajah. Mustahil kan, langsung dilahap sekaligus? Tapi kalau dipotong kecil-kecil, satu porsi hari ini, besok porsi berikutnya… lama-lama bisa habis juga.
Nah, dekomposisi itu persis kayak gitu. Artinya memecah satu masalah besar yang bikin kepala pusing menjadi potongan-potongan kecil yang bisa dikerjakan satu per satu — atau bahkan dikerjain bareng-bareng oleh tim berbeda secara bersamaan.
Di dunia IT, ini bukan cuma teori. Programmer profesional beneran kerja pakai cara ini setiap hari. Program besar seperti aplikasi Gojek itu bukan ditulis sekaligus oleh satu orang. Ada tim yang ngerjain bagian login, tim lain ngerjain peta, tim lain lagi ngerjain pembayaran — semuanya paralel.
Langkah-langkah dekomposisi
Mari kita praktik langsung pakai skenario: Pentas Seni Sekolah.
Langkah 1: Identifikasi masalah utama
Tuliskan dulu masalah besarnya dengan jelas:
“Kami harus menyelenggarakan Pentas Seni Sekolah yang sukses.”
Itu satu kalimat. Besar banget, abstrak, bikin bingung mulai dari mana.
Langkah 2: Pecah jadi sub-masalah level pertama
Tanya ke diri sendiri: “apa aja yang perlu ada supaya pentas seni ini bisa terjadi?”
- Venue (tempat)
- Jadwal
- Penampil
- Dekorasi
- Konsumsi
- Tiket
- Sound system
- Dokumentasi (foto/video)
Sekarang ada 8 sub-masalah. Masing-masing bisa ditangani oleh tim berbeda. Tim Venue tidak perlu nunggu Tim Tiket selesai dulu. Mereka bisa jalan paralel.
Langkah 3: Pecah lagi tiap sub-masalah
Ambil contoh satu: Tiket.
Kalau didiamkan, “tiket” itu masih terlalu besar. Pecah lagi:
- Desain tiket (pilih warna, gambar, info yang dicantumkan)
- Cetak tiket (pilih percetakan, tentukan jumlah)
- Distribusi tiket (siapa yang jual, di mana, kapan mulai)
- Pencatatan penjualan (catat uang masuk, sisa tiket)
Empat sub-tugas yang masing-masing jelas dan bisa dikerjakan. Kalau ada yang minta pertanggungjawaban nanti, gampang dicek: “Distribusi sudah sampai tahap mana?”
Langkah 4: Tentukan dependensi
Ini bagian yang sering dilupakan. Dependensi artinya: mana yang harus selesai dulu sebelum yang lain bisa mulai.
Contoh:
- Tiket baru bisa dicetak kalau desainnya sudah jadi → berurutan (sequential)
- Tim Dekorasi dan Tim Konsumsi bisa langsung jalan bersamaan → paralel (parallel)
- Sound system harus dicek di venue → jadi Tim Sound System butuh info dari Tim Venue dulu
Kalau dependensi ini tidak dipetakan, bisa kacau. Misalnya, tiket sudah dicetak duluan tapi belum ada tanggal dan tempatnya karena venue belum fix. Itu pemborosan.
Langkah 5: Hubungkan ke IT
Di dunia pemrograman, dekomposisi berarti memecah satu program besar jadi fungsi atau modul yang lebih kecil.
Bayangkan program kasir di minimarket. Kalau semuanya ditulis jadi satu blok kode panjang, susah diperbaiki kalau ada yang error. Tapi kalau dipecah:
- Fungsi
hitungTotal()— tugasnya cuma ngitung total belanja - Fungsi
prosesDiskon()— tugasnya cuma ngitung potongan harga - Fungsi
cetakStruk()— tugasnya cuma ngeprint struk
Kalau struk salah format, cukup perbaiki cetakStruk() saja. Yang lain tidak perlu disentuh.
Latihan: dekomposisi “Membuat Website Sekolah”
Coba kerjakan ini. Tujuannya minimal 3 level kedalaman.
Level 1 (masalah utama):
Website Sekolah
Level 2 (sub-masalah):
Halaman Beranda | Halaman Profil Sekolah | Halaman Berita | Halaman Kontak | Sistem Login Admin
Level 3 (pecah salah satu, misal Halaman Berita):
Tampilan daftar berita | Halaman detail berita | Form input berita baru | Fitur hapus/edit berita
Level 4 (pecah lagi, misal Form input berita):
Field judul | Field isi | Upload gambar | Tombol simpan | Validasi form (cek kalau ada field kosong)
Nah, sampai level 4 ini sudah sangat konkret. Seorang programmer bisa langsung ngerjain “validasi form” tanpa perlu tau keseluruhan website dulu.
Jebakan umum yang sering terjadi
Ini yang sering bikin siswa (dan bahkan profesional) gagal:
Jebakan 1: Berhenti terlalu cepat. Sub-masalah “Konsumsi” itu masih terlalu besar. Kalau langsung diserahkan ke orang tanpa dipecah lagi, mereka bingung harus mulai dari mana. Pecah terus sampai tiap tugas bisa dikerjakan dalam hitungan jam atau hari, bukan minggu.
Jebakan 2: Lupa dependensi. Dikerjain semua serentak ternyata saling nunggu satu sama lain. Akibatnya lebih lambat dari kalau dikerjain berurutan sekalian.
Jebakan 3: Tidak ada koordinasi antar tim. Tim Dokumentasi tidak tahu rundown acara, jadinya telat datang dan ketinggalan momen pertama. Dekomposisi bukan berarti tiap tim kerja sendiri-sendiri tanpa komunikasi. Tetap perlu titik-titik koordinasi.
Kuis singkat
- Kamu diminta membuat aplikasi absensi kelas. Sebutkan minimal 4 sub-masalah hasil dekomposisi level pertama dari proyek ini.
- Dalam skenario Pentas Seni, mengapa Tim Sound System tidak bisa langsung jalan paralel dengan semua tim lainnya sejak awal?
- Apa perbedaan antara tugas yang dikerjakan “berurutan” (sequential) dan “paralel” (parallel)? Berikan satu contoh masing-masing dari kehidupan sehari-hari (bukan dari materi ini).