Pada perancangan program, modularisasi adalah proses untuk membagi suatu masalah menjadi tugas-tugas yang lebih kecil yang memiliki satu tujuan spesifik. Tugas tersebut akan direpresentasikan dalam sebuah modul, atau dengan istilah lain, modularisasi adalah proses membagi sebuah program menjadi modul-modul dimana setiap modul memiliki satu fungsi yang spesifik. Beberapa tujuan dari modularisasi adalah:

  • Mudah dipahami
  • Code yang dapat di-reuseable
  • Menghindari redundancy
  • Proses maintenance yang lebih efisien

Contoh sederhana modul yang umum dibuat adalah modul login untuk memverifikasi data user. Beberapa sistem memiliki proses yang serupa dalam proses login, sehingga modul login dapat digunakan kembali (reuse) tanpa harus melakukan modifikasi yang berarti. Seperti pada sistem login pada binusmaya.binus.ac.id dan library.binus.ac.id yang menggunakan data credential yang sama, sehingga proses verifikasi yang dilakukanpun sama. Namun pada contoh lain seperti proses login pada gmail, modul login mungkin dirancang dengan memiliki sub-modul lain yang menjalankan proses yang lebih spesifik seperti fungsi untuk mengecek format email, mengecek data username, dan mengecek password secara terpisah. Seperti pada gambar di bawah ini yang menggunakan hierarchy chart untuk mengilustrasikan contoh di atas:

Dengan modularisasi, maka modul-modul yang ada dalam sebuah program akan membutuhkan komunikasi. Ada dua cara utama komunikasi antar modul, dengan menggunakan global data atau passing parameter. Bentuk komunikasi yang digunakan akan menentukan seberapa kuat hubungan antara modul yang satu dengan modul lain, atau yang disebut coupling. Berdasarkan definisi, coupling adalah tingkat ukuran dari pertukaran informasi antar modul. Berikut ini adalah jenis-jenis coupling:

Tingkatan coupling yang paling baik adalah coupling yang paling rendah (loose coupling), atau dengan kata lain, coupling yang memiliki ikatan paling renggang antara satu modul dengan modul lain. Dengan renggangnya hubungan antar modul tersebut, maka suatu modul dapat dengan mudah digunakan kembali pada sistem lain tanpa harus terikat pada modul lainnya. Salah satu ilustrasi sederhana adalah sebuah kursi pada ruangan kelas yang dapat dikatakan memiliki loose coupling dengan kursi lainnya (kursi mewakili sebuah modul). Ketika kursi tersebut akan digunakan pada ruang lainnya, kita dapat dengan mudah memindahkan kursi tersebut untuk digunakan kembali. Di lain sisi, ketika sebuah kursi dirancang memiliki keterikatan dengan kursi lainnya, maka ketika kita akan menggunakan 1 kursi tersebut di ruangan lain atau untuk kebutuhan lain, semua kursi lain yang ikut terbawa dan membutuhkan proses modifikasi. Hal ini tidak sesuai dengan reusability yang seharusnya menjadi salah satu keuntungan dari modularisasi.

Kembali pada diskusi mengenai tingkatan coupling, berikut adalah penjelasan singkatnya:

  • Common coupling, terjadi ketika komunikasi antara modul dilakukan dengan menggunakan global data dimana jenis data yang digunakan berupa data terstruktur (kumpulan beberapa data).
  • External coupling , terjadi ketika komunikasi antara modul dilakukan dengan menggunakan elementary global data (single data).
  • Control coupling, terjadi ketika komunikasi antar modul dilakukan dengan passing parameter, namun data yang dikirimkan menjadi sebuah control logika dari modul tersebut.
  • Stamp coupling, terjadi ketika komunikasi antar modul dilakukan dengan passing parameter berupa structural data.
  • Data coupling, terjadi ketika komunikasi antar modul dilakukan dengan passing parameter berupa elementary data.