Print Friendly, PDF & Email

Жизненный цикл разработки ПО

У каждого программного обеспечения (ПО) есть свой жизненный цикл разработки (SDLC — Software Development Lifecycle). Модели жизненного цикла определяют методологии разработки ПО.

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

Давайте рассмотрим одну из таких моделей пока что без привязки к конкретным методологиям разработки. Любой продукт начинается с идеи, которая появляется у человека, у которого есть проблема или который знает о проблеме других людей и знает, как ее решить. Этот человек называется владельцем продукта (Product Owner), который может быть как внешним заказчиком так и внутренним сотрудником компании. Владелец продукта необходим для того, чтобы продукт мог развиваться и иметь шансы на успех.

Следующим этапом является анализ этой идеи. Идея может быть изначально довольно сырой, так как она например может быть не воплощена в жизнь из-за отсутствия необходимых технологий для ее реализации. Бизнес-аналитики (с точки зрения бизнеса) и системные аналитики (с точки зрения технической реализации) помогают провести такой анализ. Цель этих специалистов — выяснить у заказчика, что он действительно хочет получить на выходе, и дать ответ на вопрос «Что мы будем реализовывать?» и «Зачем мы это будем реализовывать?». Результатом этого этапа является документ, в котором описаны требования к системе (BRD — документ с бизнес-требованиями; SRS — спецификация требований к системе, или как у нас привыкли его называть — техническое задание, ТЗ).

Для того чтобы разработать хороший и качественный продукт, после этого этапа необходимо приступить к этапу «Архитектуры и дизайна». На этом этапе появляется системный архитектор, который занимается проектированием функционала будущего ПО. Исходя из требований, системный архитектор принимает решение о том, с помощью каких средств и как будет создаваться данное ПО. На этой стадии мы отвечаем на вопрос «Как мы будем реализовывать» и формируем техническую документацию (которая может быть представлена списком задач).

SRS это ориентир для разработчиков, чтобы предложить лучшую архитектуру для продукта. Обычно предлагается несколько подходов к проектированию архитектуры продукта. Все предложенные подходы документируются в спецификации DDS (Design Document Specification) и выбирается наилучший подход к проектированию. Данный подход очень четко определяет все архитектурные модули продукта, а также его связь с внешними и сторонними модулями.

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

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

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

Жизненный цикл продукта (пример)
Жизненный цикл продукта (пример)

Для чего нужна методология разработки ПО

Создание ПО требует огромных усилий команды разносторонних специалистов (если вы думали, что все делают программисты, то то это не так 🙂 ).

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

Методология разработки ПО — это система, которая определяет порядок и сроки выполнения задач внутри этапов жизненного цикла, методы оценки и контроля. Бюджет и сроки выполнения проекта и метод разработки связаны и зависят друг от друга.

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

Основные задачи методологии разработки ПО включают:

  1. Помощь в понимании, как реализовать идею и создать продукт, который будет полезен для бизнеса.
  2. Предоставление четкого представления о методах работы и плане действий, что снижает вероятность ошибок в процессе разработки.
  3. Экономия ресурсов на этапе разработки путем минимизации количества правок и ускорения процесса благодаря четкому плану действий.
  4. Распределение задач внутри команды в соответствии с выбранной методологией.
  5. Формирование последовательности действий и требований к продукту.

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

Waterfall

Waterfall (каскадная модель, или «водопад») возникла в в 1970-х годах (ее придумал Уинстон Ройс) и является наверное старейшей методологией.

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

Waterfall

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

  1. Определение требований (Requirements): На этом этапе определяются и документируются требования проекта.Он включает сбор и анализ требований от заказчика, определение функциональных и нефункциональных требований, а также разработку спецификаций проекта.
  2. Планирование (Planning): На этом этапе разрабатывается подробный план проекта, включающий определение ресурсов, распределение задач, установление сроков, составление бюджета и создание расписания проекта. План также включает определение критериев оценки выполнения проекта.
  3. Выполнение (Execution): На этом этапе происходит реализация плана, создание продукта или решения на основе определенных требований и плана. Он включает разработку, тестирование, интеграцию и документирование продукта.
  4. Проверка и контроль (Verification and Control): На этом этапе происходит проверка выполненной работы на соответствие требованиям и критериям качества. Если обнаруживаются дефекты или несоответствия, то они исправляются. Контроль также включает отслеживание прогресса проекта, сравнение фактического выполнения с планом и принятие корректирующих мер при необходимости.
  5. Завершение (Closure): На этом последнем этапе осуществляется окончательное закрытие проекта. Он включает оценку результатов проекта, подготовку окончательных отчетов, а также передачу продукта заказчику. Также может проводиться анализ проекта с целью выявления уроков и опыта, который можно применить в будущих проектах.
Waterfall - модель разработки ПО
Waterfall — модель разработки ПО

Пример из жизни, где может применяться модель Waterfall
Предположим, у вас есть цель — сдать выпускную работу в университете. Вы решаете использовать модель Waterfall в своем подходе к выполнению этой задачи.
  1. Определение требований: Вы начинаете с анализа требований вашей работы, таких как тема, структура, объем и требуемый уровень исследований.
  2. Планирование: Затем вы разрабатываете детальный план действий, где определяете все этапы и сроки, которые необходимо выполнить для успешного завершения работы. Вы составляете план написания, сдачи на рецензию, внесения исправлений и окончательной сдачи работы.
  3. Выполнение: Следующий этап — написание работы в соответствии с разработанным планом. Вы выполняете исследования, пишете разделы работы, проводите анализ и формулируете выводы.
  4. Проверка и корректировка: После завершения написания, вы ревизируете работу, проверяете ее на соответствие требованиям и вносите исправления, если необходимо.
  5. Завершение: В конечном итоге, после завершения всех этапов и внесения всех необходимых изменений, вы сдаете окончательную версию вашей выпускной работы и считаете ее завершенной.

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

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

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

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

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

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

V-образная модель была разработана Германией и США в конце 1980-х гг независимо друг от друга.

  • Немецкая V-модель была разработана аэрокосмической компанией IABG в Оттобрунне рядом с Мюнхеном в содействии с Федеральным департаментом по закупке вооружений в Кобленце, для Министерства обороны Германии. Модель была принята немецкой федеральной администрацией для гражданских нужд летом 1992.
  • Американская V-Model (VEE) была разработана национальным советом по системной инженерии (международным — с 1995 года) для спутниковых систем, включая оборудование, программное обеспечение и взаимодействие с пользователями.

Современной версией V-Model является V-Model XT, которая была утверждена в феврале 2005 года. V-модель используется для управления процессом разработки программного обеспечения для немецкой федеральной администрации. Сейчас она является стандартом для немецких правительственных и оборонных проектов, а также для производителей ПО в Германии. V-Model представляет собой скорее набор стандартов в области проектов, касающихся разработки новых продуктов. Эта модель во многом схожа с PRINCE2 и описывает методы как для проектного управления, так и для системного развития.

V-модель является расширением waterfall-модели, в которой тестирование происходит после разработки.

V-модель

  • Левая сторона модели — жизненный цикл разработки программного обеспечения — SDLC
  • Правая сторона модели — жизненный цикл тестирования программного обеспечения — STLC

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

Этап проектирования:

  • Анализ требований (Бизнес-требования): Этот этап содержит подробное общение с клиентом, чтобы понять его требования и ожидания. Этот этап называется сбором требований.
  • Проектирование системы (Функциональные требования): Этот этап включает в себя проектирование системы и полную настройку оборудования и связи для разработки продукта.
  • Архитектурное проектирование (Архитектура системы): Конструкция системы разбита далее на модули, занимающие различные функциональные возможности. Передача данных и связь между внутренними модулями и с внешним миром (другими системами) четко понятна.
  • Конструкция модуля (Архитектура компонентов): На этом этапе система распадается на небольшие модули. Указывается детальное проектирование модулей, также известное как низкоуровневое проектирование (LLD).

Этапы тестирования:

  • Модульное тестирование: Планы модульных тестов разрабатываются на этапе проектирования модулей. Эти планы модульного тестирования выполняются для устранения ошибок на уровне кода или устройства.
  • Интеграционное тестирование: После завершения модульного тестирования проводится интеграционное тестирование. При интеграционном тестировании модули интегрируются и система тестируется. Интеграционное тестирование выполняется на этапе проектирования архитектуры. Этот тест проверяет связь модулей между собой.
  • Функциональное тестирование: Тестирование системы тестирует полное приложение с его функциональностью, взаимозависимостью и связью. Проверяет функциональные и нефункциональные требования разрабатываемого приложения.
  • Пользовательское приемочное тестирование (UAT): UAT выполняется в пользовательской среде, которая напоминает рабочую среду. UAT проверяет, что поставляемая система соответствует требованиям пользователя и готова к использованию в реальном мире.

Преимущества V-образной модели

  • Количество ошибок в архитектуре ПО сводится к минимуму.

Недостатки V-образной модели

  • Если при разработке архитектуры была допущена ошибка, то вернуться и исправить её будет стоить дорого, как и в «водопаде».

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

Инкрементальная модель

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

Инкрементальная (инкрементная, поступательная) модель разработки
Инкрементальная (инкрементная, поступательная) модель разработки

Основные этапы инкрементальной модели разработки ПО могут включать:

  1. Анализ требований: На этом этапе проводится сбор и анализ требований к программному продукту. Определяются функциональные и нефункциональные требования, проводится оценка рисков и планируется последовательность добавления функциональности в инкрементах.
  2. Разработка первого инкремента: На этом этапе создается первый инкремент программного продукта, который включает наиболее важные и приоритетные функции. Этот инкремент должен быть полноценной работающей версией продукта, способной решать определенные задачи или предоставлять определенные возможности.
  3. Тестирование и отзыв: После создания первого инкремента производится тестирование функциональности, производительности и стабильности продукта. Отзыв от заказчика и пользователей также важен на этом этапе, чтобы получить обратную связь и определить дополнительные требования или изменения, которые могут быть внесены в следующие инкременты.
  4. Добавление новой функциональности: На этом этапе разрабатываются и добавляются новые инкременты с дополнительной функциональностью в программный продукт. Каждый новый инкремент может включать реализацию новых требований или улучшение существующей функциональности.
  5. Повторение цикла: Процесс добавления новой функциональности и тестирования продолжается до достижения полного функционального продукта. Каждый инкремент является основой для следующего инкремента и включает в себя обратную связь от заказчика и пользователей для уточнения требований и улучшения продукта.

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

Другим преимуществом инкрементальной модели является возможность более раннего выпуска минимально жизнеспособных продуктов (Minimum Viable Products, MVP), которые могут быть быстро внедрены на рынок и начать приносить бизнес-ценность, даже если полный функциональный продукт еще не готов.

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

Создание социальной сети
  1. Заказчик решил, что хочет запустить соцсеть, и написал подробное техническое задание. Программисты предложили реализовать основные функции — страницу с личной информацией и чат. А затем протестировать на пользователях, «взлетит или нет».
  2. Команда разработки показывает продукт заказчику и выпускает его на рынок. Если и заказчику, и пользователям социальная сеть нравится, работа над ней продолжается, но уже по частям.
  3. Программисты параллельно создают функциональность для загрузки фотографий, обмена документами, прослушивания музыки и других действий, согласованных с заказчиком. Инкремент за инкрементом они совершенствуют продукт, приближаясь к описанному в техническом задании.

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

Итеративная модель

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

Основные принципы итеративной модели разработки ПО включают следующие:

  1. Постепенное совершенствование: продукт разрабатывается и совершенствуется постепенно в течение нескольких итераций. Каждая итерация добавляет новые функции или улучшает существующие.
  2. Обратная связь: каждая итерация предполагает обратную связь от заказчика, пользователей или других заинтересованных сторон, что позволяет корректировать требования и функциональность продукта на ранних этапах разработки.
  3. Гибкость: итеративная модель позволяет гибко изменять требования и функциональность продукта на основе обратной связи и изменяющихся потребностей заказчика.
  4. Раннее обнаружение и управление рисками: каждая итерация позволяет выявлять и управлять рисками на ранних этапах разработки, что снижает вероятность серьезных проблем на более поздних этапах проекта.
  5. Постепенное тестирование и интеграция: тестирование и интеграция компонентов продукта выполняются на каждой итерации, что позволяет выявлять и устранять ошибки и проблемы на ранних этапах.
  6. Быстрая поставка ценности: каждая итерация может включать доставку минимально жизнеспособного продукта (MVP) или других частей функциональности, что позволяет начать получать ценность от продукта уже на ранних этапах разработки.

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

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

Как следствие — заказчик не знает, как выглядит конечная цель и когда закончится разработка.

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

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

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

Спиральная модель разработкиОсновные этапы спиральной модели разработки ПО включают:

  1. Определение целей (Identification): На этом этапе определяются цели и задачи проекта, идентифицируются требования и устанавливаются ограничения проекта. Результатом этого этапа является определение основных целей и ожидаемых результатов проекта.
  2. Анализ и риски (Analysis and Risk Assessment): На этом этапе проводится анализ рисков, связанных с разработкой ПО, и оценка возможных альтернативных решений. Оцениваются технические, расписание, бюджетные и другие аспекты проекта. Результатом этого этапа является разработка стратегии управления рисками и идентификация основных рисков. Наличие стадии для анализа рисков есть главной особенностью данной модели.
  3. Разработка и оценка (Development and Evaluation): На этом этапе проводится разработка и тестирование прототипов или итераций программного продукта, с учетом выявленных рисков и требований. Оцениваются результаты разработки, собираются отзывы от заказчика и других заинтересованных сторон.
  4. Планирование следующей итерации (Planning for the Next Iteration): На этом этапе планируется следующая итерация разработки, основываясь на полученных знаниях и опыте предыдущих итераций. Процесс повторяется в следующих итерациях, формируя спиральную последовательность разработки.

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

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

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

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

На основе итеративной модели была создана Agile — не модель и не методология, а скорее подход к разработке.

Agile

Очень популярная методология разработки ПО и непонятно почему я пишу про нее в самом конце 🙂 Начну я с его манифеста, который был сформулирован в 2001 году.

Манифест разработки программного обеспечения по методологии Agile
Мы постоянно открываем для себя более совершенные методы разработки программного обеспечения, занимаясь разработкой непосредственно и помогая в этом другим. Благодаря проделанной работе мы смогли осознать следующее.
  • Люди и взаимодействие важнее процессов и инструментов.
  • Работающий продукт важнее исчерпывающей документации.
  • Сотрудничество с заказчиком важнее согласования условий контракта.
  • Готовность к изменениям важнее следования плану.

То есть, не отрицая важности того, что справа, мы все-таки больше ценим то, что слева.

На сегодняшний день есть целая куча реализаций Agile (практик, подходов и методологий) которые помогают создавать продукт более эффективно:

  • экстремальное программирование (Extreme Programming, XP) —  методология, которая ориентируется на постоянное изменение требований к продукту и предлагает 12 подходов для достижения эффективных результатов в подобных условиях;
  • бережливую разработку программного обеспечения (Lean) — это agile подход, основанный на оптимизации времени и ресурсов разработки, устранении потерь и, в конечном итоге, предоставлении только того, что нужно продукту. Подход Lean тесно связано с разработкой минимально жизнеспособного продукта (MVP), при которой команда выпускает на рынок минимальную версию своего продукта, узнает от пользователей, что им нравится, не нравится и кем они хотят быть. ;
  • фреймворк для управления проектами Scrum — основывается на понятии спринта (sprint), в течении которого выполняется работа над продуктом. Перед началом каждого спринта проводится планирование (Sprint Planning), на котором производится оценка содержимого списка задач по развитию продукта (Product Backlog) и формирование бэклога на спринт (Sprint Backlog), в рамках которых и действует команда. Для спринта всегда существуют ограничения по времени, обычно от недели до месяца. Жизнь продукта таким образом разбита на равные по продолжительности спринты.;
  • разработку, управляемую функциональностью (Feature-driven development, FDD) —  это agile-подход, в котором разработка программного обеспечения на фокусируется основе улучшения фич;
  • разработку через тестирование (Test-driven development, TDD) — техника разработки программного обеспечения, которая основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется код, который позволит пройти тест, и под конец проводится рефакторинг нового кода к соответствующим стандартам;
  • методологию «чистой комнаты» (Cleanroom Software Engineering) —  процесс разработки программного обеспечения, предназначенный для создания программного обеспечения с сертифицируемым уровнем надёжности. Основной принцип cleanroom состоит в том, что предупреждение дефектов лучше, чем их устранение. Название Cleanroom («чистая комната») взято из электронной промышленности — так называются помещения с высокой степенью защиты от загрязнений, позволяющие предотвратить появление дефектов в процессе производства полупроводников;
  • итеративно-инкрементальный метод разработки (OpenUP);
  • методологию разработки Microsoft Solutions Framework (MSF);
  • метод разработки динамических систем (Dynamic Systems Development Method, DSDM) — методология, которая демонстрирует набор принципов, предопределенных типов ролей и техник. Принципы направлены на главную цель  — сдать готовый проект вовремя и уложиться в бюджет, с возможностью регулировать требования во время разработки. DSDM входит в семейство гибкой методологии разработки программного обеспечения, а также разработок не входящих в сферу информационных технологий;
  • метод управления разработкой Kanban —  проект делится на этапы, которые визуализируются в виде канбан-доски. Этапы, это например: планирование, разработка, тестирование, релиз и т.п. Задачи в виде “карточек” перемещаются с этапа на этап. Новые задачи можно добавлять в любое время. Задача закрывается не по истечению конкретного времени, а по смене статуса на “завершено”.  Канбан это методология из концепции “бережливого производства”.
  • RAD (Rapid Application Development) — методология быстрой разработки приложений, которая предполагает применение инструментальных средств визуального моделирования (прототипирования) и разработки. RAD предусматривает небольшие команды разработки,сроки до 4 месяцев и активное привлечение заказчика с ранних этапов. Данная методология опирается на требования, но также существует возможность их изменений в период разработки системы. Такой подход позволяет сократить расходы и свести время разработки к минимуму.

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

Подытожим

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

  1. Размеров проекта: Масштаб проекта может существенно влиять на выбор методологии разработки ПО. Например, небольшие проекты могут успешно выполняться с помощью гибких методологий, таких как Scrum или Kanban, в то время как большие и сложные проекты могут требовать более структурированного подхода, такого как Waterfall или V-модель.
  2. Сроков: Ожидаемые сроки выполнения проекта также могут повлиять на выбор методологии разработки ПО. Например, если проект должен быть выполнен в кратчайшие сроки, то может потребоваться использование быстрых и гибких методологий разработки, таких как Agile.
  3. Требований: Характеристики и сложность требований проекта также могут влиять на выбор методологии разработки ПО. Если требования ясны и стабильны, то более предварительный и плановый подход, такой как Waterfall, может быть эффективным. В то же время, если требования меняются или неоднозначны, то более гибкие и итеративные методологии, такие как Scrum или Lean, могут быть более подходящими.
  4. Ресурсов: Наличие ресурсов, таких как опытные разработчики, инфраструктура и финансовые средства, также может оказать влияние на выбор методологии разработки ПО. Некоторые методологии могут требовать более высокого уровня экспертизы и ресурсов, чем другие.
  5. Культуры организации: Культура организации и предпочтения команды разработчиков также могут влиять на выбор методологии разработки ПО. Например, команды, предпочитающие более структурированный и предварительный подход, могут предпочесть использование Waterfall или V-модели, в то время как команды, более гибкие и ориентированные на коллаборацию, могут предпочесть Agile или Scrum.
  6. Рисков: Уровень рисков проекта также может влиять на выбор методологии разработки ПО. Если проект имеет высокий уровень рисков, таких как сложные технические требования, изменяющиеся бизнес-потребности, ограниченные ресурсы и т. д., то гибкие методологии разработки, такие как Agile или Scrum, могут быть предпочтительными, так как они позволяют быстро реагировать на изменения и вносить коррективы в процесс разработки.
  7. Коммуникаций и взаимодействий: Уровень коммуникации и взаимодействия между участниками проекта также может влиять на выбор методологии разработки ПО. Методологии, такие как Scrum или Kanban, акцентируют внимание на тесном взаимодействии между командами разработчиков, заказчиками и другими заинтересованными сторонами, что может быть важно в проектах, где коммуникация играет ключевую роль.
  8. Клиентских требований: Требования и ожидания заказчика также могут повлиять на выбор методологии разработки ПО. Если заказчик хочет быть более вовлеченным в процесс разработки и иметь возможность видеть результаты на ранних стадиях, то гибкие методологии разработки, такие как Agile или Lean, могут быть предпочтительными.Выбор методологии разработки ПО является важным решением, которое должно быть основано на особенностях конкретного проекта, его требованиях, ресурсах, рискам и предпочтениях команды разработчиков. Комбинация различных методологий или создание гибридных подходов также может быть использовано в зависимости от конкретных потребностей проекта.

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