TUGAS SOFTSKILL
I. PENDAHULUAN
Di
tahun 1997, Jeff De Luca, seorang warga negara Australia bersama tim berusaha
menyelesaikan proyek skala besar yang diberikan oleh United Overseas Bank di
Singapura. Sebelumnya proyek telah dikerjakan oleh tim lain namun gagal. Proyek
mengalami kendala pada kompleksitas model obyek, sehingga setelah dua tahun
berjalan dan tidak kunjung selesai, proyek dinyatakan gagal. Kedatangan Jeff De
Luca yang memekerjakan Peter Coad yang dikenal dengan
tulisannya dalam analisis dan desain
berorientasi obyek dalam pengembangan software untuk proyek TI skala besar
dalam timnya akhirnya mampu mengerjakan proyek tersebut dengan menyajikan 2000
fitur yang berjalan dengan baik, membutuhkan waktu 15 bulan pengerjaan dengan
50 orang pemrogram, menghabiskan biaya yang lebih rendah dari anggaran.
De
Luca memperkenalkan metode proses dalam pengerjaan software tersebut sebagai “metode
Coad”. Yang menjadi fokus dalam Metode Coad
ini adalah sebuah analisis dalam dokumen yang disebut “fitur
(feature)”.
Fitur-fitur tersebut terdengar sebagai sebuah requirement menggunakan bahasa domain yang dapat dimengerti oleh
sponsor proyek. Konsep fitur tersebut ditujukan agar setiap fitur yang telah
dituliskan membuat sponsor proyek mengerti arti fitur dan dipastikan masuk ke
dalam domain sistem. Pertemuan para pemikir software
engineering pada tahun 2001 menghasilkan manifesto yang dikenal dengan Manifesto for Agile Software Development,
dengan isi termasuk diantaranya FDD sebagai salah satu metode yang dikenal
sebagai Agile bersama metode lainnya seperti Scrum, Extreme Programming atau
Adaptive Software Development. Sebagai jantung dari pengembangan software Agile
adalah dua2 buah idea utama yaitu adalah sangat penting untuk memberikan nilai
berbentuk software yang bekerja kepada klien serta mampu merespon perubahan
yang mungkin terjadi selama pengembangan dalam pasar yang penuh dengan inovasi
dan selalu berubah menyebabkan harus dibangun dengan berbagai metode
pengembangan software. Hal ini berarti telah memecahkan anggapan tradisional
yang menyatakan “ rencanakan pekerjaan dan kemudian
kerjakan perencanaan itu”, menuju pendekatan penyajian (delivery) dengan perencanaan yang
adaptif. Kunci utama dari kebanyakan metode Agile adalah bagaimana
pendefinisian nilai yang dapat langsung dikenali klien. Extreme Programming
memiliki “User Story”,
sedangkan FDD memiliki “Feature”. Menurut
Abrahamsson, Salo, & Rokainen (2002, p47) yang disadur dari Palmer &
Felsing (2002), Feature Driven Development (FDD) adalah pendekatan yang cepat
dan adaptif dalam pengembangan sebuah aplikasi. Pendekatan FDD tidak membahas
pengembangan software secara keseluruhan tetapi lebih berfokus kepada fase
desain dan pembuatan program. FDD terdiri dari 5 tahapan proses. Pada bagian
ang terus berulang di FDD (desain dan pembuatan sistem) yang mendukung agile
development dengan adaptasi yang cepat untuk memenuhi perubahan pada proses
bisnis.
II. PENELITIAN
TERDAHULU
Sebelum
kita masuk ke materi Feature Driven Development, kita harus mengetahui dulu
mengenai Agile Methods
Agile
Development Methods
adalah sekelompok metodologi pengembangan perangkat lunak yang didasarkan pada
prinsip-prinsip yang sama atau pengembangan sistem jangka pendek yang
memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk
apapun. Agile development methods
merupakan salah satu dari Metodologi pengembangan perangkat lunak yang
digunakan dalam Palembang perangkat lunak. Agile memiliki pengertian bersifat
cepat, ringan, bebas bergerak, dan waspada. Sehingga saat membuat perangkat
lunak dengan menggunakan agile
development methods diperlukan inovasi dan responsibiliti yang baik antara
tim pengembang dan klien agar kualitas dari perangkat lunak yang dihasilkan
bagus dan kelincahan dari tim seimbang.
Saat
bekerja dalam tim untuk mengerjakan suatu proyek sangatlah penting menentukan
Methodology pengembangan perangkat lunak
dan Proses pengembangan perangkat lunak yang akan digunakan. Metodologi
pengembangan perangkat lunak sendiri adalah sebuah metodologi yang digunakan
untuk membuat struktur, rencana, dan kontrol pengerjaan suatu proyek, sedangkan
Proses pengembangan perangkat lunak adalah model-model dan metodologi yang
digunakan untuk mengembangkan suatu perangkat lunak. Ada beberapa model
Metodologi pengembangan perangkat lunak diantaranya : waterfall, fountain, spiral, rapid,
prototyping, incremental, build & fix, dan synchronize & stabilize.
Terdapat enam langkah yang digunakan dalam Metodologi pengembangan perangkat
lunak, yaitu
:
Perencanaan,
pada langkah ini pengembang dan klien membuat rencana tentang kebutuhan dari
perangkat lunak yang akan dibuat.
Implementasi,
bagian dari proses dimana programmer melakukan pengkodean perangkat lunak.
Tes
perangkat lunak, disini perangkat lunak yang telah dibuat di tes oleh bagian
kontrol kualitas agar bug yang ditemukan bisa segera diperbaiki dan kualitas
perangkat lunak terjaga.
Dokumentasi,
setelah dilakukan tes perangkat lunak langkah selanjutnya yaitu proses
dokumentasi perangkat lunak untuk mempermudah proses maintenanance kedepannya.
Deployment, yaitu proses yang dilakukan oleh
penjamin kualitas untuk menguji kualitas sistem. Setelah sistem memenuhi syarat
maka perangkat lunak siap dideployment.
Pemeliharaan,
langkah terakhir yaitu pemeliharaan. Tidak ada perangkat lunak yang 100% bebas
dari bug, oleh karena itu sangatlah
penting agar perangkat lunak dipelihara secara berkala.
Agile development methods terdefinisi dalam empat nilai, biasa
di sebut Agile Alliance’s Manifesto,
diantaranya :
1.
Interaksi dan personel lebih penting dari pada proses dan
alat.
2.
Perangkat lunak yang berfungsi lebih penting daripada dokumentasi
yang lengkap.
3.
Kolaborasi dengan klien lebih penting dari pada negosiasi
kontrak.
4.
Respon terhadap perubahan lebih penting daripada mengikuti
rencana.
Pengertian
dari Agile Alliance's Manifesto dijelaskan di bawah ini:
Interaksi dan personel lebih penting dari pada proses dan
alat, di dalam agile interaksi antar anggota tim sangatlah penting, karena
tanpa adanya interaksi yang baik maka proses pembuatan perangkat lunak tidak
akan berjalan sesuai rencana.
Perangkat lunak yang berfungsi lebih penting daripada dokumentasi
yang lengkap, saat melakukan proses demonstrasi kepada klien, perangkat lunak
yang berfungsi dengan baik akan lebih berguna daripada dokumentasi yang
lengkap.
Kolaborasi dengan klien lebih penting dari pada negosiasi
kontrak, salah satu ciri dari agile adalah klien menjadi bagian dari tim
pengembangan perangkat lunak. Kolaborasi yang baik dengan klien saat proses
pembuatan perangkat lunak sangatlah penting ketika menggunakan agile. Karena
fungsi-fungsi dari perangkat lunak yang dikembangkan harus terus menerus
dibicarakan dan diimprovisasi disesuaikan dengan keinginan klien.
Respon terhadap perubahan lebih penting daripada mengikuti
rencana, agile development methods
berfokus terhadap kecepatan respon tim ketika klien menginginkan perubahan saat
proses pembuatan perangkat lunak.
Agar
suatu tim berhasil dalam menerapkan agile
development methods, maka tim tersebut harus mengikuti dua belas prinsip
yang ditetapkan oleh Agile Alliance,
yaitu
:
1.
Prioritas
utama proses agile adalah memuaskan
klien dengan menghasilkan perangkat lunak yang bernilai dengan cepat dan rutin.
2.
Menyambut
perubahan kebutuhan, walaupun terlambat dalam pengembangan perangkat lunak.
Proses Agile memanfaatkan perubahan untuk keuntungan kompetitif klien.
3.
Menghasilkan
perangkat lunak yang bekerja secara rutin, dari jangka waktu beberapa minggu
sampai beberapa bulan, dengan preferensi kepada jangka waktu yang lebih pendek.
4.
Rekan
bisnis dan pengembang perangkat lunak harus bekerja sama tiap hari sepanjang
proyek.
5.
Kembangkan
proyek di sekitar individual yang termotivasi. Berikan mereka lingkungan dan
dukungan yang mereka butuhkan, dan percayai mereka untuk menyelesaikan
pekerjaan dengan baik.
6.
Metode
yang paling efisien dan efektif untuk menyampaikan informasi dari dan dalam tim
pengembang perangkat lunak adalah dengan komunikasi secara langsung.
7.
Perangkat
lunak yang bekerja adalah ukuran utama kemajuan.
8.
Proses
agile menggalakkan pengembangan
berkelanjutan. Sponsor-sponsor, pengembang-pengembang, dan pengguna-pengguna
dapat mempertahankan kecepatan tetap secara berkelanjutan.
9.
Perhatian
yang berkesinambungan terhadap keunggulan teknis dan rancangan yang baik
meningkatkan Agility.
10.
Kesederhanaan
(memaksimalkan sumber daya yang tersedia) adalah hal yang amat penting.
11.
Arsitektur,
kebutuhan, dan rancangan perangkat lunak terbaik muncul dari tim yang yang
dapat mengorganisir diri sendiri.
12.
Secara
berkala, tim pengembang berefleksi tentang bagaimana untuk menjadi lebih
efektif, kemudian menyesuaikan dan menyelaraskan kebiasaan bekerja mereka.
Dua
belas prinsip tersebut menjadi suatu dasar bagi tim agar sukses menerapkan agile development methods. Dengan
prinsip-prinsip tersebut agile
berusaha untuk menyiasati tiga masalah yang biasanya dihadapi saat proses
pembuatan perangkat lunak, yaitu:
Kebutuhan
perangkat lunak sulit diprediksi dari awal dan selalu akan berubah. Selain itu,
prioritas klien juga sering berubah seiring berjalannya proyek.
Desain
dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain
yang diperlukan sebelum pembangunan.
Analisis,
desain, pembangunan dan testing tidak dapat diperkirakan seperti yang
diinginkan.
Beberapa
model dari agile development methods,
yaitu
:
Acceptance
Test Driven Development (ATDD)
Agile
Modeling
Adaptive
Software Development (ASD)
Adaptive software development (ASD)
diajukan oleh Jim Highsmith sebagai teknik untuk membangun software dan sistem
yang kompleks. Filosofi yang mendasari adaptive
software development adalah kolaborasi manusia dan tim yang mengatur diri
sendiri. Sistem kerja adaptive software
development
: collaboration dan learning. '
1. Collaboration : orang-orang yang bermotivasi tinggi
bekerja sama, saling melengkapi, rela membantu, kerja keras, terampil di
bidangnya, dan komunikasikan masalah untuk menyelesikan masalah secara efektif.
2. Learning: tim developer sering merasa
sudah tahu semua hal tentang proyek, padahal tidak selamanya begitu. Karena itu
proses ini membuat mereka belajar lebih tentang proyek melalui tiga cara:
3. Fokus grup, klien dan pengguna memberi
masukan terhadap perangkat lunak.
4. Formal Technique Reviews, tim ASD lengkap
melakukan review.
5. Postmortems, tim ASD melakukan
instrospeksi pada kinerja dan proses.
Agile
Unified Process (AUP)
Continuous
integration (CI)
Crystal
Clear
Crystal
Methods
Dynamic
Systems Development Method (DSDM)
Pada Dynamic System Development Method
menyajikan kerangka kerja (framework) untuk membangun dan memelihara sistem
dalam waktu yang terbatas melalui penggunaan prototip yang incremental dalam
lingkungan yang terkondisikan. Metode ini bisa membuat pengerjaan software
lebih cepat 80%.Hal -hal yang perlu diperhatikan jika menggunakan dynamic system development method:
1. Feasibility study, siapkan requirement,
dan batasan, lalu uji apakah sesuai gunakan proses DSDM.
2. Business Study, susun kebutuhan fungsional
dan informasi, tentukan arsitektur aplikasi dan identifikasi kebutuhan
pemeliharaan untuk aplikasi.
3. Functional model iteration, perlihatkan
fungsi perangkat lunak ke klien untuk mendapatkan feedback
4. Design and Build Iteration, cek ulang
prototip yang dibangun dan pastikan bahwa prototip dibangun dengan cara yang
memungkinkan fungsi tersebut benar-benar bekerja.
5. Implementation: buat perangkat lunak
sesuai protoip yang ada dan terus tambah fungsionalitasnya.
Extreme
Programming (XP)
Feature
Driven Development (FDD)
Feature driven development merupakan
sebuah model pengembangan perangkat lunak yang berdasarkan pada fitur yang akan
dibuat. Keuntungan dari metode feature
driven development
:
1. User dapat menggambarkan dengan mudah
bentuk sistem yang akan dibuat.
2. Dapat diorganisasikan atau diatur ke dalam
kelompok bisnis sesuai hirarki yang ada.
3. Desain dan kode lebih mudah diperiksa
secara efektif.
4. Perancangan proyek, biaya pembuatan dan
jadwal rilis ditentukan oleh fiturnya.
Graphical
System Design (GSD)
Kanban
Lean
software development
Rational
Unified Process (RUP)
Rational unified
process, adalah suatu
kerangka pengembangan perangkat lunak iteratif yang dibuat oleh Rational Software, suatu divisi dari
IBM sejak 2003. Rational unified process
bukanlah suatu proses dengan aturan yang konkrit, melainkan suatu kerangka
proses yang dapat diadaptasi dan dimaksudkan untuk disesuaikan oleh tim
pengembang perangkat lunak yang akan memilih elemen proses disesuaikan dengan
kebutuhan mereka.Model ini membagi suatu sistem aplikasi menjadi beberapa
komponen sistem dan memungkinkan para developer aplikasi untuk menerapkan
metoda iterative (analisis, disain, implementasi dan pengujian) pada tiap
komponen. Dengan menggunakan model ini, Rational
unified process membagi tahapan pengembangan perangkat lunaknya ke dalam 4
fase sebagai berikut.
1. Inception, merupakan tahap untuk
mengidentifikasi sistem yang akan dikembangkan. Aktivitas yang dilakukan pada
tahap ini antara lain mencakup analisis sistem, perumusan target dari sistem
yang dibuat, identifikasi kebutuhan, perumusan kebutuhan pengujian, pemodelan
diagram UML, dan pembuatan dokumentasi.
2. Elaboration, merupakan tahap untuk
melakukan disain secara lengkap berdasarkan hasil analisis di tahap inception. Aktivitas yang dilakukan pada
tahap ini antara lain mencakup pembuatan disain arsitektur subsistem, disain
komponen sistem, disain format data disain database, disain antarmuka/tampilan,
disain peta tampilan, penentuan design
pattern yang digunakan, pemodelan diagram UML, dan pembuatan dokumentasi.
3. Construction, merupakan tahap untuk
mengimplementasikan hasil disain dan melakukan pengujian hasil implementasi.
Pada tahap awal construction, ada
baiknya dilakukan pemeriksaan ulang hasil analisis dan disain, terutama disain
pada diagram sequence,class, component,
dan deployment. Apabila disain yang dibuat telah sesuai dengan analisis
sistem, maka implementasi dengan bahasa pemrograman tertentu dapat dilakukan.
Aktivitas yang dilakukan pada tahap ini antara lain mencakup pengujian hasil
analisis dan disain (misal menggunakan class
responsibility collaborator untuk kasus pemrograman berorientasi obyek),
pendataan kebutuhan implementasi lengkap (berpedoman pada identifikasi
kebutuhan di tahap analisis), penentuan coding pattern yang digunakan,
pembuatan program, pengujian, optimasi program, pendataan berbagai kemungkinan
pengembangan / perbaikan lebih lanjut, dan pembuatan dokumentasi.
4. Transition, merupakan tahap untuk
menyerahkan sistem aplikasi ke konsumen (roll-out), yang umumnya mencakup
pelaksanaan pelatihan kepada pengguna dan testing beta aplikasi terhadap
ekspetasi pengguna.
Scrum
Scrum-ban
Story-driven
modeling
Test-driven
development (TDD)
Velocity
tracking
Software
Development Rhythms
Tujuan
Agile
Secara
garis besar tujuan dirumuskannya agile
development methods, yaitu
:
1.
High-value
& working App system,
diharapkan dengan memakai agile
development methods dapat dihasilkan perangkat lunak yang mempunyai nilai
jual yang tinggi, biaya pembuatan bisa di tekan dan perangkat lunak bisa
berjalan dengan baik.
2.
Iterative,
incremental, evolutionary,
agile adalah metode pengembangan
perangkat lunak yang iteratif, selalu mengalami perubahan, dan evolusioner. Tim
harus bekerja dalam waktu yang singkat(biasanya 1-3 minggu) dan juga selalu
menambah fungsionalitas dari perangkat lunak sesuai dengan kebutuhan klien. Agile dapat dianalogikan ketika
seseorang ingin pergi ke suatu kota dan dia tidak tahu jalannya. Lalu bagaimana
dia bisa sampai tujuan? Dengan sering bertanya kepada orang yang dia temui
dijalan hingga dia sampai di tempat tujuan.
3.
Cost
control & value-driven development, salah satu tujuan dari agile
yaitu pengembangan perangkat lunak disesuaikan dengan kebutuhan pengguna, tim
bisa dengan cepat merespon kebutuhan yang diinginkan pengguna sehingga waktu
dan biaya pembuatan perangkat lunak bisa dikontrol.
4.
High-quality
production,
walaupun biaya pembuatan perangkat lunak bisa ditekan dan proses pembuatan bisa
dipercepat , tetapi kualitas dari perangkat lunak yang dibuat harus tetap
dijaga. Dengan melakukan tes setiap fungsionalitas perangkat lunak setelah
selesei dibuat berarti agile juga
mengakomodir kebutuhan ini.
5.
Flexible
& risk management,
jika kita menggunakan metode pembuatan yang biasanya dipakai, jika ingin
mengubah fungsionalitas dari wireframe
yang telah dibuat di butuhkan proses yang rumit. Mulai dari pertemuan dengan
sistem analis untuk merubah sistem perangkat lunak, perubahan rencana rilis
produk hingga perubahan biaya produksi. Pertemuan dengan klien untuk melakukan
tes perangkat lunak juga sering dilakukan sehingga fungsionalitas perangkat
lunak mudah diubah dan akhirnya kegagalan perangkat lunakpun bisa
diminimalisir.
6.
Collaboration, dengan menggunakan agile, tim pengembang diharuskan sering
bertemu untuk membahas perkembangan proyek dan feedback dari klien yang
nantinya akan ditambahkan dalam perangkat lunak, sehingga tim bisa
berkolaborasi dengan maksimal.
7.
Self-organizing,
self-managing teams,
rekrut orang terbaik, beri dan dukung kebutuhan mereka lalu biarkan mereka
bekerja. Itulah perbedaan agile dan
SDM lainnya. Dengan agile, developer dapat memanajemen dirinya
sendiri, sedangkan manajer tim hanya bertugas mengkolaborasikan developer perangkat lunak dengan klien.
Sehingga terciptalah tim yang solid.
Topik
selanjutnya yaitu tentang cara kerja agile
development methods. Disini akan dijelaskan bagaimana agile development methods (model scrum) digunakan dalam manajemen
proyek.
Komposisi tim
Secara
umum komposisi dari sebuah tim pengembang perangkat lunak yaitu :
Owner / Klien, bersama dengan developer sebagai bagian terpenting
dalam proyek, tugas dari klien menentukan fungsi dari perangkat lunak yang akan
di buat, melakukan testing dan memberikan feedback.
Manajer
/ Scrum Master, bertugas
mengkolaborasikan developer dengan klien, membuat dan mengevaluasi target
pengerjaan perangkat lunak.
Sistem
Analis, membuat arsitektur sistem dari perangkat lunak yang akan dibuat.
Developer,
merupakan titik vital dalam tim, tanpa developer perangkat lunak tidak akan
bisa dibuat.
Story
Story
adalah daftar kebutuhan atau fitur yang nanti akan dibuat. Story berisi apa
yang klien kehendaki, dan ditulis dalam bahasa yang dimengerti klien. Dengan
kata lain dapat disimpulan Story adalah bagian terpenting dari Scrum.
Story
terdiri dari kolom-kolom berikut ini:
ID
– Identifikasi unik, biasanya berupa
nomor urut. Hal ini untuk menghindari kehilangan jejak story kalau kita
mengganti namanya.
Nama
– Nama story bersifat deskriptif, padat,
singkat, dan jelas (2-10 kata), sehingga tim dan klien memahami kira-kira story
yang dibicarakan.
Kepentingan
– Derajat kepentingan yang diberikan
oleh klien terhadap story. Pemberian derajat kepentingan biasanya menggunakan
deret fibonacci (1,1,2,3,5,dst). Semakin tinggi nilainya maka semakin tinggi
pula prioritas pengerjaannya.
Perkiraan
awal – Perkiraan awal tim tentang berapa
banyak kerja yang diperlukan untuk mengimplementasikan sebuah story.
Demo
– deskripsi umum bagaimana cara story
ini didemokan pada waktu sprint demo (lakukan ini, klik itu, lalu ini akan
muncul,dll).
Sprint
Sprint
(Rapat perencanaan pembuatan perangkat lunak dilakukan 2-8 minggu sekali), yang
perlu diperhatikan saat melaksanakan sprint antara lain :
Tujuan
sprint.
Daftar
anggota tim harus lengkap.
Sprint
backlog (daftar story yang akan diikutkan dalam sprint).
Tanggal
demo yang pasti.
Tempat
dan waktu yang jelas untuk pelaksanaan sprint berikutnya.
Tim
akan melakukan sprint secara simultan sampai perangkat lunak selesei
dikerjakan, sebagai contoh:
Sprint
1, tim membuat fungsi login,logout dan demo perangkat lunak akan dilakukan 3
minggu kemudian. Setelah dilakukan demo untuk mengevaluasi kerja yang dilakukan
tim pada Sprint 1, maka Sprint 1 dianggap selesei. Bahan evaluasi dari Sprint 1
akan dibawa ke Sprint 2 begitu seterusnya sampai aplikasi selesei dikerjakan.
Kelebihan dan Kekurangan
Kelebihan
Beberapa kelebihan dari agile diantaranya:
82%
Menambah produktivitas tim.
77%
Menambah kualitas perangkat lunak.
78%
Menambah kepuasan klien.
37%
Menghemat biaya.
Kekurangan
Sedangkan
kekurangan dari agile antara lain :
Agile
tidak akan berjalan dengan baik jika komitmen tim kurang.
Tidak
cocok dalam skala tim yang besar (>20 orang).
Perkiraan
waktu release dan harga perangkat lunak sulit ditentukan.
Perkembangan dalam metode pengembangan
perangkat lunak saat ini telah mengalami
banyak perubahan untuk menutupi
kelemahan dari metode-metode sebelumnya. Jika kita
melihat ke belakang, metode yang
digunakan tidak mampu menangani kemungkinan
perubahan atau penambahan requirement
pada saat proses pengembangan perangkat lunak
berlangsung. Hal inilah yang menjadi
pendorong munculnya metode baru dalam
pengembangan perangkat lunak. Untuk
menangani kelemahan tersebut diperkenalkan
metode baru pada dekade 90-an, yakni
agile methods (Widodo & Subekti, 2006). Saat ini
hasil dari perkembangan dari agile
methods sudah cukup banyak, diantaranya:
1.
eXtreme Programming
2.
Scrum Methodology
3.
Crystal Family
4.
Dynamic System Development Method
5.
Adaptive Software Development
6.
Feature Driven Development
Arti kata agile sendiri berarti
tangkas, cepat, atau ringan. Agility merupakan metode yang
ringan dan cepat dalam pengembangan
perangkat lunak(Widodo & Subekti, 2006). Agile
Alliance
mendefinisikan 12
prinsip untuk mencapai proses yang termasuk dalam agility:
1.
Prioritas
tertinggi adalah memuaskan pelanggan melalui penyerahan awal dan
berkelanjutan perangkat lunak yang
bernilai.
2.
Menerima
perubahan requirements meskipun
perubahan tersebut diminta pada akhir
pengembangan(Turk dkk, 2004).
3.
Memberikan
perangkat lunak yang sedang dikerjakan dengan sering, beberapa minggu
atau beberapa bulan, dengan pilihan
waktu yang paling singkat.
4.
Pihak
bisnis dan pengembang harus bekerja sama setiap hari selama pengembangan
berjalan.
5.
Bangun
proyek dengan individu-individu yang bermotivasi tinggi dengan memberikan
lingkungan dan dukungan yang
diperlukan, dan mempercayai mereka sepenuhnya
untuk menyelesaikan pekerjaannya.
6.
Metode
yang paling efektif dan efisien dalam menyampaikan informasi kepada tim
pengembangan adalah dengan komunikasi
langsung face-to-face(Turk dkk,
2004).
7.
Perangkat
lunak yang dikerjakan merupakan pengukur utama kemajuan.
8.
Proses
agile memberikan proses pengembangan
yang bisa ditopang. Sponsor,
pengembang, dan user harus bisa menjaga ke-konstanan langkah yang tidak pasti.
9.
Perhatian
yang terus menerus terhadap rancangan dan teknik yang baik meningkatkan
agility.
10. Kesederhanaan –seni
untuk meminimalkan jumlah pekerjaan– adalah penting.
11. Arsitektur, requirements, dan rancangan terbaik muncul dari tim yang mengatur
sendiri(Ashima & Aggarwal, 2010).
12. Pada interval reguler tertentu, tim
merefleksikan bagaimana menjadi lebih efektif,
kemudian menyesuaikannya(Kniberg,
2007).
Metode yang berkembang telah beralih ke metode yang lebih
sederhana dengan
mengutamakan fleksibilitasdan dengan lingkungan yang cepat
berubah-ubah (Nasution &
Weistroffer, 2009). Metode agile yang sering digunakan
adalah metodeextreme programming
danscrum. Extreme programming didasarkan pada planning game dan panduan dalam
pengkodean program (Bostrom dkk, 2006). Pendekatan dengan scrum telah
dikembangkan untuk mengelola proses pengembangan perangkat lunak di lingkungan
yang berubah-ubah berdasarkan fleksibiltas, kemampuan beradaptasi, dan
produktivitas (Abrahamsson, 2003).Scrum adalah sebuah proses kerangka kerja
yang disusun untuk menunjang pengembangan produk yang kompleks. Scrum terdiri
dari tim scrum beserta peran-peran yang diperlukan, acara, artefak dan aturan
main. Setiap komponen di dalam kerangka kerja
ini memiliki tujuan tertentu dan peran penting terhadap
keberhasilan dari jalannya proses Scrum (Schwaber & Sutherland, 2011).
Scrum fokus ke praktek manajement dan organisasi sedangkan XP sebagian besar
fokus kepada praktek pemrograman. Oleh karena itulah keduanya bisa digabungkan
dengan baik, karena keduanya mengatasi area yang berbeda dan saling melengkapi
(Kniberg, 2007).
Subjek dari
metode agile dan dokumentasi
perangkat lunak terus menjadi isu sensitif dan pusat dari banyak kontroversi.
Hal ini didorong oleh filosofi bahwa metode agile
sangat berbeda dari metode tradisional. Dan memang metode agile berbeda dari metode tradisional.
Kita tahu metode agile berbeda dari Metode Tradisional, karena pencipta metode
agile mengatakan begitu(Rico, 2008). Mari kita memeriksa agile manifesto, yang menyatakan dengan tegas bahwa empat nilai
utama dari metode agile adalah:
1.
Individu
dan interaksi lebih dari proses dan sarana perangkat lunak.
2.
Perangkat
lunak yang bekerja lebih dari dokumentasi yang menyeluruh
3.
Kolaborasi
dengan klien lebih dari negosiasi kontrak
4.
Tanggap
terhadap perubahan lebih dari mengikuti rencana.
Nilai kedua dari manifesto agile tampaknya bukan hanya menjadi
duridisisi metode agile, tapi juga
merupakan pendukung darimetode tradisional. Alasan untuk perpecahan ini yang
membagi komunitas metode agile dan
tradisional.Tradisionalis khususnya, karena dokumentasi perangkat lunak
menyeluruh adalah salah satu nilai dasar yang baik dari metode
tradisional(Rico, 2008). Pendukung metode tradisional mengklaim bahwa
dokumentasi perangkat lunak yang baik merupakan hal terpenting dalam siklus
hidup dari metodetradisional, persyaratan dan desain, kualitas perangkat lunak,
dan pemeliharaan
perangkat lunak. Jadi tanpa dokumentasi
perangkat lunak yang baik, perangkat lunak tidak dapat ditentukan, dirancang,
atau dipertahankan, dan pada akhirnya menghasilkan kualitas perangkat lunak
yang rendah. Untuk memperburuk situasi, pencipta metode agilemembuat kebalikan dari apa yang biasa atau diterima dari
kebijaksanaan konvensional lama dengan mendefinisikan nilai yang mengatakan
bahwa "perangkat lunak bekerja lebih dari dokumentasi yang
komprehensif." Oleh karena itu, dalam pikiran tradisionalis, metode agile
merupakan metode yang tidak benar, sesat, dan tidak lebih dari hacking yang sederhana.
Kebanyakan
pihak memiliki persepsi bahwa dalam metode agile,
dokumentasi tidak terlalu dipentingkan sehingga banyak organisasi pengembang IT
yang tidak ingin untuk beralih ke metode agile.
Sebab telah diamati melalui literatur bahwa dokumentasi yang baik memainkan
peran yang sangat penting dalam pengembangan perangkat lunak. Ini membantu
dalam meningkatkan kecepatan pengembangan dan juga membantu dalam mmpertahankan
komunikasi dan hubungan di antara para developer
dan stakeholder lainnya(Uikey
dkk, 2011).Namun persepsi yang mengatakan bahwa dalam metode agile tidak
terlalu mementingkan dokumentasi belum tentu benar sebabagile manifesto
sifatnya lebih ke preferensi, bukan keharusan atau mandat. Sedangkan dalam
scrum sendiri, penggunaan kerangka kerjanya sangat beragam (Schwaber &
Sutherland, 2011). Jadi selama dokumentasi itu memiliki nilai, maka dokumentasi
tersebut harus dibuat. Jadi sering terjadi kesalahpahaman dari pemahaman
terhadap metode agile. Beberapa mitos umum tentang agile adalah(Kar, 2006):
1.
Agile
hanya untuk perusahaan yang kecil atau yang berukuran sedang. Hal ini merupakan
pemikiran yang salah karena agile bukan merupakan fungsi (function) dari ukuran sebuah perusahaan. Agile dapat menangani mulai dari perusahaan yang kecil sampai
perusahaan yang berukuran sangat besar.
2.
Agile berarti proses yang “ringan”
artinya merupakan metode yang tidak tersturktur
dengan dokumentasi yang sedikit atau tanpa
dokumentasi. Hal ini tidak benar karena,
ringan di sini berarti kemampuan proses untuk
beradaptasi dengan perubahan.
Metodologi agile berusaha untuk menggunakan dokumentasi seminimal mungkin.
Penekanan terhadap dokumentasi hanya
dilakukan saat dokumentasi pada kasusnya itu
dianggap penting dan tidak mencampur
adukkan dengan dokumentasi yang tidak
relevan.
DOKUMENTASI
AGILE METHOD
Ketika
pertama kali bekerja dengan Agile Modeling, diharapkan agar dapat terfokus pada
prinsip dan praktek untuk pemodelan yang efektif, tapi segera disadari bahwa
ruang lingkup ini tidak cukup. Perlu mempertimbangkan bagaimana penciptaan dan
pemeliharaan dokumentasi menjadi efektif. Beberapa model agile akan berkembang ke dalam dokumentasi pada system yang resmi,
meskipun sebagian besar tida, dan oleh karena itu relevan untuk membahas
bagaimana menjadi agile dalam melakukannya.
Hubungan
antara model, dokumen, source code, dan dokumentasi, seperti yang tampak pada
gambar di bawah. Dari sudut pandang agile
modeling, dokumen adalah segala sesuatu yang bersifat eksternal dari source code yang tujuannya adalah untuk
menyampaikan informasi secara persisten. Ini berbeda dari konsep model, yang
merupakan abstraksi yang menggambarkan satu atau lebih aspek dari masalah atau
solusi potensial dalam mengatasi masalah. Beberapa model akan menjadi dokumen,
meskipun lebih banyak yang akan dibuang begitu telah terpenuhi. Beberapa model
akan digunakan untuk mendorong pengembangan source
code, meskipun beberapa model mungkin hanya digunakan untuk mendorong
pengembangan model lainnya. Source code adalah
urutan instruksi, termasuk komentar yang menggambarkan instruksi tersebut,
untuk sistem komputer. Meskipun source
code jelas sebuah abstraksi, meskipun yang rinci, dalam lingkup agile modelingtidak akan dianggap
sebagai model karena akan dibedakan dari konsepnya. Jadi dokumentasi meliputi
dokumen dan komentar dalam source code (Ambler
S. , 2002).
Gambar
1 Hubungan antara model, dokumen, source code, dan dokumentasi
Eelco Gravendeel menyatakan bahwa hanya
ada dua jenis dokumentasi dalam
Agile(Hazrati, 2009):
1.
Dokumen
yang diperlukan untuk semua anggota tim untuk bekerja pada proyek alam dunia
yang ideal, tim ini merelokasi dan semua pengetahuan akan dibagi dan diserahkan
dengan komunikasi langsung. Namun, jika tim didistribusikan dan pengetahuan
harus ditransfer kemudian menulis dokumen dan melengkapi dengan panggilan audio
visual akan sangat berguna. Satu set dokumen minimal yang umum juga dibutuhkan
oleh tim untuk berbicara bahasa macam-macam dan berada di level yang sama
pemahaman. Eelco menyatakan bahwa banyak dokumen, yang dibuat untuk
mendukung penciptaan produk, panggilan
untuk perhatian lebih karena mereka dibuang segera setelah proyek selesai.
2.
Dokumentasi
untuk dikirim dengan produk akhir - Adalah dokumen yang merupakan bagian dari
pengiriman produk dan kelanjutan hubungan dengan klien yang baik. Contoh umum
termasuk:
1.
User
manual
2.
Deployment
manual
3.
Pemeliharaan
manual (ditujukan untuk mengoperasikan perangkat lunak)
4.
Teknis
dokumentasi (ditujukan untuk menjaga basis kode), dll
Model
Belum Tentu Dokumen
Gambar
2 Sebuah UML statechart yang menggambarkan siklus hidup agile modeling
Implikasi
dari Gambar 2 adalah bahwa model tidak selalu dokumen.Banyak model bersifat
sementara padadasarnya. Selain itu, dokumen tidak selalu model. Misalnya: kita
tidak akan mempertimbangkan manual untuk menjadi model. Hal ini penting karena
banyak orang percaya sebaliknya. Ketika mereka mendengar kata "model"
mereka secara otomatis menerjemahkan ke "dokumen" dan semua konotasi
negatif (meskipun jarang yang positif).
Konsep
"model" dan "dokumen"adalah ortogonal karenakitajelas dapat
memiliki satu tanpa
yang lainnya.Penerimaan dari ide ini
adalah langkah penting menuju menjadi lebih agile.
Kebutuhan
Untuk Dokumentasi
Para
pengembang agile mengakui bahwa
dokumentasi merupakan bagian intrinsik dari
sistem apapun. Ada 4 alasan yang sah
untuk membuat dokumentasi (Ambler S. , 2002):
Stakeholder proyek atau pemilik produk
memerlukannya(SAP, 2007). Penciptaan dokumentasi merupakan sebuah keputusan
bisnis yang fundamental, bukan pada hal teknis. Para pengembang perangkat lunak
berinvestasi sumber daya dari stakeholder
proyek dalam pengembangan dokumentasi, karena itu, mereka harus memiliki
kata terakhir mengenai apakah uang mereka akan dikeluarkan atau tidak. Jika stakeholder proyek meminta dokumentasi
dari pihak pengembang, mungkin pada saran pihak pengambang itu sendiri, dan
memahami trade-off yang terlibat, maka pihak
pengembang harus membuat dokumen.
Untuk
menentukan model kontrak. Kontrak merupakan persetujuan antara dua pihak yang
tertulis dan dilaksanakan oleh hukum. Model Kontrak menentukan bagaimana sistem
yang dikembangkan dan sistem eksternal berinteraksi satu sama lain(Jakob dkk,
2008). Beberapa interaksi dua arah, sedangkan yang lain adalah uni-directional, membuat interaksi
secara eksplisit untuk semua orang yang terlibat. Model Kontrak sering
diperlukan bila kelompok eksternal mengontrol sumber informasi bahwa sistem
yang dikembangkan membutuhkan, seperti database, aplikasi warisan, atau layanan
informasi.
Untuk
mendukung komunikasi dengan anggota tim pada tempat yang berbeda. Pengembang
dalam tanggung jawabnya harus mengkomunikasikan requirements (Josef, 2007). Tidak
mungkin untuk bekerja sama dengan tim pengembangan dan stakeholder proyek (atau setidaknya yang dibutuhkan pada saat itu)
ada setiap saat. Bila pengembang perlu untuk bekerja dengan tim yang memiliki
lokasi yang berbeda, pengembang perlu menemukan cara untuk berkomunikasi dengan
mereka, dan dokumentasi sering menjadi bagian dari solusi(Fricker dkk, 2007).
Untuk menggunakan dokumentasi sebagai sarana utama komunikasi adalah sebuah
kesalahan sebab terlalu mudah untuk terjadi kesalahpahaman tentang sesuatu yang
telah ditulis, namun merupakan mekanisme pendukung yang baik. Cara yang baik
untuk berpikir dokumentasi dalam situasi ini adalah bahwa hal itu merupakan
pilihan terakhir.
Untuk
memikirkan sesuatu yang lebih. Banyak orang akan menulis dokumentasi untuk
meningkatkan pemahaman mereka sendiri. Menulis, menempatkan ide-ide di atas kertas,
dapat membantu anggota tim untuk memperkuat tim dan menemukan masalah dengan
pemikirannya. Apa yang tampak jelas dalam pikiran sering menjadi sangat rumit
setelah dicoba untuk menggambarkan secara rinci. Untuk itu, disarankan bahwa
orang menulis komentar sebelum mereka menulis kode mereka. Hal di atas tentu
sangat berbeda dengan alasan yang selama ini digunakan untuk pembuatan
dokumentasi. Developer sering dipaksa untuk membuat dokumentasi dengan tujuan
yang tidak jelas demi untuk kepentingan politik, dan dokumen seperti ini
biasanya dianggap sebagai dokumen yang tidak efektif karena hanya akan membuang
waktu, tenaga dan biaya.Adapun alasan-alasan yang tidak jelas untuk pembuatan
dokumentasi serta cara untukmengatasinya adalah sebagai berikut(Ambler S. W.,
2001):
Pemohon
ingin dilihat berada dalam kontrol. Orang akan meminta dokumen, seperti
spesifikasi dan dokumen arsitektur secara rinci agar mereka dapat
menandatanganinya dan berkata. Setiap kali menemukan hal seperti dalam situasi
ini maka katakan kepada invidu yang meminta dokumen tadi apakah mereka ingin
dilihat sebagai orang bertanggung jawab atas kegagalan proyek karena tim
pengembangan terlalu sibuk berfokus pada dokumentasi yang tidak perlu dan tidak
pada perangkat lunak yang sedang dibangun. Saya kemudian akan menyarankan bahwa
alih-alih meminta dokumentasi mereka malah harus meminta akses ke perangkat
lunak itu sendiri, bahkan jika itu hanya sebuah rilis internal perangkat lunak,
sehingga mereka dapat memberikan umpan balik konstruktif tentang hal itu.
Mereka masih dapat dilihat untuk menjadi peserta aktif dalam proyek dan dapat
melakukannya dengan cara yang produktif.
•
Pemohon
keliru berpikir bahwa dokumentasi ada hubungannya dengan keberhasilan proyek.
•
Pemohon
ingin membenarkan keberadaan mereka. Ini biasanya terjadi ketika seseorang
dalam organisasi yang tidak berguna lagi sangat ingin terlihat melakukan
sesuatu. Hal ini merupakan bahaya yang terselubung karena pemohon sering
memiliki sesuatu yang tampak pada permukaan untuk menjadi alasan yang baik
untuk meminta dokumentasi, ini merupakan sesuatu yang telah mereka lakukan
selama bertahun-tahun, dan manajemen sering berpendapat itu perlu. Untuk
mengatasi masalah ini maka minta kepada pemohon apakah yang mereka inginkan
dengan adanya dokumen, mengapa mereka memerlukannya, mengapa dengan penciptaan
dokumentasi bagi mereka adalah lebih penting daripada pekerjaan lain, dan
sebagainya untuk mencoba menentukan yang sebenarnya nilai apa yang mereka
lakukan. Ini adalah pertanyaan yang valid
untuk bertanya, meskipun yang tidak nyaman bagi seseorang yang tidak
menambah nilai lebih kepada upaya pembangunan.
•
Pemohon
tidak mengetahui yang lebih baik. Banyak orang telah bekerja dalam organisasi
yang telah mengikuti prosesnon-agile selama
bertahun-tahun, proses yang berpusat pada dokumentasi, proses yang menghasilkan
banyak dokumen untuk diperiksa dan akhirnya akan menghasilkan perangkat lunak.
Hal ini yang terbiasa mereka lakukan sehingga mereka akan hanya meminta pengembang
untuk sesuatu yang mereka sudah dapatkan di masa lalu. Gagasan bahwa pengembang
dapat menghasilkan
perangkat
lunak di awal proyek, bahwa itu merupakan tujuan utama, adalah hal yang
baru dan sering menjadi hal yang radikal bagi banyak orang.
Prosesnya
yang mengatakan untuk membuat dokumen. Meskipun bukanmerupakan permasalahan
dengan proses perangkat lunak agile,
tapihal seperti itu pasti dapat disatukan dengan proses perangkat lunak yang
preskriptif. Alasan paling umum untuk masalah ini termasuk orang yang ingin
membenarkan keberadaan mereka (lihat di atas), orang tidak memahami proses
pengembangan perangkat lunak atau setidaknya implikasi dari apa yang mereka
minta, dan situasi di mana tujuan utamanya adalah untuk mendapatkan bayaran
untuk per jamnya sebagai lawan untuk mengembangkan perangkat lunak secara
efektif. Strategi terbaik untuk mengatasi masalah ini adalah untuk menyelidiki
apakah penciptaan dokumen benar-benar memberikan nilai pada usaha yang
dilakukan.
Seseorang
ingin kepastian bahwa semuanya baik-baik saja. Stakeholder proyek
menginvestasikan sumber daya yang penting dalam tim proyek, mereka mengambil
risiko pada developer, dan mereka
ingin tahu bahwa investasi mereka sedang dibelanjakan dengan baik. Untuk
mendapatkan kepastian ini mereka akan meminta adanya dokumentasi, laporan
status atau mungkin dokumen secaramenyeluruh, mereka tidak memahami bahwa perlu
mengambil waktu untuk melakukannya dan hal itu jauh dari tujuan sejati yakni
mengembangkan perangkat lunak.Dan mereka tidak menyadari bahwa permintaan yang
lebih baik adalah melihat perangkat lunak itu sendiri (seperti yang ditunjukkan
sebelumnya, mereka tidak tahu lebih baik). Developer
harus mengenali kapan hal seperti ini terjadi, yaknijika pada awal proyek
mereka tidak percaya tim pengembang, dan mencari cara alternatif untuk
memberikan jaminan itu.
Anggota
tim bekerja dengan tim yang lain. Meskipun telah diidentifikasi Agile Modeling
sepertinya tidak tepat dalam situasi ini. Dokumentasi adalah salah satu cara
untuk berkomunikasi tetapi bukan cara terbaik. Sebaiknya temukan pendekatan
alternatif, seperti pertemuan sesekali dengan kelompok lain atau penggunaan
alat-alat kolaboratif, untuk mengurangi ketergantungan tim pada dokumentasi.
Dokumen
kontrak pengembangan yang secara rutin digunakan kembali untuk kompetisi.
Masalah ini sering terjadi di perusahaan yang bekerja untuk instansi pemerintah,
meskipun perusahaan tersebut mengancam kontraktor mereka dengan menempatkan
proyek untuk tawaran lagi jika mereka tidak melakukannya. Jika tujuan utamanya
adalah untuk mengembangkan perangkat lunak maka seharusnya pengembang fokus
untuk melakukannya dan pengembang lebih mungkin untuk melakukan hal secukupnya
untukpembuatan kontrak. Klien langsung dalam situasi ini sering beroperasi di
bawah keyakinan yang sesat bahwa jika pengembang tidak melakukannya maka mereka
dapat mengambil dokumentasi yang dibuat dan memberikan kepada kontraktor
berikutnya yang akan mulai dari apa yang telah dikerjakan oleh pengembang
sebelumnya. Hal ini berbatasan delusi menurut saya. Tapitidak peduli bagaimana
pengembang melihatnya, kontraktor berikutnya sangat tidak mungkin untuk mengambil
keuntungan dari dokumentasi yang dihasilkan tadi. Pengembang Agile mengakui bahwa dokumentasi yang
efektif adalah tindakan penyeimbangan, tujuannya adalah untuk hanya memiliki
dokumentasi yang cukup pada waktu yang tepat dan hanya untuk audiens yang tepat
dan juga merupakan tanggung jawab dari pengembang agile dalam hal ini adalah business
analyst untuk melakukan dokumentasi (Josef, 2007). Jadi pembuatan
dokumentasi pada metode agile didasarkan pada proses bisnisnya. Kita telah
membahas alasan yang sah dan alasan yang dipertanyakan dalam
pembuatan dokumentasi. Bagian
selanjutnya akan membahas studi kasus dengan pendekatan dokumentasi melalui agile methods.
Hubungan
Antara Dokumentasi dan Kesuksesan Proyek
Tidak
ada hubungan yang solid antara keberhasilan proyek dan dokumentasi tertulis
yang komprehensif, dan sebenarnya itu lebih mungkin bahwa dokumentasi yang
dilakukan semakin besar kemungkinannya dapat menyebabkan kegagalan proyek.
Mengapa orang
keliru dalam berpikir bahwa dokumentasi
merupakan faktor penentu keberhasilan dalam
pengembangan perangkat lunak? Teori
dari Scott W. Ambler menyatakan bahwa pada
tahun 1970-an dan 1980-an banyak
organisasi memindahkan departemen IT mereka
dari
code
and fixhackingke
prosesdocumentation-heavy serial waterfall.
Ketika mereka melakukannya,
tingkat keberhasilan mereka benar-benar
meningkat. Bahkan dapat dilihat hari ini dengan
CMM
(Capability Maturity Model)/CMMI,
yakni ketika kita berpindah dari code and
fixCMM
(I)
tingkat 1 ke tingkat
2 atau 3, kita sebenarnya dapat melihat perbaikan dalam
produktivitas meskipun telah
ditambahkan pembuatan dokumentasi yang lebih banyak
untuk prosesnya. Mereka telah belajar
bahwa dokumentasi meningkatkan upaya
pengembangan perangkat lunak, dan
merasa puas dengan jawabannya dan itu benar-benar
disayangkan.
Para
pendukung CMM (I), atau strategi lain
yang mendukung adanya dokumentasi yang
berat, sepertinya tidak pernah
mengajukan pertanyaan tentang apakah ada cara yang lebih
baik untuk bekerja. Bukankah
memfokuskan upaya dalam membuat perangkat lunak
berkualitas tinggi (misalnya tes-driven development yang pada
dasarnya menghasilkan spesifikasi
executable) memberikan nilai kembalian yang lebih
besar daripada menulis dokumentasi?
Bukankah mencari cara untuk pembuatan
kode program yang berkualitas tinggi (misalnya
refactoring) memberikan pengembalian yang lebih
besar daripada menulis dokumentasi?
Bukankah nilai sebenarnya dari
dokumentasi meningkatkan pemahaman tentang masalah
domain, atau solution domain dalam kasus arsitektur/desain, dan bukan
dokumentasi itu
sendiri? Jika demikian, mungkin hanya
berfokus pada upaya pemodelan (misalnya agile
model driven development) dan bukan
pada dokumentasi(Ambler S. , 2002).
STUDI
KASUS
Berikut
ini adalah contoh studi kasus pada beberapa perusahaan yang menggunakan salah
satu metode agileyakni scrum (Scrumway, 2011):
Perusahaan
Multifinance
Dokumentasi
seperti Business Requirement Document (BRD) yang mau tidak mau harus dibuat.
Tujuannya adalah supaya pihak end-user atau developer yang akan memaintain sistem ini dapat
mengerti requirement dari sistem.BRD ini
menjadi jembatan komunikasi dan dokumentasi
mengenai cara kerja sistem berisi
kebutuhan yang desain pusat data harus penuhi (Ekanita,
2006). Adapun tujuan requirement secara
umum adalah sebagai berikut:
•
Menetapkan dan menjaga kesepakatan dengan
customer dan stakeholder lain tentang apa
yang harus dilakukan oleh sistem.
•
Untuk
memberikan pemahaman yang lebih baik kepada pengembang sistem tentang
kebutuhan sistem.
•
Menetapkan
batasan sistem.
•
Untuk
menyediakan dasar perencanaan teknis.
•
Untuk
menyediakan dasar perkiraan biaya dan waktu pengembangan sistem.
Untuk
mendefinisikan user interface sistem.BRD Dalam
sistem ini harus dibuat karena sifat dari sistemnya beresiko tinggi karena ada
hubungannya dengan uang, sehingga pemahaman mengenai sistem sangat diperlukan
agartidak terjadi hal yang tidak diinginkan ketika perubahan atau enhancement pada sistem dilakukan.
Selain sifat dari sistem yang mission
critical, sistem ini memiliki lifecycle
yang sangat panjang, bahkan mungkin bisa lebih panjang dari umur developer yang menanganinya.
Developer-nya bisa saja kerja di perusahaan
tersebut untuk 2 tahun tapi sistem tetap berjalan walaupun developernya tidak bekerja di perusahaan itu lagi. Untuk kasus
seperti ini berarti kita dapat
melihat bahwasanya dokumentasi memiliki nilai jadi dokumentasi harus dibuat.
Didalam tim scrum dalam organisasi ini akan ada
seorang Business Analyst yang akan mensinkronisasikan pekerjaan tim dan
mendokumentasikannya ke dalam bentuk BRD ini.
Perusahaan
Perangkat Lunak Word Processor
Ada lagi contoh sebuah perusahaan
pembuat software word processor yang dijual secara massal dan digunakan oleh
banyak pengguna yang awam yang bukan berada dalam organisasi tersebut. Untuk
organisasi seperti ini dokumentasi seperti BRD
tidak akan memiliki nilai karena sifatnya yang terlalu formal. Bahkan orang
awam pun akan mengalami kesulitan untuk membacanya. Dalam kasus seperti ini,
dokumentasi yang memiliki nilai adalah user
manual(Sabharwal, 2008).
Dalam
kasus seperti ini user manual akan
memiliki nilai tambah terhadap produk karena
apabila pengguna tidak memiliki panduan
mengenai bagaimana menggunakan perangkat lunaknya maka kemungkinan di masa
mendatang mereka tidak meneruskan license
dari produk ataupun bahakn mencemooh produk ini di social media. Hal ini dapat berimplikasi buruk terhadap bisnis
mereka oleh karena itu user manual harus dibuat. Di dalam tim scrum dalam organisasi ini akan ada
seorang Technical Writer yang
menuliskan user manual dengan bahasa yang dapat dimengerti orang awam. Peran technical writer sebagai developer perangkat lunak yang memiliki
pengetahuan dan memiliki keterampilan dalam pembuatan dokumentasi . Technical
writer dapat terlibat dalam prosesscrum dengan
menghadiri pertemuan yang selama 15 menit dengan komunikasi yang cepat dengan
anggota tim (Uikey dkk, 2011).
Perusahaan
Aplikasi Mobile
Dokumentasi
tidak diperlukan di dalam aplikasi-aplikasi mobile tersebut. Bahkan user manual
sekalipun. Alasannya adalah natur bisnis perusahaan ini yang bergerak sangat
cepat(Wasserman, 2010). Di dalam bisnis mereka, setiap 3 bulan sekali produk
yang mereka kembangkan mungkin akan menjadi usang, dibuang ataupun tidak
digunakan lagi. Yang artinya setiap 3 bulan sekali mereka terus mengembangkan
aplikasi mobile untuk dapat tetap
memenuhi kebutuhan pasar(Wasserman, 2010). Karena biasanya aplikasi mobile yang mereka buat sangat sederhana
dan dapat langsung dimengerti oleh orang awam sekalipun, maka mereka tidak
perlu membuat user manual. User manual produk mereka sudah di-embed dalam penggunaan produk mereka
yang begitu mudah dimengerti. Dari situ disepakati bahwasanya dokumentasi
justru akan menghambat mereka untuk bisa deliver
produk setiap
3 bulan sekali dan berkeputusan
bahwasanya dokumentasi tidak perlu dibuat karena tidak
ada nilainya bagi produk yang mereka
kembangkan.
Multinasional
Terdistribusi
Sebuah
perusahaan multinasional yang memiliki cabang dan developer di berbagai negara. Mereka membutuhkan dokumentasi yang
komprehensif mulai dari Design
Specification, User Manual, User Requirement, dan
sebagainya(Alexandru, 2012). Bahkan email
dan messengerchat log pun
diarsipkan oleh tim. Belum lagi termasuk wiki
entry mereka yang sangat komprehensif. Perusahaan ini adalah salah satu
perusahaan multinasional yang paling agile
di dunia. Lalu pertanyaannya adalah kalau mereka agile, kenapa mereka
membutuhkan dokumentasi yang sekomprehensif itu? Bukankah itu bertentangan
dengan nilai agile? Perlu diingat
bahwasanya ada nilai agile lagi yang
penting yakni kolaborasi dan komunikasi. Mereka sepakat karena letak anggota
timnya yang terdistribusi di berbagai negara yang memiliki timezone yang berbeda-beda dokumentasi adalah salah satu sarana
dimana mereka dapat berkomunikasi dengan anggota tim lainnya(Prikladnicki dkk,
2003). Tanpa dokumentasi-dokumentasi ini mereka sepakat hal tersebut dapat
menyebabkan mereka sangat sulit untuk dapat tetap
berada di atas jalur.
Dari
contoh diatas kiranya dapat memberi gambaran bahwasanya tim agile tidak
mengesampingkan dokumentasi sama
sekali(Scrumway, 2011). Pertama harus mencari tahu
terlebih dahulu sejauh mana kebutuhan
akan dokumentasi dan seberapa bernilai
dokumentasi itu untuk bisnis dan produk
yang dikembangkan. Dari kebanyakan kasus yang
terjadi di lapangan, dokumentasi tidak
memiliki nilai karena dipakai untuk mencari kambing
hitam atau sebagai kontrak mati. Dari
kebanyakan kasus yang terjadi di lapangan,
dokumentasi tidak memiliki nilai karena
dipakai untuk mencari kambing hitam atau sebagai
kontrak mati(Ambler S. W., 2001). Dalam
hal ini dokumentasi yang seperti ini sebaiknya
tidak perlu dibuat karena sifatnya
tidak bernilai karena cuma digunakan sebagai bumerang
saja.
Kelebihan Metode Agile
1. Meningakatkan rasio kepuasan pelanggan.
2. Bisa melakukan reviw pelanggan mengenai
software yang dibuat lebih awal.
3. Mengurangi resiko kegagalan implementasi
software dari non-teknis.
4. Besar kerugian baik secara material atau
imaterial tidak terlalu besar jika terjadi kegagalan.
Langkah-langkah
pengembangan perangkat lunak Agile adalah suatu filosofi yang
mendorong kepuasan pelanggan, penyerahan hasil perangkat lunak secara bertahap,
tim proyek yang kecil, metoda informal, dan proses pengembangan perangkat lunak
dengan perancangan minimal namun tetap efektif. Agile membantu
mempermudah para pengembang perangkat lunak untuk melakukan penyerahan produk
tepat waktu dari suatu tahap operasional perangkat lunak yaitu analisa dan
desain.
Metode Coad yang dikenal selama
pengerjaan proyek di Singapore tahun 1997 – 1999 kemudian
berevolusi menjadi Feature-Driven Development setelah mendapat ide dari apa
yang dikerjakan oleh Gerald Weinberg, Frederick Brooks, Timothy Lister, dan Tom
De Marco dengan pandangan dari
Jeff De Luca dan disusun oleh Stephen
Palmer. De Luca dan Coad kemudian mempublikasikan penjelasan FDD melalui
bukunya yang berjudul “Java Modeling in Color with UML”
di tahun 1999. Palmer dan Flesing
kemudian menyusun textbook yang lebih
definitif berjudul “A Practical Guide to Feature-Driven
Development” di tahun 2001.
Setelah itu banyak publikasi yang
dilakukan terkait FDD seperti Ambler yang menyatakan bahwa menurut survei ternyata FDD bekerja dengan
baik dalam prakteknya. Terdapat pula penelitian-penelitian akademis yang
berusaha membandingkan FDD dengan metode pengembangan Agile
yang lain seperti terhadap metode Scrum
dan Extreme Programming. Namun, secara explisit belum ditemukan penelitian atau
kajian yang secara langsung mencari kelemahan dari metode FDD ini.
Feature-driven
Development juga merupakan salah satu metodologi yang digunakan dalam pembuatan
software atau pun aplikasi. Dalam pembuatan suatu software dibutuhkan adanya
metodologi, metodologi Feature-driven Development sangat cocok digunakan untuk
pembuatan aplikasi web. Feature-driven Development berfokus pada fitur-fitur
yang dibutuhkan pengguna, Feature-driven Development juga lebih terstruktur
dibandingkan metodologi Extreme Programming dan memiki lebih sedikit
persyaratan ataupun ketentuan dibandingkan metodologi Rational Unified.
Metodologi FDD mencakup pengembangan perangkat lunak sebagai aktivitas manusia,
sesuai dengan keterbatasan manusia dan manfaat dari kekuatan manusia.
Fitur-driven Development (FDD) adalah bersifat iteratif dan incremental dalam proses pengembangan perangkat lunak karena itulah FDD dikatakan identik dengan agile modeling yang juga menggunakan praktek-praktek tradional dan menggunakan tahap planning, design dan dokumentasi. sebagai salah satu metodologi yang di kembangkan dari metodologi agile, FDD memadukan sejumlah industri yang diakui menggunakan praktik terbaik untuk menjadi satu kesatuan yang kohesif. Praktik-praktik ini semua berdasar dari sudut pandang fungsi client-valued atau berfokus pada nilai-nilai dan fitur yang di butuhkan client. Tujuan utamanya adalah untuk memberikan nilai nyata, mengerjakan software secara berulang-ulang pada waktu yang tepat.
Feature-driven Development terbagi menjadi lima proses yang akan dijelaskan secara detail pada bab-bab selanjutnya. Menurut teori Palmer dan Felsing, FDD mengklasifikasikan peran menjadi tiga kategori yaitu: main roles, supporting role, dan additional, peran itu termasuk project manager, kepala arsitek, development manajer, pemimpin tim, pemilik class, dan ahli Domain, semua memainkan peran penting dalam merumuskan fitur, memprioritaskan, dan merancang solusi bisnis.
III. FEATURE-DRIVEN DEVELOPMENT
Menurut Palmer (2001), FDD adalah
proses yang didesain dan dilaksanakan untuk menyajikan (deliver) hasil kerja secara berulang-ulang dalam waktu tertentu dan
dapat diukur. FDD adalah pendekatan yang mengacu pembuatan sistem menggunakan
metode yang mudah dimengerti dan mudah
diimplentasikan; teknik problem
solving; dan pelaporan yang mudah dimengerti dan dikontrol oleh stakeholders. Pemrogram diberikan
informasi yang cukup dan diberikan alat bantu yang baik untuk menyelesaikan
aplikasi yang diberikan. Team leader dan
manajer proyek diberikan informasi yang baik berdasar waktu mengenai tim dan
proyek yang berjalan untuk menghindari resiko yang mungkin terjadi. Pelaporan
menjadi lebih mudah, tidak membebani, periodik dan akurat.
Pengguna
(sponsor, end user, customer) secara langsung dapat melihat
bagian mereka sebagai hasil progress proyek
dan memberikan umpan balik semasih dalam tahap pengembangan. Dengan hal ini
diharapkan proyek dapat menghasilkan sebuah sistem yang benar-benar diinginkan
oleh klien.
•
Nilai-nilai Utama
Menurut Calberg, nilai-nilai utama yang
terkandung dalam FDD sehingga FDD mampu memberikan nilai lebih bagi proses
pengembangan software adalah:
Tangible results
rather than Process Pride
Proses dalam FDD lebih mengutamakan
memberikan nilai-nilai yang dapat diukur daripada sederet proses yang rumit dan
menghabiskan banyak tenaga dan sumber daya.
A system for building
system is necessary
Sangat penting untuk membentuk sebuah
sistem yang solid dan rapi untuk membuat sistem (software) bekerja sesuai
dengan yang diharapkan.·
Simple is better
Desain yang dibuat harus sesederhana
mungkin namun mampu menggali semua requirement
yang disyaratkan oleh klien.
· Process
steps should be obviously valuable to each team member
· Good
processes move to the background
•
6 Pemeran Utama
Menurut Palmer dan Flesing (2001),
Calberg, Abrahamsson dan Juhani (2002) setiap proses dalam FDD melalui
orangorang di dalamnya dan kelebihan serta kekurangan setiap orang sangat
berpengaruh pada keluaran proyek, terdapat 6 pemeran utama proses FDD yaitu:
1.
Project Manager adalah seseorang yang diberikan
tanggung jawab untuk memimpin tim proyek di dalam mengelola, merancang,
mengeksekusi dan menutup proyek sesuai dengan tujuan dari proyek yang telah
ditetapkan. Peran kunci dari project manager di dalam project management diantaranya
adalah menentukan tujuan proyek yang ingin dicapai, membangun requirement
proyek dan mengelola 3 batasan dari proyek yaitu scope, cost dan schedule
ditambah batasan kualitas secara efektif.
Di dalam pengerjaan proyek peran dari seorang project manager adalah mengetahui, mentranslasikan dan mengimplementasikan kebutuhan dari klien, untuk mencapai hal ini kemampuan untuk beradaptasi dan berkompromi dengan berbagai stakeholder yang ada serta melakukan negosiasi memiliki peranan penting dalam memastikan isu penting seperti cost, waktu dan kualitas dapat dicapai sehingga tercapai kepuasan customer. Project manager juga berperan sebagai pemimpin administratif terhadap budget, orang-per-orang dan laporan pencapaian, mengoperasikan sistem proyek serta melindungi pekerja dari gangguan luar.
Di dalam pengerjaan proyek peran dari seorang project manager adalah mengetahui, mentranslasikan dan mengimplementasikan kebutuhan dari klien, untuk mencapai hal ini kemampuan untuk beradaptasi dan berkompromi dengan berbagai stakeholder yang ada serta melakukan negosiasi memiliki peranan penting dalam memastikan isu penting seperti cost, waktu dan kualitas dapat dicapai sehingga tercapai kepuasan customer. Project manager juga berperan sebagai pemimpin administratif terhadap budget, orang-per-orang dan laporan pencapaian, mengoperasikan sistem proyek serta melindungi pekerja dari gangguan luar.
2.
Chief Architect berperan sebagai penanggung jawab
desain sistem secara keseluruhan, menjalankan workshop desain, dan mengarahkan proyek terkait kendala teknis.
3.
Development Manager berperan sebagai pemimpin pengembangan
dari hari-ke-hari, mengatasi konflik sumberdaya, biasanya juga dikombinasikan
dengan Project Manager dan Chief Architect.
4.
Chief Programmer adalah developer yang berpengalaman memimpin grup kecil dari sekumpulan developer individual.
5.
Class Owner adalah developer individual yang mendesain, mengkodekan dan menguji dan
mendokumentasikan fitur.
6.
Domain Expert yaitu user, klien, sponsor dll. Dikenal
baik oleh developer. Selain enam pemeran utama tersebut diatas juga terdapat
pemeran pembantu seperti domain manager,
release manager, language guru, bild engineer, toolsmith, dan system administrator. Selain itu juga
terkadang cukup membantu adalah tester,
deployer, dan technical writer.
•
5 Proses FDD
FDD terdiri dari 5 proses berurut
selama mendesain dan mebangun sistem. Proses FDD yang iteratif dalam mendesain
dan membangun (design and build)
mendukung metode Agile dengan adaptasi yang cepat terhadap perubahan requirement dan kebutuhan bisnis. [6]
Kelima proses tersebut adalah:
·Develop
an Overall Model
Pada tahap awal ini, client memberikan
gambaran secara garis besar mengenai program yang akan dibuat dan fitur –
fitur yang perlu dibuat. Ketika fase ini
dimulai, Domain Expert telah
menyadari scope, konteks dan requirement dari sistem yang akan
dibangun. Pembuatan dokumen requirement seperti
use case atau spesifikasi fungsional ada dalam fase ini. Namun FDD tidak secara
eksplisit menggali, mencari dan mengatur requirement
ini. Domain expert menyajikan apa yang disebut “walkthrough”
yang mana anggota tim dan Chief Architect diinformasikan dengan deskripsi level
tinggi dari sistem. Domain keseluruhan (overal
domain) lebih lajut dibagi kedalam area domain yang berbeda sedangkan walkthrough yang lebih detail
deberikanoleh anggota domain. Kemudian anggota tim developer bekerja dalam grup-grup kecil
untuk mengerjakan project model dari
domain area yang telah diterima.
Build a Feature List
Walkthrough,
object model dan
dokumentasi requirement yang ada
memberikan dasar yang kuat dalam membangun feature
list yang komprehensif untuk sistem yang dikerjakan. Dalam daftar (list), tim menyajikan masing-masing client valued functions ke dalam sistem.
Fungsi-fungsi tersebut dibagikan kepada masing-masing domain area dan masing-masing grup dari fungsi tersebut disebut
sebagai major feature set. Sebagai
tambahan, major feature sets kemudian
dibagi lagi menjadi feature sets. Ini
merepresentasikan aktifiti yang berbeda di setiap domain area. Feature list adalah
yang dilihat oleh user atau sponsor untuk validitas dan kelengkapan mereka. Feature dalam hal ini adalah
langkah-langkah aktifitas bisnis, berbasis customer
bukan teknologi. Bahasa yang digunakan mencakup bahasa yang dimengerti oleh
cutomer. Nomenklatur untuk
menunjukkannya terdiri atas:
<aksi>
<hasil> <obyek>
Misalnya:
<berikan> <nomor akun>
untuk <anggota baru>.
Fitur – fitur besar dibagi
kembali menjadi fitur – fitur yang lebih kecil. Fitur –
fitur ini menjelaskan lebih spesifik tentang sistem di suatu tempat. List fitur
ini kemudian dilihat oleh client untuk diperiksa validitas dan kelengkapannya.
Plan by Features
Plan
by feature mencakup perencanaan
pada level yang lebih tinggi, dimana feature
set diatur sedemikian rupa sesuai dengan prioritas dan hubungannya.
Prioritas ditentukan sesuai dengan kebutuhan customer yang disetujui oleh Chief Programmer. [6] Dalam fase ini,
Project Manager, Development Manager dan Chief Programmer merencanakan urutan
feature-feature yang akan dikerjakan dengan demikian class owenership telah dilengkapi. Merencanakan mulai pembuatan
fitur – fitur secara sequential menurut
prioritasnya dan ketergantungannya kepada fitur – fitur lain.
Gambar
3.2 Proses Design by Feature dan Build by Feature[7]
·
Design by Feature dan Build by Feature
Tahapan ini adalah pembuatan program
sesuai fitur – fitur yang telah disusun. Proses design by eature dan build by feature ada proses yang prosedur yang berulang selama sebuah
fitur ini dibuat. Setelah sebuah fitur telah selesai dibuat, maka fitur
tersebut akan dipindahkan kepada fitur utama dalam program untuk dijadikan satu
kesatuan. Sekelompok kecil fitur diambil dari eature set dan diperlukan feature
team untuk membangun fitur terpilih yang disebut sebagai class owner. Proses design by feature
dan build by feature bersifat iteratif selama fitur yang dipilih tersebut
diproduksi. Satu kali terasi memerlukan waktu beberapa hari sampai 2 minggu.
Proses iteratif ini mencakup beberapa tugas seperti inspeksi rancangan,
pengkodean, pengujian unit, integrasi dan inspeksi kode seperti yang dijelaskan
dalam gambar 3.2.
Project Tracking Methodology
Penelusuran proyek (Project Tracking) diperlukan untuk
mengetahui sejauh mana proyek telah berjalan dan mengevaluasi strategi dan
kemungkinan yang akan dijalankan terkait situasi itu. Menurut Pulla, untuk
mengukur kemajuan tiap feature dalam
proses FDD terdiri dari 6 milestone di
setiap featurenya menggunakan ukuran
prosentase, mencatat waktu feature selesai, diatur dari feature set dan feature area,
direpresentasikan secara grafis kepada manajemen di level yang lebih tinggi,
juga disusun tren dan grafik digunakan untuk menunjukkan kemajuan.
Karakteristik
Menurut Calberg, penggunaan FDD
sebaiknya digunakan jika; memekerjakan 10 – 250 developer yang
memiliki kemampuan teknis lebih dari rata-rata, dan jangan digunakan jika;
jumlah tim kurang dari 10, tim sedang belajar menguasai pekerjaan dan jika
kurang dukungan dari sistem. FDD lebih terhirarki daripada Extreme Programming,
memiliki class owenership yang terpisah-pisah, sukses jika dalam rentang jumlah
developer diatas rata-rata, klien tidak dilibatkan dalam ambar 3.1 Lima Proses
FDD 4 seluruh urutan proses (hanya dalam proses 1, 2 dan 4) dan menghargai
developer sebagai individu manusia yang menentukan sukses atau tidaknya
pengembangan.
IV. KELEMAHAN
Sangat sedikit rujukan yang bisa
dijadikan acuan untuk menunjukkan kelemahan metode FDD secara eksplisit, oleh
karena itu dibagian ini akan dijelaskan hasil penelusuran materi terkait
kelemahan FDD dengan dua cara studi yaitu studi analitik dan studi komparasi.
Studi analitik dilakukan
untuk mencoba mengungkap kelemahan FDD
dari dalam yaitu dengan menelusuri proses, karakteristik, pemeran dan lain
sebagainya sehingga dapat dirumuskan hasilnya. Studi komparatif dilakukan
dengan mencoba membandingkan karakteristik FDD jika dibandingkan dengan metode
Agile yang lain.
Studi Analitik
Dari sisi anlitik dapat dirumuskan
beberapa kelemahan
dari FDD, yaitu :
1.
Jumlah
pekerja dalam project tersebut. FDD memerlukan jumlah pekerja/personel yang
cukup banyak, yang dipecah-pecah ke
dalam masingmasing bagian. Jika dilihat dari segi biaya, semakin banyak pekerja,
maka semakin banyak pula biaya
yang dikeluarkan untuk membayarkan hak
mereka. Jelas bagi project skala kecil, hal ini tidak sesuai. Dimana project
dibiayai dengan dana yang terbatas. Hal lain yang bisa menimbulkan masalah
adalah dengan banyaknya jumlah pekerja, banyak juga kepentingan yang saling
bertentangan.
2.
Masalah
class ownership dari feature dalam FDD. Dalam FDD dikenal dengan class
ownership,
dimana tiap feature akan ditangani oleh
tiap Class owners. Masalah yang bisa terjadi adalah misal, apabila seorang
Class owners melakukan perubahan pada feature yang ditanganinya, anggap sebagai
A. Dan ternyata perubahan tersebut berpengaruh pada feature B, yang dikerjakan
oleh Class owners lainnya. Hal ini akan berdampak buruk apabila ternyata
feature B memerlukan feature A. Dan pada akhirnya pengerjaan feature B harus
menunggu kepastian
feature A terselesaikan. Jelas ini akan
berdampak pada mundurnya jadual kerja dari project.
3.
FDD
hanya membatasi penambahan feature kurangdari 10 % dari total waktu, biaya,
cakupan, dan kualitas apabila feature tersebut dikemukan setelah
proses Build Feature List.
bahwa
3 proses awal (Develop an Overall Model, Build a Feature List, dan Plan by
Feature) merupakan tahap-tahap yang krusial dan mendapat porsi waktu yang lebih
banyak. Tetapidalam prakteknya, banyak perubahan justru terjadi setelah
tahap-tahap tersebut di atas.
Perubahan
tersebut bisa bersifat teknis, seperti kendala dengan keterbatasan perangkat
lunak atau perangkat keras, maupun kendala non-teknis seperti pergantian
project sponsor yang dapat berakibat berubahnya kebijakan yang telah disepakati
sebelumnya.
V. KESIMPULAN
Metode FDD memiliki proses dengan
tingkat hirarkis yang tinggi sehingga setiap proses merupakan rangkaian tugas
yang baku dan klien hanya berperan dalam sebagian proses saja tidak dalam
keseluruhan proses. Fleksibilitas dan kemampuannya menghadapi perubahan masih
bisa dilakukan
walaupun melalui proses iteratif yang
panjang karena melampau beberapa prosedur sampai feature diberikan ke klien.
Pengubahan feature hanya dapat dilakukan hanya pada proses pertama dan secara
keseluruhan hanya mampu memberikan penambahan kurang dari 10%. Dibandingkan
dengan Extreme Programming, FDD terlalu banyak memberikan pemodelan daripada
langsung melakukan
pengkodean membuat hasil akan terlihat
dalam waktu yang lama, walaupun hal ini memberikan keuntungan untuk proyek
dengan skala dan kerumitan lebih besar. Walaupun proses dalam FDD tidak
mendukung sepenuhnya ciri-ciri dari metode Agile yang ideal, namun masih tetap
mampu memberikan keuntungan sebagai metode yang fokus dalam memberikan hasil
nyata bagi konsumen dan tanggap
akan perubahan yang mungkin terjadi
dalam masa pengembangan. Dengan kerumitan yang lebih tinggi, orangorang yang
lebih banyak dan waktu yang lebih lama membuat FDD cocok diaplikasikan untuk
proyek-proyek dengan skala yang lebih besar.