Minggu, 26 November 2017

AGILE SOFTWARE DEVELOPMENT


AGILE SOFTWARE DEVELOPMENT



Agile software development adalah Metode dari beberapa kumpulan prinsip untuk pengembangan software di mana persyaratan dan solusi melalui upaya kolaboratif dari antar tim fungsional dan klien
Ini sebagai pendukung perencanaan adaptif, perkembangan evolusi, awal pengiriman, dan perbaikan terus-menerus, dan itu mendorong respon yang cepat dan fleksibel untuk dirubah.  Prinsip-prinsip ini mendukung definisi dan evolusi dari banyak metode pengembangan perangkat lunak
The Manifesto for Agile Software Development
Pada Februari 2001, 17 pengembang perangkat lunak bertemu di Snowbird Resort,Utah. Untuk meringkas atau mempermudah cara pengembangan perangkat lunak. Mereka meluncurkan Manifesto for Agile Software Development, dimana mereka berbagi pikiran melalui berbagai pengalaman dalam pengembangan perangkat lunak dan saling membantu hingga mereka dapat mendapatkan nilainya.


• Individu dan interaksi selama proses.
• Software Bekerja lebih komprehensif dokumentasi
• kolaborasi Pelanggan atas negosiasi kontrak
• Menanggapi perubahan dari rencana awal.



Metode Agile
Metode Agile mendukung berbagai siklus pengembangan perangkat lunak.  Beberapa fokus pada praktek (misalnya, XP, pragmatic programming, agile modeling), sementara beberapa fokus pada pengelolaan aliran kerja (misalnya, Scrum, Kanban). Beberapa kegiatan dukungan untuk persyaratan spesifikasi dan pengembangan (misalnya, FDD), sementara beberapa berusaha untuk menutupi siklus pengembangan penuh (misalnya, DSDM, RUP).
Kerangka pengembangan perangkat lunak Agile yang umum termasuk:
• Adaptive software development
• Agile modeling
• Agile Unified Process (AUP)
• Crystal Clear methods
• Disciplined agile delivery
• Dynamic systems development method (DSDM)
• Extreme programming (XP)
• Feature-driven development (FDD)
• Lean software development
• Kanban
• Scrum
• Scrumban
• Rapid application development
Realisasi Agile
Pengembangan Agile didukung oleh sejumlah praktek yang kongkrit, yang meliputi sektor seperti permintaan, desain, pemodelan, coding, pengujian, perencanaan, manajemen risiko, proses, kualitas, dan lain-lain.
Agile Alliance telah memberikan panduan online yang komprehensif untuk menerapkan Agile ini dan praktek-praktek lainnya.
Kelebihan dari Metode Agile:
1. Meningkatkan kepuasan kepada klien
2. Pembangunan system dibuat lebih cepat
3. Mengurangi resiko kegagalan implementasi software dari segi non-teknis
4. Jika pada saat pembangunan system terjadi kegagalan,kerugian dar segi materi relative kecil.
Kelemahan dari Metode Agile:
Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
Perbandingan dengan metode lain
RAD
Metode agile mempunyai persamaan yang banyak dengan teknik Rapid Application Development dari 1980/90-an seperti yang diungkapkan James Martin dan yang lain. Sebagai tambahan dalam metode yang fokus dengan teknologi, klien dan designIn addition to technology-focused methods, customer-and-design-centered methods, seperti Visualisasi-Driven Rapid Prototyping yang dikembangkan oleh Brian Willison, bekerja untuk melibatkan pelanggan dan pengguna akhir untuk memfasilitasi Agile software development.
Selanjutnya, James M. Kerr dan Richard Hunter menulis sebuah buku tentang subyek yang disajikan buku harian hari demi hari dari pengembangan nyata RAD. Menutupi pekerjaan yang tepat dari awal sampai produksi dan berisi banyak teknik yang menempa inti pembuatan, dan sangat banyak sekarang hadir dalam pendekatan Agile software development. 




Prinsip Agile soft development
Manifesto Agile terdiri dari 12 prisip:[3]
1. Kepuasan pelanggan dengan penyampaian awal dan penyampaian. perangkat lunak yang bernilai dengan terus menerus.
2. Menerima perubahan permintaan, bahkan dalam pengembangan akhir.
3. Perkembangan Perangkat lunak disampaikan secara sering setiap minggu.
4. Selalu koordinasi dengan dekat antara klien dan pengembang perangkat lunak .
5. Proyek yang dibangun di sekitar individu yang termotivasi, yang bisa dipercaya.
6. Percakapan Face to face adalah bentuk terbaik dari komunikasi.
7. Software Kerja adalah ukuran utama dari kemajuan
8. Pengembangan berkelanjutan, mampu mempertahankan kecepatan pengerjaan yang stabil
9. memperhatikan keunggulan teknis dan desain yang baik berkelanjutan
10. Kesederhanaan-seni memaksimalkan jumlah pekerjaan tidak dilakukan-sangat penting
11. Arsitektur, persyaratan, dan desain terbaik muncul dari tim yang mengatur dirinya sendiri
12. Tim mencerminkan tentang bagaimana menjadi lebih efektif, dan menyesuaikan secara teratur,.





