Teoria

Разработка программного обеспечения

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

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

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

  1. Waterfall (каскадная модель).
  2. Интерационная, спиральная и инкрементная модели.
  3. Спиральная и инкрементная модели.
  4. Agile.

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

  1. Белый ящик – проверка кода, тестирование как внутренней структуры, так и дизайна.
  2. Черный ящик – поведенческое тестирование, при котором специалист не знает наверняка, что за продукт он тестирует.
  3. Серый ящик – частичная осведомленность о внутренних процессах, комбинация тестирования белого и черного ящиков.

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

  1. Логические – связаны с неправильным применением алгоритмических конструкций.
  2. Синтаксические – нарушение синтаксических правил языка программирования.
  3. Семантические – нарушение семантических правил написания программы.

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

  • Функциональное тестирование.
  • Тестирование производительности.
  • Нагрузочное тестирование.
  • Стресс-тестирование.
  • Тестирование стабильности.
  • Конфигурационное тестирование.
  • Юзабилити-тестирование.
  • Тестирование интерфейса пользователя.
  • Тестирование безопасности.
  • Тестирование локализации.
  • Тестирование совместимости.
  • Тестирование чёрного ящика.
  • Тестирование белого ящика.
  • Тестирование серого ящика.

Классификация по степени автоматизации:

  • Ручное тестирование
  • Автоматизированное тестирование
  • Полуавтоматизированное тестирование

Классификация по степени изолированности компонентов:

  • Модульное тестирование
  • Интеграционное тестирование
  • Системное тестирование

Классификация по времени проведения тестирования:

  • Альфа-тестирование
  • Дымовое тестирование

Тестирование новой функции:

  • Подтверждающее тестирование
  • Регрессионное тестирование
  • Приёмочное тестирование
  • Бета-тестирование

Классификация по признаку позитивности сценариев:

  • Позитивное тестирование
  • Негативное тестирование

Классификация по степени подготовленности к тестированию:

  • Тестирование по документации (формальное тестирование)
  • Интуитивное тестирование (ad hoc testing)

Классификация ошибок по этапу обработки программы:

  • Ошибки компиляции
  • Ошибки компоновки
  • Ошибки выполнения

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

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

Самые популярные языки:

  • JavaScript, а также его библиотеки и фреймворки (React, Angular JS, Vue JS, Node JS, JQuery) — прототипно-ориентированное программирование, применяемое для разработки клиентской части веб-сайтов.
  • Java — объектно-ориентированное программирование (ООП), применяется для разработки десктопных и мобильных приложений под Android.
  • Python — процедурное программирование и ООП. Применяется как в веб, так и десктопной разработке.
  • PHP (для серверной веб-разработки) — процедурное и ООП.
  • C# — ООП, для программирования игр, софта и веб-приложений.
  • Swift — программирование для iOS.
  • Objective-C — программирование для iOS и macOS.

Разработка ПО с открытым и закрытым кодом:

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

Алгоритм:

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

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

  1. Дискретность — возможность разбиения алгоритма.
  2. Понятность (определенность) — за конечное число шагов либо должен быть получен результат, либо доказано его отсутствие.
  3. Однозначность (детерминированность) — строгое выполнение некоторого правила, инструкции.
  4. Массовость — возможность получения результата при различных исходных данных для некоторого класса сходных задач.

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

  1. Линейный алгоритм: Все действия выполняются в строгой последовательности. Пример: приготовление пирога, где каждый шаг (например, подготовка ингредиентов, смешивание, выпекание) выполняется последовательно без пропусков.
  2. Разветвляющийся алгоритм: Действия выполняются в зависимости от выполнения или не выполнения определенного условия. Например, переход через улицу по светофору: если светофор горит зеленым, можно переходить, если красным – нужно ждать.
  3. Циклический алгоритм: Содержит повторяющиеся действия, которые выполняются определенное количество раз или до выполнения определенного условия. Пример: колоть дрова, где действие удара по дрову повторяется до тех пор, пока не достигнут определенный объем раздробленных дров или пока не кончатся дрова.

Boston Dynamics

создатель Марк Рэйберт

основан в 1992 г

первый робот BigDog (военный)