Программирование

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

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

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

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

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

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

  1. Белый ящик это подход, который позволяет тестировщикам проверять внутреннюю работу приложения – его код, инфраструктуру и взаимодействие с внешними системами. Тестирование “белого ящика” часто используется в статическом тестировании безопасности приложений (SAST, Static Application Security Testing) – подходе, который автоматически проверяет исходный код и предоставляет информацию о наличии ошибок и возможных уязвимостей.
  2. Черный ящик это термин, используемый для обозначения системы, внутреннее устройство и механизм работы которой очень сложны, неизвестны или неважны в рамках данной задачи.
  3. Серый ящик это метод тестирования программного обеспечения, позволяющий протестировать программный продукт или приложение с частичным знанием внутренней структуры приложения.

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

  1. Логические
  2. Синтаксические
  3. Семантические

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

  1. Императивное программирование это парадигма, основания на составлении алгоритма действий (инструкций/команд), которые изменяют состояние (информацию/данные/пямять) программы. Первыми языками программирования, основанными на таком подходе, были машинные коды и ассемблеры.
  2. Декларативные программирование это парадигма программирования, в которой задаётся спецификация решения задачи: описывается, что представляет собой проблема и ожидаемый результат, но без описания способа достижения этого результата.
  3. Структурное програмирование делает тескт программы более понятным — алгоритм решения ясно виден из исходного текста. Согласно принципу модульности программа разбиваеться на отдельные смысловые части (модули). Модуль это функционально законченная часть программы. Например модуль вычесления определителя матрицы — модуль нахождения суммы элементов ряда.
  4. Функциональная программирование. Смысл в том, что мы задаём не последовательность нужных нам команд, а описываем взаимодействие между ними и подпрограммами. В нём весь код — это правила работы с данными. Вы просто задаёте нужные правила, а код сам разбирается, как их применять. Команды можно собирать в подпрограммы, но их последовательность не имеет значения. Нет разницы, в каком порядке вы напишете подпрограммы — это же просто правила, а правила применяются тогда, когда нужно, а не когда про них сказали.
  5. Логическое програмирование это парадигма программирования, а также раздел дискретной математики изучающий методы и возможности этой парадигмы, основанная на выводе новых фактов из данных фактов согласно заданным логическим правилам. Логическое программирование возникло как упрощение функционального программирования для математиков и лингвистов, решающих задачи символьной обработки.
  6. Объектно-ориентированное программирование. Суть ООП заключается в том, чтобы представить программу в виде объектов, которые каким-то образом взаимодействуют друг с другом. Объект — это экземпляр какого-то класса. Класс — это шаблон, в котором описаны все свойства будущего объекта и его методы. При этом если класс воздушного шарика определяет свойство цвет, то сам класс никакого значения цвета не имеет. Но экземпляры этого класса, которых, к слову, можно создавать сколько угодно, уже будут раскрашены в любые цвета.
  7. Компонетно-ориентированное программирование эта парадигма программирования направлена прежде всего на повышение надёжности коммерческих бизнес-систем. Суть компонентно-ориентированного программирования (далее КОП) сводится к возможности контролировать взаимодействие проектируемых и выполняемых модулей на предмет согласованности информационных структур. Идея является относительно новой. Частично идеи КОП воплощены в такие языки как Java, Ada, C#, прямым применением идей КОП являются языки программирования Modula-2, Oberon, Oberon-2, и наиболее известный из семейства КОП — Компонентный Паскаль.
  8. Протипное программирование это стиль объектно-ориентированного программирования, при котором отсутствует понятие класса, а наследование производится путём клонирования существующего экземпляра объекта — прототипа. Каноническим примером прототип — ориентированного языка является язык Self.
  9. Саммые популярные языки программирование JavaScript, а также его библиотеки и фреймворки (React, Angular JS, Vue JS, Node JS, JQuery) — прототипно-ориентированное программирование, применяемое для разработки клиентской части вэб-сайтов. Java — объектно-ориентированное программирование (ООП), применяется для разработки десктопных и мобильных приложений под Андроид. Python — процедурное программирование и ООП. Применяется как в вэб, так и десктопной разработке. PHP (для серверной веб разработки) — процедурное и ООП. С# — ООП, для программирования игр, софта и вэб-приложений. Swift — программирование для IOS. Obective-C -программирование для IOS и MAC OS. Kotlin статически типизированный, объектно-ориентированный язык программирования, работающий поверх Java Virtual Machine и разрабатываемый компанией JetBrains. Также компилируется в JavaScript и в исполняемый код ряда платформ через инфраструктуру LLVM. Язык назван в честь российского острова Котлин в Финском заливе, на котором расположен город Кронштадт.
  10. Алгоритм это точное и понятное предписание (указание) исполнителю совершить определенную последовательность действий, направленных на достижение указанной цели или решение поставленной задачи. Указание выполнить конкретное действие называется командой. Совокупность всех команд, которые могут быть выполнены некоторым исполнителем называется системой команд.
  11. Свойства алгоритмов это

    1. Дискретность — возможностью разбиения алгоритма

    2. Понятность (определенность)— за конечное число шагов либо должен быть получен результат, либо доказано его отсутствие; 3. Однозначность (детерминированность)- строгое выполнение некоторого правила, инструкции; 4. Массовость — возможность получения результата при
    различных исходных данных для некоторого класса сходных
    задач; 5. Результативность (конечность)— обязательным получением некоторого результата (числа, таблицы, текста, звука, изображения и т. д.) или сигнала о том, что данный алгоритм неприменим для
    решения поставленной задачи;
  12. Виды алгоритмов. Линейный – все действия выполняются в строгой последовательности (приготовление пирога). ´Разветвляющийся – действия выполняются в зависимости от выполнения или не выполнения условия (переход улицы по светофору). Циклический – содержит повторяющиеся действия (колоть дрова)
НазваниеОбозначениеНазначение блока
ТерминаторДействиеНачало, завершение программы или подпрограммы
ПроцессДействиеОбработка данных (вычесления пересылки и т.д)
ДанныеДанныеОперации ввода-вывода
РешениеУсловиеВетвления, выбор, интерационные и поисковые циклы.

Andmetüübid:

Int — täistav: 3; 4; 5:0-100000

Str — sõne.»ema». «2334456». «A»

Bool — tõevõõrtused: True=1; False=0

Float — ujumaarvud: 5.45: -48.125

Переменную нельзя называть в несколько слов, первым не может цифры, знаки припенания и зарезирвированные слова тоже нельзя.

Построить схему

´Решение квадратного уравнения ax**2+bx+c=0

´Входные данные: a, b, c

´D=b**2-4ac

´D<0, нет решений

´D>0, 2 решений -> x1=(-b+D**(1/2))/2a, x2=(-b-D**(1/2))/2a

´D=0, 1 решение -> x1=-b/2a