Kesulitan umum Metode Agile
Organisasi dan tim pelaksana pengembangan Agile dapat seringkali menghadapi kesulitan transisi dari metode yang lebih tradisional seperti waterfall development, seperti tim memiliki proses agile dipaksakan pada mereka. Ini sering disebut agile anti-pola atau lebih agile. Berikut adalah beberapa contoh umum:
Kurangnya desain produk secara keseluruhan
Tujuan dari pengembangan perangkat lunak Agile adalah untuk lebih fokus pada memproduksi perangkat lunak bekerja dengan kurang dokumentasi. Hal ini berbeda dengan waterfall models di mana proses ini sering sangat dikontrol dan perubahan kecil pada sistem memerlukan revisi yang signifikan dari dokumen pendukung. Namun, ini tidak membenarkan sepenuhnya melakukan tanpa analisis atau desain sama sekali. Kegagalan untuk memperhatikan desain dapat menyebabkan tim untuk melanjutkan cepat pada awalnya tapi kemudian telah ulang yang signifikan diperlukan karena mereka berusaha untuk meningkatkan sistem. Salah satu fitur kunci dari pengembangan perangkat lunak Agile adalah bahwa hal itu berulang. Ketika dilakukan dengan benar desain muncul sebagai sistem dikembangkan dan persamaan dan Kesempatan untuk digunakan kembali ditemukan.
Kurangnya dukungan sponsor
Pengembangan perangkat lunak Agile sering diimplementasikan sebagai upaya akar rumput dalam organisasi oleh tim pengembangan perangkat lunak mencoba untuk mengoptimalkan proses perkembangan mereka dan memastikan konsistensi dalam siklus hidup pengembangan perangkat lunak. Dengan tidak memiliki dukungan sponsor, tim mungkin menghadapi kesulitan dan hambatan dari mitra bisnis, tim pembangunan lainnya dan manajemen. Selain itu, mereka mungkin menderita tanpa dana dan sumber daya yang tepat.  Hal ini meningkatkan kemungkinan kegagalan.
Kurangnya pelatihan
Sebuah survei yang dilakukan oleh Version one ditemukan responden dikutip pelatihan tidak cukup sebagai penyebab yang paling signifikan untuk implementasi agile gagal Tim telah jatuh ke dalam kesulitan dengan asumsi proses mengurangi pembangunan agile dibandingkan dengan metodologi lain seperti air terjun berarti bahwa tidak ada yang sebenarnya aturan untuk pengembangan Agile dapat. Agile pembangunan adalah seperangkat metodologi yang ditentukan, dan pelatihan / praktek adalah suatu kebutuhan.
Peran pemilik produk tidak dilaksanakan dengan semestinya
Pemilik produk bertanggung jawab untuk mewakili bisnis dalam kegiatan pengembangan dan sering peran yang paling menuntut.
Sebuah kesalahan umum adalah untuk memiliki peran pemilik produk diisi oleh seseorang dari tim pengembangan. Ini membutuhkan tim untuk membuat keputusan sendiri tentang prioritas tanpa umpan balik yang nyata dari bisnis. Mereka mencoba untuk memecahkan masalah bisnis internal atau menunda pekerjaan karena mereka mencapai di luar tim untuk arah. Hal ini sering menyebabkan gangguan dalam kolaborasi.
Tim tidak fokus
Proses agile membutuhkan tim untuk memenuhi komitmen produk, yang berarti mereka harus fokus hanya pada pekerjaan untuk produk tersebut. Namun, anggota tim yang dipandang sebagai memiliki kapasitas lebih yang sering dipakai untuk mengambil pekerjaan lain, yang berarti maka sulit bagi mereka untuk membantu menyelesaikan pekerjaan yang tim mereka telah berkomitmen terhadap pekerjaan tersebut.
Kurangnya otomatisasi
Karena sifat iteratif dari pengembangan Agile dapat, beberapa putaran pengujian sering dibutuhkan. pengujian otomatis membantu mengurangi dampak unit berulang, integrasi, dan tes regresi dan membebaskan pengembang dan penguji untuk fokus pada pekerjaan nilai yang lebih tinggi.
Tes otomatisasi juga mendukung refactoring lanjutan yang dibutuhkan oleh pengembangan perangkat lunak berulang. Memungkinkan pengembang untuk dengan cepat menjalankan tes untuk mengkonfirmasi refactoring belum diubah fungsi aplikasi dapat mengurangi beban kerja dan meningkatkan keyakinan bahwa upaya pembersihan belum diperkenalkan.
 


Tidak ada komentar:

Posting Komentar