11 января 2011 в 19:38

Модели жизненного цикла программного обеспечения из песочницы

Здравствуйте, уважаемые хабровчане! Думаю будет кому-то интересно вспомнить какие модели разработки, внедрения и использования программного обеспечения существовали ранее, какие модели в основном используются сейчас, зачем и что это собственно такое. В этом и будет заключаться моя небольшая тема.

Собственно, что же такое жизненный цикл программного обеспечения — ряд событий, происходящих с системой в процессе ее создания и дальнейшего использования. Говоря другими словами, это время от начального момента создания какого либо программного продукта, до конца его разработки и внедрения. Жизненный цикл программного обеспечения можно представить в виде моделей.

Модель жизненного цикла программного обеспечения — структура, содержащая процессы действия и задачи, которые осуществляются в ходе разработки, использования и сопровождения программного продукта.
Эти модели можно разделить на 3 основных группы:
  1. Инженерный подход
  2. С учетом специфики задачи
  3. Современные технологии быстрой разработки
Теперь рассмотрим непосредственно существующие модели (подклассы) и оценим их преимущества и недостатки.

Модель кодирования и устранения ошибок


Совершенно простая модель, характерная для студентов ВУЗов. Именно по этой модели большинство студентов разрабатывают, ну скажем лабораторные работы.
Данная модель имеет следующий алгоритм:
  1. Постановка задачи
  2. Выполнение
  3. Проверка результата
  4. При необходимости переход к первому пункту
Модель также ужасно устаревшая. Характерна для 1960-1970 гг., по-этому преимуществ перед следующими моделями в нашем обзоре практически не имеет, а недостатки на лицо. Относится к первой группе моделей.

Каскадная модель жизненного цикла программного обеспечения (водопад)


Алгоритм данного метода, который я привожу на схеме, имеет ряд преимуществ перед алгоритмом предыдущей модели, но также имеет и ряд весомых недостатков.
Алгоритм каскадной модели

Преимущества:
  • Последовательное выполнение этапов проекта в строгом фиксированном порядке
  • Позволяет оценивать качество продукта на каждом этапе
Недостатки:
  • Отсутствие обратных связей между этапами
  • Не соответствует реальным условиям разработки программного продукта
Относится к первой группе моделей.

Каскадная модель с промежуточным контролем (водоворот)


Данная модель является почти эквивалентной по алгоритму предыдущей модели, однако при этом имеет обратные связи с каждым этапом жизненного цикла, при этом порождает очень весомый недостаток: 10-ти кратное увеличение затрат на разработку. Относится к первой группе моделей.

V модель (разработка через тестирование)


Данная модель имеет более приближенный к современным методам алгоритм, однако все еще имеет ряд недостатков. Является одной из основных практик экстремального программирования.

image

Модель на основе разработки прототипа


Данная модель основывается на разработки прототипов и прототипирования продукта.
Прототипирование используется на ранних стадиях жизненного цикла программного обеспечения:
  1. Прояснить не ясные требования (прототип UI)
  2. Выбрать одно из ряда концептуальных решений (реализация сцинариев)
  3. Проанализировать осуществимость проекта
Классификация протопипов:
  1. Горизонтальные и вертикальные
  2. Одноразовые и эволюционные
  3. бумажные и раскадровки
Горизонтальные прототипы — моделирует исключительно UI не затрагивая логику обработки и базу данных.
Вертикальные прототипы — проверка архитектурных решений.
Одноразовые прототипы — для быстрой разработки.
Эволюционные прототипы — первое приближение эволюционной системы.

Модель принадлежит второй группе.

Спиральная модель жизненного цикла программного обеспечения


Спиральная модель представляет собой процесс разработки программного обеспечения, сочетающий в себе как проектирование, так и постадийное прототипирование с целью сочетания преимуществ восходящей и нисходящей концепции.

image

Преимущества:
  • Быстрое получение результата
  • Повышение конкурентоспособности
  • Изменяющиеся требования — не проблема
Недостатки:
  • Отсутствие регламентации стадий
Третьей группе принадлежат такие модели как экстремальное программирование (XP), SCRUM, инкриментальная модель (RUP), но о них я бы хотел рассказать в отдельном топике.

Большое спасибо за внимание!
Igor Mats @IgorMats
карма
35,2
рейтинг 0,0
Самое читаемое Разработка

Комментарии (12)

  • +4
    • 0
      Категорически нет. Разве что схемы — да, признаюсь. Жаль что нет времени представить свои, я бы заключил в них свой смысл :(
  • +4
    Мертвая фигня из устаревших учебников не представляющая практической ценности.
    • +2
      Да, я понимаю, что это устаревшие решения, но я посчитал что кому-нибудь, как собственно и мне, все таки будет интересно «Как это было» и эволюционировало. Кто-то одобрил, поставив плюсик, значит я не зря это сделал, мне очень приятно что кто-то оценил мой первый пост) Спасибо большое)
    • 0
      +10000
      Мы это в университете по каким-то древним учебникам проходили. Вот если бы автор написал про RUP, Scrum было бы на порядок интеерснее. Хотя сама статья по сути никакая — схема и пару строк.
      • 0
        Ну мы же учим историю? Про RUP и Scrum я обязательно напишу, но теперь постараюсь сделать это намного интереснее, учтя все ваши замечания. Это прибавило мне опыта и дало толчок вперед. Спасибо)
  • 0
    Вопрос к автору топика, чем спиральная модель отличается от модели водопада?
    Или это синонимы?
    • 0
      Нет, как же! Спиральная модель и модель «водопада» это разные модели, так же принадлежащие к разным группам классификации моделей жизненного цикла программного обеспечения. Каскадная модель (водопад) имеет ряд недостатков по сравнению со спиральной, одной из которых является отсутствие связей между различными этапами планирования, разработки и внедрения программного продукта, что в свою очередь частично было изменено с появлением каскадной модели с промежуточным контролем (водоворот), однако и при этом породило существенный недостаток такой как существенное повышение затрат на разработку. Все это было организовано лучше в спиральной модели с учетом версий.
  • +1
    Инновации так и хлещут… Автор наверное гордится своей эрудицией.

    4 года назад Я преподавал это студентам. Картинки до боли знакомые.
    • +1
      Я тоже всего лишь студент) Спасибо большое, что Вы преподавали такие интересные вещи. У нас таких преподавателей, к сожалению, не много.
  • 0
    Всё что здесь описано — это далеко не жизненный цикл программного обеспечения — это описание моделей работы с процессами по созданию программного обеспечения. При этом процесы которые идут после ввода ПО в эксплуатацию обычно обзывают «Эксплуатация» или «Поддержка» и никак не детализируют, а это далеко не тривиальные процессы, внутри них тоже могут быть вотерфольные модели или модели построенные на цикле Дёминга (это различные исправления, патчи, апдейты и т.д.)

    Сам по себе жизненный цикл — это период времени, который начинается с момента принятия решения о необходимости создания чего либо и заканчивается в момент полного изъятия этого «чего либо» из эксплуатации. К сожалению об этом часто забывают и может получиться так, что жизненный цикл ПО таков, что при подготовленном плане продаж (и полном его соблюдении) продукт становится ненужным ещё до того как окупил затраты на разработку, что делает неуспешным сам проект разработки и как результат сам продукт (с точки зрения компании разработчика)
  • 0
    Сейчас в МИФИ изучается на первом курсе, лекция номер 1. Тратиться на все это дело минут 5, так что смысл поста отсутствует.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.