Министерство образования РФ
Воронежский Государственный Университет
Факультет Компьютерных Наук
Сравнительный анализ каскадной и спиральной моделей разработки программного обеспечения
Выполнил : Шумлянский Михаил Сергеевич
Воронеж 2003
Введение ………………………………………………………………………………………………..2
Водопадная модель процесса разработки ……………………………………………………………..3
Спиральная модель процесса разработки ……………………………………………………………..4
Итерации по спирали ………………………………………………………………………………4
Общие характеристики этапов разработки программного обеспечения …………………………..5
Этап планирования и анализа требований …………………………………………….5
Этап разработки ………………………………………………………………………………6
Реализация ………………….…………………………………………………………………...10
Внедрение ………………………………………………………………………………………10
Сопровождение и Эксплуатация ……………………………………………………………………..10
Заключение ………………………………………………………………………………………………..11
Список источников ……………………………………………………………………………………….11
Введение
В настоящее время просматривается тенденция в сторону увеличения объема работ, связанных с разработкой программного обеспечения по сравнению с работами, выполнение которых позволит получить аппаратные средства ЭВМ.
В основе деятельности по созданию и использованию программного обеспечения лежит понятие жизненного цикла. В общем случае различают понятия жизненного цикла программного обеспечения и технологического процесса его разработки. Более четко различия между данными понятиями просматривается в отношении программных средств. Жизненный цикл является моделью создания и использования программного обеспечения, отражающей его различные состояния, начиная с момента возникновения необходимости в данном ПО и заканчивая моментом его полного выхода из употребления у пользователей.
Существует несколько моделей жизненного цикла. Традиционно выделяют следующие основные этапы жизненного цикла :
· стратегическое планирование; анализ требований;
· проектирование (предварительное и детальное);
· кодирование (программирование);
· тестирование и отладка;
· эксплуатация и сопровождение.
Под моделью обычно понимается структура, определяющая последовательность выполнения и взаимосвязи процессов, действий и задач на протяжении жизненного цикла. Из существующих в настоящее время моделей наиболее распространены две: каскадная и спиральная.
Каждому этапу соответствуют определенный результат и набор документации, являющейся исходными данными для следующего этапа. В заключение каждого этапа производится верификация документов и решений с целью проверки их соответствия первоначальным требованиям заказчика.
Водопадная модель процесса разработки
Рис 1.1. "Водопадный" процесс
Применение "водопадного" процесса эффективно для систем, для которых в самом начале разработки можно достаточно точно и полно сформулировать все требования, с тем чтобы предоставить разработчикам свободу реализовать их как можно лучше с технической точки зрения. В эту категорию попадают сложные расчетные системы, системы реального времени и другие подобные задачи. Однако, в процессе использования этого подхода обнаружился ряд его недостатков, вызванных прежде всего тем, что реальный процесс создания программных систем никогда полностью не укладывался в такую жесткую схему. В процессе создания ПО постоянно возникала потребность в возврате к предыдущим этапам и уточнении или пересмотре ранее принятых решений. В результате реальный процесс создания систем принимал следующий вид (рис. 1.2):
Рис 1.2. Реальный процесс "водопадной" схемы
Данный процесс обладает рядом существенных недостатков, основным из которых является, пожалуй, то, что требования к создаваемой системе "заморожены" в виде технического задания на все время ее создания. Таким образом, пользователи могут внести свои замечания только после того, как работа над системой будет полностью завершена. В случае неточного изложения требований или их изменения в течение длительного периода создания системы, пользователи получают систему, не удовлетворяющую их потребностям.
Спиральная модель процесса разработки
Рис 1.3. Спиральная модель
Итерации по спирали
Спиральная модель разработки ПО, в тех или иных версиях используемая во множестве конкретных прикладных методик, построена на следующем шаблоне. Прежде всего в ходе общения с заказчиком определяется набор наиболее важных и критичных возможностей будущей системы. Далее совместными усилиями определяются желаемые сроки для реализации этой базовой функциональности. Формируется план, начинаются работы и отслеживается их выполнение .
В основу спиральной модели заложены две посылки. Многочисленными исследованиями подтверждено, что и заказчик и исполнитель обычно слишком оптимистично относятся к срокам и бюджету, даже при использовании хороших методик оценки объема работ (по функциональным точкам и т. п.). Поэтому результаты таких оценок предлагается увеличивать (ухудшать) достаточно серьезно - примерно на 50%. Кроме того, заказчик обычно слабо представляет архитектуру будущей системы, поэтому ее следует проектировать, закладываясь на открытые технологии и максимально гибкие возможности расширения и наращивания функциональности. Уточнение конкретных требований выполняется итерационно, при этом на каждом витке проектной спирали создается все более точная версия, соответствующая пожеланиям заказчика.
Шесть шагов спиральной модели
1. В процессе общения с заказчиком формируется общее видение проекта, а также описываются функциональные возможности, которые необходимо реализовать в определенные сроки с нужным качеством.
2. Расставляются приоритеты, задающие порядок реализации основных функциональных возможностей.
3. Согласовываются временные рамки проекта. Часто для этого применяются методики стоимостного прогнозирования . Далее исполнитель решает, сколько функциональных возможностей в соответствии с их приоритетами удастся реализовать в оговоренный срок.
4. На данном этапе определяются архитектура и ядро будущей системы. Это наиболее ответственный момент, так как здесь необходимо учесть пока еще не детализированные полностью требования к проекту - а они вполне могут быть противоречивыми.
Ядро должно представлять собой законченный работающий вариант системы с небольшим набором необходимых возможностей. Не исключено, что заказчик видит архитектуру как жесткую конструкцию и не предусматривает средств ее расширения для обеспечения дополнительной или менее приоритетной функциональности. Поэтому далее определяется способ реализации требований с более низкими приоритетами - это можно делать, например, с помощью встроенного языка сценариев или подключением динамических библиотек, для чего необходимо определить внутренние интерфейсы ядра.
Этот шаг выполняется, как правило, в два и большее число итерационных циклов.
5. Готовится план работ. Он ориентирован на сроки, определенные на третьем этапе, и нацелен на скорейшую реализацию ядра системы. Взаимодействуя с работающим прототипом, заказчик быстрее и точнее вырабатывает и уточняет дальнейшие требования и корректирует приоритеты.
6. Разработка системы в соответствии с планом.
Для этого этапа характерны три типичных класса проблем:
- изменения в требованиях к проекту;
- изменения параметров самого проекта (сроков, бюджета, качества);
- временные задержки, связанные с текущими вопросами (техникой, персоналом).
В ходе их решения приходится избавляться от задач с меньшими приоритетами и, возможно, изменять критический путь проекта. Все изменения вносятся с учетом основного критерия - сохранения сроков проекта.
Данный подход, конечно, не гарантирует соблюдения сроков - они могут быть сорваны, например, в случае резкого сокращения бюджета или серьезного изменения требований.