id
Waterfall
Model Incremental Model Prototyping Spiral Model Unified Process Agile Development Extreme Programming
Beroperasi
Berhenti digunakan
Tidak
ada langkah-langkah proses, tidak ada spesifikasi, dokumentasi, pengujian, dll. Tidak ada pemisahan urusan (separation of concern) tidak adanya kerjasama tim. Tidak mungkin menangani sistem yang kompleks.
Komunikasi
Inisiasi proyek Pengumpulan kebutuhan
Perencanaan
Estimasi, penjadwalan, pelacakan
Pemodelan
Analisis Perancangan
Konstruksi
Tulis kode Uji
Penempatan
Penyerahan, dukungan, umpan balik
Permasalahan: Proyek sebenarnya jarang yang mengikuti aliran kerja sekuensial Sulit merumuskan semua kebutuhan secara eksplisit Tidak ada pemeliharaan dan evolusi dalam proses pengembangan Pengguna harus sabar karena program yang bisa berjalan baru bisa didapat setelah tahap akhir proyek Kesalahan yang terjadi dapat berefek fatal pada proyek
Fitur
Increment#3
Increment#2
Increment#1
Waktu
Menghasilkan
tambahan fitur produk (increment) tertentu pada perangkat lunak di setiap rangkaian proses. Increment pertama biasanya berupa fitur produk utama, fitur lain ditambahkan pada proses penambahan selanjutnya. Dapat dilakukan pengalokasian sumber daya yang fleksibel
Komunikasi
Rencana Ringkas
Rancangan Ringkas
Pembuatan Prototype
Horizontal
prototype menguji layer tertentu (biasanya GUI) sistem Vertical prototype menguji fungsionalitas tertentu di seluruh layer Cocok untuk pembuatan perangkat lunak yang belum dapat mengidentifikasi rincian input, pengolahan, dan keluaran.
Pelanggan
menganggap program sudah jadi Pengembang biasanya memilih metode yang cepat (tapi bukan yang terbaik) untuk membuat prototype terkadang menjadi kebiasaan dalam membuat program yang sebenarnya
(1988)
Sistem
dikembangkan dalam serangkaian rilis yang berevolusi Ada pencapaian yang signifikan di setiap putaran spiral Proses tidak berakhir ketika produk diserahkan kepada pengguna Menggambarkan sifat iteratif pengembangan perangkat lunak
Insepsi
Perencanaan
Produksi Penempatan
Elaborasi Pemodelan
Transisi
Konstruksi
Konstruksi
Insepsi
Software Increment
Komunikasi
Perencanaan
Mencakup Produksi
Elaborasi + komunikasi dengan pengguna perencanaan Penempatan Menghasilkan sekumpulan use case Pada tahap ini, arsitektur baru berupa garis besar yang bersifat sementara Transisi Konstruksi
Pemodelan
Insepsi
& mengembangkan use case awal Produksi Menghasilkan arsitektur dan model perancangan awal Penempatan
Merinci
Software Increment
Komunikasi
Perencanaan
Elaborasi Pemodelan
Transisi
Konstruksi
Konstruksi
Insepsi
Komunikasi Perencanaan (atau mendapatkan) Increment komponen perangkat lunak sesuai dengan arsitektur Elaborasi Produksi Melengkapi model perancangan Penempatan Pemodelan Mencakup implementasi, uji unit, uji penerimaan
Software Membangun
Transisi
Konstruksi
Konstruksi
lunak diberikan kepada pengguna untuk pengujian beta Software Komunikasi Perencanaan Increment Umpan balik melaporkan cacat dan perubahan yang perlu Elaborasi Produksi Tim menulis informasi dukungan perangkat lunak
Penempatan
Perangkat
Insepsi
Pemodelan
Transisi
Konstruksi
Konstruksi
Insepsi
Software Increment
Perangkat
Produksi
Transisi
Konstruksi
Konstruksi
Insepsi
Software Increment
Komunikasi
Perencanaan
Umpan
Produksi Penempatan
Transisi
Konstruksi
Konstruksi
Insepsi
Software Increment
Komunikasi
Perencanaan
Produksi Penempatan
Elaborasi Pemodelan
Transisi
Konstruksi
Konstruksi
Mengacu
pada fitur terbaik model proses konvensional Menekankan arsitektur dan perancangan perangkat lunak Terintegrasi dengan teknik pemodelan UML
Proses Agile diibaratkan seperti speedboat, bisa mengubah haluan dengan sangat cepat
Jika, model proses tradisional diibaratkan seperti kapal perang, terlindungi dari segala hal yang mungkin terjadi
Manifesto
(2001):
Mengutamakan individu dan aktivitas, daripada proses dan kakas Mengutamakan software yang dapat bekerja, daripada dokumentasi yang komprehensif Mengutamakan kolaborasi dengan pelanggan, daripada negosiasi kontrak Mengutamakan merespon terhadap perubahan, daripada mengikuti rencana
Agile?
Agility
kemampuan untuk bereaksi terhadap perubahan situasi dengan cepat, tepat, dan efektif.
Memberi tahu perubahan seawal mungkin Melakukan tindakan segera Membuat rencana alternatif yang layak dan efektif dengan cepat Reorientasi pekerjaan dan sumber daya dengan cepat dan efektif
Untuk SW/proyek dengan tingkat kepentingan relatif rendah Developer senior Kebutuhan berubah sangat sering Jumlah developer sedikit Budaya yang berkembang dalam kekacauan (chaos)
Agile
Untuk SW/proyek dengan tingkat kepentingan tinggi Developer junior Perubahan kebutuhan tidak terlalu sering Jumlah developer banyak Budaya yang menuntut keteraturan
Berbasis Rencana
Berangkat dari 3 asumsi: Sulit untuk memprediksi di awal, mana kebutuhan yang akan tetap dan yang akan berubah Untuk banyak tipe SW, perancangan dan konstruksi dilakukan terpisah, satu setelah yang lain. Kedua aktivitas tersebut seharusnya dilakukan secara tandem, sehingga model rancangan dapat divalidasi sambil diciptakan. Analisis, perancangan, dan pengujian tidak dapat diprediksi (dari sisi perencanaan) semudah yang kita kira
Bagaimana
menangani ketidakpastian? buat proses yang mudah beradaptasi Memerlukan umpan balik dari pelanggan setiap waktu Strategi pengembangan incremental (bertambah dalam setiap tahapannya)
(1999)
Perencanaan
Perancangan
Pengujian
Coding
Software Increment
Perencanaan
Perancangan
Dalam
XP, perencanaan Pengujian dilakukan dengan cerita (user stories) Setiap cerita menggambarkan Software perilaku penting Increment sistem
Coding
Perencanaan
Perancangan
Rancangan
dibuat sambil jalan, dengan prinsip KISS (Keep It Simple) Coding Pengujian Tidak menggunakan notasi apapun, kecuali CRC Cards (sketsa objek) dan solusi spike (prototype)
Software Increment
Perancangan
Coding
Program
direfaktorisasi secara terus-menerus agar rancangan sesuai Software dengan cerita Increment
Untuk
menjamin review yang berkesinambungan, XP menyarankan Perencanaan pemrograman berpasanganPerancangan (pair programming)
Pengujian
Coding
Software Increment
Perencanaan
Pengujian
Pengujian unit: Mendeteksi Perancangan kesalahan Menemukan fungsionalitas yang kurang Coding Mengukur kemajuan proyek
Software Increment
Perencanaan
Perancangan
Prototype
Pengujian
Software Increment
Perencanaan
Perancangan
Pengujian
Coding
Software Increment
Buat
tabel perbandingan model-model proses yang telah Anda pelajari. Jelaskan perbedaannya dari berbagai aspek. Sertakan pula bahasan mengenai kelebihan dan kekurangan masing-masing.