Jumat, 20 Maret 2015

Agile Process Model

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.
b.      Business Study     :           Susun kebutuhan fungsional dan informasi, tentukan
                                          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.
d.      Design and Build Iteration           :           Cek ulang prototype yang dibangun untuk
                                                                  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.
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-
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.
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.
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.
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 :