Software development model Methodologys. what the difference of them?

selamat membaca postingan saya lagi gan...postingan kali ini tetntang metode pengembangan software. what?..apa itu..gk paham...langsung saja cekidot. 
"pengembangan perangkat lunak" bisa dipakai untuk menyebut aktivitas pemrograman komputer, yaitu proses menulis dan mengelola sumber kode, namun dalam artian luas istilah ini mencakup semua hal yang terlibat antara penciptaan perangkat lunak yang diinginkan melalui pewujudan akhir perangkat lunak, idealnya dalam proses yang terencana dan terstruktur.
nah..ada beberapa macam tuh model pengembangan software ..langsung saja tanpa basa basi..kita bahas satu persatu..
1. Agile Software Development Methodology
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 yang digunakan dalam pengembangan perangkat lunak. Agile memiliki pengertian bersifat cepat, ringan, bebas bergerak, dan waspada.
 Prinsip agile alliance:
  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.
Bagaimana Agile alliance bekerja?
komposisi team:
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 Agile Alliance:
  • 82% Menambah produktivitas tim.
  • 77% Menambah kualitas perangkat lunak.
  • 78% Menambah kepuasan klien.
  • 37% Menghemat biaya.
Kekurangannya:
  • 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.
 
 2. Rapid Application Development

metodologi pengembangan perangkat lunak (SDLC) yang menggunakan pengabungan antara prototye model dengan iterative model. Prototipe adalah model kerja yang secara fungsional setara dengan komponen produk.Dalam model RAD (Rapid Application Development), modul fungsional dikembangkan secara paralel sebagai prototip dan terintegrasi untuk membuat produk yang lengkap untuk pengiriman produk yang lebih cepat. Dikarenakan tidak ada rincian planning yang detail, maka memudahkan untuk melakukan perubahan pada saat development berjalan.

Fase dan Tahapan Pengembangan Aplikasi
Menurut Kendall (2010), terdapat tiga fase dalam RAD yang melibatkan penganalisis dan pengguna dalam tahap penilaian, perancangan, dan penerapan. Adapun ketiga fase tersebut adalah requirements planning (perencanaan syarat-syarat), RAD design workshop (workshop desain RAD), dan implementation (implementasi). Sesuai dengan metodologi RAD menurut Kendall (2010), berikut ini adalah tahap-tahap pengembangan aplikasi dari tiap-tiap fase pengembangan aplikasi.
1)      Requirements Planning (Perencanaan Syarat-Syarat)
Dalam fase ini, pengguna dan penganalisis bertemu untuk mengidentifikasikan tujuan-tujuan aplikasi atau sistem serta untuk megidentifikasikan syarat-syarat informasi yang ditimbulkan dari tujuan-tujuan tersebut. Orientasi dalam fase ini adalah menyelesaikan masalah-masalah perusahaan. Meskipun teknologi informasi dan sistem bisa mengarahkan sebagian dari sistem yang diajukan, fokusnya akan selalu tetap pada upaya pencapaian tujuan-tujuan perusahaan (Kendall, 2010).
2)      RAD Design Workshop (Workshop Desain RAD)
Fase ini adalah fase untuk merancang dan memperbaiki yang bisa digambarkan sebagai workshop. Penganalisis dan dan pemrogram dapat bekerja membangun dan menunjukkan representasi visual desain dan pola kerja kepada pengguna. Workshop desain ini dapat dilakukan selama beberapa hari tergantung dari ukuran aplikasi yang akan dikembangkan. Selama workshop desain RAD, pengguna merespon prototipe yang ada dan penganalisis memperbaiki modul-modul yang dirancang berdasarkan respon pengguna. Apabila sorang pengembangnya merupakan pengembang atau pengguna yang berpengalaman, Kendall menilai bahwa usaha kreatif ini dapat mendorong pengembangan sampai pada tingkat terakselerasi (Kendall, 2010).
3)      Implementation (Implementasi)
Pada fase implementasi ini, penganalisis bekerja dengan para pengguna secara intens selama workshop dan merancang aspek-aspek bisnis dan nonteknis perusahaan. Segera setelah aspek-aspek ini disetujui dan sistem-sistem dibangun dan disaring, sistem-sistem baru atau bagian dari sistem diujicoba dan kemudian diperkenalkan kepada organisasi (Kendall, 2010).
Kelebihan dan Kekurangan RAD
Metode pengembangan sistem RAD relatif lebih sesuai dengan rencana pengembangan aplikasi yang tidak memiliki ruang lingkup yang besar dan akan dikembangkan oleh tim yang kecil. Namun, RAD pun memiliki kelebihan dan kekurangannya sebagai sebuah metodoligi pengembangan aplikasi. Berikut ini adalah kelebihan metodologi RAD menurut Marakas (2006):
  1. Penghematan waktu dalam keseluruhan fase projek dapat dicapai.
  2. RAD mengurangi seluruh kebutuhan yang berkaitan dengan biaya projek dan sumberdaya manusia.
  3. RAD sangat membantu pengembangan aplikasi yang berfokus pada waktu penyelesaian projek.
  4. Perubahan desain sistem dapat lebih berpengaruh dengan cepat dibandingkan dengan pendekatan SDLC tradisional.
  5. Sudut pandang user disajikan dalam sistem akhir baik melalui fungsi-fungsi sistem atau antarmuka pengguna.
  6. RAD menciptakan rasa kepemilikan yang kuat di antara seluruh pemangku kebijakan projek.
