Этапы разработки ПО
1.Описание потребностей и их анализ
2.Дизайн программного продукта
3.Разработка
4.Проверка
5.Выпуск и внедрение продукта
6.Обслуживание продукта
Модели жизненного цикла ПО
Waterfall (каскадная модель)
Основная суть модели Waterfall в том, что этапы зависят друг от друга и следующий начинается, когда закончен предыдущий, образуя таким образом поступательное (каскадное) движение вперед. Для заказчиков данная модель выглядит линейно и со стороны достаточно просто, но данная модель не подразумевает вовлечение заказчика в детали процессов разработки, и демонстрирует понятный и конечный результат работы только на контрольных точках и в конце проекта.
Минусы
- Очень много документов, который нужно постоянно актуализировать
- Подробнейший план может создать не только иллюзию безопасности, но и ложные впечатления о работе над проектом
- Пользователя и заказчика полностью изолируют от процесса разработки
- Все требования должны быть сразу известны
- тестирование происходит только в самом конце
Плюсы
- Устойчива к обновлению кадров
- Дисциплинирует
- Гибкая на ранних этапах
- Прозрачна. Заранее понятно, на каком этапе что будет происходить, поэтому становится проще прогнозировать бюджеты и набирать команду.

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

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

Agile
набор принципов гибкой разработки (всего их 12) и идей. Основные идеи Agile:
1.люди и взаимодействие важнее процессов и инструментов;
1.работающий продукт важнее исчерпывающей документации;
1.сотрудничество с заказчиком важнее согласования условий контракта;
готовность к изменениям важнее следования первоначальному плану.
Плюсы
- улучшенный анализ рисков
- гибкость – возможность внесения изменений и добавления новой функциональности даже на относительно поздних этапах
- раннее создание рабочих прототипов
Минусы
- может быть достаточно дорогой в использовании
- управление рисками требует привлечения высококлассных специалистов
- успех процесса в большой степени зависит от стадии анализа рисков
- Не подходит для небольших проектов

Проверка/тестирование
Белый ящик — Программист
Черный ящик — Клиент/пользователь
Серый ящик — Спец. человек/тестировшик
По объекту тестирования

Типы ошибок при тестировании
- Логические
- Синтаксические
- Семантические
Основные модели программирование
Императированое
Декларативное
Структурное
Функциональное
Логическое
Объекто-ориентированное
Прототипное
Свойства алгоритмов
- Дискретность
- Понятнось (определенность)
- однозначность
- Массовость
- Результативность (конечность)
- Правильность
Виды алгоритмов
- Линейный
- Разветляющийся
- Циклический
Условные граф. обозначения символов

Схема
https://www.w3schools.com/python/python_ml_normal_data_distribution.asp