1.
Adaptive
Software Development
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.
a. Collaboration : orang-orang yang bermotivasi tinggi
bekerja sama, saling melengkapi,
rela membantu, kerja keras, terampil di bidangnya, dan mengkomunikasikan masalah untuk
menyelesikannya secara efektif.
b. Learning : tim developer sering merasa mengetahui
semua hal tentang proyek, padahal
tidak demikian. Karena itu proses ini membuat mereka belajar lebih tentang proyek melalui
tiga cara :
- Fokus grup, klien dan pengguna
memberi masukan terhadap perangkat
lunak.
- Formal Technique Reviews, tim ASD
lengkap melakukan review.
- Postmortems,
tim ASD melakukan instrospeksi pada kinerja dan proses.
2.
Dynamic
System Development Method
Pada
Dynamic System Development Method menyajikan kerangka kerja (framework ) untuk
membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan
prototyping yang incremental dalam lingkungan yang terkondisikan. Metode ini
akan membangun software dengan cepat ( 80% dari proyek diserahkan dalam 20%
dari waktu total untuk menyerahkan proyek secara utuh ).
Dynamic
System Development Method dapat dikombinasikan dengan Extreme Programming menghasilkan kombinasi model proses yang
mengikuti Dynamic System Development dan praktek yang sejalan dengan Extremen
Programming.
Dynamic
System Development Method memiliki beberapa aktifitas, seperti :
a. Feasibility
study : Siapkan
requirement dan batasan lalu uji apakah sesuai
dengan proses DSDM.
dengan proses DSDM.
b. Business
Study : Susun kebutuhan fungsional dan informasi, tentukan
arsitektur aplikasi dan identifikasi kebutuhan pemeliharaan
untuk aplikasi.
arsitektur aplikasi dan identifikasi kebutuhan pemeliharaan
untuk aplikasi.
c. Functional
Model Iteration : Hasilkan incremental prototype yang
memperlihatkan fungsi software ke klien
untuk mendapatkan kebutuhan lebih jelas dan
konfirmasi.
memperlihatkan fungsi software ke klien
untuk mendapatkan kebutuhan lebih jelas dan
konfirmasi.
d. Design
and Build Iteration : Cek ulang prototype yang dibangun
untuk
memastikan bahwa prototype dibangun
dengan cara yang memungkinkan fungsi
tersebut benar-benar bekerja.
memastikan bahwa prototype dibangun
dengan cara yang memungkinkan fungsi
tersebut benar-benar bekerja.
e. Implementation : Menempatkan
software pada lingkungan benar sekalipun
belum lengkap atau masih ada perubahan.
belum lengkap atau masih ada perubahan.
3.
Scrum
Methodology
Pertama
kali diperkenalkan oleh Jeff Sutherland pada awal tahun 1990-an dan
dikembangkan selanjutnya oleh Schware dan Beedle. Pada dasarnya, scrum
merupakan salah satu komponen dari metodologi pengembangan agile mengenai
pertemuan harian untuk membahas kemajuan dan XP adalah menekankan metodolgi
yang berbeda, sepasang ujian pemrogaman dan pembangunan.
Scrum
menguraikan proses untuk mengidentifikasi dan katalogisasi yang perlu
dilakukan, memprioritaskan bekerja dan berkomunikasi dengan pelanggan atau
wakil pelanggan dan pelaksanaan yang bekerja menggunakan rilis iterative serta
memiliki tujuan utama untuk mendapatkan perkiraan berapa lama pembangunan
dilaksanakan. XP lebih lanjut tentang pengembang membantu menyelesaikan
pekerjaan secepat dan maintainably mungkin.
Scrub memiliki prinsip yaitu :
-
Ukuran tim yang kecil akan melancarkan
komunikasi, mengurangi biaya dan memberdayakan satu sama lain.
-
Proses dapat beradaptasi terhadap
perubahan teknis dan bisnis.
-
Proses menghasilkan beberapa software
increment.
-
Pembangunan dan orang yang membangun
dibagi dalam tim yang kecil.
-
Dokumentasi dan pengujian terus menerus dilakukan
setelah software dibangun.
-
Proses scrum mampu menyatakan bahwa
produk selesai kapan pun diperlukan.
Scrum memiliki aktifitas yang
meliputi :
-
Backlog
Daftar kebutuhan yang
jadi prioritas klien dan daftar yang dibuat dapat bertambah.
-
Sprints
Merupakan unit
pekerjaan yang diperlukan untuk memenuhi kebutuhan yang ditetapkan dalam
backlog sesuai dengan waktu yang ditetapkan dalam time-box ( biasanya 30 hari
). Selama proses ini berlangsung backlog tidak ada penambahan.
-
Scrum
Meetings
Pertemuan yang mungkin
dilakukan setiap hari untuk evaluasi apa yang dikerjakan, hambatan yang ada dan
target penyelesaian untuk bahan meeting selanjutnya.
-
Demo
Penyerahan software
increment ke klien, didemontrasikan dan di evaluasi oleh klien.
4.
Crystal
Crystal
diperkenalkan oleh Cockburn dan Highsmith.
Karakteristik
Crystal :
a. Secara
actual sebuah model proses keluarga memungkinkan maneuver berdasarkan
karakteristik permasalahan.
b. Menyarankan
penggunaan workshop refleksi untuk review kebiasaan kerja tim.
c. Selalu
murah dan cepat berkomunikasi secara langsung.
d. Proyek
berkembang sesuai ukuran tim, menjadi lebih atau luas dan metodologi akan
menjadi lebih tinggi.
5.
Feature
Driven Development
Merupakan
model proses praktis untuk keahlian proses software engineering, feature
merupakan sebuah fungsi yang berharga dimana dapat dilaksanakan.
Keuntungan
dari metode ini :
a. User
dapat menggambarkan dengan mudah bentuk system.
b. Dapat
diorganisasikan atau diatur ke dalam kelompok bisnis yang hirarki.
c. Desain
dan kode lebih mudah diperiksa secara efektif.
d. Perancangan
proyek, penjadwalan dan jalur diarahkan oleh feature.
6.
Agile
Modeling
Suatu
metodologi yang praktis untuk dokumentasi dan pemodelan system software. Agile
adalah kumpulan nilai-nilai, prinsip dan praktek-praktek untuk memodelkan
software agar dapat diaplikasikan pada software development proyek secara
efektif.
Prinsip
Agile Modeling :
a. Membuat
model dengan tujuan
b. Menggunakan
multiple models ( tiap model mewakili aspek yang berbeda dari model lain ).
c. Travel
light ( simpan model-model yang bersifat jangka panjang saja ).
d. Isi
lebih penting dari penampilan ( modeling menyajikan informasi kepada audiens
yang tepat ).
e. Memahami
model dan alat yang digunakan untuk membuat software.
f. Adaptasi
secara lokal.
7.
Rational
Unified Process
Suatu
kerangka kerja proses pengembangan perangkat lunak iteratif yang dibuat oleh Rational Software, suatu divisi dari IBM
sejak 2003. Model ini membagi suatu sistem aplikasi menjadi beberapa komponen
sistem dan memungkinkan para developer aplikasi untuk menerapkan metode
iterative ( analisis, desain, implementasi dan pengujian ) pada tiap komponen.
Dengan menggunakan model ini, RUP membagi tahapan pembangunan perangkat
lunaknya ke dalam 4 fase sebagai berikut :
a. Inception : Tahap
untuk mengidentifikasi sistem yang akan
dikembangkan. Aktivitas yang dilakukan pada tahap ini an-
dikembangkan. Aktivitas yang dilakukan pada tahap ini an-
tara lain mencakup
analisis sistem eksisting, perumusan sistem target, penentuan arsitektur global
target, identifikasi kebutuhan, perumusan persyaratan kebutuhan pengujian,
pemodelan diagram UML dan pembuatan dokumentasi.
b. Elaboration : Tahap
untuk melakukan desain secara lengkap berdasarkan
hasil analisis di tahap inception. Aktifitas yang dilakukan
pada tahap ini antara lain mencakup pembuatan desain
arsitektur, desain komponen sistem, desain format data,
desain database, desain antarmuka/ tampilan, desain peta
aliran tampilan, penentuan desain pattern yang digunakan,
pemodelan diagram UML dan pembuatan dokumentasi.
hasil analisis di tahap inception. Aktifitas yang dilakukan
pada tahap ini antara lain mencakup pembuatan desain
arsitektur, desain komponen sistem, desain format data,
desain database, desain antarmuka/ tampilan, desain peta
aliran tampilan, penentuan desain pattern yang digunakan,
pemodelan diagram UML dan pembuatan dokumentasi.
c.
Construction : Tahap untuk
mengimplementasikan hasil desain dan
melakukan pengujian hasil implementasi. Pada tahap awal
construction, ada baiknya dilakukan pemeriksaan ulang hasil
analisis dan desain, terutama desain pada domain perilaku
(diagram sequence) dan domain struktural (diagram class,
component, deployment). Apabila desain yang dibuat telah
sesuai dengan analisis sistem, maka implementasi dengan
bahasa pemrogramanan tertentu dapat dilakukan. Aktivitas
yang dilakukan pada tahap ini antara lain mencakup
pengujian hasil analisis dan desain (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.
melakukan pengujian hasil implementasi. Pada tahap awal
construction, ada baiknya dilakukan pemeriksaan ulang hasil
analisis dan desain, terutama desain pada domain perilaku
(diagram sequence) dan domain struktural (diagram class,
component, deployment). Apabila desain yang dibuat telah
sesuai dengan analisis sistem, maka implementasi dengan
bahasa pemrogramanan tertentu dapat dilakukan. Aktivitas
yang dilakukan pada tahap ini antara lain mencakup
pengujian hasil analisis dan desain (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.
d.
Transition : Tahap
untuk menyerahkan sistem aplikasi ke konsumen
(roll-out), yang umumnya mencakup pelaksanaan pelatihan
kepada pengguna dan testing beta aplikasi terhadap
ekspetasi pengguna.
(roll-out), yang umumnya mencakup pelaksanaan pelatihan
kepada pengguna dan testing beta aplikasi terhadap
ekspetasi pengguna.
8.
Lean
Software Development
Suatu proses engineering
yang digunakan untuk mengembangkan dan menghasilkan suatu software berkualitas
tinggi yang telah terjamin kehandalannya sehingga tidak terjadi kegagalan dalam
penggunaan software tersebut. Lean software development ini berpedoman pada
pemahaman lapangan dan kesesuaian pelaksanaan prinsip lean disepanjang
seluruh proses pengembangan software. Slogan yang dipakai yaitu berpikir besar,
bertindak kecil, gagal cepat, belajar cepat. Lean dapat
mereduksi waktu pengembangan software karena waktu pengembangan software dapat
direduksi dengan cara mengurangi error pengerjaan software yaitu menggunakan
tujuh prinsip Lean, yaitu: Eliminate Waste, Amplifying Learning, Decide As Late
As Possible, Deliver As Fast As Possible, Empower The Team, Built Integrity,
See The Whole.
Prinsip Lean Software
Development :
a.
Eliminate
waste (Mengeliminasi Ketidak Effisienan)
Dalam software
development, waste adalah sesuatu yang tidak mempengaruhi kualitas
koding, mengurangi waktu dan usaha dalam menghasilkan koding, atau sesuatu yang
tidak memberikan nilai bisnis kepada customer. Dengan kata lain, aktifitas
apapun itu yang tidak “ pay for itself” dalam mengurangi usaha dimanapun
didalam system. Tools: Seeing Waste, Value Stream Mapping.
b. Amplify learning (Mengamplifikasi
pembelajaran)
Untuk para programmer, mengembangkan
sebuah sistem yang memberikan nilai bisnis, mereka harus belajar banyak hal.
Diantaranya berupa teknikal, seperti kelebihan dan kekurangan pada beberapa
pendekatan yang akan dilakukan pada remote communication dalam .NET (contoh:
remoting, COM+,web services,dll).
Dan lainnya adalah kebutuhan terkait,
sepertyi memahami apa yang pengguna bisnis benar-benar butuhkan dan apa yang
pengembang pikirkan untuk kebutuhan pengguna.
Tools: Feedback, Iterations, Synchronization,
Set-based Development.
c.
Decide as late as possible (Menentukan
keterlambatan sebagai hal yang mungkin)
Gagasan itu adalah menunggu sampai apa
yang disebut dengan istilah “the last responsible moment” untuk membuat sebuah
keputusan. Dimana, jika tim tidak membuat keputusan, keputusan akan dibuat
untuk mereka. Manfaatnya adalah untuk menghindari atau menunda biaya perubahan,
yang tidak jelas, yang dapat terjadi jika belum pernah membatasi pilihan.
Tools: Options Thinking, The Last Responsible
Moment, Making Decisions.
d.
Deliver
as fast as possible (Mengantarkan Secara cepat sebagai hal yang mungkin)
Merupakan hal dasar dari development
berulang. Kebutuhan berubah sebagai sebuah persentase dari
kebutuhan original yang meningkatkan non linear sebagai jumlah waktu yang
meningkat. Secara umum proyek dengan waktu 9-12 bulan memiliki kira-kira
25% perubahan kebutuhan. Dimana tiap bulannya perubahan kebutuhan dalam
rata-rata hanya 1-2persen. Dan hal ini lebih mudah di setujui.
Tools: Pull Systems, Queuing Theory, Cost of Delay.
e.
Empower
the team (Memberdayakan team)
Menguatkan tim. Kualitas sebuah tim
perangkat lunak(faktor manusia) merupakan unsur yang paling penting dalam
keberhasil dalam menghasilkan sebuah software.
Tools: Self Determination, Motivation, Leadership,
Expertise.
f.
Build
integrity in (Membangun integritas)
Membangun integritas. Integritas
terbagi antara integritas perceived dan
integritas konseptual. Integritas perceived adalah
pengalaman pelanggan perangkat lunak dalam menggunakan software yang dibuat.
Integritas konseptual adalah ukuran seberapa baiknya arsitektur dan komponen
sistem yang mengalir bersama-sama mengenai integritas perceived. Pengujian, satuan dan integrasi,
merupakan bagian utama dari integritas.
Tools: Perceived Integrity, Conceptual Integrity,
Refactoring, Testing.
g.
See
the whole (Melihat secara kesatuan/keseluruhan.)
Pemikiran sistem sudah ada untuk
sementara waktu, tapi respon khas untuk memecahkan masalah adalah untuk
memprosesnya menjadi bagian-bagian penyusunnya dan mengoptimalkan setiap bagian
individu. Ini adalah suboptimisasi, yang mengarah ke “tragedy of the commons.”
Tools: Measurements, Contracts.
Kelebihan :
- Mengeliminasi Ketidak
Effisienan membantu mempercepat proses, menghemat sumberdaya dan efisiensi
- Membantu memberikan produk
lebih awal
- Kekuatan tim membantu dalam
membuat keputusan antara tim dan memotivasi tim
- Proyek sangat bergantung pada
tim yang saling bekerjasama dan berkomitmen pada proyek
- Customer harus mengetahui apa
yang mereka butuhkan dan tidak bisa mengubah setelah mereka membuat sebuah
keputusan
- Kita membutuhkan sebuah tim
yang kemampuannya saling melengkapi
Sumber :