Sedangkan, mengacu pada pendapat Kendall (2010), maka dapat diketahui bahwa kekurangan penerapan metode RAD adalah sebagai berikut:
  1. Dengan metode RAD, penganalisis berusaha mepercepat projek dengan terburu-buru.
  2. Kelemahan yang berkaitan dengan waktu dan perhatian terhadap detail. Aplikasi dapat diselesaikan secara lebih cepat, tetapi tidak mampu mengarahkan penekanan terhadap permasalahan-permasalahan perusahaan yang seharusnya diarahkan.
  3. RAD menyulitkan programmer yang tidak berpengalaman menggunakan prangkat ini di mana programmer dan analyst dituntut untuk menguasai kemampuan-kemampuan baru sementara pada saat yang sama mereka harus bekerja mengembangkan sistem.
3. Dynamic System Development Model Methodology
Dynamic System Development Method (DSDM) adalah suatu kerangka dalam pengembangan suatu project, terutama digunakan untuk metode pengembangan perangkat lunak.
DSDM merupakan iteratif dan incremental pendekatan yang mencakup prinsip-prinsip pembangunan Agile, termasuk keterlibatan pengguna atau pelanggan secara terus-menerus, intinya DSDM suatu metode yang mendekati Incremental dan Agile Alliance.
Beberapa karakteristik DSDM yaitu sebagai berikut :
  1. Menyajikan kerangka kerja (Framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototyping yang incremental dalam lingkungan yang terkondisikan.
  2. Membangun software dengan cepat yaitu 80% dari proyek diserahkan dalam 20% dari waktu total untuk menyerahkan proyek secara utuh.
  3. Aktifitas Feasibility Study yaitu dengan requirement, lalu uji apakah sesuai gunakan proses DSDM
  4. Aktifitas Business Study yaitu susunam kebutuhan fungsional dan informasi, menentukan arsitektur aplikasi dan identifikasi kebutuhan pemeliharaan untuk aplikasi
  5. Aktifitas Functional model iteration yaitu menghasilkan incremental prototype yang perlihatkan fungsi software ke client untuk dapatkan kebutuhan lebih jelas dan konfirmasi.
  6. Aktifitas Design and Build Iteration yaitu melakukan cek ulang prototype yang di bangun untuk memastikan bahwa prototype yang di bangun dengan cara tersebut memungkinkan semua fungsi benar-benar bekerja
  7. Aktifitas Implementation yaitu menempatkan software pada lingkungan sebenarnya sekalipun belum lengkap atau masih ada perubahan.
  8. DSDM dapat dikombinasikan dengan XP yang menghasilkan kombinasi model proses mengikuti metode DSDM dan praktek yang sejalan dengan XP.
Telah di jelaskan beberapa karakteristik DSDM, pada tujuannya untuk menciptakan suatu rangkaian RPL yang cepat sama hal nya dengan XP model.

Tahapan Dynamic Software Development Method (DSDM)
1. Feasibility study (Studi Kelayakan)
2. Business study – prioritized requirements (Studi Bisnis - Persyaratan Diprioritaskan)
3. Functional model iteration (Fungsional Model Iterasi)
4. Risk analysis (Analisis Resiko)
5. Time-box plan (Rencana Waktu)
6.  Design and build iteration (Desain dan Membangun Iterasi)
7. Implementation (Implementasi)

Kelebihan Dynamic Software Development Method (DSDM)

1.     Menyajikan kerangka kerja (framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototyping yang incremental dalam lingkungan yang terkondisikan;
2. Membangun software dengan cepat;
3. DSDM dapat dikombinasikan dengan XP menghasilkan kombinasi model proses yang mengikuti DSDM dan praktek yang sejalan dengan XP

E. Kelemahan Dynamic Software Development Method (DSDM)

1. Setiap iterasi bergantung pada prototype sebelumya;
2. Menentukan scope dari suatu prototype proyek tidak pernah selesai;
3. Dokumentasi sering kali tidak lengkap fokus pada pembuatan prototype;
4. Isu-isu mengenai system backup and recovery, system performance dan system security kurang/tidak diperhatikan dan sering terlupakan

F. Waktu Penggunaan

Dynamic Sofware Development Method (DSDM) digunakan untuk proyek yang membutuhkan waktu singkat dan tidak memerlukan kinerja tinggi, ini karena DSDM berdasar pada model RAD.
4. Extreme Programming Methodology 

model pengembangan perangkat lunak yang mencoba menyederhanakan berbagai tahapan dalam proses pengembangan tersebut sehingga menjadi lebih adaptif dan fleksibel. Pendekatan tidak hanya berfokus pada coding tetapi meliputi seluruh area pengembangan perangkat lunak.
fase-fase:

  1. Planning Membentuk user stories, menentukan cost. Semua story segera diimplemetasikan (dalam beberapa minggu) Story dengan value tertinggi akan dipindahkan dari jadwal dan dimplementasikan pertama. Story dengan resiko paling tinggi akan diimplemetasikan lebih dulu. Setelah project pertama direlease dan didelivery, XP team memperhitungkan kecepatan project. 
  2. Design menggunakan CRC card, untuk mengenali dan mengatur object oriented class yang sesuai dengan software increment. 
  3. Coding. Sebelum membuat code, lebih baik membuat unit test tiap story untuk dimasukkan dalam software increment. XP menyarankan agar dua orang bekerja bersama pada satu komputer workstation untuk membuat code dari satu story (pair programming), untuk menyediakan real time problem solving dan jaminan real time quality. Setelah pair programming selesai, code diintegrasikan dengan kerja laiinnya (continuous integration).
  4. Testing. Unit test yang telah dibuat harus diimplementasikan menggunakan suatu framework dan diatur ke dalam universal testing suite, integrasi dan validasi sistem dapat dilakukan setiap hari. Customer test (acceptance test) dilakukan oleh customer dan fokus pada keseluruhan fitur dan fungsional sistem. Acceptance test diperoleh dari customer stories yang telah diimplemetasikan sebagai bagian dari software release.
Kelebihan Extreme Programming, yaitu:
  • Meningkatkan kepuasan kepada klien
  • Pembangunan system dibuat lebih cepat
  • Menjalin komunikasi yang baik dengan client.
  • Meningkatkan komunikasi dan sifat saling menghargai antar developer.
Kelemahan Extreme Programming, yaitu:
  • Cerita-cerita yang menunjukkan requirements dari pelanggan kemungkinan besar tidak lengkap sehingga Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
  • Tidak bisa membuat kode yang detail di awal (prinsip simplicity dan juga anjuran untuk melakukan apa yang diperlukan hari itu juga).
  • XP tidak memiliki dokumentasi formal yang dibuat selama pengembangan. Satu-satunya dokumentasi adalah dokumentasi awal yang dilakukan oleh user.
5. Scrum Development Methodology
Scrum merupakan framework untuk manajemen pengembangan software dengan karakteristik cekatan dan bersifat iteratif dan incremental. Scrum mendefinisikan dirinya fleksible, strategi pengembangan yang menyeluruh di mana seluruh team bekerja sebagai satu unit dalam mencapai sebuah gol yang sama.
Dalam menjalankan kerjasama antara anggota team, scrum menekankan lokasi fisik yang sama atau sarana online yang akrab antara semua member, dan juga pertemuan muka dengan muka setiap hari antara semua anggota team.
Prinsip kunci dari scrum adalah memahami bahwa dalam project yang tengah berlangsung, klien mungkin mengubah apa yang menjadi kebutuhan dan keinginannya. Perubahan sulit diadaptasi oleh framework pengembangan aplikasi yang bersifat tradisional.  Scrum menerima perubahan ini dan memaksimalkan seluruh anggota team untuk menyesuaikan perubahan mendadak ini.
Scrum mengadopsi permainan Rugby yang begitu mudah menyesuaikan diri semua anggota team setelah ada sedikit pelanggaran. Kemudian menyesuaikan diri inilah yang mengimpirasi scrum.

 PRINSIP METODOLOGI SCRUM
· Ukuran tim yang kecil melancarkan komunikasi, mengurangi biaya, dan memberdayakan satu sama lainProses 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 kapanpun diperlukan
KELEBIHAN DAN KEKURANAN METODOLOGI SCRUM

> Kelebihan Metodologi Scrum antara lain:
· Keperluan berubah dengan cepat
· Tim berukuran kecil sehingga melancarkan komunikasi, mengurangi biaya dan memberdayakan satu sama lain
· Pekerjaan terbagi-bagi sehingga dapat diselesaikan dengan cepat
· Dokumentasi dan pengujian terus menerus dilakukan setelah software dibangun
· Proses Scrum mampu menyatakan bahwa produk selesai kapanpun diperlukan
> Kekurangan Metodologi Scrum antara lain :
· Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima. 
nah...sekian dulu postingan saya mengenai artikel ini...saran dan kritik yang membangun selalu saya terima dari agan2............tang yu
Newest
Previous
Next Post »