Каскадная+модель

==== Отличительным свойством каскадной модели можно назвать то, что она представ­ляет собой формальный метод, разновидность разработки "сверху вниз", она состоит из независимых фаз, выполняемых последовательно, и подвержена частому обзору. ====

Приведенная ниже характеристика представляет собой краткое описание каждой фазы каскадной модели (включая фазы интеграции):

 * ====** исследование концепции ** — происходит исследование требований на системном уровне с целью определения возможности реализации концепции; ====
 * ====** процесс системного распределения ** — может быть пропущен для систем по раз­работке исключительно ПО. Для систем, в которых необходима разработка как аппаратного, так и программного обеспечения, требуемые функции применяются к ПО и оборудованию в соответствии с общей архитектурой системы; ====
 * ====** процесс определения требований ** — определяются программные требования для информационной предметной области системы, предназначение, линии поведения, производительность и интерфейсы. (В случае необходимости в процесс также включено функциональное распределение системных требований к аппа­ратному и программному обеспечению.); ====
 * ====** процесс разработки проекта ** — разрабатывается и формулируется логически по­следовательная техническая характеристика программной системы, включая структуры данных, архитектуру ПО, интерфейсные представления и процессуаль­ную (алгоритмическую) детализацию; ====
 * ====** процесс реализации ** — в результате его выполнения эскизное описание ПО пре­вращается в полноценный программный продукт. При этом создается исходный код, база данных и документация, которые лежат в основе физического преоб­разования проекта. Если программный продукт представляет собой приобре­тенный пакет прикладных программ, основными действиями по его реализации будут являться установка и тестирование пакета программ. Если программный продукт разрабатывается на заказ, основными действиями являются програм­мирование и код-тестирование; ====


 * ====**процесс установки** - включает установку ПО, его проверку и официальную приемку заказчиком для операционной среды ====
 * ====** процесс эксплуатации и поддержки ** - подразумевает запуск пользователем системы и текущее обеспечение, включая предоставление технической помощи, обсуждение возникших вопросов с пользователем, регистрацию запросов пользователя на модернизацию и внесение изменений, а также корректирование или устранение ошибок; ====
 * ====** процесс сопровождения— ** связан с разрешением программных ошибок, неис­правностей, сбоев, модернизацией и внесением изменений, генерируемых про­цессом поддержки. Состоит из итераций разработки и предполагает обратную связь по предоставлению информации об аномалиях; ====
 * ====** процесс вывода из эксплуатации ** — вывод существующей системы из ее активного использования либо путем прекращения ее работы, либо благодаря ее замене но­вой системой или модернизированной версией существующей системы; ====
 * ====** интегральные задачи ** — включают начало работы над проектом, мониторинг про­екта и его управление, управление качеством, верификацию и аттестацию, ме­неджмент конфигурации, разработку документации и профессиональную подго­товку на протяжении всего жизненного цикла. ====

====Нетрудно заметить, что каскадная модель имеет множество преимуществ, если ее использовать в проекте, для которого она достаточно приемлема. Ниже перечислены эти **преимущества**: ====
 * ====модель хорошо известна потребителям, не имеющим отношения к разработке и экс­плуатации программ, и конечным пользователям (она часто используется другими организациями для отслеживания проектов, не связанных с разработкой ПО); ====
 * ====она упорядочение справляется со сложностями и хорошо срабатывает для тех проектов, которые достаточно понятны, но все же трудно разрешимы; ====
 * ====она весьма доступна для понимания, так как преследуется простая цель — выпол­нить необходимые действия; ====
 * ====она проста и удобна в применении, так как процесс разработки выполняется поэтапно; ====
 * ====ее структурой может руководствоваться даже слабо подготовленный в техниче­ском плане или неопытный персонал; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">она отличается стабильностью требований; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">она представляет собой шаблон, в который можно поместить методы для выпол­нения анализа, проектирования, кодирования, тестирования и обеспечения; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">она хорошо срабатывает тогда, когда требования к качеству доминируют над тре­бованиями к затратам и графику выполнения проекта; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">она способствует осуществлению строгого контроля менеджмента проекта; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">при правильном использовании модели дефекты можно обнаружить на более ран­них этапах, когда их устранение еще не требует относительно больших затрат; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">она облегчает работу менеджеру проекта по составлению плана и Комплектации команды разработчиков; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">она позволяет участникам проекта, завершившим действия на выполняемой ими фазе, принять участие в реализации других проектов; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">она определяет процедуры по контролю за качеством. Каждые полученные дан­ные подвергаются обзору. Такая процедура используется командой разработчиков для определения качества системы; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">стадии модели довольно хорошо определены и понятны; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">ход выполнения проекта легко проследить с помощью использования временной шкалы (или диаграммы Гантта), поскольку момент завершения каждой фазы ис­пользуется в качестве стадии. ====

