Feature-driven developmentFeature-driven development (FDD) adalah proses pengembangan perangkat lunak yang iterative dan incremental. Kerangka kerja ini termasuk metode Agile untuk mengembangkan perangkat lunak. FDD memadukan sejumlah praktik terbaik yang diakui industri menjadi satu kesatuan yang utuh. Praktik-praktik ini didorong dari perspektif fungsionalitas (fitur) yang dihargai klien. Tujuan utamanya adalah untuk memberikan perangkat lunak yang nyata dan berfungsi berulang kali secara tepat waktu sesuai dengan prinsip di balik Agile Manifesto.[1] Feature-driven Development (FDD) awalnya dirancang oleh Peter Coad dan rekan-rekannya[2] sebagai model proses praktis untuk rekayasa perangkat lunak berorientasi objek. Stephen Palmer dan John Felsing [3] telah memperluas dan meningkatkan pekerjaan Coad, menggambarkan proses yang agile dan adaptif yang dapat diterapkan pada proyek perangkat lunak berukuran sedang dan lebih besar.[4] Seperti pendekatan agile lainnya, FDD mengadopsi filosofi yang (1) menekankan kerja sama di antara orang-orang dalam tim FDD; (2) mengelola masalah dan kompleksitas proyek menggunakan dekomposisi berbasis fitur diikuti oleh integrasi software increment, dan (3) komunikasi detail teknis menggunakan cara verbal, grafis, dan berbasis teks. FDD menekankan kegiatan jaminan kualitas perangkat lunak (software quality assurance) dengan mendorong strategi pengembangan tambahan, penggunaan desain dan inspeksi kode, penerapan audit jaminan kualitas perangkat lunak, pengumpulan metrik, dan penggunaan pola (untuk analisis, desain, dan konstruksi).[4] Fitur FDDDalam konteks FDD, fitur (feature) adalah fungsi bernilai klien (client-valued) yang dapat diimplementasikan dalam dua minggu atau kurang" [Coa99]. Penekanan pada definisi fitur memberikan manfaat berikut:[4]
Coad dan rekan-rekannya[2] menyarankan templat berikut untuk mendefinisikan fitur: <action> the <result> <by | for | of | to> a(n) <object> <object> adalah orang, tempat, atau benda (termasuk peran, momen dalam waktu atau interval waktu, atau deskripsi seperti entri katalog).[4] Contoh fitur untuk aplikasi e-commerce: "Tambahkan produk ke keranjang belanja", "Tampilkan spesifikasi teknis produk" , "Simpan informasi pengiriman untuk pelanggan". Kumpulan fitur mengelompokkan fitur terkait ke dalam kategori bisnis terkait dan didefinisikan[2] sebagai: <action> <-ing> a (n) <object>. Sebagai contoh: "Melakukan penjualan produk" adalah seperangkat fitur yang akan mencakup fitur-fitur yang disebutkan sebelumnya dan lainnya.[4] Proses FDDPendekatan FDD mendefinisikan lima kegiatan kerangka kerja "berkolaborasi"[2](dalam FDD ini disebut "proses"), yaitu mengembangkan model keseluruhan (develop an overall model), membangun daftar fitur (build a features list) , membangun rencana dengan fitur (plan by feature), mendesain dengan fitur (design by feature), dan membangun dengan fitur (build by feature)[4]
FDD memberikan penekanan lebih besar pada pedoman dan teknik manajemen proyek daripada banyak metode agile lainnya. Ketika proyek tumbuh dalam ukuran dan kompleksitasnya, manajemen proyek ad hoc sering kali tidak memadai. Sangat penting bagi pengembang, manajer, dan pemangku kepentingan lainnya untuk memahami status proyek — pencapaian apa yang telah dibuat dan masalah yang dihadapi. Jika tekanan tenggat waktu signifikan, sangat penting untuk menentukan apakah software increment (fitur) dijadwalkan dengan benar. Untuk mencapai hal ini, FDD mendefinisikan enam tonggak selama desain dan implementasi fitur: "penelusuran desain (design walkthrough), desain (design), inspeksi desain (design inspection), kode (code), inspeksi kode (code inspection), promosi untuk membangun (promote to build)" [2].
|