Metodologi pengembangan perangkat lunak awal terbatas pada “kode dan perbaikan” dengan sedikit perencanaan jangka panjang, yang bekerja dengan baik untuk sekumpulan kecil sistem, tetapi ketika sistem tumbuh, mereka menjadi rentan terhadap bug dan lebih sulit untuk dijalankan secara efisien. Metodologi yang lebih baru membawa perencanaan dan disiplin dalam proses pengembangan perangkat lunak, dengan tujuan membuat pengembangan perangkat lunak lebih efisien dan fleksibel. Kemajuan teknologi dan persaingan pasar yang lebih besar menambahkan serangkaian pendekatan yang berbeda untuk metodologi pengembangan perangkat lunak. Beberapa perusahaan selama bertahun-tahun telah memperkenalkan seperangkat metodologi khusus mereka sendiri untuk mengembangkan perangkat lunak mereka, tetapi sebagian besar perusahaan di seluruh dunia mengikuti dua jenis metodologi: kelas berat dan ringan.
Metodologi “kelas berat” tradisional lebih terstruktur – berorientasi pada proses dan alat, dan mengikuti jalur yang dapat diprediksi, memerlukan dokumentasi yang komprehensif dan terperinci. Beberapa metodologi tradisional yang populer adalah Waterfall, Unified Process dan Spiral. Metodologi ini didasarkan pada serangkaian langkah berurutan di mana pekerjaan dimulai dengan elisitasi dan dokumentasi terperinci dari persyaratan keseluruhan, diikuti oleh pengembangan arsitektur dan desain tingkat tinggi dan dengan pos pemeriksaan & hasil pada setiap fase. Karena serangkaian proses yang panjang dan pendekatan yang relatif tidak fleksibel, metodologi ini mendapat nama sebagai kelas berat.
Metodologi “ringan” yang lebih baru juga dikenal sebagai pemodelan “gesit” adalah seperangkat nilai atau filosofi. Agile mengekspos disfungsi organisasi. Tidak seperti metode tradisional, metodologi tangkas merangkul iterasi daripada fase. Agile menggunakan siklus iteratif pendek, rilis kecil/pendek, desain sederhana, refactoring integrasi berkelanjutan dan mengandalkan pengetahuan tacit dalam tim yang bertentangan dengan dokumentasi. Beberapa metode tangkas yang populer adalah Pemrograman Ekstrim, Scrum, Lean, Kanban, Metode Pengembangan Sistem Dinamis, Pengembangan Berbasis Fitur dan Pengembangan Perangkat Lunak Adaptif.
Perbedaan utama antara metodologi kelas berat dan tangkas adalah faktor kemampuan beradaptasi. Dalam metodologi tangkas jika ada perubahan besar yang diperlukan, tim tidak membekukan proses kerjanya; melainkan menentukan bagaimana menangani perubahan yang terjadi di seluruh proyek dengan lebih baik. Proses verifikasi dalam metode tangkas terjadi jauh lebih awal dalam proses pengembangan. Di sisi lain, metode kelas berat membekukan persyaratan produk dan melarang perubahan. Ini mengimplementasikan proses prediktif dan bergantung pada pendefinisian dan pendokumentasian serangkaian persyaratan yang stabil di awal proyek.
Model Agile memberikan versi produk yang berfungsi dan keterlibatan pengguna langsung dalam proses pengembangan sangat awal dibandingkan dengan metodologi tradisional. Siklus pengujian untuk Agile berlangsung terus menerus dan relatif singkat dibandingkan metode tradisional, karena pengujian dilakukan paralel dengan pengembangan. Kebanyakan model tradisional sangat kaku dan tidak menerima perubahan dan relatif kurang fleksibel dibandingkan model Agile. Karena semua keunggulan ini, Agile memiliki respons yang komprehensif terhadap sebagian besar tantangan yang dihadapi organisasi di pasar global yang kompetitif dan berubah dengan cepat.