1. Metodologi Extreme Programming

Pengertian
Extreme Programming yang selanjutnya disingkat dengan XP merupakan salah satu dari sekian banyaknya metodologi dalam rekayasa perangkat lunak dan juga merupakan bagian dari metodologi pengembangan perangkat lunak agile. Secara umum Extreme Programming (XP) dapat dijabarkan sebagai sebuah pendekatan pengembangan perangkat lunak yang mencoba meningkatkan efisiensi dan fleksibilitas dari sebuah proyek pengembangan perangkat lunak dengan mengkombinasikan berbagai ide simpel/sederhana tanpa mengurangi kualitas software yang akan dibagun. XP dikembangkan oleh Beck, Cunningham, dan Jeffries dan ini merupakan lightweight disciplinepengembangan perangkat lunak berdasarkan empat core value.

Kelebihan dan Kekurangan XP
Kelebihan :
  • Meningkatkan kepuasan kepada klien
  • Pembangunan system dibuat lebih cepat
  • Menjalin komunikasi yang baik dengan client.
  • Meningkatkan komunikasi dan sifat saling menghargai antar developer.
Kekurangan :
  • User story 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.


  1. Adaptive Software Development (ASD)

Adaptive Software Development merupakan pengembangan perangkat lunak proses yang tumbuh dari kerja pengembangan aplikasi cepat oleh Jim Highsmith dan Sam Bayer. ASD mewujudkan prinsip bahwa adaptasi yang berkesinambungan dari proses kerja di tangan adalah urusan keadaan normal. Selama iterasi pengetahuan dikumpulkan dengan membuat kesalahan-kesalahan kecil yang didasarkan pada asumsi yang salah dan memperbaiki kesalahan-kesalahan, sehingga mengarah ke pengalaman yang lebih besar dan akhirnya penguasaan dalam domain masalah.

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 yaitu collaboration dan learning. 

Collaboration adalah orang-orang yang bermotivasi tinggi bekerja sama, saling melengkapi, rela membantu, kerja keras, terampil di bidangnya, dan komunikasikan masalah untuk menyelesikan masalah secara efektif. Learning adalah 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:

Kelebihan Adaptive software development (ASD) :
1.    Fokus grup, klien dan pengguna memberi masukan terhadap perangkat lunak.
2.    Formal Technique Reviews, tim ASD lengkap melakukan review.
3.    Postmortems, tim ASD melakukan instrospeksi pada kinerja dan proses.

  1. Dynamic Systems Development Method (DSDM)

DSDM memusatkan pada proyek sistem informasi yang dicirikan oleh jadwal dan anggaran yang ketat. DSDM berupaya mengatasi penyebab-penyebab kegagalan proyek, di antaranya melebihi anggaran, terlambat dari jadwal, kurangnya keterlibatan pengguna, dan lemahnya komitmen dari para pimpinan. Kerangka kerja DSDM menyediakan dasar ideal bagi proses pengembangan dan penerapan sistem informasi, meliputi orang (misal organisasi, staf, keahlian), teknologi pendukung (misal teknologi informasi, otomatisasi kantor, komunikasi) dan proses yang menyatukan keduanya (dalam rangkaian strategi bisnis).

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%.

Terdapat 9 prinsip mendasar dari DSDM, yang menjadikan kekuatan dari DSDM, yaitu:
  1. Keterlibatan pengguna adalah kunci utama dalam menjalankan proyek secara efisien dan efektif. Pengguna dan pengembang saling bekerja sama sehingga keputusan dapat diambil secara tepat dan akurat.
  2. Tim pengembang proyek diberi wewenang untuk membuat keputusan yang penting untuk kemajuan proyek, tanpa menunggu persetujuan dari tingkat di atasnya.
  3. Memusatkan pada seringnya produk dihasilkan, dengan anggapan menghasilkan sesuatu ‘cukup baik’ lebih awal adalah lebih baik daripada menghasilkan keseluruhan ‘sempurna’ pada akhirnya. Dengan seringnya penyampaian produk pada tahap-tahap awal proyek, produk tersebut dapat diujicoba dan ditinjau di mana hasilnya merupakan pertimbangan untuk maju ke putaran atau tahap berikutnya.
  4. Kesesuaian dari tujuan bisnis merupakan kriteria utama dalam penerimaan hasil. Menghasilkan suatu sistem yang memenuhi semua kemungkinan dari kebutuhan bisnis adalah kurang penting dibanding memusatkan pada fungsi-fungsi yang kritis.
  5. Pengembangan secara berulang dan bertambah adalah penting, dilandasi masukan dari pengguna untuk mencapai solusi bisnis yang efektif.
  6. Seluruh perubahan yang terjadi dalam pengembangan dapat dikembalikan (reversible).
  7. Setiap persyaratan dan kebutuhan harus sudah ditentukan sebelum proyek dimulai.
  8. Pengujian dilakukan pada keseluruhan siklus hidup proyek. Dalam hal ini ujicoba bukan kegiatan terpisah dalam pengembangan. Tinjauan dari pengembang dan pengguna adalah penting untuk memastikan proyek berjalan baik dari sisi bisnis maupun teknis.
  9. Kerjasama yang efektif dan efisien dari setiap pihak yang berkepentingan adalah penting.

  1. SCRUM

 Diperkenalkan oleh Jeff Sutherland tahun awal tahun 1990an. Pengembangan berikutnya dilakukan oleh Schwaber dan Beedle. Scrum memiliki prinsip:
  1. ukuran tim yang kecil melancarkan komunikasi, mengurangi biaya, dan
           memberdayakan satu sama lain
  1. proses dapat beradaptasi terhadap perubahan teknis dan bisnis
  2. proses menghasilkan beberapa software increment
  3. pembangunan dan orang yang membangun dibagi dalam tim yang kecil
  4. dokumentasi dan pengujian terus menerus dilakukan setelah software dibangun
  5. proses scrum mampu menyatakan bahwa produk selesai kapanpun diperlukan.

Scrum  memiliki beberapa aktifitas seperti Backlog, Sprints, Scrum Meetings dan Demo.  Aktifitas Backlog adalah daftar kebutuhan yang jadi prioritas klien, daftar dapat bertambah. Aktifitas Sprints yaitu unit pekerjaan yang diperlukan untuk memenuhi kebutuhan yang ditetapkan dalam backlog sesuai dengan waktu yang ditetapkan dalam time-box (biasanya 30hari). Selama proses ini berlangsung backlog tidak ada penambahan.  Aktifitas Scrum Meeting yaitu pertemuan 15 menit perhari untuk evaluasi apa yang dikerjakan, hambatan yang ada, dan target penyelesaian untuk bahan meeting selanjutnya.  Aktifitas Demo adalah penyerahan software increment ke klien didemonstrasikan dan dievaluasi oleh klien.

5.    Agile Development 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 pengembangan perangkat lunak. Agile memiliki pengertian bersifat cepat, ringan, bebas bergerak, dan waspada.[1] 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.



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 mengubah 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.

Kelebihan dari Agile Modeling :

    1. 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.
    2. 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.
    3. 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.
    4. 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. 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:

Kekurangan dari Agile Modeling:

  1. Kebutuhan perangkat lunak sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering berubah seiring berjalannya proyek.
  2. Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan.
  3. Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.
  4. Agile tidak akan berjalan dengan baik jika komitmen tim kurang.
  5. Tidak cocok dalam skala tim yang besar (>20 orang).
  6. Perkiraan waktu release dan harga perangkat lunak sulit ditentukan.