Разработка программного обеспечения
Этапы разработки ПО:
- Описание потребностей и их анализ.;
- Дизайн программного продукта;
- Разработка;
- Проверка;
- Выпуск и внедрение продукта;
- Обслуживание продукта.
Модели жизненного цикла ПО:
- Waterfall (каскадная модель);
- Интерационная, спиральная и инкрементная модели;
- Спиральная и инкрементная модели;
- Agile.
Проверка/тестирование:
- Белый ящик – проверка кода, тестирование как внутренней структуры, так и дизайна. Тестировщики могут видеть код на этой стадии, поэтому, этот метод имеет ряд других названий, таких как открытое тестирование или проверка кода. Каждый термин указывает на прозрачный процесс, как и возможность проверки процессов ввода-вывода, основываясь на внутренних алгоритмах работы.
- Черный ящик – во время поведенческого тестирования или тестирования черного ящика, специалист не знает наверняка, что за продукт он тестирует. Внутренняя структура, приложение и дизайн остаются неизвестными для тестировщика. Тесты, как правило, функциональны. Веб-страницы изучаются с использованием браузера, вводом некоторых данных и при анализе полученных данных.
- Серый ящик – тестирование серого ящика предусматривает частичную осведомленность о внутренних процессах. Данный метод – это комбинация двух предыдущих подходов (тестирования белого и черного ящиков). Специалист стремится найти все проблемы функционирования и ошибки в коде. На этой стадии тестировщик может реализовать сквозной тест.
Типы ошибок при тестировании:
- Логические – связаны с неправильным применением тех или иных алгоритмических конструкций. Эти ошибки при выполнении программы могут проявиться явно.
- Синтаксические – это ошибки, возникающие в связи с нарушением синтаксических правил написания предложений используемого
языка программирования. - Семантические – Причина возникновения ошибок данного типа связана с нарушением семантических правил написания программ.
По объекту тестирования:
Функциональное тестирование
- Тестирование производительности;
- Нагрузочное тестирование;
- Стресс-тестирование;
- Тестирование стабильности;
- Конфигурационное тестирование;
- Юзабилити-тестирование;
- Тестирование интерфейса пользователя;
- Тестирование безопасности;
- Тестирование локализации;
- Тестирование совместимости;
- По знанию системы;
- Тестирование чёрного ящика;
- Тестирование белого ящика;
- Тестирование серого ящика.
По степени автоматизации
- Ручное тестирование;
- Автоматизированное тестирование;
- Полуавтоматизированное тестирование;
- По степени изолированности компонентов;
- Модульное тестирование;
- Интеграционное тестирование;
- Системное тестирование;
- По времени проведения тестирования;
- Альфа-тестирование;
- Дымовое тестирование.
Тестирование новой функции
- Подтверждающее тестирование;
- Регрессионное тестирование;
- Приёмочное тестирование;
- Бета-тестирование;
- По признаку позитивности сценариев;
- Позитивное тестирование;
- Негативное тестирование;
- По степени подготовленности к тестированию;
- Тестирование по документации (формальное тестирование);
- Интуитивное тестирование (англ. ad hoc testing).
Классификация ошибок по этапу обработки программы:
- ошибки компиляции (Compile-time error) – фиксируемые компилятором;
- ошибки компоновки – ошибки, обнаруженные компоновщиком;
- ошибки выполнения – ошибки, обнаруженные операционной системой, аппаратными средствами или пользователем при выполнении программы.
Основные модели программирования
- Императивное программирование – стиль написания кода, главной концепцией которого является создание инструкций для выполнения машинами. Данной парадигме присуще использование низкоуровневых языков, позже к ним подключили C++, Java. Такой код не требует компиляции и понимается машинами напрямую. Императивное программирование – это парадигма, основанная на составлении алгоритма действий (инструкций/команд), которые изменяют состояние (информацию/данные/память) программы. Первыми языками программирования, основанными на таком подходе, были машинные коды и ассемблеры. Фактически, программа на этих языках — это код, который выполняется компьютером сразу, без предварительной компиляции.
- Декларативное программирование – это парадигма программирования, в которой задаётся спецификация решения задачи: описывается, что представляет собой проблема и ожидаемый результат, но без описания способа достижения этого результата.
- Структурное программирование делает текст программы более понятным – алгоритм решения ясно виден из исходного текста. Согласно принципу модульности программа разбивается на отдельные смысловые части (модули).
- Модуль – это функционально законченная часть программы. Например, модуль вычисления определителя матрицы; модуль нахождения суммы элементов ряда. Каждый модуль программируется отдельно, а затем модули объединяются в единую программу. Модуль на языке программирования – это функция или процедура. Использование при разработке модуля композиции трех базовых структур
- Линейной
- Ветвления
- Циклической
- Структурное программирование называют программированием без GOTO.
- Модуль – это функционально законченная часть программы. Например, модуль вычисления определителя матрицы; модуль нахождения суммы элементов ряда. Каждый модуль программируется отдельно, а затем модули объединяются в единую программу. Модуль на языке программирования – это функция или процедура. Использование при разработке модуля композиции трех базовых структур
- Функциональное программирование. Смысл в том, что мы задаём не последовательность нужных нам команд, а описываем взаимодействие между ними и подпрограммами. В нём весь код — это правила работы с данными. Вы просто задаёте нужные правила, а код сам разбирается, как их применять.
- Команды можно собирать в подпрограммы, но их последовательность не имеет значения. Нет разницы, в каком порядке вы напишете подпрограммы — это же просто правила, а правила применяются тогда, когда нужно, а не когда про них сказали.
- Логическое программирование – парадигма программирования, а также раздел дискретной математики изучающий методы и возможности этой парадигмы, основанная на выводе новых фактов из данных фактов согласно заданным логическим правилам.
- Логическое программирование возникло как упрощение функционального программирования для математиков и лингвистов, решающих задачи символьной обработки.
- Объектно-ориентированное программирование. Суть ООП заключается в том, чтобы представить программу в виде объектов, которые каким-то образом взаимодействуют друг с другом.
- Объект — это экземпляр какого-то класса.
- Класс — это шаблон, в котором описаны все свойства будущего объекта и его методы.
- При этом если класс воздушного шарика определяет свойство цвет, то сам класс никакого значения цвета не имеет. Но экземпляры этого класса, которых, к слову, можно создавать сколько угодно, уже будут раскрашены в любые цвета.
- Компонентно-ориентированное программирование – новое объектно-ориентированное программирование. C развитием все новых front-end фреймворков — таких как React, Angular и Vue — появляются также и новые парадигмы. Одной из таких является компонентно-ориентированная парадигма. Её основная идея — это складывание воедино компонентов, чем-то похожих на кусочки Lego.
- Прототипно-ориентированное программирование – стиль объектно-ориентированного программирования, при котором отсутствует понятие класса, а наследование производится путём клонирования существующего экземпляра объекта — прототипа. Каноническим примером прототип-ориентированного языка является язык Self.
Самые популярные языки:
- JavaScript, а также его библиотеки и фреймворки (React, Angular JS, Vue JS, Node JS, JQuery) – прототипно-ориентированное программирование, применяемое для разработки клиентской части вэб-сайтов;
- Java – объектно-ориентированное программирование (ООП), применяется для разработки десктопных и мобильных приложений под Андроид;
- Python – процедурное программирование и ООП. Применяется как в вэб, так и десктопной разработке;
- PHP (для серверной веб разработки) – процедурное и ООП;
- С# – ООП, для программирования игр, софта и вэб-приложений;
- Swift – программирование для IOS;
- Obective-C – программирование для IOS и MAC OS.
Разработка ПО с открытым и закрытым кодом:
- программный код в общем случае делается общедоступным, скрываются только пароли и прочая подобная информация.
- разработки систем с закрытым исходным кодом конечному пользователю доступен лишь готовый к установке продукт.
Алгоритм
Алгоритм– это точное и понятное предписание (указание) исполнителю совершить определенную последовательность действий, направленных на достижение указанной цели или решение поставленной задачи.
Указание выполнить конкретное действие называется командой.
Совокупность всех команд, которые могут быть выполнены некоторым исполнителем называется системой команд.
СВОЙСТВА АЛГОРИТМОВ.
1. Дискретность – возможностью разбиения алгоритма
2. Понятность (определенность)– за конечное число шагов либо должен быть получен результат, либо доказано его отсутствие;
3. Однозначность (детерминированность)– строгое выполнение некоторого правила, инструкции;
4. Массовость – возможность получения результата при
различных исходных данных для некоторого класса сходных
задач;
!!!!!!!!
5. Результативность (конечность)– обязательным получением некоторого результата (числа, таблицы, текста, звука, изображения и т. д.) или сигнала о том, что данный алгоритм неприменим для
решения поставленной задачи;
6. Правильность
Виды алгоритмов
- Линейный – все действия выполняются в строгой последовательности (приготовление пирога)
- Разветвляющийся – действия выполняются в зависимости от выполнения или не выполнения условия (переход улицы по светофору)
- Циклический – содержит повторяющиеся действия (колоть дрова)
Условные графические обозначения символов
Название блока | Обозначение | Назначение блока |
Терминатор | Действие | Начало, завершение программы или подпрограммы |
Процесс | Действие | Обработка данных (вычисления, пересылки и т.д) |
Данные | Данные | Операции ввода-вывода |
Решение | Условие | Ветвления, выбор, интерационные и поисковые циклы |

Plokkskeemi algus ja lõpp

Sisend/Väljund

Omandamise ja arvutamise plokk

Tingimus ja tegevus
Näidised
Kosta plokkskeem (Построить схему)
- Решение квадратного уравнения ax**2+bx+c=0 (Antud ruutvõrrandi üldkuju: ax**2+bx+c=0)
- Входные данные: a, b, c (Sisend: a, b, c )
- D=b**2-4ac
- D<0, нет решений (lahendused puuduvad)
- D>0, 2 решений (lahendust) -> x1=(-b+D**(1/2))/2a, x2=(-b-D**(1/2))/2a
- D=0, 1 решение (lahendus) -> x1=-b/2a
Variant 1
1. Antud on ringi raadius ja ruudu külg. Kummal figuuril on suurem pindala?
2. Koostage programmi skeemi ostu maksumuse arvutamiseks, võttes arvesse allahindlust. Kui ostusumma on üle 1000 euro, antakse 10% allahindlust, kui summa on üle 2000 euro, siis 20%.
3. Koostage skeem ülesande kohta, mis võimaldab määrata kellaaja näitude järgi ööpäeva.
4. Koostage plokkskeem kotlette praadiva roboti jaoks.