Apa yang dimaksud dengan Feature Driven Development (FDD)?

Pengembangan berbasis fitur (feature-driven development / FDD) adalah proses pengembangan perangkat lunak yang menggunakan pendekatan iteratif dan inkremental.

Apa yang dimaksud dengan Feature Driven Development (FDD) ?

Feature Driven Development (FDD) merupakan proses yang didesain dan dilaksanakan untuk menyajikan hasil kerja secara berulang-ulang dalam waktu tertentu dan dapat diukur.

FDD merupakan pendekatan yang mengacu pada pembuatan sistem menggunakan metode yang mudah
dimengerti dan diimplementasikan, teknik problem solving, dan pelaporan yang mudah dimengerti
dan dikontrol oleh stakeholders.

Dengan metode FDD, tim pengembang diberikan informasi yang cukup dan alat bantu untuk menyelesaikan proyek. Pemimpin proyek dan manajer diberikan informasi berdasarkan waktu mengenai tim dan proyek yang sedang berjalan untuk menghindari risiko yang terjadi. Pelaporan menjadi lebih mudah, tidak membebani, periodik, dan akurat.

Pengguna juga dapat secara langsung melihat bagian mereka sebagai hasil progress proyek dan memberikan feedback dalam tahap pengembangan yang bertujuan untuk menciptakan sistem sesuai keinginan klien.

Terdapat lima kelebihan yang dimiliki oleh metode Feature Driven Development yang menjadi nilai tambah bagi para pengembang sistem saat mengerjakan proyeknya. Kelebihan Feature Driven Development antara lain :

  • Tangible results rather than process pride.
    Proses dalam metode FDD mengutamakan sesuatu yang dapat diukur ketimbang proses-proses perancangan yang rumit dan menghabiskan waktu, sumber daya, dan biaya. Pada saat merancang proyek, penjadwalan langsung diarahkan ke dalam bentuk fitur.

  • A system for building system is necessary.
    Sistem yang dibangun harus rapi dan kuat agar para pengembang dapat bekerja dan menghasilkan sebuah
    sistem yang diharapkan oleh klien.

  • Simple is better.
    Perancangan dibuat sesederhana mungkin, tetapi dapat memenuhi semua persyaratan yang diberikan oleh klien sehingga mereka mendapatkan gambaran sistem dengan mudah.

  • Process steps should be obviously valuable to each team member.
    Setiap langkah atau proses selama pengembangan sistem harus dapat dinilai dan terukur bagi para pengembang sistem. Selain itu, desain kode juga menjadi lebih mudah dan efektif pada saat pemeriksaan.

  • Good processes move to the background.
    Semua proses lebih baik dikerjakan di belakang sehingga pengerjaan dengan metode FDD terlihat lebih sederhana.

Beberapa kekurangan yang dimiliki oleh metode Feature Driven Development yang diperoleh dari hasil studi analitik adalah sebagai berikut.

  • Membutuhkan jumlah pekerja yang banyak (10-250 orang) yang dibagi ke dalam beberapa divisi. Semakin banyak pekerja, biaya yang dikeluarkan semakin tinggi.

  • Lebih menekankan pengembang dengan keterampilan tinggi dan sulit untuk mencari pengembang dengan kriteria tersebut.

  • Dalam FDD terdapat class owner yang menangani setiap fitur. Masalahnya adalah ketika fitur A memiliki dependensi terhadap fitur B dan fitur B mengalami perubahan, fitur A harus menunggu kepastian dari fitur B yang menyebabkan mundurnya jadwal proyek.

    Pada intinya, FDD bersifat individual, maka dapat terjadi saling tunggu antar fitur yang terkait. FDD membatasi penambahan fitur kurang dari 10% dari total waktu, biaya, dan kualitas. Perubahan fitur hanya dilakukan pada sebuah proses dan keterlibatan klien hanya pada beberapa tahapan.

  • Jumlah jam kerja FDD tidak terikat sehingga dapat menyebabkan para pengembang tidak bekerja
    secara optimal di pertengahan, tetapi pada akhir jadwal mereka akan bekerja lebih ekstra.

Cara Kerja FDD

Cara kerja FDD dapat digambarkan melalui studi kasus terkait bagaimana cara membangun sebuah website review dengan metode FDD. Berikut adalah studi kasusnya, seorang klien berencana akan membangun sebuah perusahaan yang bergerak di bidang review produk elektronik (gadget) dan karena era internet yang sudah menjamur, klien tersebut ingin usahanya juga bergerak melalui online.

Terpikirlah untuk menciptakan sebuah website review. Akhirnya klien ini mencari sebuah perusahaan profesional untuk dibuatkan sebuah website review. Setelah berkonsultasi dengan kepala projek, dihasilkan beberapa ide atau kebutuhan yang diperlukan klien pada website reviewnya antara lain klien bersedia mengeluarkan budget yang besar, tetapi kualitas yang dihasilkan harus istimewa dan interaktif. Waktu yang disepakati untuk menyelesaikan proyek ini oleh pihak pengembang adalah dua bulan.

