INTRODUCTION
Agile development erat kaitannya dengan metodologi dan proses pengembangan perangkat lunak dimana mengutamakan keterlibatan pengguna. Kolaborasi yang baik dengan klien saat proses pembuatan perangkat lunak sangatlah penting ketika menggunakan agile development.Klien menjadi bagian dari tim pengembangan perangkat lunakkarena pada dasarnya fungsi-fungsi dari perangkat lunak yang dikembangkan harus terus menerus dibicaraka, diimprovisasi dan disesuaikan dengan keinginan klien.Agile memiliki pengertian bersifat tangkas, cepat, ringan, bebas bergerak, dalam pengembangan perangkat lunak dengan menggunakan metode agile development dibutuhkan ketangkasan, inovasi, fleksibilitas dan tanggung jawab oleh tim pengembang dan klien dengan tujuan tim dapat bekerja seimbang, perangkat lunak yang dihasilkan memiliki kualitas yang baik, serta sesuai dengan keinginan klien. Praktisi pengembang perangkat lunak pada umumnyasering menggunakan agile development dalam pengembangan perangkat lunaknya.
Keyword : Agile development, Metodologi pengembangan software, Software Engineering
PENDAHULUAN
1.1 Latarbelakang
Sejarah Perkembangan Komputer hingga saat ini erat kaitannya dengan kemampuan dan kemajuan manusia yang selalu menggunakan akal pikiran dan logika dalam kehidupannya sejak zaman dahulu. Pengolahan data dan informasitelah dilakukan manusia sejak dahulu serta berpikir untuk menciptakan inovasiserta mengembangkanaplikasi dan pengolahan data yang lebih baik.
Kaitannya dengan pengembangan/perkembangan perangkat lunak saat ini terdapat berbagai metode yang digunakan baik dilakukan secara individu maupun team work. Terdapat hubungan erat antara kualitas, biaya, dan waktu dalam pengembangan perangkat lunak. Secara garis besar terdapat enam langkah yang digunakan dalam metodologi pengembangan perangkat lunak diantaranya perencanaan, implementasi, testing, dokumentasi, deployment, dan maintenance.
Agile Development Methods adalah kumpulan metodologi pengembangan perangkat lunak yang didasarkan pada prinsip-prinsip yang sama atau pengembangan sistem jangka pendek dimana memerlukan adaptasi yang cepat dari pengembang terhadap perubahan dalam bentuk apapun, dalam penggunaannya agile development memerlukan inovasi dan tanggungjawab yang baik antara tim pengembang dan klien agar kualitas dari perangkat lunak yang dihasilkan bagus dan seimbang.
Lebih lanjut tentang pengertian dan hal-hal yang berhubungan dengan agile development akan di bahas pada bab selanjutnya
1.2 Tujuan
Tujuan dari makalah ini adalah untuk memberikan penjelasan tentang pengertian dan hal-hal yang berkaiyan dengan agile development sebagai metodologi pengembang perangkat lunak
PEMBAHASAN
2.1 Pengertian Agile Development
Agile development erat kaitannya dengan metodologi dan proses pengembangan perangkat lunak, metodologi pengembangan perangkat lunak sendiri adalah sebuah metodologi yang digunakan untuk membuat struktur, rencana, dan kontrol pengerjaan suatu proyeksedangkan Proses pengembangan perangkat lunak adalah model-model dan metodologi yang digunakan untuk mengembangkan suatu perangkat lunak.
Agility for a software development organization, means the ability to adapt and react quick and effectively and appropriately to changes in its environment and to demands imposed by this environment (Abrahamsson, P., Salo, O., Ronkainen, J., & Warsta, J., 2002).Agile Development Methods secara singkat dapat diartikan sebagai 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.
Agility dalam pengembangan perangkat lunak diartikan sebagai kemampuan untuk beradaptasi dan bereaksi secara cepat dan efektif terhadap perubahan serta meminimalisir dampak terhadap perangkat lunak yang sedang dibangun. Kolaborasi antara tim pengembang dengan klien menjadi hal yang penting, klien dianggap sebagai anggota tim. Fleksibilitas di tawarkan kepada klien kaitannya dengan kesadaran dan pengetahuan pelanggan tentang apa yang dia inginkan.
Agile development juga dapat didefinisakan dalam empat nilai atau sring disebut sebagai agile manifesto, diantaranya :
1. Interaksi dan personal, dibutuhkan interaksi yang baik antara anggota atau personal pengembang karena tanpa adanya hal tersebut pengembangan perangkat lunak tidak akan berjalan dengan baik
2. Perangkat lunak yang berjalan, hal ini berfungsi pada saat melakukan meeting (demonstrasi) kepada klien. Perangkat lunak yang masih dalam proses akan lebih berguna dari sekedar dokumentasi
3. Kolaborasi dengan klien, ini merupakan ciri dari agile development dimana mengutamakan keterlibatan dan kolaborasi dari klien
4. Respon terhadap perubahan, sesuai dengan namanya agile development berfokus terhadap kecepatan respon tim ketika klien menginginkan perubahan saat proses pembuatan perangkat lunak
Gambar 1 : Diagram Agile Development Method
2.2 Model Proses atau metode-metodepada Agile Development
Terdapat 20 model proses atau metode pada agile development, dalam makalah ini hanya akan dibahas beberapa metode yang diulas dalam jurnal internasional, diantaranya :
a. Extreme Programming
Ektreme programming merupakan metode pada agile development yang sering digunakan. XP (Extreme progreamming) didasarkan pada :
1. Communication
2. Simplicity
3. Feedback
4. Courage
dalam extreme programin pelanggan akan memberikan kebutuhan mereka dalam bentuk cerita yang pada dasarnya bersifat non-teknis. Cerita dari pelanggan selanjutnya akan diubah menjadi tugas, dalam pembangunan perangkat lunak akan berlangsung iterasi kecil dimana setiap iterasi sekelompok tugas akan dibahas. Pelanggan akan terlibat untuk memperoleh feed backyang cepat. Pengujian akan di lakukan dalam bentuk unit test dan accetance test.
b. Adaptive Software Development (ASD)
Teknik atau metode ini biasanya digunakan 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 adalah collaboration and learning.
Collaboration : bermotivasi tinggi untuk bekerja sama, saling melengkapi, rela membantu, kerja keras, terampil di bidangnya, dan mengkomunikasikan masalah untuk menyelesikan masalah secara efektif.
Learning: 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:
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.
c. Scrum
Scrum merupakan salah satu development method yang paling populer. Kegiatan pada metode ini diantaranya :
1. Sprint Planning
2. Sprint Review
3. Scrum Meeting
Scrum Master memfasilitasi harianPertemuan Sprint (Rapat perencanaan pembuatan perangkat lunak dilakukan 2 - 4 minggu sekali) dengan pemilik produk dan tim, di mana di setiapindividu akan menjelaskan status tugas mereka saat itu dan apa yang akan mereka lakukan hari berikutnya. SebuahSprint review biasanya membentang sekitar dua sampai empat minggu, dimana setiap tim harus memiliki perangkat lunak bekerja.
d. Dynamic Systems Development Method (DSDM)
Metode DSDM merupakan perpanjangan dari Rapid ApplicationDevelopment. DSDM menekankan pada keterlibatan terus pelanggan. DSDM adalah metode yang lebih cocok untuk proyek-proyek yang memiliki keterbatasan waktu dan anggaran.
Siklus hidup DSDM Project memiliki 4 tahap
1. Studi
2. Fungsional Model Iterasi
3. Desain dan Build
4. Pelaksanaan
DSDM memberikan pendekatan berulang tambahan dan jugamemberikan beberapa teknik inti yang disebut time boxing,Prototyping, Pengujian, Workshop dll. Tujuan utama dari metode DSDM adalah untuk menjagaProyek serta mengendalikan waktu dan anggaran.
e. Crystal Methods
Crystal Method dimulai sebelum agile Manifesto dan merupakan salah satu pendiri metodologi tangkas. Metode ini memiliki 3 Prioritas dan 3 Properti, diantaranya :
1. prioritas: Keselamatan, Efisiensi, Habitability
2. properti: Frequent Delivery, Peningkatan Reflektif, Komunikasi tertutup
crystal method adalah keluarga dari Adaptive, Ultra-lightdan Stretch-to-fit metodologi dan lebih difokuskan pada Orang daripada proses atau arsitektur
f. Feature Driven Development (FDD)
Feature driven development merupakan sebuah model pengembangan perangkat lunak yang berdasarkan pada fitur yang akan dibuat. Keuntungan dari metode feature driven development :
1. User dapat menggambarkan dengan mudah bentuk sistem yang akan dibuat.
2. Dapat diorganisasikan atau diatur ke dalam kelompok bisnis sesuai hirarki yang ada.
3. Desain dan kode lebih mudah diperiksa secara efektif.
4. Perancangan proyek, biaya pembuatan dan jadwal rilis ditentukan oleh fiturnya
2.3 Prinsip Agile Development
Agile development menetapkan dua belas prinsip untuk memandu/mengontrol metode-metode pada agile development yang berbeda-beda. Agar suatu tim berhasil dalam menerapkan agile development methods, maka tim tersebut harus mengikuti dua belas prinsip tersebut. Keduabelas prinsip itu diantaranya:
1. Prioritas utama proses agile adalah memberikan kepuasan terhadap pelanggan dengan penyampaian hasil perangkat lunak yang bernilai secara cepat dan berkesinambungan
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.
Prinsip-prinsip tersebut juga merupakan bentuk usaha untuk menyiasati tiga masalah yang biasanya dihadapi saat proses pembuatan perangkat lunak, diantaranya :
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.
2.4 Tujuan Agile Development
a. High-value & working App system, dengan menggunakan agile development methods akan menghasilkan perangkat lunak yang mempunyai nilai jual yang tinggi, biaya pembuatan bisa di tekan dan perangkat lunak bisa berjalan dengan baik.
b. 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.
c. Iterative, incremental, evolutionary, agile adalah metode pengembangan perangkat lunak yang iteratif, selalu mengalami perubahan, dan evolusioner.
d. 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.
e. 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.
f. Flexible & risk management
g. 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.
2.5 Keuntungan dan Permasalahan Dalam Agile Development
a. Keuntungan menggunakan metode agile development
1. Meningkatkan komunikasi dan koordinasi antar anggota tim
2. Pengembang membuat demo yang dapat rilis setiap beberapa minggubukannya setiap beberapa bulan atau tahun (quick release).
3. Lebih dinamis serta mendukung real-time tracking
4. Reasonable Process
5. Kepuasan klien dan kualitas perangkat lunak terjamin
6. Fleksibilitas desain
b. Kekurangan atau permasalahan pada agile development
1. Agile tidak akan berjalan dengan baik jika komitmen tim kurang.
2. Tidak cocok dalam skala tim yang besar.
3. Perkiraan waktu release dan harga perangkat lunak sulit ditentukan.
4. Kekhawatiran saat berkoordinasi dengan tim lain
PENUTUP
3.1 Simpulan
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.
Kolaborasi antara tim pengembang dengan klien menjadi hal yang penting dalam agile development, klien dianggap sebagai anggota tim. Fleksibilitas di tawarkan kepada klien kaitannya dengan kesadaran dan pengetahuan pelanggan tentang apa yang dia inginkan.
Terdapat duabelas prinsip pada agile development yang menjadi suatu dasar bagi tim agar sukses menerapkan agile development methods dalam pengembangan atau pembuatan perangkat lunak. Komunikasi dan koordinasi antar tim dapat ditingkatkan dengan menggunakan metode ini, selain itu kepuasan klien dan kualitas perangkat lunak yang dihasilkan dapat terjaga.
Terdapat dua puluh metode yang termasuk dalam agile metodologi. Metode-metode tersebut sering digunakan oleh praktisi pengembang perangkat lunak dalam pembuatan atau dalam pengembangan.
Setiap model dan metodologi memiliki kemampuan (keuntungan) dan kekurangannya sendiri-sendiri. Menggunakan metode pengembangan perangkat lunak merupakan hal yang penting serta di pengaruhi oleh beberapa faktor akan tetapi tidak terbatas pada budaya dan organisasi.
DAFTAR PUSTAKA
Subhas misra, Vinod kumar and Uma kumar, Kamel fantazy, Mahmud akh-
ter.2001.Agile software development practices: evolution, principles, and
criticisms
H. Frank Cervone. (2011). Understanding agile project management methods
using Scrum. OCLCSystems & Services: International digital library
perspectives, Vol. 27 Iss 1 pp. 18-22
Kiran Jammalamadaka, V Rama Krishna.2013. Agile Software Development And
Challenges. IJRET : International Journal of Research in Engineering and
Technology
Subhas C. Misra dan Virender Singh.2013.Conceptualizing open agile software
development life cycle (OASDLC) model. IJQRM : International Journal of
Quality & Reliability Management.
Gaurav Kumar, Pradeep Kumar Bhatia.2012.Impact of Agile Methodology on
Software Development Process. IJTEE : International Journal of Computer
Technology and Electronics Engineering. Volume 2, issue 4
Abrahamsson, P., Salo, O., Ronkainen, J., & Warsta, J. (2002). Agile Software
Development Methods: Review and Analysis. VTTPublications