В чем разница между инкрементной моделью процесса программного обеспечения, эволюционной моделью и спиральной моделью?
В этом году я изучаю программную инженерию, и меня немного смущает вопрос в названии.
И мой профессор, и ссылка ("Программная инженерия - практический подход") различают три названия как разные модели. Однако я не вижу очевидной разницы, поскольку их методологии выглядят одинаково для меня, но для их определения используются разные операторы. Я чувствую, что практически все они представляют одну и ту же модель процесса.
Кто-нибудь может объяснить различные модели лучше?
3 ответа
Крейг Ларман много писал на эту тему, и я предлагаю его знаменитую статью " Итеративное и поэтапное развитие: краткая история" (PDF) и его книгу " Гибкая и итеративная разработка: руководство менеджера".
Вот как я бы суммировал вещи:
Инкрементальное развитие
Поэтапное развитие - это практика, в которой функциональные возможности системы разбиваются на приращения (небольшими порциями). В каждом приращении вертикальный фрагмент функциональности предоставляется путем прохождения всех операций процесса разработки программного обеспечения, от требований до развертывания.
Инкрементная разработка (добавление) часто используется вместе с Iterative Development (redo) в разработке программного обеспечения. Это называется итеративным и инкрементным развитием (IID).
Эволюционный метод
Термины эволюция и эволюция были введены Томом Гилбом в его книге Software Metrics, опубликованной в 1976 году, где он писал о EVO, его практике IID (возможно, самой старой). Эволюционное развитие фокусируется на своевременной доставке ценных активов заинтересованным сторонам, а также на получении и использовании отзывов заинтересованных сторон.
В разработке программного обеспечения: итеративный и эволюционный, Крейг Ларман говорит об этом так:
Эволюционная итеративная разработка подразумевает, что требования, план, оценки и решения развиваются или уточняются в ходе итераций, а не полностью определяются и "замораживаются" в ходе основной предварительной спецификации перед началом итераций разработки. Эволюционные методы соответствуют модели непредсказуемых открытий и изменений в разработке новых продуктов.
А затем обсуждаются дальнейшие эволюционные требования, эволюционное и адаптивное планирование, эволюционная доставка. Проверьте ссылку.
Спиральная модель
Спиральная модель - это еще один подход IID, который был формализован Барри Бемом в середине 1980-х годов как расширение Водопада для лучшей поддержки итеративной разработки и уделяет особое внимание управлению рисками (посредством итеративного анализа рисков).
Цитирование итеративного и поэтапного развития: краткая история:
Вехой в публикациях IID в 1985 году была "Спиральная модель разработки и совершенствования программного обеспечения" Барри Бома (хотя более частая ссылка на цитирование - 1986 год). Спиральная модель, возможно, была не первым случаем, в котором команда расставила приоритеты в циклах разработки по степени риска: например, Гилб и IBM FSD ранее применяли или защищали варианты этой идеи. Однако спиральная модель формализовала и выдвинула на первый план концепцию итераций, управляемых риском, и необходимость использовать дискретный шаг оценки риска в каждой итерации.
Что теперь?
Гибкие методы являются подмножеством IID и эволюционных методов и являются предпочтительными в настоящее время.
Рекомендации
- Итеративное и поэтапное развитие: краткая история - Крейг Ларман, Виктор Р. Базили (июнь 2003 г.)
- Разработка программного обеспечения: итеративный и эволюционный - Крейг Ларман
- Инкрементальное и итеративное развитие - Алистер Кокберн
- Итеративная и поэтапная разработка
- Процесс разработки программного обеспечения
- T. Gilb, Software Metrics, Little, Brown, and Co., 1976 (нет в печати).
- Б. Бём, "Спиральная модель разработки и совершенствования программного обеспечения", Proc. Int'l Workshop Software Process and Software Environment, ACM Press, 1985; также в ACM Software Eng. Примечания, август 1986 г., стр. 22-42.
Эти понятия обычно плохо объяснены.
Инкрементное является свойством рабочих продуктов (документов, моделей, исходного кода и т. Д.), И это означает, что они создаются постепенно, а не за один раз. Например, вы создаете первую версию модели вашего класса во время анализа требований, затем увеличиваете ее после моделирования пользовательского интерфейса, а затем даже расширяете ее во время детального проектирования.
Эволюционный - это свойство результатов, то есть рабочих продуктов, которые доставляются пользователям, и в этом отношении это особый вид "дополнительных". Это означает, что все, что доставлено, доставляется как можно раньше в первоначальной форме, не полностью функционально, а затем повторно доставляется каждый раз, каждый раз с большей и большей функциональностью. Это часто подразумевает итеративный жизненный цикл.
[ Итеративный жизненный цикл, но путь, относится к задачам, которые вы выполняете (в отличие от "инкрементного", который относится к продуктам; это представление, принятое SEMAT), и это означает, что вы выполняете задачи одного и того же печатать снова и снова. Например, в итеративном жизненном цикле вы будете заниматься дизайном, программированием, модульным тестированием, выпуском и повторением одних и тех же вещей снова и снова. Обратите внимание, что итеративный и инкрементный не подразумевают друг друга; возможна любая комбинация обоих.]
Спиральная модель для жизненных циклов - это модель, предложенная Барри Бёмом, которая сочетает в себе аспекты водопада с инновационными достижениями, такими как итеративный подход и встроенный контроль качества.
Понятия "рабочий продукт", "задача", "жизненный цикл" и т. Д. См. В ИСО / МЭК 24744.
Надеюсь это поможет.
Это определение ipsis litteris из ISO 24748-1:2016 (Управление жизненным циклом системной и программной инженерии):
Существует множество различных стратегий развития, которые можно применять к системным и программным проектам. Три из этих стратегий кратко изложены ниже:
а) сквозной. Стратегия "однократного", также называемая "водопадом", состоит в том, чтобы выполнять процесс разработки один раз. Упрощенно: определить потребности пользователей, определить требования, спроектировать систему, внедрить систему, протестировать, исправить и доставить.
б) Инкрементный. "Инкрементная" стратегия определяет потребности пользователя и определяет системные требования, а затем выполняет остальную часть разработки в последовательности сборок. Первая сборка включает часть запланированных возможностей, следующая сборка добавляет больше возможностей и т. Д., Пока система не будет завершена.
в) эволюционный. "Эволюционная" стратегия также развивает систему в сборках, но отличается от инкрементальной стратегии признанием того, что потребность пользователя не полностью понята, и все требования не могут быть определены заранее. В этой стратегии потребности пользователей и системные требования частично определяются заранее, а затем уточняются в каждой последующей сборке.
Надеюсь это поможет. Tati