# Модели разработки ПО

### 1. «Waterfall Model» (каскадная модель или «водопад»)

Модель процесса разработки программного обеспечения, в которой процесс разработки выглядит как поток, последовательно проходящий фазы анализа требований, проектирования, реализации, тестирования, интеграции и поддержки. В качестве источника названия часто указывают статью, опубликованную [У. У. Ройсом](https://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D0%B9%D1%81,_%D0%A3%D0%B8%D0%BD%D1%81%D1%82%D0%BE%D0%BD) в [1970 году](https://ru.wikipedia.org/wiki/1970_%D0%B3%D0%BE%D0%B4); при том, что сам Ройс использовал [итеративную модель разработки](https://ru.wikipedia.org/wiki/%D0%98%D1%82%D0%B5%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0).

### 2. V-модель (V-model)

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

Левая часть буквы «V» представляет собой декомпозицию требований и создание спецификаций системы. Правая сторона буквы «V» представляет собой интеграцию частей и их проверку.

### 3. Спиральная модель (Spiral Model)

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

### 4. Инкрементная (Incremental Model, Iterative model)

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

### 5. Итеративная или итерационная модель (Iterative model)

Итеративная модель (англ. iteration - «повторение») в разработке ПО — это выполнение работ параллельно с непрерывным анализом полученных результатов и корректировкой последующих этапов работы. Проект при этом подходе в каждой фазе развития проходит повторяющийся **цикл PDCA**: *Планирование — Реализация — Проверка — Корректировка* (англ. plan-do-check-act cycle).&#x20;

**Не требует для начала полной спецификации требований.** Вместо этого, создание начинается с реализации части функционала, становящейся базой для определения дальнейших требований. Этот процесс повторяется. Версия может быть неидеальна, главное, чтобы она работала.&#x20;

### 6. Гибкая модель (Agile model)

В «гибкой» методологии разработки после каждой итерации заказчик может наблюдать результат и понимать, удовлетворяет он его или нет. Это одно из преимуществ гибкой модели. К ее недостаткам относят то, что из-за отсутствия конкретных формулировок результатов сложно оценить трудозатраты и стоимость, требуемые на разработку. Экстремальное программирование (XP) является одним из наиболее известных применений гибкой модели на практике.

### 7. «RAD Model» (rapid application development model или быстрая разработка приложений)

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

### 8. Модель "Чистой комнаты" (Cleanroom model) <a href="#firstheading" id="firstheading"></a>

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

Процесс чистых помещений изначально был разработан Харланом Миллсом и несколькими его коллегами, в том числе Аланом Хевнером из IBM . Модель создания чистых помещений сосредоточена на предотвращении дефектов, а не на их устранении.&#x20;

### 9. Модель "Прототипа" (**Prototype Model**)

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

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

### Доп. материал

<details>

<summary>Полезный материал</summary>

* [Ещё раз про семь основных методологий разработки](https://habr.com/ru/company/edison/blog/269789/)
* [Software Development](https://en.wikipedia.org/wiki/Software_development)

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://qabook.gitbook.io/start/teoriya-testirovaniya/razrabotka-i-testirovanie-po-sdlc-i-stlc/modeli-razrabotki-po.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
