Академический Документы
Профессиональный Документы
Культура Документы
2
Роль системного аналитика
Разработка проектов (мобильные приложения iOS, Android) от стадии идеи до запуска.
- Исследование рынка, анализ прямых и косвенных конкурентов, сбор требований к
продукту, проведение интервью с пользователями.
- Создание прототипов (InVision, Marvel), переработка интерфейса мобильных
приложений (Figma, Sketch).
- Проектирование и тестирование API (Postman, SoapUI, Swagger, Charles),
проектирование базы данных (Postgre, MS SQL Server), взаимодействие с командой
разработчиков и дизайнеров. Описание требований в Jira для команды разработки.
- Интеграция со сторонними сервисами через REST API.
Планирование времени по задачам
Тестирование готового продукта
Госкорпорация Росатом
Внедрение ERP-системы.
Описание требований.
Написание ТЗ.
Проектирование структуры БД.
3
Нормальные формы БД
4
ESB
5
6
7
Плюсы и минусы сервисной шины
данных I Enterprise service bus (ESB) I kt.team
https://www.youtube.com/watch?v=mBC00xcYrFw
https://www.youtube.com/watch?v=UXlVXZ9walw
8
Интеграция систем без разработки
модулей на примере Talend | Enterprise
Service Bus | kt.team
https://www.youtube.com/watch?v=BooC1bf1SS8
публикация в шину – лучше чем запросы от ESB к системам (нет лишних запросов)
ESB может сама что-то делать (в отличие от брокера сообщений)
9
Agile / Waterfall
https://vc.ru/flood/42084-agile-ili-waterfall-sravnenie-metodologiy-veb-razrabotki
В этой статье постараемся определить, в чем особенности этих двух методологий, назовем
положительные и отрицательные стороны, а также разберемся, какой способ реализации
подойдет для выбранного вами проекта.
Agile
10
Экстремальное программирование (XP) – методика, при которой важно взаимодействие
с клиентом на каждом этапе. Благодаря такому подходу, выявляются недостатки
предыдущих этапов, определяется необходимый функционал продукта и другие
параметры.
Про гибкую модель управления можно сказать, что она универсальна, так как подойдет к
любому проекту. Сложность выбора заключается только в ограничениях заказчика по
времени и боязнью «дыр» в бюджете. Качество обратной связи при данном подходе
поможет прийти к согласованному решению. Выбирая эту модель, заказчик может быть
уверен, что его проект будет уникальным, интересным и проверенным до мелочей.
Waterfall
Выбирая данную модель для своего проекта, необходимо понимать, что конечный
продукт будет иметь недочеты. Предусмотреть все на этапе анализа и планирования
просто невозможно, в процессе разработки могут появится новые требования. Однако, в
Waterfall сделать правки в течении проекта невозможно также, как и вернуться на шаг
назад. Классический подход представляет из себя каскадную модель, которая базируется
на последовательном создании проекта, разбитого на циклы.
11
Waterfall с субпроектами – методика работы с тремя крупными стадиями: разработка
концепции, проектирование и структурирование продукта. Каждый из этих блоков имеет
свои этапы разработки. По окончании работ в каждой стадии проводится их интеграция.
Преимущества методологий
Agile:
Waterfall
Недостатки методологий
Agile:
Waterfall:
Применение методологий
Agile используется:
При выборе той или иной методологии заказчик должен внимательно изучить сильные и
слабые стороны подходов, учесть советы специалистов, определить набор требований к
проекту. И тогда выбор будет сделать гораздо легче. Некоторые разработчики считают,
что в рамках одного проекта можно оптимально совместить Agile и Waterfall.
Помните, что, принимая решение в пользу того или иного метода, главной задачей
является создание не только качественного продукта, но и возможность им решать
поставленные задачи.
https://club.cnews.ru/blogs/entry/
waterfall_ili_agile_kak_vybrat_metodologiyu_upravleniya_proektom_-2020-09-02
Когда вы решаете разработать свой продукт, то рано или поздно возникает вопрос, как
организовать процесс разработки. Стоит ли жестко распланировать все этапы и делать все
шаг за шагом? Или лучше работать короткими итерациями, чтобы чаще отслеживать
результат и быстрее вносить правки? Все это определяют методологии разработки
продукта. Каждая из них имеет свои преимущества и недостатки. В этой статье
рассмотрим наиболее популярные из них. Также я расскажу на что обратить внимание при
выборе подходящей методологии и как комбинировать разные подходы.
14
Этапы методологии Waterfall
Ценности Agile:
15
Agile стал основой для целого ряда гибких методик, среди которых наиболее известны
Scrum, Lean и экстремальное программирование.
Жизненный цикл проекта в этом случае – это набор итераций, каждая из которых
включает в себя мини-версию разработки проекта командами по методу Waterfall.
Ещё одна особенность в том, что на этапе аналитики требуется прояснить и зафиксировать
не все требования по проекту, а только часть – то, что планируется завершить в текущей
итерации. Аналогично с разработкой дизайна – идет отрисовка не итоговых прототипов, а
только требуемых для реализации текущего спринта.
16
Преимущества и недостатки Waterfall и
гибких методологий
Waterfall, Scrum и другие гибкие методологии управления проектами имеют
преимущества и недостатки. Каждая из методологий хорошо подходит для решения
определенных задач и сложнее адаптируется к другим.
Характеристики
проектов,
подходящих под
разные
Waterfall Гибкие методологии В чем подвох
методологии
можно обозначить
так:
Характеристики
В Waterfall этап
аналитики
предполагает
полное прояснение
всех требований и
учет ограничений
на ранней стадии
проекта.
Скоуп и Понятны и меняться не Меняются по ходу Последующие
требования будут работы изменения
требований сложнее
с т.з. процессов и
потребует
дополнительных
затрат, чтобы
исправить
реализованный
ранее функционал.
В новой для себя
области гораздо
Похожая задача уже Для проще упустить
решалась заказчика/исполнителя что-то важное. Для
Новизна задачи заказчиком/исполнителем, это качественно новая Waterfall будет
продукт не задача, либо продукт сложнее вносить
инновационный инновационный изменения в
исходные
требования.
Управление Требования к проекту в Планируется По аналогии с
требованиями процессе работы не будут применять Customer первыми пунктами
значительно меняться development – здесь все
(тестирование идеи упирается в
или прототипа потребность гибко
будущего продукта на управлять
потенциальных требованиями. Если
17
потребителях),
тестировать гипотезы
нет такой
на рынке, в процессе
потребности –
проекта управлять
Waterfall ваш
приоритетами,
вариант.
опираясь на фокус-
группы
Если в Waterfall все
идет по плану, то
бюджет и срок
проекта можно
определить после
этапа аналитики по
проекту. При этом
Можно варьировать в
Бюджет Жестко ограничен бюджет первичен, и
заданных рамках
после завершения
аналитики он будет
определять срок. То
есть
последовательность
такая: бюджет →
аналитика → срок.
Отличительная
особенность гибких
методологий –
результат каждой
итерации в виде
Жестко ограничен и работающего
Срок определен до этапа Может варьироваться продукта. После
аналитики завершения этапа
аналитики можно
достаточно точно
оценить срок
завершения
Waterfall-проекта.
18
Сравнение Scrum и Kanban
Scrum Kanban
Регулярные спринты с фиксированной
График продолжительностью (например, Непрерывный процесс
2 недели)
Подходы к
В конце каждого спринта Непрерывная поставка
релизу
Владелец продукта, scrum-мастер,
Роли Обязательных ролей нет
команда разработчиков
Время выполнения, время
Ключевые
Скорость цикла, объем незавершенной
показатели
работы (WIP)
Отношение к В ходе спринта команды не должны Изменение может произойти в
изменениям вносить изменения. любой момент
19
Итак, что же находится в Канбане? Давайте посмотрим на контраст со Scrum:
20
---------------------------------
Определение:
SOAP – формат обмена данными. С SOAP это всегда SOAP-XML
REST – это архитектурный подход, ориентированный на использование HTTP в качестве
транспортного протокола.
Определения услуг
Транспорт
Простота реализации
21
REST обычно использует JSON, который легче анализировать и обрабатывать. В
дополнение к этому, REST не требует наличия определения службы для
предоставления веб-службы.
Однако в случае SOAP вам необходимо определить свой сервис с использованием
WSDL, и при обработке и анализе сообщений SOAP-XML возникают большие
накладные расходы.
https://www.youtube.com/watch?v=hPqg8gqLu8g
Почему Rest лучше
1) Soap – только xml, Rest может использовать Json
2) Rest предоставляется многими сторонними web-сервисами (google, amazon,…)
3) Rest быстрее
Проверка валидности:
Soap – обязательно (медленнее), rest (json) - необязательно
https://www.youtube.com/watch?v=lYjm2w8-ERI&t=122s
REST ограничения:
1. Приведение архитектуры к модели клиент-сервер
2. Отсутствие состояния
3. Кэширование
Клиенты могут выполнять кэширование ответов сервера. У тех, в свою очередь, должно
быть явное или неявное обозначение как кэшируемых или некэшируемых, чтобы клиенты
в ответ на последующие запросы не получали устаревшие или неверные данные.
Правильное использование кэширования помогает полностью или частично устранить
некоторые клиент-серверные взаимодействия, ещё больше повышая производительность и
расширяемость системы.
4. Единообразие интерфейса
5. Слои
23
Различия микросервиса и монолита
https://www.youtube.com/watch?v=mKp7-hWPJb4
https://www.youtube.com/watch?v=PmIrrFqOfn8
Плюсы монолита
Простота разработки (нет интеграции)
Проще развертывать
Поддержка, поиск неисправностей
Производительность (куча запросов к микросервисам)
Минусы монолита
Сложность внедрения новых технологий (нужно переписывать)
Громоздкий код, высокий порог вхождения в проект
Масштабируемость (не факт что получится масштабировать отдельные функции)
24
Сервис-ориентированная архитектура
Микросервисы
Недостатки
Сложность разработки и проектирования (нужно продумывать взаимодействие
микросервисов)
Сложность устранения неполадок (кто виноват? Нужно правильное логирование)
Сложность тестирования связки микросервисов
25
https://ru.photo-555.com/1235570-microservice-vs-monolithic
26
https://www.youtube.com/watch?v=3W0lJTNwrFE
27
28
Синхронное общение между сервисами:
Сервисы в этом случае зависят друг от друга (один упал – второй ждёт), что убивает саму
идею микросервисов.
1) Через любой messaging provider, например Rabbit MQ, Azure Service Bus,
Raddis
Не нужно ждать ответа, но нужно знать о существовании другого сервиса (сильная
связанность сервисов)
29
2) Через шину сообщений (Event Bus, шина сообщений)
Сервисы подписываются на события
30
очереди сообщений в микросервисной
архитектуре
https://mcs.mail.ru/blog/zachem-nuzhny-ocheredi-soobshcheniy-v-mikroservisnoy-arkhitekture
использование очередей сообщений решает сразу две задачи: сокращает время ожидания
пользователя за счет асинхронной обработки и предотвращает потерю информации при
сбоях.
31
https://www.youtube.com/watch?v=Bw8f1Dd6Wr4
32
Протоколы
http – не шифрует данные
https – шифрует данные. Нужен SSL-сертификат на сервере.
web sockets – двунаправленный протокол (не запрос-ответ как у http, передача идет в обе
стороны)
FTP (File Transfer Protocol) – протокол передачи файлов
https://habr.com/ru/post/111241/
Отличительной его особенностью является использование двух соединений между
сервером и клиентом. Одно соединение (командное или управляющее) используется для
передачи команд серверу, а так же приема ответов на эти команды. Второе соединение
(соединение данных) используется непосредственно для приема или передачи данных.
Управляющее соединение всегда происходит со стороны клиента на порт сервера 21 и
остается на протяжении всего сеанса работы открытым. Соединение данных открывается
и закрывается по мере необходимости в приеме или получении данных.
SFTP предполагает, что он работает по защищенному каналу, например SSH, что сервер
уже аутентифицировал клиента и что протоколу доступна информация пользователя.
33
Header-ы http
Запрос Ответ
Заголовок GH Появление* Назначение Пример
RqH EH RsH EH
Список допустимых форматов
Accept Нет Да Нет Нет Нет HTTP/1.0 Accept: text/plain
ресурса.
Accept-
Перечень поддерживаемых
Charset
Нет Да Нет Нет Нет HTTP/1.0 кодировок для предоставления Accept-Charset: utf-8
пользователю.
Перечень поддерживаемых
Accept- способов кодирования Accept-Encoding: <compress | gzip | deflate |
Нет Да Нет Нет Нет HTTP/1.0
Encoding содержимого сущности при sdch | identity>
передаче.
Accept- Список поддерживаемых
Нет Да Нет Нет Нет HTTP/1.0 Accept-Language: ru
Language естественных языков.
Указание на альтернативные
Alternates Нет Нет Нет Да Нет HTTP/1.1
способы представления ресурса.
Authorization: Basic
Authorization Нет Да Нет Нет Нет HTTP-Auth Данные для авторизации. QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: max-age=3600
Основные директивы для Cache-Control: max-stale=0
Cache-Control Да Нет Нет Нет Нет HTTP/1.1 Cache-Control: min-fresh=0
управления кэшированием.
Cache-Control: no-transform
Cache-Control: only-if-cached
Cache-Control: cache-extension
Формат и способ представления
Content-Type Нет Нет Да Нет Да HTTP/1.0 Content-Type: text/html;charset=utf-8
сущности.
Date Да Нет Нет Нет Нет HTTP/1.0 Дата генерации отклика. Date: Tue, 15 Nov 1994 08:12:31 GMT
URI ресурса, после которого Referer:
Referer Нет Да Нет Нет Нет HTTP/1.0
клиент сделал текущий запрос. http://en.wikipedia.org/wiki/Main_Page
Server Нет Нет Нет Да Нет HTTP/1.0 Список названий и версий веб- Server: Apache/2.2.17 (Win32) PHP/5.3.5
34
сервера и его компонентов с
комментариями. Для прокси-
серверов поле Via.
Список названий и версий User-Agent: Mozilla/5.0 (X11; Linux i686;
User-Agent Нет Да Нет Нет Нет HTTP/1.0 клиента и его компонентов с rv:2.0.1) Gecko/20100101 Firefox/4.0.1
комментариями.
*
Значения в колонке «Появление»:
35
Методы HTTP запроса (Глаголы)
HTTP определяет множество методов запроса, которые указывают, какое желаемое
действие выполнится для данного ресурса. Несмотря на то, что их названия могут быть
существительными, эти методы запроса иногда называются HTTP глаголами.
CRUD — (англ. create read update delete — «Создание чтение обновление удаление»)
сокращённое именование 4 базовых функций при работе с персистентными хранилищами
данных — создание, чтение, редактирование и удаление.
Операция
Создание (Create)
Чтение (Read)
Редактирование (Update)
Удаление (Delete)
Каждый реализует свою семантику, но каждая группа команд разделяет общие свойства:
так, методы могут быть безопасными (не изменяют состояния сервера – GET, HEAD,
OPTIONS), идемпотентными (возвращают один и тот же результат на идентичный запрос
– GET, HEAD, PUT, DELETE) или кэшируемыми.
POST запрос.
Разница между PUT и POST состоит в том, что PUT является идемпотентным: повторное
его применение дает тот же результат, что и при первом применении (то есть у метода нет
побочных эффектов), тогда как повторный вызов одного и того же метода POST может
иметь такие эффекты, как например, оформление одного и того же заказа несколько раз.
Все безопасные методы являются также идемпотентными, как и некоторые другие, но при
этом небезопасные, такие как PUT или DELETE.
-строку запроса, в которой указывается версия HTTP протокола и HTTP метод запроса;
-ноль или несколько заголовков, разделенных между собой символом конца строки, в
которых передаются другие HTTP праметры для успешного HTTP соединения;
-пустую строку, чтобы отделить служебную информацию от тела сообщения;
-необязательное тело сообщения.
37
38
39
методы авторизации
https://habr.com/ru/company/dataart/blog/262817/
Например, при попытке попасть в закрытый клуб вас идентифицируют (спросят ваше имя
и фамилию), аутентифицируют (попросят показать паспорт и сверят фотографию) и
авторизуют (проверят, что фамилия находится в списке гостей), прежде чем пустят
внутрь.
https://www.youtube.com/watch?v=q0u4yRUSDzI
40
41
https://zen.yandex.ru/media/habr/kak-ty-realizuesh-autentifikaciiu-priiatel-
5ec4cc1e033b1f6bec4ce836
42
Аутентификация на основе сессий (каждый раз проверяется session id)
Аутентификация на основе токенов (не хранятся на сервере, это удобно)
43
Типы баз данных
Реляционные БД - набор таблиц и связей между ними
Нормализованы (недопустимо дублирование данных)
Ключ-значение
Такую базу можно представить как огромную таблицу. В каждой её ячейке хранятся
данные произвольного типа, а каждому значению присвоен уникальный ключ,
по которому это значение можно найти.
Такая СУБД не поддерживает связи между объектами, выполняет лишь операции поиска
значений по ключу, добавления и удаления записи.
Например:
Одна из самых популярных — Redis. Её используют Uber, Slack, Stack Overflow, сайты
гостиниц и туристические, социальная сеть Twitter.
Документоориентированные СУБД
44
Если провести аналогию с реляционными СУБД, то коллекциям соответствуют таблицы,
а документам — строки в них.
[
{
"year" : 2020,
"title" : "Душа!",
"produced" : "Pixar Animation Studios",
"directors" : [ "Пит Доктер", " Кемп Пауэрс"],
"tagline" : "Everybody has a soul. Joe Gardner is about to find his",
"rating" : 8.3,
"genres" : ["Мультфильм", "Комедия"]
},
{
"year": 2020,
"title": "Ход королевы",
"created" : "Allan Scott",
"book" : "Уолтер Тевис",
"actors" : ["Аня Тейлор-Джой", "Мариэль Хеллер", "Моусес Ингрэм"],
"rating" : 8.4,
"genres" : ["Драма", "Спорт"]
},
{
"year": 1972,
"title": "Зита и Гита",
"рroduced" : "Sippy Films",
"actors" : ["Хема Малини", "Санджив Кумар"],
"genres" : ["Драма", “Мюзикл”, "Мелодрама"]
}
]
Колоночные
Если реляционная база создаёт для каждой таблицы по файлу, то в колоночной отдельный
файл создаётся для каждого столбца таблицы.
Что это даёт? Представьте, что вам нужны только названия объектов, а их свойства вас
не интересуют.
Графовые
Вершины (или узлы графа) — это объекты (сущности), а рёбра графа — взаимосвязи
между ними.
46
Виды требований к ПО
Функциональные требования
Нефункциональные требования
Нефункциональные требования — требования, определяющие свойства, которые система
должна демонстрировать, или ограничения, которые она должна соблюдать, не
относящиеся к поведению системы. Например, производительность, удобство
сопровождения, расширяемость, надежность, факторы эксплуатации.
производительность, безопасность, ремонтопригодность, удобство использования,
надежность и доступность.
Функциональные требования.
С ними всё, вроде бы, просто. Как может быть ясно из самого названия, они нужны, чтобы
описать, какие функции должны быть реализованы в рамках задания. Т.е. это то, что
нужно пользователю, чтобы делала система. Здесь описываются все действия, которые
должны быть выполнены, субъекты, которыми должны быть они выполнены, и
результаты, которые должны быть получены. Т.е. нужно описать, кто, когда и что делает,
и что получает.
Нефункциональные требования
Внешние интерфейсы
Атрибуты качества
Ограничения
Могут быть требования к качеству кода, к использованию тех или иных компонентов,
программных средств, библиотек, лицензий.
47
Могут быть требования к тому, что должен пользователь видеть на экране, какие кнопки
может нажимать, а какие нет, и так далее.
Бизнес vs Функциональные требования
Пример бизнес-требования:
«Для рекламной кампании важно максимально точно отслеживать лимит показов, чтобы
избежать финансовых потерь, связанных с показом баннеров сверх оплаченного лимита.
Помимо этого, возникает задача ограничить показ одного баннера одному пользователю,
например — не больше N раз в день».
48
«Для решения этой задачи [какой – см. выше] предполагается использовать внешний
сервис, к которому баннерные сервера будут обращаться при каждом показе баннера.
Поскольку данный сервис является точкой отказа, баннерные сервера должны корректно
обрабатывать ситуацию когда внешний сервис недоступен или отвечает с задержками».
https://www.sekretariat.ru/article/95445-struktura-tehnicheskogo-zadaniya
бизнес-правила
бизнес-проверки
валидация
мапинг
сериализация
49
Типы диаграмм
https://habr.com/ru/post/508710/
ER-диаграммы
UML: диаграмма классов, диаграмма последовательностей, USE-CASE диаграмма
(=диаграмма прецедентов, вариантов использования)
50
https://habr.com/ru/company/trinion/blog/245615/
Рекомендую сначала хорошо изучить программный продукт, понять, что он может, каким
образом в нем реализованы те или иные функции, и только потом заниматься
интеграцией.
Каждый раз при работе с данными нужно очень хорошо понимать, что именно вы
выгружаете, в каком виде, а также, куда вы будете выгружать эти данные.
51
1. При помощи смс, электронного письма, всплывающих уведомлений в 1С
информацию о сбое должен получить человек, который занимается обработкой
заказов.
2. Для контроля аналогичное уведомление (чаще всего на email) отправляется
руководителю отдела или директору компании.
3. Обязательно ведется лог-файл ошибок для того, чтобы специалист смог
просмотреть все подробности.
Лично я предпочитаю всегда разрабатывать решение под заказчика. Здесь можно спорить,
можно обсуждать различные варианты, но есть факт: типовые обмены данными всегда
сильно перегружены возможностями, которые вашему клиенту не нужны. В результате
процесс обмена значительно замедляется, а число возможных ошибок вырастает в разы.
Метод подключения: REST API, SOAP или прямое подключение к базе приемника
Я считаю, что обо всех возможных ограничениях в доступе нужно узнать на начальном
этапе интеграции. Таким образом, вы гарантированно избежите очень распространенной
проблемы:
Формат выгрузки
Для обмена данными используются самые разные форматы. Это может быть JSON, XML,
CSV, TXT, прямой доступ к базе и т.д. У меня в этом вопросе нет каких-то определенных
предпочтений. Я считаю, что здесь нужно исходить из рациональных требований проекта.
Постобработка
Итак, обмен данными прошел успешно. Что дальше? Я считаю, что это еще не финал
интеграции, так как пользователю мало того, что данные появились в системе. Обычно
ему требуется, чтобы с этими данными выполнялись какие-то действия. Что именно
нужно клиенту, следует уточнить у него. Но всегда надо помнить о том, что вы работаете
52
для пользователя, для того, чтобы ему было удобно.
Постобработка требуется, прежде всего, для того, чтобы полученные данные прошли
полный жизненный цикл, а, следовательно, приняли участие в каких-то последующих
бизнес-процессах. А потому после загрузки должны запускаться оповещения или какие-то
определенные процессы, например, обработка заказа.
Тестирование интеграции
С моей точки зрения интеграция – это часть (иногда частный случай) внедрения
программного обеспечения. И здесь, как и для любой другой работы по внедрению ПО,
потребуется тестирование программистом, потом – лично консультантом, а также
различные варианты тестирования вместе с пользователями.
53
Use Case VS User Story. Выбираем подход к
специфицированию требований
https://www.youtube.com/watch?v=9dOFSY5PoNo
54