AGILE SOFTWARE
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.
Dalam Agile Software Development interaksi dan personel lebih penting dari pada proses dan alat, software yang berfungsi lebih penting daripada dokumentasi yang lengkap, kolaborasi dengan klient lebih penting daripada negosiasi kontrak, dan sikap tanggap terhadap perubahan lebih penting daripada mengikuti rencana. Namun demikian, sama seperti model proses yang lain, agile software development memiliki kelebihan dan tidak cocok untuk semua jenis proyek, produk, orang dan situasi. Agile Software Development memungkinkan model proses yang toleransi terhadap perubahan kebutuhan sehingga perubahan dapat cepat ditanggapi. Namun di sisi lain menyebabkan produktiitas menurun.
Salah satu cirri dari Agile Software Development adalah tim yang tanggap terhadap perubahan. Mengapa? Karena perubahan adalah hal yang utama dalam membangun software: perubahan kebutuhan software, perubahan anggota tim, perubahan teknologi dll. Selain itu Agile Software Development juga melihat pentingnya komunikasi antara anggota tim, antara orang-orang teknis dan businessmen, anatara developer dan managernya. Cirri lain adalah klien menjadi bagian dari tim pembangun software. Ciri-ciri ini didukung oleh 12 prinsip yang diterapkan oleh Agile Alliance. Menurut Agile Alliance, 12 prinsip ini adalah bagi mereka yang ingin berhasil dalam penerapan Agile Software Development :
- Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus
- Menerima perubahan kebutuhan, sekalipun diakhir pengembangan
- Penyerahan hasil/software dalam hitungan waktu dua minggi sampai dua bulan
- Bagian bisnis dan pembangun kerja sama tiap hari selama proyek berlangsung
- Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukung dan yang dipercaya untuk dapat menyelesaikan proyek.
- Komunikasi dengan berhadapan langsung adalah komunikasi yang efektis dan efisien
- Software yang berfungsi adalah ukuran utama dari kemajuan proyek
- Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan.
- Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile
- Kesederhanaan penting
- Arsitek. Kebutuhan dan desain yang bagus muncul dari tim yang mengatur dirinya sendiri
- Secara periodic tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.
Kedua belas prinsip tersebut menjadi suatu dasar bagi model-model proses yang punya sifat agile. Dengan prinsip-prinsip tersebut agile process model berusaha untuk 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.
Beberapa jenis proses peomodelan yang termasuk kedalam metode Agile Software Development : Extreme Programming (XP), Adaptif Software Development (ASD), Dynamic System Development Method (DSDM), Scrum, Crystal, Feature Driven Development (FDD), Agile Modeling (AM).
SCRUM
memiliki prinsip:
- Ukuran tim yang kecil melancarkan komunikasi, mengurangi biaya, dan memberdayakan satu sama lain
- Proses dapat beradaptasi terhadap perubahan 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
Aktifitas Scrum : Backlog, Sprint, Scrum Meetings, Demo
Aktifitas Backlog : Backlog adalah daftar kebutuhan yang jadi priorias klien. Daftar dapat bertambah.
Aktifitas Sprints : unit pekerjaan yang diperlukan untuk memenuhi kebutuhan yang diterapkan dalam backlog sesuai dengan waktu yang ditetapkan dalam time-box (biasanya 30hari). Selama proses ini berlangsung backlog tidak ada penambahan.
Aktifitas Scrum Meeting : Pertemuan 15 menit perhari untuk evaluasi apa yang dikerjakan, hambatan yang ada, dan target penyelesaian untuk bahan meeting selanjutnya.
Aktifitas Demo : penyerahan software increment ke klien didemonstrasikan dan dievaluasi oleh klien.
Dengan menerapkan metode agile ini diharapkan pembangunan atau pengembangan perangkat lunak bisa terkontrol dengan baik dan selesai tepat pada waktu yang telah ditetapkan.
Model proses agile
Beberapa model dari agile development methods yaitu :
- Acceptance Test Driven Development (ATDD)
- Agile Modeling
- Adaptive Software Development (ASD)
- 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 : collaboration dan learning. '
- Collaboration : 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: 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:
- Fokus grup, klien dan pengguna memberi masukan terhadap perangkat lunak.
- Formal Technique Reviews, tim ASD lengkap melakukan review.
- Postmortems, tim ASD melakukan instrospeksi pada kinerja dan proses.
- Agile Unified Process (AUP)
- Continuous integration (CI)
- Crystal Clear
- Crystal Methods
- Dynamic Systems Development Method (DSDM)
- 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%.Hal -hal yang perlu diperhatikan jika menggunakan dynamic system development method:
- Feasibility study, siapkan requirement, dan batasan, lalu uji apakah sesuai gunakan proses DSDM.
- Business Study, susun kebutuhan fungsional dan informasi, tentukan arsitektur aplikasi dan identifikasi kebutuhan pemeliharaan untuk aplikasi.
- Functional model iteration, perlihatkan fungsi perangkat lunak ke klien untuk mendapatkan feedback
- Design and Build Iteration, cek ulang prototip yang dibangun dan pastikan bahwa prototip dibangun dengan cara yang memungkinkan fungsi tersebut benar-benar bekerja.
- Implementation: buat perangkat lunak sesuai protoip yang ada dan terus tambah fungsionalitasnya.
- Extreme Programming (XP)
- 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 :
- User dapat menggambarkan dengan mudah bentuk sistem yang akan dibuat.
- Dapat diorganisasikan atau diatur ke dalam kelompok bisnis sesuai hirarki yang ada.
- Desain dan kode lebih mudah diperiksa secara efektif.
- Perancangan proyek, biaya pembuatan dan jadwal rilis ditentukan oleh fiturnya.
- Graphical System Design (GSD)
- Kanban
- Lean software development
- Rational Unified Process (RUP)
- Rational unified process, adalah suatu kerangka pengembangan perangkat lunak iteratif yang dibuat oleh Rational Software, suatu divisi dari IBM sejak 2003. Rational unified process bukanlah suatu proses dengan aturan yang konkrit, melainkan suatu kerangka proses yang dapat diadaptasi dan dimaksudkan untuk disesuaikan oleh tim pengembang perangkat lunak yang akan memilih elemen proses disesuaikan dengan kebutuhan mereka.Model ini membagi suatu sistem aplikasi menjadi beberapa komponen sistem dan memungkinkan para developer aplikasi untuk menerapkan metoda iterative (analisis, disain, implementasi dan pengujian) pada tiap komponen. Dengan menggunakan model ini, Rational unified process membagi tahapan pengembangan perangkat lunaknya ke dalam 4 fase sebagai berikut.
- Inception, merupakan tahap untuk mengidentifikasi sistem yang akan dikembangkan. Aktivitas yang dilakukan pada tahap ini antara lain mencakup analisis sistem, perumusan target dari sistem yang dibuat, identifikasi kebutuhan, perumusan kebutuhan pengujian, pemodelan diagram UML, dan pembuatan dokumentasi.
- Elaboration, merupakan tahap untuk melakukan disain secara lengkap berdasarkan hasil analisis di tahapinception. Aktivitas yang dilakukan pada tahap ini antara lain mencakup pembuatan disain arsitektur subsistem, disain komponen sistem, disain format data disain database, disain antarmuka/tampilan, disain peta tampilan, penentuan design pattern yang digunakan, pemodelan diagram UML, dan pembuatan dokumentasi.
- Construction, merupakan tahap untuk mengimplementasikan hasil disain dan melakukan pengujian hasil implementasi. Pada tahap awal construction, ada baiknya dilakukan pemeriksaan ulang hasil analisis dan disain, terutama disain pada diagram sequence,class, component, dan deployment. Apabila disain yang dibuat telah sesuai dengan analisis sistem, maka implementasi dengan bahasa pemrograman tertentu dapat dilakukan. Aktivitas yang dilakukan pada tahap ini antara lain mencakup pengujian hasil analisis dan disain (misal menggunakan class responsibility collaborator untuk kasus pemrograman berorientasi obyek), pendataan kebutuhan implementasi lengkap (berpedoman pada identifikasi kebutuhan di tahap analisis), penentuan coding pattern yang digunakan, pembuatan program, pengujian, optimasi program, pendataan berbagai kemungkinan pengembangan / perbaikan lebih lanjut, dan pembuatan dokumentasi.
- Transition, merupakan tahap untuk menyerahkan sistem aplikasi ke konsumen (roll-out), yang umumnya mencakup pelaksanaan pelatihan kepada pengguna dan testing beta aplikasi terhadap ekspetasi pengguna.

Komentar
Posting Komentar