это документ, в котором описано, что именно будет разрабатываться, и в котором описаны требования.
Этапы цикла разработки ПО
1. Возникновение идеи или проблемы у заказчика; 2. Сбор и анализ требований; 3. Проектирование и планирование; 4. Разработка; 5. Внедрение; 6. Сопровождение; 7. Вывод из эксплуатации.
Возникновение идеи или проблемы у заказчика
(цикл разработки ПО)
заказчик осознал, что у него есть какая-то потребность или проблема, и что для её решения нужно разработать ПО.
Сбор и анализ требований
(цикл разработки ПО)
формируется ТЗ. Заказчик пишет ТЗ сам, либо совместно с исполнителем.
Проектирование и планирование
(цикл разработки ПО)
проектируется архитектура проекта, какие технологии использовать и т.д. Менеджер проекта оценивает стоимость, трудозатраты и сроки выполнения проекта.
Консультирование заказчика по вопросам. Исправление ошибок. Доработка функционала.
Методологии разработки ПО
1. Waterfall; 2. Agile; 3. Scrum; 4. Kanban.
Как выполняются все этапы разработки ПО в "Waterfall"?
все этапы выполняются по очереди.
Перечислите плюсы и минусы "Waterfall"
Минусы: 1. Конечный продукт получается только в конце; 2. При изменении требований приходится откатываться назад.
Плюсы: 1. Простота и предсказуемость сроков и бюджета.
Для каких проектов подходит "Waterfall"?
в которых требования понятны и зафиксированы.
Чем "Agile" отличается от "Waterfall"?
гибкость и возможность вносить изменения в процесс на любом этапе.
Реализация проекта с использованием "Agile"
выполняется в несколько подходов - итераций. Одна итерация - это цикл из нескольких недель. Во время итераций происходит этап "Разработка". По окончанию итерации изучают результаты, анализируют их и перед стартом очередного цикла меняют приоритеты.
Разработка ПО по подходу "Scrum"
работа делится на одинаковые по продолжительности, но короткие итерации (спринты). Состав команды максимум 10 человек. Ежедневное обсуждение планов, принятие решений, расстановка приоритетов и планирование задач.
Разработка ПО по подходу "Kanban"
команда работает без руководства как одно целое. Процесс включает стадии - от планирования до запуска. Не проводят совещания. Усилия сосредотачиваются на удобстве и на улучшении продукта для пользователей.
разрабатывает программу в соответствии с требованиями проекта.
Профессия тестировщик (QA)
Контролирует качество ПО. Проверяет что программа соответствует требованиям заказчика. Обращает внимание на удобство использования программы.
Профессия системный аналитик
Сбор, анализ и систематизация требований заказчика. Составление ТЗ. Изучение предметной области проекта, бизнеса заказчика и потребностей пользователя.
Профессия дизайнер
придумывает как будет выглядеть интерфейс программы - цвета, оформление и т.д.
Профессия HR
поиск новых сотрудников, размещение вакансий, договаривается с техническими специалистами насчет собеседований.
Профессия системный администратор
обеспечивает работоспособность компьютеров, сети и программных продуктов, следит за безопасностью и инфраструктурой ПО.
Профессия технический писатель
занимается разработкой и поддержкой документации, владеет несколькими языками.
Профессия менеджер проекта
это человек, ответственный за успешное завершение проекта. Обеспечивает что проект будет завершен в срок, уложится в запланированный бюджет и иметь надлежащее качество, общение с заказчиком и командой.
Профессия Team lead
руководитель команды разработки. Участвует в написании кода, частично или полностью выполняет функции менеджера проекта.
это привычные оконные приложения имеющие графический интерфейс например: Microsoft Word, Skype.
Консольные приложения
имеют текстовый интерфейс. Например: Windows PowerShell, Git bash, cmd.
Веб-приложения или сайты
это распределенные приложения (располагаются на нескольких компьютерах), имеющие клиент-серверную архитектуру.
Мобильные приложения
приложения для мобильных устройств. Наиболее распространены для ОС: Android, IOS.
Форма
это часть пользовательского интерфейса, внутри которой есть элементы управления, куда пользователь может ввести данные.
Элементы управления в формах
1. Кнопки; 2. Поля ввода (однострочные, многострочные); 3. Выпадающие списки (с единым выбором или множественным); 4. Чекбоксы; 5. Радио-баттоны и т.д.
Однострочное поле ввода (textbox)
позволяет ввести только одну строку текста.
Многострочное поле ввода (textarea)
позволяет вводить много строк текста.
Выпадающий список с единичным выбором
можно выбрать ровно 1 элемент из списка.
Выпадающий список с множественным выбором
можно выбрать несколько элементов из списка.
Чекбокс (галочка, флажок)
позволяет выбрать один из двух вариантов - Да или Нет.
Радио-баттон
позволяет выбрать ровно один из нескольких вариантов. При выборе одной из кнопок остальные сбрасываются.
Комбобокс
выпадающий список, который позволяет ввести свое значение.
Автокомплит (autocomplete)
выпадающий список с поиском.
Календарь (datepicker)
обычно это текстовое поле при клике по которому отрывается календарь.
Спиннер (лоадер, крутилка)
сообщает пользователю, что сейчас выполняется длительная операция и надо подождать.
Модальный диалог
диалог, который блокирует работу с родительским окном, пока пользователь его не закроет.
XML
eXtensible Markup Language (расширяемый язык разметки). Язык разработанный для хранения и передачи данных.
JSON
JavaScript Object Notation. Текстовый формат обмена данными, основанный на JavaScript.
Применение XML
используют при клиент-серверном взаимодействии между разными системами. XML широко используется для конфигурирования программ, хранения настроек.
Применение JSON
обычно браузер и мобильные приложения.
С чего начинается XML документ?
начинается со строки объявления XML. <?xml version-"1.0" encoding="UTF-8"?>
Что из себя представляют XML и JSON документы?
представляют собой дерево.
Есть ли в XML дереве корень и чем он является в нем?
есть корень им является элемент верхнего уровня, который никуда не вложен.
Дочерний элемент
(XML)
это элемент вложенный в другой элемент.
Как описывается элемент?
(XML)
при помощи тегов. Например элемент note описывается тегом <_note_>, <_/note_>, <_note />.
Открывающийся тег
(XML)
<_note_>
Закрывающийся тег
(XML)
<_/note_>
Как можно назвать теги типа <_note_> и <_/note_>?
(XML)
парные теги.
Одиночный тег
(XML)
<_note />
Как называют по другому теги типа <_note />?
(XML)
самозакрывающиеся теги.
Атрибуты
(XML)
это дополнительные параметры тегов.
Где можно писать атрибуты?
(XML)
в открывающихся и самозакрывающихся тегах.
Какие части имеет атрибут? Приведите пример.
(XML)
имеет имя и значение которое указывается после знака =.
Например: <_note number=“1”_>;
Может ли элемент иметь больше 1 атрибута?
(XML)
у элемента может быть много атрибутов, порядок не важен.
Использование каких символов приведет к некорректной разметке в документе?
(XML)
>, <, &, ', "
Что нужно использовать чтобы указывать в документе символы >, <, &, ', " ?
(XML)
Для < замена < Для > замена > Для & замена & Для ' замена ' Для " замена ".
Например: <me> &
Какой есть дополнительный способ обработки символов <, >, &? Приведите пример.
(XML)
<![CDATA[содержимое]]>.
Пример: <![CDATA[Иван]]>
Типы данных XML
- целое число (310), - вещественное число (23.4), - строка (строка), - дата (2010-03-10), - время (12:03:00), - дата и время (2010-03-10 12:03:00), - логический тип (true, false).
Требуется ли в начале строки формата JSON писать строку с объявлением как в XML?
нет, начинается с описания данных.
Типы данных JSON
- целые числа (3), - вещественные числа (3.4), - логические типы (true, false), - строки ("текст"), - объекты ({“name”: ”Ivan”, ”age”: 30, ”cat”: {“name”: ”Murka”}}), - массивы ([1, 2, 5, 4]), - значение null.
Объекты. Приведите пример поля объекта.
(JSON)
сущности, у которых могут быть поля (характеристики этих сущностей).
Пример: { "name": "Ivan", "age": 30 }
Сколько может содержаться полей с одинаковым именем в объекте?
(JSON)
не содержит одинаковых имен.
Массив. Приведите пример.
(JSON)
это список элементов.
Например: [1, 3, 5]
Что нужно использовать чтобы писать следующие символы /, \, " ?
нужно использовать экранирование, тоесть написать перед ними обратный слэш \
Соглашения именования
1. Верблюжья нотация (camel case); 2. Нотация с нижним подчеркиванием.
Нотация в JSON
camel case
Нотация в XML
нотация с нижним подчеркиванием, camel case. Важнее соблюдать единообразный стиль.
Объяснение клиент-серверной архитектуры
Есть две взаимодействующие стороны – клиент и сервер, которые взаимодействуют друг с другом по сети при помощи протокола, например, HTTP. Сервер предоставляет некоторый ресурс или функции, а клиент хочет получить этот ресурс или использовать функции.
Браузер
приложение, предназначенное для просмотра и работы с веб-страницами.
Что умеют браузеры?
1. Отображать HTML страницы; 2. Применять к ним стили CSS; 3. Использовать для страницы код на языке JavaScript.
Список браузеров на которых следует проверять клиентскую часть приложения.
1. Google Chrome / Yandex Browser / Opera / новый Edge; 2. Mozilla Firefox; 3. Старый Edge; 4. IE 11; 5. Android; 6. Safari IOS.
Протокол HTTP
"HyperText Transfer Protocol" протокол прикладного уровня передачи данных. Изначально создавался для отправки и принятия документов, содержащих внутри ссылки для выполнения перехода на сторонние ресурсы.
DNS
"Domain Name System" распределенная система для получения информации о доменах. По сути это справочник соответствий между IP адресами и доменными именами. Например: IP 87.250.250.242 соответствует домен ya.ru
Host
это текстовый файл в Windows расположенный по пути "C:\Windows\System32\ drivers\etc\hosts" в который вписываются соответствия между IP и доменным именем. Внесенный список хостов приоритетнее DNS.
Структуру запроса от браузера
(HTTP)
Вначале идет метод, адрес и версия HTTP. Затем идут заголовки - пары ключ-значение. Далее следует тело запроса отделяемое от остальной части одной пустой строкой.
Методы
(HTTP)
это команда протокола HTTP. К ним относятся: GET; POST; PUT; DELETE; PATCH и другие.
Структура ответа от браузера
(HTTP)
Вначале идет версия HTTP. Код ответа. Затем идет список заголовков - пары ключ-значение. Далее следует тело ответа отделенное от остальной части одной пустой строкой.
Статусы об ошибке
(HTTP)
400, 404, 500, 503, 405
Статусы авторизации
(HTTP)
401, 403
Статусы редирект
(HTTP)
301, 302
Редирект
(HTTP)
это перенаправление клиента сервером на другой адрес.
Статус 400
(HTTP)
Bad Request – неверный запрос (код на стороне клиента посылает данные не в том формате, что ожидает сервер).
Service Unavailable – сервис недоступен (обычно когда веб-сервер лежит целиком).
Статус 405
(HTTP)
Method Not Allowed – запрос не тем HTTP методом (например, указали GET вместо POST).
Статус 401
(HTTP)
Unauthorized – не авторизован. Текущий пользователь не авторизован (не залогинился), и поэтому не получит доступ к ресурсу.
Статус 403
(HTTP)
Forbidden – запрещено. Пользователь залогинен, но у него нет прав на обращение к ресурсу.
Статус 301
(HTTP)
Moved Permanently – перемещено навсегда.
Статус 302
(HTTP)
Moved Temporarily – перемещено временно.
Метод GET
(HTTP)
получить ресурс.
Метод POST
(HTTP)
создать ресурс.
Метод PUT
(HTTP)
обновить ресурс целиком.
Метод DELETE
(HTTP)
удалить ресурс.
Метод PATCH
(HTTP)
обновить ресурс частично.
Какой метод иногда используют разработчики вместо PUT, PATCH, DELETE?
(HTTP)
POST
Каким методом можно "получить ресурс"?
(HTTP)
GET
Каким методом можно "создать ресурс"?
(HTTP)
POST
Каким методом можно "обновить ресурс целиком"?
(HTTP)
PUT
Каким методом можно "удалить ресурс"?
(HTTP)
DELETE
Каким методом можно "обновить ресурс частично"?
(HTTP)
PATCH
Kэш
(HTTP)
промежуточный буфер с быстрым доступом для хранения данных. Используется для оптимизации производительности за счет расхода памяти.
Правило использования GET
(HTTP)
должен применяться только для не модифицирующих операций.
Правило использования POST
(HTTP)
должен использоваться для модифицирующих операций.
Cookie (куки)
(HTTP)
небольшой фрагмент данных, который может храниться на стороне клиента, и который прикрепляется к каждому запросу.
Назначение cookie
(HTTP)
1. Аутентификация - залогиненность; 2. Хранение сессии - данные связанные с текущим пользователем в этом сеансе; 3. Хранение персональных данных- выбор языка на сайте, тема оформления и т.д.; 4. Сведения статистики о пользователях.
Что из себя представляет cookie?
(HTTP)
это пары ключ-значение (Name и Value)
К чему привязываются cookie?
(HTTP)
к определенному адресу (Path), либо к домену в целом (Domain).
Что делает сервер когда хочет установить cookie клиенту?
(HTTP)
он шлет заголовок Set-Cookie.
HTTP/2
более новая версия протокола HTTP 1.1
Чем HTTP/2 отличается от HTTP 1.1?
1. HTTP/2 бинарный, а не текстовый; 2. Возможность использовать одно соединение для нескольких запросов; 3. Приоритезация – можно задать запросам приоритет.
HTTPS
"HyperText Transfer Protocol Secure" это расширение протокола HTTP, которое добавляет шифрование.
Порт для HTTP
80
Порт для HTTPS
443
Порт
(HTTP)
это целое неотрицательное число от 0 до 65535. В сети приложение идентифицируется парой "IP адрес + порт".
Для чего зарезервированы порты 0-1023?
(HTTP)
для стандартных протоколов и приложений.
API
"Application Programming Interface" - набор функций, предоставляемых приложением. Программа предоставляет наружу некоторый набор функций, который может быть использован другими программами.
Web API
API, функции которого можно вызвать по некоторому сетевому протоколу, как правило, HTTP. Формат обмена данными обычно XML или JSON.
Rest
архитектура для клиент-серверного взаимодействия, основанная на протоколе HTTP.
Признаки архитектуры REST
1. Отсутствие состояния – для сервера каждый запрос клиента никак не связан с предыдущим; 2. Ориентированность на ресурсы – API пишется в терминах ресурсов, а не команд.
Rest API
формально это API, построенное по REST архитектуре. Обычно под этим понятием подразумевают Web API, которое принимает и выдает JSON, но есть и с XML.
RPC
"Remote procedure call" возможность вызывать команды другой программы (которая обычно находится на другом компьютере). RPC ориентирован не на ресурсы, а на функции, которые может выполнять API.
Способы передачи параметров в HTTP запросе
1. URL; 2. Тело запроса в не GET методах; 3. Заголовки.
Протокол => Имя хоста => Порт => Путь => Query string => Хэш.
Из чего состоит Хост?
(HTTP)
Имя хоста и Порт
Что нужно использовать для осуществления запроса?
(HTTP)
REST-клиенты
REST-клиенты
(HTTP)
1. Advanced REST Client – расширение для Chrome; 2. Postman – десктопная программа или веб-версия.
Какой программой можно отследить HTTP запросы?
Fiddler - на ПК. Chrome developer tools подходит только для сайтов.
Веб-сервис (веб-служба)
это программа, которая доступна по некоторому сетевому адресу. Это синоним для Web API. Веб-сервис предоставляет некоторый набор команд (функций/методов), которые он умеет выполнять.
SOAP
протокол для обмена XML сообщениями, в основном используется для RPC (удаленный вызов процедур) при работе с веб-сервисами.
Как часто называют SOAP сообщения?
конвертом (envelope).
Что есть в конверте?
(SOAP)
заголовок (header) и тело (body).
WSDL
(SOAP)
специальный язык с помощью которого SOAP-сервисы обычно предоставляют список своих функций.
Программа для выполнения SOAP запросов
SOAP UI
Какие ошибки можно обнаружить отслеживая запросы REST и SOAP?
1. Несанкционированный доступ к данным/функционалу; 2. Отсутствие валидации; 3. Отправляются/приходят не те данные.
Валидация
это проверка корректности данных
Виды валидации
Серверная – на стороне сервера. Клиентская – на стороне клиента
Консоль
текстовый интерфейс операционной системы.
Польза консоли
1. Работа с ней быстрее чем с графическим интерфейсом; 2. Возможность составлять скрипты (bat, cmd или ch файлы).
Зависят ли в Windows команды консоли и пути к файлам от регистра?
не зависят.
Зависят ли в Linux команды консоли и пути к файлам от регистра?
зависят.
Абсолютный путь
(консоли)
это полный путь, начиная с диска. Например: C:\Windows\System32
Относительный путь
(консоли)
это путь относительно текущей папки. Например: drivers\etc\hosts
Символ точки "." в относительном пути
(консоли)
означает текущую папку.
Символ последовательности из двух точек ".." в относительном пути