В разработке программного обеспечения V-модель [ 2] представляет собой процесс разработки , который можно считать расширением каскадной модели и является примером более общей V-модели . Вместо того чтобы двигаться вниз линейно, этапы процесса изгибаются вверх после фазы кодирования , образуя типичную форму буквы V. V-модель демонстрирует взаимосвязи между каждой фазой жизненного цикла разработки и связанной с ней фазой тестирования . Горизонтальная и вертикальная оси представляют время или завершенность проекта (слева направо) и уровень абстракции (самая грубая абстракция сверху) соответственно.
На этапе анализа требований , первом этапе процесса проверки, требования к системе собираются путем анализа потребностей пользователя (ей) . Этот этап связан с установлением того, что должна выполнять идеальная система. Однако он не определяет, как будет спроектировано или построено программное обеспечение. Обычно пользователи опрашиваются и создается документ, называемый документом требований пользователя.
Документ с требованиями пользователя обычно описывает функциональные, интерфейсные, производительные, данные, требования безопасности и т. д. системы, ожидаемые пользователем. Он используется бизнес-аналитиками для сообщения пользователям своего понимания системы. Пользователи внимательно изучают этот документ, поскольку он будет служить руководством для проектировщиков системы на этапе проектирования системы. На этом этапе разрабатываются тесты приемки пользователем. См. также Функциональные требования .
Существуют различные методы сбора требований как мягких, так и жестких методологий, включая интервью, анкетирование, анализ документов, наблюдение, одноразовые прототипы, варианты использования , а также статические и динамические представления с пользователями.
Проектирование систем — это фаза, на которой системные инженеры анализируют и понимают бизнес предлагаемой системы, изучая документ с требованиями пользователя. Они выясняют возможности и методы, с помощью которых можно реализовать требования пользователя. Если какие-либо из требований невыполнимы, пользователь информируется о проблеме. Находится решение, и документ с требованиями пользователя соответствующим образом редактируется.
Генерируется документ спецификации программного обеспечения, который служит планом для этапа разработки. Этот документ содержит общую организацию системы, структуры меню, структуры данных и т. д. Он также может содержать примеры бизнес-сценариев, примеры окон и отчеты для облегчения понимания. На этом этапе также будет создана другая техническая документация, такая как диаграммы сущностей и словари данных. Готовятся документы для тестирования системы.
Фаза проектирования архитектуры компьютера и архитектуры программного обеспечения также может быть названа высокоуровневым проектированием. Базовым условием при выборе архитектуры является то, что она должна реализовать все, что обычно состоит из списка модулей, краткой функциональности каждого модуля, их интерфейсных взаимосвязей, зависимостей , таблиц базы данных , диаграмм архитектуры, технологических деталей и т. д. Проектирование интеграционного тестирования выполняется на конкретной фазе. [3]
Фазу проектирования модуля можно также назвать низкоуровневым проектированием. Проектируемая система разбивается на более мелкие блоки или модули, и каждый из них поясняется, чтобы программист мог начать кодирование напрямую. Документ низкоуровневого проектирования или спецификации программы будут содержать подробную функциональную логику модуля в псевдокоде :
На этом этапе разрабатывается проект модульного теста.
В V-модели каждому этапу фазы проверки соответствует этап фазы валидации. [4] Ниже приведены типичные этапы валидации в V-модели, хотя они могут быть известны под другими названиями.
В V-модели планы тестирования модулей (UTP) разрабатываются на этапе проектирования модуля. Эти UTP выполняются для устранения ошибок на уровне кода или модуля. Модуль — это наименьшая сущность, которая может существовать независимо, например, программный модуль. Тестирование модулей проверяет, что наименьшая сущность может функционировать правильно, будучи изолированной от остальных кодов/модулей.
Планы интеграционных тестов разрабатываются на этапе архитектурного проектирования. Эти тесты проверяют, что созданные и протестированные независимо друг от друга блоки могут сосуществовать и взаимодействовать друг с другом. Результаты тестов передаются команде заказчика.
Планы системных тестов разрабатываются на этапе проектирования системы. В отличие от планов модульного и интеграционного тестирования, планы системных тестов составляются бизнес-командой клиента. Системный тест гарантирует, что ожидания от разработанного приложения будут удовлетворены. Все приложение тестируется на функциональность, взаимозависимость и коммуникацию. Системное тестирование проверяет, что функциональные и нефункциональные требования были выполнены. Нагрузочное и производительное тестирование, стресс-тестирование, регрессионное тестирование и т. д. являются подмножествами системного тестирования.
Планы приемочных испытаний пользователем (UAT) разрабатываются на этапе анализа требований. Планы испытаний составляются бизнес-пользователями. UAT выполняется в пользовательской среде, которая напоминает производственную среду, с использованием реалистичных данных. UAT проверяет, что поставленная система соответствует требованиям пользователя и готова к использованию в режиме реального времени.
V-модель подверглась критике со стороны сторонников Agile и других как неадекватная модель разработки программного обеспечения по многим причинам. [5] [6] [7] Критика включает в себя:
Сторонники V-модели утверждают, что она развивалась и поддерживает гибкость и проворство на протяжении всего процесса разработки. [8] Они утверждают, что в дополнение к тому, что это очень дисциплинированный подход, он способствует тщательному проектированию, разработке и документированию, необходимым для создания стабильных программных продуктов. В последнее время ее принимает индустрия медицинских приборов. [9] [10]