Но при использовании каскадной модели для проекта, который трудно назвать подходящим для нее, проявляются следующими **недостатки**:

 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">в основе модели лежит последовательная линейная структура, в результате чего каждая попытка вернуться на одну или две фазы назад, чтобы исправить какую-либо проблему или недостаток, приведет к значительному увеличению затрат и сбою в графике; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">она не может предотвратить возникновение итераций между фазами, которые так часто встречаются при разработке ПО, поскольку сама модель создается согласно стандартному циклу аппаратного инжиниринга; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">она не отображает основное свойство разработки ПО, направленное на разреше­ние задач. Отдельные фазы строго связаны с определенными действиями, что отличается от реальной работы персонала или коллективов; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">она может создать ошибочное впечатление о работе над проектом. Выражение типа "35 процентов выполнено" — не несет никакого смысла и не является показа­телем для менеджера проекта; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">интеграция всех полученных результатов происходит внезапно в завершающей стадии работы модели. В результате такого единичного прохода через весь про­цесс, связанные с интегрированием проблемы, как правило, дают о себе знать слишком поздно. Следовательно, проявятся не обнаруженные ранее ошибки или конструктивные недостатки, повысить степень риска при небольшом задаче вре­мени на восстановление продукта; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">у клиента едва ли есть возможность ознакомиться с системой заранее, это проис­ходит лишь в самом конце жизненного цикла. Клиент не имеет возможности вос­пользоваться доступными промежуточными результатами, и отзывы пользовате­лей нельзя передать обратно разработчикам. Поскольку готовый продукт не дос­тупен вплоть до окончания процесса, пользователь принимает участие в процессе разработки только в самом начале — при сборе требований, и в конце — во время приемочных испытаний; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">пользователи не могут убедиться в качестве разработанного продукта до оконча­ния всего процесса разработки. Они не имеют возможности оценить качество, ес­ли нельзя увидеть готовый продукт разработки; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">у пользователя нет возможности постепенно привыкнуть к системе. Процесс обуче­ния происходит в конце жизненного цикла, когда ПО уже запущено в эксплуатацию; ====
 * ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; margin-top: 0cm; text-align: justify;">проект можно выполнить, применив упорядоченную каскадную модель, и привес­ти его в соответствие с письменными требованиями, что, однако, не гарантирует его запуска в эксплуатацию; ====
 * ==== каждая фаза является предпосылкой для выполнения последующих действий, что превращает такой метод в рискованный выбор для систем, не имеющих аналогов, так как он не поддается гибкому моделированию; ====
 * ==== для каждой фазы создаются результативные данные, которые по его завершению считаются замороженными. Это означает, что они не должны изменяться на сле­дующих этапах жизненного цикла продукта. Если элемент результативных данных какого-либо этапа изменяется (что встречается весьма часто), на проект окажет негативное влияние изменение графика, поскольку ни модель, ни план не были рассчитаны на внесение и разрешение изменения на более поздних этапах жиз­ненного цикла; ====
 * ==== все требования должны быть известны в начале жизненного цикла, но клиенты редко могут сформулировать все четко заданные требования на этот момент раз­работки. Модель не рассчитана на динамические изменения в требованиях на про­тяжении всего жизненного цикла, так как получаемые данные "замораживаются". Использование модели может повлечь за собой значительные затраты, если тре­бования в недостаточной мере известны или подвержены динамическим измене­ниям во время протекания жизненного цикла; ====
 * ==== возникает необходимость в жестком управлении и контроле, поскольку в модели не предусмотрена возможность модификации требований; ====
 * ==== модель основана на документации, а значит, количество документов может быть избыточным; ====
 * ==== весь программный продукт разрабатывается за один раз. Нет возможности раз­бить систему на части. В результате взятых разработчиками обязательств разрабо­тать целую систему за один раз могут возникнуть проблемы с финансированием проекта. Происходит распределение больших денежных средств, а сама модель едва ли позволяет повторно распределить средства, не разрушив при этом проект в процессе его выполнения; ====
 * ==== отсутствует возможность учесть переделку и итерации за рамками проекта. ====

====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; text-align: justify; text-indent: 27pt;">Из-за недостатков каскадной модели ее применение необходимо ограничить ситуа­циями, в которых требования и их реализация максимально четко определены и понятны. ==== ====<span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; text-align: justify; text-indent: 27pt;">Каскадная модель хорошо функционирует при ее применении в циклах разработ­ки программного продукта, в которых используется неизменяемое определение про­дукта и вполне понятные технические методики. ==== ====Если компания имеет опыт построения определенного рода системы — автомати­зированного бухгалтерского учета, начисления зарплаты, ревизии, компиляции, про­изводства, — тогда в проекте, ориентированном на построение еще одного продукта такого же типа, возможно, даже основанного на существующих разработках, можно эффективно использовать каскадную модель. Другим примером надлежащего приме­нения модели может служить создание и выпуск новой версии уже существующего продукта, если вносимые изменения вполне определены и управляемы. Перенос уже существующего продукта на новую платформу часто приводят в качестве идеального примера использования каскадной модели в проекте.==== ==== При всей справедливости критики этой модели все же следует признать, что моди­фицированная версия каскадной модели является в значительной степени менее жест­кой, чем ее первоначальная форма. Здесь включаются итерации между фазами, парал­лельные фазы и менеджмент изменений. Обратные стрелки предполагают возмож­ность существования итераций между действиями в рамках фаз. Чтобы отобразить согласованность между этапами, их объединяют прямоугольниками или под прямо­угольниками перечисляют выполняемые на данных этапах действия, чтобы продемон­стрировать согласованность между ними. Несмотря на то, что модифицированная кас­кадная модель является значительно более гибкой, чем классическая модель, она все же не является наилучшим выбором для выполнения проектов по ускоренной разработке. ==== <span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; display: block; text-align: justify; text-indent: 27pt;">Каскадные модели на протяжении всего времени их существования используются при выполнении больших проектов, в которых задействовано несколько больших команд разработчиков.