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