Apa perbedaan antara pendekatan inkremental dan iteratif untuk pengembangan perangkat lunak?


16

The Tambahan pendekatan adalah metode pengembangan perangkat lunak di mana model ini dirancang, diimplementasikan dan diuji secara bertahap (sedikit lebih ditambahkan setiap kali) sampai produk selesai. Ini melibatkan pengembangan dan pemeliharaan. Produk didefinisikan sebagai selesai ketika memenuhi semua persyaratannya

The Desain Kreatif adalah metodologi desain berdasarkan proses siklik dari prototipe, pengujian, menganalisis, dan menyempurnakan produk atau proses. Berdasarkan hasil pengujian iterasi terbaru dari suatu desain, perubahan dan penyempurnaan dilakukan. Proses ini dimaksudkan untuk pada akhirnya meningkatkan kualitas dan fungsionalitas suatu desain. Dalam desain berulang, interaksi dengan sistem yang dirancang digunakan sebagai bentuk penelitian untuk menginformasikan dan mengembangkan proyek, sebagai versi berturut-turut, atau iterasi desain diimplementasikan.

Tampaknya kedua metode ini adalah tentang membuat bagian dari sistem, memperbaikinya untuk lulus semua kasus uji, menambahkan komponen lain dari sistem dan memperbaikinya lagi, ini akan diulang sampai sistem selesai.

Apa perbedaan sebenarnya antara kedua cara merancang perangkat lunak ini

Bagaimana mungkin untuk menggabungkan kedua metode ini untuk membentuk pendekatan desain iteratif dan tambahan

Jawaban:


13

The Tambahan Pendekatan menggunakan satu set langkah-langkah dan pembangunan berjalan dari awal sampai akhir di jalur linear perkembangan.

Pengembangan inkremental dilakukan dalam beberapa langkah mulai dari desain, implementasi, pengujian / verifikasi, pemeliharaan. Ini dapat dipecah lebih lanjut menjadi sub-langkah tetapi sebagian besar model tambahan mengikuti pola yang sama. The Waterfall Model adalah pendekatan pengembangan inkremental tradisional.

The Approach Iteratif tidak memiliki jumlah set langkah-langkah, bukan pengembangan dilakukan dalam siklus.

Pengembangan berulang kurang memperhatikan pelacakan kemajuan fitur individu. Sebagai gantinya, fokus diberikan pada pembuatan prototipe yang berfungsi pertama dan menambahkan fitur dalam siklus pengembangan di mana langkah-langkah Pengembangan Peningkatan dilakukan untuk setiap siklus. Agile Modeling adalah pendekatan berulang yang khas.


Model inkremental awalnya dikembangkan untuk mengikuti model jalur perakitan tradisional yang digunakan di pabrik. Sayangnya, desain dan pengembangan perangkat lunak memiliki sedikit kesamaan dengan pembuatan barang fisik. Kode adalah cetak biru bukan produk akhir pengembangan. Pilihan desain yang baik sering 'ditemukan' selama proses pengembangan. Mengunci pengembang ke dalam serangkaian asumsi tanpa konteks yang tepat dapat menyebabkan desain yang buruk dalam kasus terbaik atau gangguan total dalam pengembangan dalam kondisi terburuk.

Pendekatan berulang sekarang menjadi praktik umum karena lebih sesuai dengan jalur alami perkembangan dalam pengembangan perangkat lunak. Alih-alih menginvestasikan banyak waktu / upaya mengejar 'desain sempurna' berdasarkan asumsi, pendekatan berulang adalah semua tentang menciptakan sesuatu yang 'cukup baik' untuk memulai dan mengembangkannya agar sesuai dengan kebutuhan pengguna.

tl; dr - Jika Anda menulis esai di bawah Model Incremental, Anda akan berusaha menulisnya dengan sempurna dari awal hingga menyelesaikan satu kalimat pada saat yang bersamaan. Jika Anda menulisnya di bawah Model Iteratif, Anda akan mengeluarkan draft kasar cepat dan bekerja untuk memperbaikinya melalui serangkaian fase revisi.


Memperbarui:

Saya memodifikasi definisi saya untuk 'Pendekatan Tambahan' agar sesuai dengan contoh yang lebih praktis.

Jika Anda pernah harus berurusan dengan mengontrak Pendekatan Tambahan adalah bagaimana sebagian besar kontrak dilakukan (terutama untuk militer). Meskipun banyak variasi halus dari 'Model Air Terjun' yang khas, kebanyakan / semuanya diterapkan dengan cara yang sama dalam praktik.

Langkah-langkahnya sebagai berikut:

  • Penghargaan Kontrak
  • Tinjauan Desain Pendahuluan
  • Ulasan Desain Kritis
  • Spesifikasi Bekukan
  • Pengembangan
  • Fielding / Integrasi
  • Verifikasi
  • Pengujian Keandalan

