Pendahuluan
Permasalahan dalam membuat sebuah perangkat lunak dari sejak awal
sejarah perkembangan komputer selalu ada. Permasalahan tersebut dapat
berupa hal yang bersifat teknis berhubungan langsung dengan arsitektur
perangkat lunak yang dipakai dan juga bersifat perancangan yang lebih
bersifat umum. Kedua hal tersebut adalah hal yang wajib dalam pembuatan
sebuah perangkat lunak.
Bagaimanakah cara untuk mengelola spesifikasi yang ada sekarang
secara efisien untuk kemudian mampu untuk menghadapi perubahan dan
spesifikasi yang akan datang dalam kontek pembuatan dan pengembangan
sebuah sistem adalah sebuah permasalahan lain.
Hambatan-hambatan yang sering dijumpai dalam pengembangan perangkat lunak tersebut antara lain.
1. kebutuhan yang akan datang sering tidak bisa dipahami dan merupakan sebuah hal yang sering sekali berubah.
2. usaha untuk menggunakan kembali (reuse) sering kali berujung
melibatkan komponen-komponen yang sebenarnya tidak bisa digunakan
kembali (not reusable) dan sering kali gagal untuk dilakukan.
3. sering sekali terjadi, programer dan sistem analis kehilangan
gambaran secara umum tentang apa yang dimaksud dengan kebutuhan yang
akan datang.
4. dan yang paling penting adalah para pengembang cenderung melihat
permasalahan ke arah permasalahan coding. Pengembang gagal melihat bahwa
penyelesaian masalah melalui kekuatan perancangan/desain adalah sesuatu
yang patut dipertimbangkan dan merupakan jalur yang tepat.
Pola desain atau pola rancangan (bahasa Inggris: design pattern)
adalah sebuah istilah dalam rekayasa perangkat lunak
yang mengacu kepada solusi umum yang dapat digunakan secara berulang
kali untuk menyelesaikan masalah-masalah umum yang ditemukan dalam
desain perangkat lunak. Sebuah pola desain tidak berbentuk solusi akhir yang dapat langsung diterjemahkan menjadi kode program.