Lompat ke isi

Pengembangan tangkas: Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
Tidak ada ringkasan suntingan
Tidak ada ringkasan suntingan
Baris 13: Baris 13:


==Agile Manifesto==
==Agile Manifesto==
[[File:Martin Fowler (2008).jpg|thumb|right|[[Martin Fowler]]

Agile Development Method terdefinisi dalam empat nilai, biasa di sebut Agile Alliance’s Manifesto, diantaranya :
Agile Development Method terdefinisi dalam empat nilai, biasa di sebut Agile Alliance’s Manifesto, diantaranya :
Interaksi dan personel lebih penting dari pada proses dan alat
Interaksi dan personel lebih penting dari pada proses dan alat

Revisi per 10 November 2013 13.02

Agile Development Methods adalah sekelompok metodologi pengembangan aplikasi 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 Method merupakan salah satu dari Metodologi pengembangan perangkat lunak yang digunakan dalam pengembangan aplikasi. Agile memiliki pengertian bersifat cepat, ringan, bebas bergerak, dan waspada. Sehingga saat proses pembuatan aplikasi dengan menggunakan Agile Development Method diperlukan inovasi dan responsibiliti yang baik antara tim pengembang, pelanggan dan pengguna agar kualitas dan kelincahan dari tim seimbang.

Generic diagram of an agile methodology for software development

Pendahuluan

Saat bekerja dalam tim untuk mengerjakan suatu proyek sangatlah penting menentukan Metodologi pengembangan perangkat lunak dan Proses pengembangan perangkat lunak yang akan digunakan. Metodologi pengembangan perangkat lunak sendiri adalah sebuah metodologi yang digunakan untuk membuat struktur, rencana, dan kontrol pengerjaan suatu proyek, sedangkan Proses pengembangan perangkat lunak adalah model-model dan metodologi yang digunakan untuk mengembangkan suatu perangkat lunak. Ada beberapa model SDLC diantaranya : waterfall,fountain, spiral, rapid, prototyping, incremental, build & fix, dan synchronize & stabilize. Terdapat enam langkah yang digunakan dalam SDLC, yaitu :

  1. Planning  : Dilangkah ini pengembang dan klien membuat rencana tentang kebutuhan dari aplikasi yang akan dibuat.
  2. Implementation  : Bagian dari proses dimana programmer melakukan pengkodean aplikasi.
  3. Application Testing : Disini aplikasi yang telah dibuat di tes oleh Quality Control agar bug yang ditemukan bisa segera diperbaiki dan kualitas aplikasi terjaga.
  4. Documenting  : Setelah dilakukan testing langkah selanjutnya yaitu proses dokumentasi aplikasi untuk mempermudah proses maintenanance kedepannya.
  5. Deployment  : Proses kelima yaitu Quality Assurance yang dilakukan oleh orang di luar tim untuk menguji kualitas sistem. Setelah sistem memenuhi syarat maka aplikasi siap dideploy.
  6. Maintenance: Langkah terakhir yaitu maintenance. Tidak ada aplikasi yang 100% bebas dari bug, oleh karena itu sangatlah penting agar aplikasi dimaintenance secara berkala.

Agile Manifesto

[[File:Martin Fowler (2008).jpg|thumb|right|Martin Fowler Agile Development Method terdefinisi dalam empat nilai, biasa di sebut Agile Alliance’s Manifesto, diantaranya : Interaksi dan personel lebih penting dari pada proses dan alat Aplikasi yang berfungsi lebih penting daripada dokumentasi yang lengkap Kolaborasi dengan klien lebih penting dari pada negosiasi kontrak Respon terhadap perubahan lebih penting daripada mengikuti rencana.

Pengertian dari Agile Alliance's Manifesto dijelaskan di bawah ini:

  • Interaksi dan personel lebih penting dari pada proses dan alat : Di dalam Agile anggota tim, antara orang-orang teknis dan businessmen, antara developer dan managernya sangatlah penting, karena tanpa adanya interkasi yang baik maka proses development tidak akan berjalan sesuai rencana.
  • Aplikasi yang berfungsi lebih penting daripada dokumentasi yang lengkap : Saat melakukan proses demonstrasi kepada pelanggan,aplikasi yang berfungsi dengan baik akan lebih berguna daripada dokumentasi yang lengkap.
  • Kolaborasi dengan klien lebih penting dari pada negosiasi kontrak : Salah satu ciri dari Agile adalah klien menjadi bagian dari tim pengembang Aplikasi. Kolaborasi yang baik dengan klien saat proses pembuatan aplikasi sangatlah penting ketika menggunakan Agile. Karena fungsi-fungsi dari aplikasi yang dikembangkan harus terus menerus dibicarakan dan diimprov disesuaikan dengan keinginan klien.
  • Respon terhadap perubahan lebih penting daripada mengikuti rencana : Agile Development Method berfokus terhadap kecepatan respon tim ketika pelanggan menginginkan perubahan saat proses pembuatan aplikasi.

Agar suatu tim berhasil dalam menerapkan Agile Development Method, maka tim tersebut harus mengikuti dua belas prinsip yang ditetapkan oleh Agile Alliance, yaitu :

  1. Prioritas utama kami 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.

  1. Menghasilkan perangkat lunak yang bekerja secara rutin, dari jangka waktu beberapa minggu sampai beberapa bulan, dengan preferensi kepada jangka waktu yang lebih pendek.
  2. Rekan bisnis dan pengembang perangkat lunak harus bekerja-sama tiap hari sepanjang proyek.
  3. Kembangkan proyek di sekitar individual yang termotivasi. Berikan mereka lingkungan dan dukungan yang mereka butuhkan, dan percayai mereka untuk menyelesaikan pekerjaan dengan baik.
  4. Metode yang paling efisien dan efektif untuk menyampaikan informasi dari dan dalam tim pengembangan perangkat lunak adalah dengan komunikasi secara langsung.
  5. Perangkat lunak yang bekerja adalah ukuran utama kemajuan.
  6. Proses Agile menggalakkan pengembangan berkelanjutan. Sponsor-sponsor, pengembang-pengembang, dan pengguna-penggunaakan dapat mempertahankan kecepatan tetap secara berkelanjutan.
  7. Perhatian yang berkesinambungan terhadap keunggulan teknis dan rancangan yang baik meningkatkan Agility.
  8. Kesederhanaan--seni memaksimalkan jumlah pekerjaan yang belum dilakukan--adalah hal yang amat penting.
  9. Arsitektur, kebutuhan, dan rancangan perangkat lunak terbaik muncul dari tim yang yang dapat mengorganisir diri sendiri.
  10. Secara berkala, tim pengembang berefleksi tentang bagaimana untuk menjadi lebih efektif, kemudian menyesuaikan dan menyelaraskan kebiasaan bekerja mereka.

Dua belas prinsip tersebut menjadi suatu dasar bagi tim agar sukses menerakan Agile Development Method. Dengan prinsip-prinsip tersebut Agile berusaha untuk menyiasati tiga masalah yang biasanya dihadapi saat proses pembuatan aplikasi, yaitu:

  • Kebutuhan aplikasi sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering berubah seiring 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 Model Agile

Beberapa model dari Agile Development Methods, yaitu :

  • Acceptance Test Driven Development (ATDD)
  • Agile Modeling
  • Agile Unified Process (AUP)
  • Continuous integration (CI)
  • Crystal Clear
  • Crystal Methods
  • Dynamic Systems Development Method (DSDM)
  • Extreme Programming (XP)
  • Feature Driven Development (FDD)
  • Graphical System Design (GSD)
  • Kanban
  • Lean software development
  • Scrum
  • Scrum-ban
  • Story-driven modeling
  • Test-driven development (TDD)
  • Velocity tracking
  • Software Development Rhythms [19][20]

Tujuan Agile

Secara garis besar tujuan dirumuskannya Agile Development Method, yaitu :

  1. high-value & working App system : Diharapkan dengan memakai Agile Development Methods dapat dihasilkan aplikasi yang mempunyai nilai jual yang tinggi, biaya pembuatan bisa di tekan dan aplikasi bisa berjalan dengan baik.
  2. Iterative, incremental, evolutionary : Agile adalah metode pengembangan aplikasi yang iteratif, selalu mengalami perubahan, dan evolusioner. Tim harus bekerja dalam waktu yang singkat(biasanya 1-3 minggu) dan juga selalu menambah fungsionalitas dari aplikasi 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 aplikasi disesuaikan dengan kebutuhan pengguna, tim bisa dengan cepat merespon kebutuhan yang diinginkan pengguna sehingga waktu dan biaya pembuatan aplikasi bisa dikontrol.
  4. High-quality production : Walaupun biaya pembuatan aplikasi bisa ditekan dan proses pembuatan bisa dipercepat , tetapi kualitas dari aplikasi yang dibuat harus tetap dijaga. Dengan melakukan tes setiap fungsionalitas aplikasi 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 merubah sistem aplikasi, perubahan rencana rilis produk hingga perubahan biaya produksi. Pertemuan dengan klien untuk melakukan tes aplikasi juga sering dilakukan sehingga fungsionalitas aplikasi mudah diubah dan akhirnya kegagalan aplikasipun 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 aplikasi, 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 memanajemen dirinya sendiri, sedangkan manajer tim hanya bertugas mengkolaborasikan developer aplikasi dengan klien. Sehingga terciptalah tim yang solid.

Bagaimana Agile Bekerja

Topik selanjutnya yaitu tentang cara kerja Agile Development Methods. Disini akan dijelaskan bagaimana Agile Development Method (model scrum) digunakan dalam manajemen proyek.

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 sih hanya nomor urut saja. Hal

ini untuk menghindari kehilangan jejak story kalau kita mengganti namanya.

  • Nama – Nama story yang deskriptif tapi pendek saja. Dibuat

cukup jelas, sehingga tim dan product owner memahami kira-kira apa sih yang kita omongin, dan juga cukup jelas untuk membedakannya dengan story yang lain. Normalnya 2-10 kata.

  • Kepentingan – Derajat kepentingan yang diberikan oleh product

owner terhadap story ini. Misalnya 10, atau 150. Intinya sih semakin tinggi semakin penting.

  • Perkiraan awal – Perkiraan awal tim tentang berapa banyak

kerja yang diperlukan untuk mengimplementasikan story ini dibandingkan dengan story yang lain. Unit perkiraan ini dinamakan story point dan biasanya kira-kira sama dengan nilai man days (satu hari kerja oleh satu orang) o Untuk menghitung perkiraan ini, tanyakan kepada tim “kalau misalnya kalian mengerjakan story ini bersama

  • Demo – deskripsi umum bagaimana cara story ini didemokan

pada waktu sprint demo. Intinya sih gimana cara mengetes story ini. “Lakukan ini, klik itu, lalu ini akan muncul”.

Komposisi tim :

  • Owner / Klien : Bersama dengan developer sebagai bagian terpenting dalam proyek, tugas dari owner menentukan fungsi dari aplikasi yang akan di buat, melakukan testing dnan feedback.
  • Manajer / Scrum Master : Bertugas mengkolaborasikan developer dengan klien, membuat dan mengevaluasi target pengerjaan aplikasi.
  • Sistem Analis : Membuat arsitektur sistem dari aplikasi yang akan dibuat.
  • Developer : Developer merupakan titik vital dalam tim, tanpa developer aplikasi tidak akan bisa dibuat.

Sprint (Rapat perencanaan pembuatan aplikasi 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.

Kelebihan dan Kekurangan

Kelebihan :

  • 82% Menambah produktivitas tim.
  • 77% Menambah kualitas aplikasi.
  • 78% Menambah kepuasan klien.
  • 37% Menghemat biaya.

Kekurangan

  • Agile tidak akan berjalan dengan baik jika komitmen tim kurang.
  • Tidak cocok dalam skala tim yang besar (>20 orang).
  • Perkiraan waktu release dan harga aplikasi sulit ditentukan.


Referensi