PDR dan CDR adalah tempat spec dibuat dan direvisi. Setelah spec selesai, harus dibekukan untuk mencegah creep lingkup. Integrasi terjadi jika perangkat lunak digunakan untuk memperluas sistem yang sudah ada sebelumnya. Verifikasi adalah untuk memeriksa apakah aplikasi cocok dengan spesifikasi. Reliabilitas adalah tes untuk membuktikan bahwa aplikasi akan dapat diandalkan dalam jangka panjang, ini dapat ditentukan seperti SLA (Service Level Agreement) di mana sistem diperlukan untuk mempertahankan persentase waktu kerja tertentu (misalnya waktu kerja 99% selama 3 bulan) ).

Model ini bekerja sangat baik untuk sistem yang mudah ditentukan di atas kertas tetapi sulit untuk diproduksi. Perangkat lunak sangat sulit untuk ditentukan di atas kertas hingga tingkat detail yang cukup besar (ex UML). Sebagian besar 'tipe bisnis' yang bertanggung jawab atas manajemen / kontrak gagal untuk menyadari bahwa - ketika menyangkut pengembangan perangkat lunak - kode itu sendiri adalah spesifikasi. Spesifikasi kertas seringkali membutuhkan waktu / upaya untuk menulis sebagai kode itu sendiri dan biasanya terbukti tidak lengkap / inferior dalam praktiknya.

Pendekatan inkremental mencoba menghabiskan waktu / sumber daya dengan memperlakukan kode itu sendiri sebagai spesifikasinya. Alih-alih menjalankan spesifikasi kertas melalui beberapa langkah revisi, kode itu sendiri melewati beberapa siklus revisi.


+1 untuk contoh yang bagus, meskipun deskripsi tambahan terlihat salah bagi saya
Basilevs

@ Basilevs Apakah itu lebih baik?
Evan Plaice

6
Air terjun bukan tambahan. Incremental secara khusus mengacu pada pembuatan perangkat lunak (desain melalui uji) sepotong demi sepotong. Dalam model air terjun tradisional, Anda melakukan semua desain Anda, lalu semua implementasi Anda, dan kemudian semua pengujian Anda. Sama sekali tidak tambahan. Ada variasi air terjun, seperti di mana Anda akan menangani rekayasa kebutuhan Anda di muka, dan kemudian memecah proyek menjadi peningkatan di mana setiap kenaikan dirancang, diimplementasikan, diuji (dan diintegrasikan dan diuji dengan kenaikan lainnya), tetapi ini bukan tradisional air terjun.
Thomas Owens

0

Seperti kata sifat apa pun, dan sebagian besar hal dalam pengembangan perangkat lunak ... itu tergantung!

Itu tergantung pada konteks, dan bagaimana istilah itu digunakan. Jadi Anda bertanya tentang perbedaan antara pendekatan inkremental dan iteratif untuk pengembangan perangkat lunak, tetapi kutipan Anda melihat pada desain iteratif, yang merupakan hal yang berbeda (walaupun serupa).

Jadi menjawab secara khusus sebagai pendekatan untuk pengembangan perangkat lunak ..

Pertanyaannya salah tempat. Bukan satu atau yang lain. Anda tidak dapat membandingkannya secara langsung karena merujuk ke bagian proses yang berbeda.

Pengembangan perangkat lunak berulang pada dasarnya bersifat inkremental. Pengembangan perangkat lunak tambahan tidak harus berulang.

Peningkatan adalah langkah kecil, mudah-mudahan maju. Ini adalah cara merujuk pada setiap langkah pekerjaan yang dilakukan.

Iterasi adalah siklus kerja.

Jadi, iterasi mengacu pada keseluruhan siklus pengembangan yang digunakan. Selisih mengacu pada setiap langkah individual pekerjaan. Sebuah iterasi akan menghasilkan kenaikan, yang terdiri dari satu atau lebih peningkatan aktual pada perangkat lunak (biasanya lebih).

Kesimpulannya...

Pengembangan perangkat lunak berulang adalah jenis pendekatan khusus untuk pengembangan perangkat lunak, bekerja dalam iterasi yang bertentangan dengan pendekatan air terjun tradisional. Scrum adalah contoh yang bagus.

Pengembangan perangkat lunak tambahan lebih umum, dan mengacu pada memajukan pekerjaan dalam langkah-langkah, yang merupakan fitur dari sebagian besar (mungkin semua?) Pendekatan. Dengan mengatakan itu, istilah ini lebih sering digunakan dalam kaitannya dengan modern, pendekatan gesit, yang mungkin menjelaskan kebingungan antara dua istilah yang sangat mirip.

Dan akhirnya, tentu saja, itu tergantung bagaimana istilah itu dimaksudkan ketika digunakan, yang sering sangat bervariasi oleh pembicara, waktu dalam sebulan, dll!

Pertanyaan yang lebih menarik adalah, di mana pendekatan empiris terhadap pengembangan perangkat lunak cocok untuk semua ini. Keindahan dari pendekatan berulang adalah memungkinkan empirisme, yang merupakan tempat keajaiban terjadi.

Semoga ini membantu.

Artikel ini menggambarkannya dengan baik, dengan contoh-contoh.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.