
3_Вимоги_1 / 09.10.12 / 2_Модели ЖЦ / Add / 1_Модели разработки программного обеспечения
.docЦикл разработки программного обеспечения
Существует несколько моделей разработки (жизненного цикла) программного обеспечения. Но для начала давайте определимся с тем, что же это такое - жизненный цикл. В это понятие включаются все этапы, которые проходит программный продукт. Первым из которых будет постановка задачи, а последним - внедрение. Ознакомиться с этапами жизненного цикла программного обеспечения можно на примере существующих моделей (концепций) разработки по.
Модель жизненного цикла программного обеспечения — структура, содержащая процессы действия и задачи, которые осуществляются в ходе разработки, использования и сопровождения программного продукта.На данный момент существует три основные группы, на которые условно можно разбить все известные модели разработки программного обеспечения:
-
Инженерный подход
-
С учетом специфики задачи
-
Современные технологии быстрой разработки
Теперь рассмотрим непосредственно существующие модели (подклассы) и оценим их преимущества и недостатки.
Давайте, более подробно рассмотрим подклассы моделей.
Модель кодирования и устранения ошибок
Самая простая из моделей очень часто применяемая студентами в учебном процессе.Алгоритм этой модели состоит из следующих шагов:
-
Шаг 1: постановка задачи
-
Шаг 2: создание программы
-
Шаг 3: тестирование
-
Шаг 4: анализ результата тестирования и возможный переход к шагу 1
Эта модель относится к первой группе и совсем не актуальна при профессиональной разработке программного обеспечения. По таким алгоритмам работали программисты 50-60 лет назад. Излишняя простота в данном случае не позволяет конкурировать с другими существующими моделями. Недостатки
"Водопад" или каскадная модель жизненного цикла программного обеспечения
Это модель жизненного цикла программного обеспечения тоже относится к первой группе.Алгоритм данного метода, который я привожу на схеме, имеет ряд преимуществ перед алгоритмом предыдущей модели, но также имеет и ряд весомых недостатков.
Алгоритм каскадной модели
Преимущества:
-
Последовательное выполнение этапов проекта в строгом фиксированном порядке
-
Позволяет оценивать качество продукта на каждом этапе
Недостатки:
-
Отсутствие обратных связей между этапами
-
Не соответствует реальным условиям разработки программного продукта
-
Относится к первой группе моделей.
"Водоворот" или каскадная модель с промежуточным контролем
В этой модели предусмотрен промежуточный контроль за счет обратных связей. Но это достоинство порождает и недостатки. Затраты на реализацию проекта при таком подходе возрастают практически в 10 раз. Эта модель, как вы уже поняли, является незначительной модификацией предыдущей и относится к первой группе.
При реальной работе в соответствии с моделью, допускающей движение только в одну сторону, обычно возникают проблемы при обнаружении недоработок и ошибок, сделанных на ранних этапах. Но еще более тяжело иметь дело с изменениями окружения, в котором разрабатывается ПО (это могут быть изменения требований, смена подрядчиков, изменения политик разрабатывающей или эксплуатирующей организации, изменения отраслевых стандартов, появление конкурирующих продуктов и пр.).
Итеративная модель
Итеративные или инкрементальные модели (известно несколько таких моделей) предполагают разбиение создаваемой системы на набор кусков, которые разрабатываются с помощью нескольких последовательных проходов всех работ или их части.
Каскадная модель с возможностью возвращения на предшествующий шаг при необходимости пересмотреть его результаты, становится итеративной.
Итеративный процесс предполагает, что разные виды деятельности не привязаны намертво к определенным этапам разработки, а выполняются по мере необходимости, иногда повторяются, до тех пор, пока не будет получен нужный результат.
Вместе с гибкостью и возможностью быстро реагировать на изменения, итеративные модели привносят дополнительные сложности в управление проектом и отслеживание его хода. При использовании итеративного подхода значительно сложнее становится адекватно оценить текущее состояние проекта и спланировать долгосрочное развитие событий, а также предсказать сроки и ресурсы, необходимые для обеспечения определенного качества результата.
V модель - разработка через тестирование
Данная модель имеет более приближенный к современным методам алгоритм, однако все еще имеет ряд недостатков.Является одной из основных практик экстремального программирования и предполагает регулярное тестирование продукта во время разработки.
Модель на основе разработки прототипа
Данная модель основывается на разработки прототипов и прототипирования продукта и относится ко второй группе.
Прототипирование используется на ранних стадиях жизненного цикла программного обеспечения:
-
Прояснить не ясные требования (прототип UI)
-
Выбрать одно из ряда концептуальных решений (реализация сцинариев)
-
Проанализировать осуществимость проекта
Классификация протопипов:
-
Горизонтальные прототипы — моделирует исключительно UI не затрагивая логику обработки и базу данных.
-
Вертикальные прототипы — проверка архитектурных решений.
-
Одноразовые прототипы — для быстрой разработки.
-
Эволюционные прототипы — первое приближение эволюционной системы.
Спиральная модель жизненного цикла программного обеспечения
Данная модель прекрасно сочетает в себе постадийное прототипирование и проектирование. И из восходящей и нисходящей концепций в эту модель было взято все лучшее.
Преимущества модели:
-
Результат достигается в кратчайшие сроки.
-
Конкурентоспособность достаточно высокая.
-
При изменении требований, не придется начинать все с "нуля".
Но у этой модели есть один существенный недостаток: невозможность регламентирования стадий выполнения.
Отдельного рассказа заслуживают модели экстремального программирования (ХР), SCRUM, инкриментальная модель (RUP). Это все модели, относятся к третьей группе, но для их анализ будет проведен в отдельной статье.
И в заключении
Несмотря на большой прогресс в области разработки программного обеспечения много проектов в наше время разрабатывается и будет разрабатываться по такой схеме: