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

1.Описание потребностей и их анализ
2.Дизайн программного продукта
3.Разработка
4.Проверка
5.Выпуск и внедрение продукта
6.Обслуживание продукта

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

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

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

Минусы

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

Плюсы

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

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

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

Плюсы

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

Минусы

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

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

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

Плюсы

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

Минусы

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

Agile

набор принципов гибкой разработки (всего их 12) и идей. Основные идеи Agile:

1.люди и взаимодействие важнее процессов и инструментов;

1.работающий продукт важнее исчерпывающей документации;

1.сотрудничество с заказчиком важнее согласования условий контракта;

готовность к изменениям важнее следования первоначальному плану.

Плюсы

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

Минусы

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

Проверка/тестирование

Белый ящик — Программист

Черный ящик — Клиент/пользователь

Серый ящик — Спец. человек/тестировшик

По объекту тестирования

Типы ошибок при тестировании

  • Логические
  • Синтаксические
  • Семантические

Основные модели программирование

Императированое
Декларативное
Структурное
Функциональное
Логическое
Объекто-ориентированное
Прототипное

Свойства алгоритмов

  1. Дискретность
  2. Понятнось (определенность)
  3. однозначность
  4. Массовость
  5. Результативность (конечность)
  6. Правильность

Виды алгоритмов

  • Линейный
  • Разветляющийся
  • Циклический

Условные граф. обозначения символов

Схема

https://www.w3schools.com/python/python_ml_normal_data_distribution.asp