Kontrak vs. Metodologi
Banyak miskonsepsi yang terjadi antara jenis kontrak dengan metodologi pengembangan aplikasi, seolah keduanya adalah hal yang sama. Namun, kedua konsep ini sebenarnya berbeda. Jenis kontrak adalah cara untuk mengatur kerja sama antara pihak yang menyediakan jasa pengembangan aplikasi dan pihak yang membutuhkan jasa tersebut. Sedangkan metodologi pengembangan aplikasi adalah cara untuk mengatur dan mengelola proses pengembangan aplikasi dari awal hingga akhir. Keduanya memiliki tujuan yang berbeda dan digunakan pada tahap yang berbeda dalam proyek pengembangan aplikasi.
Jenis kontrak dalam pengembangan aplikasi adalah cara untuk mengatur kerja sama antara pihak yang menyediakan jasa pengembangan aplikasi dan pihak yang membutuhkan jasa tersebut. Terdapat tiga jenis kontrak yang umum digunakan dalam pengembangan aplikasi, yaitu:
- Fixed-Scope: Dalam kontrak ini, spesifikasi, durasi, dan biaya dari proyek sudah disepakati sebelum engagement dimulai. Pihak yang menyediakan jasa pengembangan aplikasi harus menyelesaikan proyek sesuai dengan spesifikasi yang telah ditentukan dalam jangka waktu yang telah ditentukan dan dengan biaya yang telah disepakati.
- Time-Material: Dalam kontrak ini, durasi dan komposisi personil disepakati sebelum engagement dimulai. Namun, spesifikasi dapat disesuaikan selama proyek berlangsung. Pihak yang menyediakan jasa pengembangan aplikasi akan dibayar sesuai dengan jumlah jam kerja yang dilakukan dan material yang digunakan.
- Managed-Service: Dalam kontrak ini, durasi dan service-level-agreement disepakati sebelum engagement dimulai. Namun, spesifikasi dapat disesuaikan selama proyek berlangsung. Pihak yang menyediakan jasa pengembangan aplikasi akan bertanggung jawab untuk mengelola dan menyelesaikan proyek sesuai dengan service-level-agreement (SLA) yang telah disepakati.
Metodologi pengembangan aplikasi adalah cara untuk mengatur dan mengelola proses pengembangan aplikasi dari awal hingga akhir. Ada dua metodologi pengembangan aplikasi yang umum digunakan, yaitu:
- Waterfall: Metodologi ini berprinsip bahwa semakin baik perencanaan, maka hasilnyapun akan semakin baik. Waterfall cocok digunakan untuk pekerjaan yang bisa diprediksi, misalnya mengautomasi proses bisnis yang sudah dikerjakan bertahun-tahun secara manual. Waterfall terdiri dari beberapa tahap, seperti analisis kebutuhan, desain, implementasi, pengujian, dan maintenance.
- Scrum: Metodologi ini berprinsip bahwa pengembangan aplikasi harus berpusat pada kebutuhan customer dengan cara terus-menerus beradaptasi terhadap feedback yang didapatkan selama proyek berlangsung. Scrum cocok digunakan untuk pekerjaan yang kebutuhan fungsionalnya sulit diprediksi, misalnya membuat aplikasi untuk konsumen suatu perusahaan, karena perusahaan tidak tahu apa yang dibutuhkan konsumen sampai aplikasi digunakan dan mendapatkan feedback dari penggunaan aplikasi tersebut. Scrum menggunakan iterasi yang disebut Sprint, dimana dalam setiap Sprint tim pengembangan akan menyelesaikan sebuah fitur yang disepakati dalam Sprint Planning. Pada akhir setiap Sprint, tim akan melakukan Sprint Review dan Sprint Retrospective untuk mendapatkan feedback dari stakeholder dan mengevaluasi proses pengembangan.
Untuk memperjelasnya, Scrum mengutamakan proses pengembangan terus-menerus dengan cara mendapatkan feedback dari pengguna selama proses berjalan, sementara Waterfall lebih mengutamakan perencanaan dan spesifikasi yang ditentukan sebelum proses dimulai. Dan kontrak fixed-scope mengutamakan spesifikasi, durasi, dan biaya sudah ditentukan sebelum proses dimulai, sementara kontrak time-material dan managed-service lebih mengutamakan durasi dan spesifikasi yang dapat disesuaikan selama proses berjalan.
Kesesuaian Antara Metodologi dan Jenis Kontrak
Beberapa metodologi pengembangan aplikasi akan cenderung lebih cocok digunakan dengan jenis kontrak tertentu. Sebagai contoh:
- Metodologi Waterfall cenderung lebih cocok digunakan dengan kontrak fixed-scope. Karena pada metodologi Waterfall, spesifikasi dan jadwal proyek sudah ditentukan sebelum proses dimulai, maka kontrak fixed-scope yang mengutamakan spesifikasi, durasi, dan biaya yang sudah disepakati sebelum engagement dimulai sangat sesuai dengan metodologi ini.
- Metodologi Scrum cenderung lebih cocok digunakan dengan kontrak time-material atau managed-service. Karena pada metodologi Scrum, proses pengembangan berlangsung secara terus-menerus dengan cara mendapatkan feedback dari pengguna selama proses berjalan, maka kontrak yang mengutamakan durasi dan spesifikasi yang dapat disesuaikan selama proses berjalan, seperti kontrak time-material atau managed-service, sangat sesuai dengan metodologi ini.
Namun perlu diingat, kontrak dan metodologi pengembangan aplikasi tidak selalu harus dipilih berdasarkan kesesuaian saja. Pihak yang menyediakan jasa pengembangan aplikasi dan pihak yang membutuhkan jasa tersebut harus mempertimbangkan segala hal, seperti keterbatasan sumber daya, jangka waktu, dan kondisi lain sebelum membuat keputusan yang sesuai untuk jenis kontrak dan metodologi pengembangan aplikasi yang digunakan.
Garansi Paska Pengembangan Aplikasi
Jenis kontrak dapat mempengaruhi masa garansi paska pengembangan aplikasi. Secara umum, berikut adalah konsekuensi jenis kontrak terhadap masa garansi paska pengembangan aplikasi:
- Fixed-Scope: Pihak yang menyediakan jasa pengembangan software harus memberikan garansi bahwa aplikasi yang dikembangkan telah sesuai dengan spesifikasi dan tidak ada masalah teknis yang diakibatkan oleh kesalahan pengembangan dari pihak mereka. Garansi ini biasanya berlaku selama periode tertentu setelah aplikasi diterima oleh pihak yang membutuhkan jasa.
- Time-Material & Managed-Service: Pihak yang menyediakan jasa pengembangan software tidak memberikan garansi paska pengembangan, karena mereka dibayar sesuai dengan jumlah jam kerja atau SLA yang telah selesai dilakukan. Namun, pihak yang menyediakan jasa pengembangan software dapat menyediakan dukungan dan maintenance dengan pembayaran berdasarkan masalah atau tiket yang muncul setelah aplikasi diterima oleh pihak yang membutuhkan jasa.
Masa garansi paska pengembangan aplikasi seharusnya ditentukan dalam kontrak, dan harus diperhatikan dalam pemilihan jenis kontrak yang digunakan.