Чим відрізняється інкрементальний та ітеративний підхід до розробки програмного забезпечення?


16

Підхід інкрементний є метод розробки програмного забезпечення , де модель розроблена, реалізована і апробована поступово (трохи більше додаються кожен раз) , поки продукт не буде закінчений. Він передбачає як розробку, так і обслуговування. Виріб визначається як готовий, коли він задовольняє всім його вимогам

Ітераційний Design представляє собою методологію проектування на основі циклічного процесу прототипирования, тестування, аналізу і переробки продукту або процесу. На основі результатів тестування проводиться остання ітерація дизайну, зміни та доопрацювання. Цей процес має на меті покращити якість та функціональність дизайну. В ітеративному дизайні взаємодія з розробленою системою використовується як форма дослідження для інформування та розвитку проекту, оскільки реалізуються послідовні версії або ітерації дизайну.

Здається, обидва способи полягають у створенні частини системи, вдосконаленні її для проходження всіх тестових випадків, доданні ще одного компонента системи та вдосконаленні її знову, вони повторюються, поки система не буде закінчена.

Яка фактична різниця між цими двома способами проектування програмного забезпечення

Як можна комбінувати ці два методи, щоб сформувати ітераційний та поступовий підхід до проектування

Відповіді:


13

Підхід Інкрементальний використовує певну кількість кроків , і розвиток йде від початку до кінця в лінійної траєкторії прогресії.

Поступова розробка здійснюється за кроками від проектування, впровадження, тестування / перевірки, обслуговування. Вони можуть бути розбиті далі на етапи, але більшість поступових моделей дотримуються цієї ж схеми. Водоспад Модель являє собою традиційний поетапний підхід до розвитку.

Ітераційний підхід не має певну кількість кроків, а розвиток здійснюється в циклах.

Ітеративний розвиток менше стосується відстеження прогресу окремих особливостей. Натомість основну увагу приділяють створенню робочого прототипу спочатку та доданню функцій у цикли розробки, де кроки розвитку приросту виконуються для кожного циклу. Модельне спритність - це типовий ітеративний підхід.


Початкова модель спочатку була розроблена для того, щоб відповідати традиційній моделі складальної лінії, що використовується на заводах. На жаль, розробка та розробка програмного забезпечення мають мало спільного з виробництвом фізичних товарів. Код - це план, а не готовий продукт розробки. Хороший вибір дизайну часто «виявляється» в процесі розробки. Блокування розробників у наборі припущень без належного контексту може призвести до поганих конструкцій у кращому випадку або до повного зняття з глузду розробки в гіршому.

Ітеративний підхід зараз стає загальною практикою, оскільки він краще відповідає природному шляху прогресу в розробці програмного забезпечення. Замість того, щоб вкладати багато часу / зусиль, переслідуючи «ідеальний дизайн», виходячи з припущень, ітеративний підхід - це створити щось досить «добре», щоб почати і розвивати його, щоб відповідати потребам користувача.

tl; dr - Якщо ви писали есе за інкрементальною моделлю, ви б спробували написати його ідеально від початку до кінця одного речення. Якби ви написали його під Ітераційною моделлю, ви відкинете швидкий чорновий проект і працюєте над його вдосконаленням через набір етапів перегляду.


Оновлення:

Я змінив своє визначення поняття "Поступовий підхід", щоб підходити до більш практичного прикладу.

Якщо вам коли-небудь доводилося стикатися з укладенням договору з Інкрементальним підходом - це як здійснюється більшість контрактів (особливо для військових). Незважаючи на безліч тонких варіацій типової моделі «Водоспад», більшість із них застосовуються однаково на практиці.

Кроки виконуються наступним чином:

  • Укладення контракту
  • Попередній огляд проекту
  • Огляд критичного дизайну
  • Специфікація заморожування
  • Розвиток
  • Польове / інтеграційне
  • Перевірка
  • Тестування надійності

