Perangkat lunak dipesan lebih dahulu, juga disebut sebagai perangkat lunak khusus dalam beberapa kasus, adalah aplikasi atau rangkaian perangkat lunak yang dirancang dan dibuat khusus untuk memenuhi persyaratan perusahaan, organisasi, atau pengguna akhir individu. Tingkat penyesuaian yang diterapkan pada paket perangkat lunak yang dipesan lebih dahulu ini membedakannya dari paket perangkat lunak umum yang tersedia secara komersial. Pengembang perangkat lunak yang dipesan lebih dahulu adalah tim atau individu yang ditugaskan untuk membuat aplikasi perangkat lunak khusus ini.
Sebagai bagian dari perusahaan pengembangan perangkat lunak yang ada atau sebagai kontraktor individu, pengembang perangkat lunak yang dipesan lebih dahulu diharapkan membiasakan diri dengan gaya operasional pengguna akhir atau organisasi. Karena umumnya hanya akan ada satu klien yang perangkat lunaknya sedang dikembangkan, akan ada beberapa tahap pengembangan yang harus dipenuhi oleh pengembang perangkat lunak yang dipesan lebih dahulu. Setelah setiap tahap pengembangan diselesaikan, diuji, dan dianalisis untuk perbaikan yang diperlukan, tahap pengembangan berikutnya dapat dimulai.
Permintaan untuk mengembangkan perangkat lunak yang dipesan lebih dahulu paling sering diterima dari organisasi yang lebih besar, di mana perangkat lunak khusus digunakan untuk mengelola proses operasional, inventaris, sumber daya, dan keuangan sesuai kebutuhan. Saat perangkat lunak dikembangkan, pengembang perangkat lunak yang dipesan lebih dahulu harus siap untuk memasukkan perubahan pada ringkasan desain asli. Memulai pengembangan dari kanvas kosong dan mengadaptasi paket untuk mengatasi masalah sering kali membuat pengembangan perangkat lunak kustom menjadi proses yang lebih terfokus daripada yang terlibat dalam pembuatan paket perangkat lunak tradisional.
Persyaratan untuk perangkat lunak kustom sering kali berasal dari kurangnya paket perangkat lunak komersial yang sesuai untuk memenuhi kebutuhan pengguna akhir. Dalam hal ini, pengembang perangkat lunak yang dipesan lebih dahulu sering diharapkan untuk berinovasi, mencakup landasan baru dalam arti perangkat lunak untuk memastikan bahwa persyaratan yang ditetapkan untuk paket tercapai. Klien juga meminta saran kepada pengembang tentang cara terbaik untuk mencapai tujuan mereka dalam paket perangkat lunak. Di area inilah pengembang perlu memahami praktik kerja operasional pengguna akhir.
Persyaratan fungsionalitas khusus terkadang hanya terlihat saat paket perangkat lunak sedang digunakan. Ketika ini terjadi, pengembang harus berada dalam posisi untuk membaca ulang perangkat lunak yang dibuat untuk melakukan amandemen yang diperlukan. Di bidang ini, peran pengembang perangkat lunak yang dipesan lebih dahulu berbeda dari posisi pengembangan perangkat lunak yang lebih tradisional. Sifat cair dari proses pembuatan dan perbaikan berkelanjutan untuk memenuhi kebutuhan klien tertentu daripada perbaikan umum, atau patch, untuk memperbaiki kesalahan program memberikan pengembangan dipesan lebih dahulu perasaan yang jauh lebih terlibat dan pribadi.