Konspekt


Разработка программного обеспечения

Этапы разработки ПО

1.Описание потребностей и их анализ

2.Дизайн программного продукта

3.Разработка

4.Проверка

5.Выпуск и внедрение продукта

6.Обслуживание продукта

Модели жизненного цикла ПО

Waterfall (каскадная модель):

Описание:

Одна из самых первых методологий для разработки ПО. Как может быть понятно из названия, эта модель предполагает постепенное перемещение по этапам жизненного цикла. Сначала проводится анализ и составление задачи, затем проектирование, затем программирование и так далее. Каждый следующий этап стартует только тогда, когда закончен предыдущий. В этом кроется главное преимущество «водопада» и главный недостаток.

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

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

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

Плюсы:

  • стабильность требований в течение всего жизненного цикла разработки;
  • возможность последовательного устранения возникающих сложностей;
  • определенность и понятность шагов модели и простота ее применения;
  • упрощение возможности осуществления планирования, контроля и управления проектом;
  • доступность для понимания заказчиками;
  • эффективность для проектов с четкими и понятными, но трудно реализуемыми требованиями;
  • эффективность для проектов с высокими требованиями к качеству при отсутствии жестких ограничений затрат и графика работ.

Минусы:

  • сложность четкого формулирования требований в начале жизненного цикла и невозможность их динамического изменения на его протяжении;
  • последовательность линейной структуры процесса разработки, в результате возврат к предыдущим шагам для решения возникающих проблем приводит к увеличению затрат и нарушению графика работ;
  • непригодность промежуточного продукта для использования;
  • невозможность гибкого моделирования систем, не имеющих аналогов;
  • позднее обнаружение проблем, связанных со сборкой, в связи с одновременной интеграцией всех результатов в конце разработки;
  • недостаточное участие пользователя в создании системы – только в самом начале (при разработке требований) и в конце (во время приемочных испытаний);
  • невозможность предварительной оценки качества системы пользователем;
  • проблемность финансирования проекта, связанная со сложностью единовременного распределения больших денежных средств.

Итерационная, спиральная и инкрементная модели:

Описание:

Инкрементная модель в целом следует той же структуре, что и каскадная, однако, как можно понять из названия, все этапы проходят несколько раз в течение жизненного цикла ПО. Получается своеобразный «мультиводопад».

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

К примеру, создатели задумывали приложение для обмена фото, музыкой и видео, но чтобы оно быстрее добралось до пользователей, реализовали только фотообмен. Затем начинается разработка модуля для обмена музыкой и весь процесс повторяется. Затем цикл проходит в третий раз, когда создается модуль обмена видео.

Эту же модель можно применять для того, чтобы «забросить удочку» и посмотреть, понравится ли пользователям новая идея. К примеру, социальная сеть выпускается с возможностью общаться только в текстовом формате. Если она набирает популярность, инкрементируется следующая возможность — отправлять голосовые сообщения и так далее.

Плюсы:

  • Есть возможность раннего выхода на рынок, чтобы посмотреть реакцию пользователей.
  • Базовая версия ПО стоит дешевле. Модули можно доделывать по мере появления денег, либо не делать вовсе за ненадобностью. Самые рискованные идеи можно отложить на потом.
  • Исправление ошибок обходится дешевле

Минусы:

  • Требования к проекту на каждом этапе должны быть четко определены и понятны. Необходим хороший менеджмент.
  • Приложение может выйти слишком «сырым» и не дожить до появления всех функций.

Спиральная и инкрементная модели:

Описание:

Эта модель — также «родственница» инкрементной и итеративной моделей, но с большим упором на анализ рисков и оценку выгоды проекта. Разработка идет по такому же принципу: реализация части проекта и вывод продукта на рынок поэтапно. Единственное отличие — разработка каждой новой версии продукта начинается только в том случае, если заказчик уверен в ее необходимости, востребованности и потенциальной выгоде.

Таким образом, эта модель подходит для тех, чей бизнес зависит от финансового успеха продукта , либо для очень объемных, сложных и дорогих проектов, где нужен постоянный контроль рисков.

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

Плюсы:

  • спиральная модель разрешает пользователям “увидеть” систему на ранних этапах;
  • эта модель разрешает пользователям активно принимать участие при планирова­нии, анализе рисков, разработке, а также при выполнении оценочных действий;
  • в модели предусмотрена возможность гибкого проектирования
  • реализованы преимущества инкрементной модели, а именно выпуск инкрементов,
  • здесь не ставится цель выполнить невозможное — довести конструкцию до совершенства;
  • обратная связь по направлению от пользователей к разработчикам выполняется с высокой частотой и на ранних этапах модели, что обеспечивает создание нужного продукта высокого качества;
  • повышается продуктивность благодаря использованию пригодных для повторного использования свойств;
  • повышается вероятность предсказуемого поведения системы с помощью уточнения поставленных целей;
  • при использовании спиральной модели не нужно распределять заранее все необходимые для выполнения проекта финансовые ресурсы;

Минусы:

•если проект имеет низкую степень риска или небольшие размеры, модель может оказаться дорогостоящей. Оценка рисков после прохождения каждой спирали связана с большими затратами;

•модель имеет усложненную структуру, поэтому может быть затруднено ее применение разработчиками, менеджерами и заказчиками;

•серьезная нужда в высокопрофессиональных знаниях для оценки рисков;

•спираль может продолжаться до бесконечности, поскольку каждая ответная реак­ция заказчика на созданную версию может порождать новый цикл, что отдаляет окончание работы над проектом (принятие общего решения о прекращении про­цесса разработки);

•большое количество промежуточных стадий может привести к необходимости в обработке внутренней дополнительной и внешней документации;

•использование модели может оказаться дорогостоящим и даже недопустимым по средствам, так как время, затраченное на планирование, повторное определение целей, выполнение анализа рисков и прототипирование, может быть чрезмерным;

• при выполнении действий на этапе вне процесса разработки возникает необходи­мость в переназначении разработчиков;

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

Agile:

Описание:

На основе семейства итеративных моделей также был придуман сверхпопулярный ныне гибкий подход к разработке ПО — Agile. И это, скорее, действительно подход, а не отдельная методология, потому что внутри проекта, который ведется по Agile, на разных этапах могут применяться и каскадные, и итерационные модели.

В основе подхода стоит разбиение разработки на множество отдельных задач, которые разные специалисты могут выполнять практически независимо друг от друга. Ежедневно проходят встречи команды (Scrum), где обсуждается текущий прогресс. Разработка при этом делится на этапы — так называемые спринты (Sprint), в ходе которых команда должна достигнуть определенного результата.

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

Плюсы:

  • тестирование на ранних стадиях;
  • возможность оценки добавленного функционала “в действии”;
  • исследование пользовательского опыта на всех этапах;
  • возможность быстрой презентации на рынке “сырой”, но работающей версии.

Минусы:

  • отсутствие четкого плана развития проекта;
  • постоянная угроза переделывания большой части работы;
  • снижение качества продукта в угоду скорости и упрощения.