Perkembangan yang cepat dan pengiriman saat ini adalah kebutuhan yang paling
penting untuk sistem software
Bisnis beroperasi secara cepat, persyaratan berubah dan itu hampir mustahil untuk
menghasilkan satu set persyaratan software yang stabil
Agile Development
Plan-driven
and
agile development
Plan-driven development
Ketidakpuasan dengan overhead yang terlibat dalam metode desain software dari tahun
1980-an dan 1990-an menyebabkan penciptaan dari metode tangkas. Dengan metode :
Fokus pada kode daripada desain
Didasarkan pada pendekatan iteratif untuk pengembangan software
Dimaksudkan untuk memberikan software bekerja dengan cepat dan berkembang
dengan cepat untuk memenuhi perubahan kebutuhan.
Tujuan dari agile methods adalah untuk mengurangi overhead dalam proses software
(misalnya dengan membatasi dokumentasi) dan untuk dapat merespon dengan cepat
perubahan kebutuhan tanpa ulang berlebihan.
Manifesto Agile
Kami mengungkap cara yang lebih baik untuk mengembangkan software dengan
melakukan hal itu dan membantu orang lain melakukannya. Melalui karya ini kita telah
datang ke nilai:
Individu dan interaksi atas proses dan alat-alat
Softwate bekerja melalui dokumentasi yang komprehensif
Kolaborasi pelanggan lebih bernegosiasi
Extreme programming
Sebuah metode yang sangat berpengaruh, dikembangkan pada akhir 1990-an, yang
memperkenalkan berbagai teknik pengembangan tangkas.
Extreme Programming (XP) mengambil pendekatan 'ekstrim' untuk pengembangan
berulang.
Semua tes harus dijalankan untuk setiap membangun dan membangun hanya
diterima jika tes berhasil.
Peran Praktek XP
Ekstrim pemrograman memiliki fokus teknis dan tidak mudah untuk mengintegrasikan
dengan praktek manajemen dalam kebanyakan organisasi.
Akibatnya, sementara pengembangan tangkas menggunakan praktek dari XP, metode
sebagai awalnya didefinisikan tidak banyak digunakan.
Point Penting
Cerita pengguna untuk spesifikasi
Refactoring
Pengembangan tes pertama
Pasangan pemrograman
Pengembangan test-driven
Keterlibatan Pelanggan
Peran pelanggan dalam proses pengujian adalah untuk membantu mengembangkan tes
penerimaan untuk cerita yang akan dilaksanakan dalam rilis berikutnya dari sistem.
Para pelanggan yang merupakan bagian dari tim menulis tes sebagai hasil
pembangunan. Semua kode baru karena itu divalidasi untuk memastikan bahwa itu
adalah apa yang dibutuhkan pelanggan.
Namun, orang-orang mengadopsi peran pelanggan memiliki waktu terbatas yang
tersedia sehingga tidak dapat bekerja penuh waktu dengan tim pengembangan. Mereka
mungkin merasa bahwa memberikan persyaratan cukup dari kontribusi dan mungkin
enggan untuk terlibat dalam proses pengujian.
Pair programming
Tanggung jawab utama manajer proyek software adalah untuk mengelola proyek
sehingga software tersebut disampaikan tepat waktu dan sesuai anggaran yang
direncanakan untuk proyek tersebut.
Pendekatan standar untuk manajemen proyek adalah plan-driven. Manajer menyusun
rencana untuk proyek menunjukkan apa yang harus disampaikan, ketika harus
disampaikan dan yang akan bekerja pada pengembangan deliverable proyek.
Manajemen proyek Agile membutuhkan pendekatan yang berbeda, yang disesuaikan
dengan perkembangan tambahan dan praktek-praktek yang digunakan dalam agile
method.
Scrum
Scrum adalah agile method yang berfokus pada pengelolaan pembangunan berulang
daripada praktek tangkas tertentu.
Ada tiga fase dalam Scrum.
Tahap awal adalah tahap perencanaan garis besar di mana Anda menetapkan
tujuan umum untuk proyek dan desain arsitektur software.
Ini diikuti dengan serangkaian siklus lari, di mana setiap siklus mengembangkan
kenaikan dari sistem.
Proyek tahap penutupan membungkus proyek, selesai dengan dokumentasi yang
diperlukan seperti sistem bantuan frame dan manual pengguna dan menilai
pelajaran dari proyek.
Siklus Sprint
The Scrum master adalah fasilitator yang mengatur pertemuan harian, melacak
backlog pekerjaan yang harus dilakukan, mencatat keputusan, mengukur kemajuan
terhadap backlog dan berkomunikasi dengan pelanggan dan manajemen di luar tim.
Seluruh tim menghadiri rapat harian singkat (Scrums) di mana semua anggota tim
berbagi informasi, menggambarkan kemajuan mereka sejak pertemuan terakhir, masalah
yang muncul dan apa yang direncanakan untuk hari berikutnya.
Ini berarti bahwa setiap orang dalam tim tahu apa yang terjadi dan, jika masalah
timbul, dapat kembali rencana kerja jangka pendek untuk mengatasi mereka.
Manfaat Scrum
Produk ini dipecah menjadi satu set potongan dikelola dan dimengerti.
Persyaratan yang tidak stabil tidak tahan kemajuan.
Seluruh tim memiliki visibilitas dari segala sesuatu dan akibatnya komunikasi tim
ditingkatkan.
Pelanggan melihat pengiriman tepat waktu bertahap dan mendapatkan umpan balik
tentang bagaimana produk bekerja.
Kepercayaan antara pelanggan dan pengembang didirikan dan budaya positif dibuat di
mana setiap orang mengharapkan proyek untuk berhasil.
Distributed Scrum
Agile Methods telah terbukti berhasil untuk proyek-proyek kecil dan menengah yang
dapat dikembangkan oleh tim co-terletak kecil.
Hal ini kadang-kadang berpendapat bahwa keberhasilan metode ini datang karena
peningkatan komunikasi yang mungkin ketika semua orang bekerja sama.
Scaling up metode tangkas melibatkan perubahan ini untuk mengatasi lebih besar,
proyek-proyek lagi di mana ada beberapa tim pengembangan, mungkin bekerja di lokasi
yang berbeda.
Informal pembangunan agile tidak sesuai dengan pendekatan hukum untuk definisi
kontrak yang umum digunakan di perusahaan besar.
Agile methods yang paling tepat untuk pengembangan software baru daripada
perawatan software. Namun mayoritas biaya software di perusahaan besar berasal dari
menjaga sistem software yang ada.
Agile methods dirancang untuk tim co-terletak kecil namun banyak pengembangan
software sekarang melibatkan tim didistribusikan di seluruh dunia.
Sebagian besar organisasi menghabiskan lebih pada mempertahankan software yang ada
daripada yang mereka lakukan pada pengembangan software baru. Jadi, jika agile
methods ingin berhasil, mereka harus mendukung pemeliharaan serta pengembangan
aslinya.
Dua kunci masalah:
Apakah sistem yang dikembangkan menggunakan pendekatan agile, mengingat
penekanan dalam proses pengembangan meminimalkan dokumentasi formal?
Bisakah agile methods digunakan secara efektif untuk perkembangan sistem
dalam menanggapi perubahan permintaan pelanggan?
Masalah mungkin timbul jika tim pengembangan asli tidak dapat dipertahankan.
Agile maintenance
Sistem yang besar dan proses pembangunan mereka sering dibatasi oleh aturan
eksternal dan peraturan yang membatasi cara yang mereka dapat dikembangkan.
Sistem yang besar memiliki waktu pengadaan dan pengembangan yang panjang. Sulit
untuk mempertahankan tim yang koheren yang tahu tentang sistem selama periode
sebagai, mau tidak mau, orang beralih ke pekerjaan dan proyek-proyek lainnya.
Sistem yang besar biasanya memiliki satu set beragam pemangku kepentingan. Hal ini
praktis tidak mungkin untuk melibatkan semua pemangku kepentingan yang berbeda
dalam proses pembangunan.
Sebuah pendekatan yang sama sekali tambahan untuk rekayasa persyaratan adalah
mustahil.
Ada tidak bisa menjadi pemilik produk atau wakil pelanggan.
Untuk pengembangan sistem yang besar, tidak mungkin untuk fokus hanya pada kode
sistem.
Mekanisme komunikasi lintas-tim harus dirancang dan digunakan.
Integrasi berkesinambungan praktis tidak mungkin. Namun, adalah penting untuk
mempertahankan sistem sering membangun dan rilis reguler dari sistem.
Multi-tim Scrum
Role replication
Product architects
Release alignment
Scrum of Scrums
Agile methods dalam seluruh organisasi
Manajer proyek yang tidak memiliki pengalaman metode tangkas mungkin enggan
untuk menerima risiko pendekatan baru.
Organisasi besar sering memiliki prosedur mutu dan standar yang semua proyek
diharapkan untuk mengikuti dan, karena sifat birokrasi mereka, ini mungkin tidak sesuai
dengan agile methods.
Agile methods tampaknya bekerja dengan baik ketika anggota tim memiliki tingkat
keterampilan yang relatif tinggi. Namun, dalam organisasi besar, ada kemungkinan
akan berbagai keterampilan dan kemampuan.
Poin penting