PDR та CDR - це те, де специфікація створюється та переглядається. Після того, як специфікація буде завершена, її слід заморозити, щоб запобігти повзанню області. Інтеграція відбувається, якщо програмне забезпечення використовується для розширення вже існуючої системи. Перевірка призначена для перевірки відповідності програми специфікації. Надійність - це тест, який доводить, що додаток буде надійним протягом тривалого періоду, це може бути визначено так само, як угода про рівень обслуговування (SLA), коли система повинна підтримувати певний відсоток часу роботи (колишній тривалість 99% протягом 3 місяців) ).

Ця модель чудово підходить для систем, які легко вказати на папері, але важко виготовити. Програмне забезпечення дуже важко вказати на папері до будь-якої помітної деталізації (наприклад, UML). Більшість "типів бізнесу", які відповідають за управління / укладання контрактів, не усвідомлюють, що - якщо мова йде про розробку програмного забезпечення - сам код є специфікацією. Характеристики паперу часто вимагають стільки ж або більше часу / зусиль для написання, як і сам код, і вони, як правило, виявляються неповними / неповноцінними на практиці.

Поступові підходи намагаються витратити даремно витрачені час / ресурси, розглядаючи сам код як специфікацію. Замість того, щоб виконувати специфікацію паперу через кілька етапів перегляду, сам код проходить через кілька циклів перегляду.


+1 для приємного прикладу, хоча інкрементальний опис мені здається невірним
Василевс

@Basilevs Це краще?
Еван Плейс

7
Водоспад не збільшується. Інкрементальний конкретно стосується побудови (проектування за допомогою тесту) програмного забезпечення по частинах. У традиційній моделі водоспаду ви займаєтеся всім своїм дизайном, потім всією своєю реалізацією, а потім всім тестуванням. Це зовсім не поступово. Існують різні варіанти водоспаду, наприклад, де ви впораєтеся зі своїми вимогами інженерно, а потім розділите проект на кроки, де кожен приріст проектується, впроваджується, тестується (та інтегрується та перевіряється з іншими кроками), але це не традиційно водоспад.
Томас Оуенс

0

Як і будь-який прикметник, і більшість речей у розробці програмного забезпечення ... це залежить!

Це залежить від контексту та способу вживання цього терміна. Отже, ви запитуєте про різницю між інкрементальним та ітераційним підходами до розробки програмного забезпечення, але ваша цитата розглядає ітеративний дизайн, який є різною річчю (хоча і подібною).

Тож відповідаючи конкретно як підхід до розробки програмного забезпечення ..

Питання недоречне. Це не те чи інше. Ви не можете їх безпосередньо порівнювати, оскільки вони посилаються на різні частини процесу.

Ітеративна розробка програмного забезпечення за своєю природою наростає. Поступова розробка програмного забезпечення не повинна бути ітеративною.

Приріст - це невеликий крок, сподіваємось вперед. Це спосіб посилатися на кожен етап роботи, який виконується.

Ітерація - це цикл роботи.

Отже, ітерація стосується загального циклу розвитку, який використовується. Приріст стосується кожного окремого кроку твору. Ітерація призведе до збільшення приросту, який складається з одного або декількох фактичних кроків до програмного забезпечення (як правило, більше).

На завершення ...

Ітеративна розробка програмного забезпечення - це специфічний тип підходу до розробки програмного забезпечення, що працює в ітераціях на відміну від традиційного підходу до водоспаду. Scrum - хороший приклад.

Інкрементальна розробка програмного забезпечення є більш загальною і стосується руху кроку вперед, що є особливістю більшості (можливо, всіх?) Підходів. З урахуванням сказаного, цей термін частіше використовується стосовно сучасних спритних підходів, що, ймовірно, пояснює плутанину між двома дуже схожими термінами.

І нарешті, звичайно, залежить, як розуміється термін при використанні, який часто сильно різниться залежно від оратора, часу місяця тощо!

Більш цікавим питанням є те, куди вкладається емпіричний підхід до розробки програмного забезпечення. Краса ітеративного підходу полягає в тому, що він дає змогу емпіризму, саме там відбувається магія.

Сподіваюсь, це допомагає.

Ця стаття добре описує це, на прикладах.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.