Senin, 18 Januari 2016

Agile Software Development


Pengantar Agile Software Development

Agile Software development adalah salah satu metodelogi dalam pengembangan sebuah perangkat lunak (software). Kata Agile berarti bersifat cepat, ringan, bebas bergerak, waspada. Kata ini digunakan sebagai kata yang menggambarkan konsep model proses yang berbeda dari konsep model-model proses yang sudah ada. Konsep Agile software development dicetuskan oleh Kent Beck dan 16 rekannya dengan menyatakan bahwa Agile Software Development adalah cara membangun software dengan melakukannya dan membantu orang lain membangunnya sekaligus.

Interaksi Personal > Proses dan alat
Software berfungsi > Kelengkapan dokumentasi
Kolaborasi Client > Negosiasi kontrak
Tanggap Perubahan(fleksibel) > sesuai rencana
Langkah 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.
Prinsip Agile Alliance

Prinsip menurut  Agile Alliance ada 12 prinsip ini dan bagi mereka yang ingin berhasil dalam penerapan Agile Software Development harus mengetahui prinsip ini. Kedua belas prinsip tersebut menjadi suatu dasar bagi model-model proses yang punya sifat agile.

  1. Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus.
  2. Menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
  3. Penyerahan hasil/software dalam hitungan waktu dua minggi sampai dua bulan.
  4. Bagian bisnis dan pembangun kerja sama tiap hari selama proyek berlangsung.
  5. Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukung dan yang dipercaya untuk dapat menyelesaikan proyek.
  6. Komunikasi dengan berhadapan langsung adalah komunikasi yang efektis dan efisien.
  7. Software yang berfungsi adalah ukuran utama dari kemajuan proyek.
  8. Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan.
  9. Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile.
  10. Kesederhanaan penting.
  11. Arsitek. Kebutuhan dan desain yang bagus muncul dari tim yang mengatur dirinya sendiri.
  12. Secara periodic tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.

Dari 12 prinsip tersebut agile process model menyiasati 3 asumsi penting tentang proyek software pada umumnya :
  • Kebutuhann software sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering 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.
Model Proses dari Agile Software Development
Beberapa jenis proses peomodelan yang termasuk kedalam metode Agile Software Development antara lain :
  1. Extreme Programming (XP)
  2. Adaptif Software Development (ASD)
  3. Dynamic System Development Method (DSDM)
  4. Scrum
  5. Feature Driven Development (FDD)
  6. Agile Modeling (AM).
  7. Acceptance Test Driven Development (ATDD)
  8. Agile Unified Process (AUP)
  9. Continuous integration (CI)
  10. Crystal Clear
  11. Crystal Methods
  12. Graphical System Design (GSD)
  13. Kanban
  14. Lean software development
  15. Rational Unified Process (RUP)
  16. Scrum-ban
  17. Story-driven modeling
  18. Velocity tracking
  19. Software Development Rhythms
Tujuan Agile Development Metodology
Agile Development Metodology memiliki tujuan 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, evolutionaryagile 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 developerperangkat lunak dengan klien. Sehingga terciptalah tim yang solid.

Cara Kerja Agile Metodologi

Cara kerja Agile Metodologi terbagi menjadi tiga komponen utama yaitu :

Komposisi Tim

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. Tugas : mengkolaborasikan developer dengan klien, membuat dan mengevaluasi target pengerjaan perangkat lunak.
  • Sistem Analis. Tugas : membuat arsitektur sistem dari perangkat lunak yang akan dibuat.
  • Developer, merupakan titik vital dalam tim, tanpa developer perangkat lunak tidak akan bisa dibuat. Tugas : membangun perangkat lunak.

Story 

      Daftar kebutuhan atau fitur yang nanti akan dibuat. Story berisi apa yang klien kehendaki, dan ditulis dalam bahasa yang dimengerti klien.
Story terdiri dari beberapa aspek yaitu :
  • 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 

          Rapat perencanaan pembuatan perangkat lunak dilakukan 2-8 minggu sekali. Saat             melaksanakan sprint harus memperhatikan aspek berikut  :
  •  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.

Kelebihan dan Kekurangan Agile Software Development
Kelebihan Agile :
·         82% Menambah produktivitas tim.
·         77% Menambah kualitas perangkat lunak.
·         78% Menambah kepuasan klien.
·         37% Menghemat biaya.
Kekurangan Agile  :
·         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.

Referensi :

[1] https://dwijaantara.wordpress.com/2010/10/25/agile-method/

[2] https://ilmukuilmumu.wordpress.com/2009/12/25/agile-sofware-development/

[3] https://id.wikipedia.org/wiki/Agile_Development_Methods

[4] https://en.wikipedia.org/wiki/Agile_Unified_Process



Tidak ada komentar:

Posting Komentar