Singkat cerita, sang pemimpin projek mengambil kesimpulan bahwa mereka akan menggunakan metode FDD dalam projek kali ini sebab klien meminta untuk menciptakan sebuah website yang interaktif atau kaya dengan feature. Langkah paling awal, sang pemimpin akan membagi anggotanya ke dalam beberapa kelompok (grup) dalam hal pembagian tugas pelaksaan projek ini. Pada projek ini mereka akan bekerja dengan keseluruhan anggota berjumlah enam orang termasuk pemimpin proyek. Mereka semua dalam kelompok besar akan dikumpulkan bersama untuk membahas cara kerja mereka menggunakan metode FDD.

Oleh karena itu, mereka semua akan menjalani beberapa tahap berikut ini.

A. Develop an Overall Model Phase

Pada tahap awal ini, seluruh anggota pengembang wajib sudah mengetahui dasar dan cara pengembangan dengan agile process khususnya dengan metode FDD. Kemudian mereka diminta untuk setiap grup memikirkan, merancang, dan mengajukan apa saja yang mereka harapkan dan perlukan dalam membuat sebuah website review yang baik.

Setelah semua hasil dikumpulkan, maka mereka akan menggabungkan semuanya itu ke dalam sebuah gambaran secara garis besar yang mencakup atau menggambarkan keseluruhan sistem yang akan mereka kembangkan. Biasanya mereka dapat menggunakan tools yang tersedia baik online atau offline untuk membuat sebuah diagram tentang keseluruhan proses mereka.

Diagram yang biasa diperlukan di sini adalah Use Case Diagram.

Berdasarkan Use Case yang sudah dibuat itulah yang akan dicapai dalam tahap pertama ini (developt an overall) di mana semua hal yang akan dikembangkan akan disatukan dan membentuk sebuah perencanaan yang matang secara garis besar.

B. Build a Feature List

Feature list adalah apa yang dilihat klien untuk validitas dan kelengkapan sistem. Fitur dalam langkah ini berbasis customer bukan teknologi. Bahasa yang digunakan sesederhana mungkin agar klien paham. Pada tahap selanjutnya setelah menentukan keseluruhan rangkaian sistem, kini para pengembang harus
mengidentifikasi fitur-fitur apa saja yang dapat di jadikan list pada setiap modul yang dihasilkan. Pada kasus ini sitem memiliki modul “Tampilan Website”.

Jika dijabarkan modul ini memiliki beberapa feature seperti Login, View Profile, Edit Profile, Logout,
List Review, Update Review, Delete Review, Create Page Delete Page. Pada tahap ini pemimpin proyek (kepala) menargetkan untuk menghasilkan minimal 25 feature untuk projek ini. Tahap ini bisa
diimplementasikan juga dengan menggunakan Use Case Diagram. Pembuatan Use Case bisa dilakukan dengan menggunakan software seperti tahap pertama atau penulisan secara manual (tulisan tangan).

Use case pada taha ini merupakan hal-hal apa saja yang akan dikerjakan dan dikembangkan oleh kelompok dan menjelaskan apa saja feature yang akan dikembangkan pada setiap modul.

Hasil ini merupakan penjabaran yang dilakukan oleh setiap kelompok sesuai dengan modul yang mereka kembangkan.

C. Plan by Features

Pada tahap ketiga ini merupakan tahap yang paling penting karena semua perencanaan pengembangan
harus ditentukan di sini. Semua kelompok harus membuat dokumentasi terhadap apa saja yang telah
mereka buat dalam modul. Setiap modul harus ditentukan waktu yang dibutuhkan menyelesaikannya
dengan penjabaran masing- masing feature.

Pemimpin projek akan mengumpulkan semua estimasi dari masing-masing kelompok dan kemudian akan membuat sebuah list atau agenda waktu secara keseluruhan. Hal itu dapat dilakukan dengan menggunakan gantt chart atau mind maps atau keduanya. Fungsi dibuatnya gantt chart dan mindmaps adalah untuk membantu para pengembang melihat keseluruhan progres yang telah berjalan lebih baik

Gantt chart dan mind maps akan membantu para pengembang lebih mudah untuk mengetahui tugas mereka masing masing. Setiap modul digambarkan dengan jelas beserta fitur-fitur yang dibutuhkan.

D. Design by Features

Setiap fitur dibuatkan sequence diagram dan class diagram untuk menunjukkan kepada klien bagaimana sebuah sistem bekerja sehingga jika ada kebingungan dan ketidaksetujuan dapat ditanggung
para pengembang pada awal pengerjaan sistem.

E. Build by Feature

Pada akhir tahapan FDD, pengembang membangun sistem yang sudah dirancang dengan menggunakan bahasa pemrograman dan tools yang sesuai. Mereka juga membuat user interface dari system tersebut dan membangun server.

Sumber : Marchelin Fau Hariono, Albert, Arvin Vinsensius, Adhi Kusnadi, Developing Review Websites Using Feature Driven Development (FDD)