Системный Аналитик – Telegram
Системный Аналитик
18.6K subscribers
91 photos
4 videos
49 files
254 links
Канал для системных аналитиков и не только: подборки полезных материалов на все случаи жизни.

Реклама и сотрудничество @radale

https://gosuslugi.ru/snet/67b0613c6411ff785396754a
Download Telegram
Отличие системного аналитика от бизнес-аналитика

В двух словах: БА - больше шарит в бизнесе и бизнес-требованиях, СА - больше в технологиях и системных требованиях

1. Бизнес-аналитик - связующее звено между бизнесом и разработчиками. Погружается в предметную область, выясняет, чего хочет бизнес, передаёт эти требования разработчикам и добивается результата. Нужны коммуникативные способности и аналитический ум. БА настроен на коммуникацию с бизнесом, его задача — определить боль, найти и предложить решение проблемы с помощью ИТ.

2. Системный аналитик - погружён в ИТ, техническую часть. Ему требуется больше практических технических навыков, он ближе к группе технических специалистов и должен лучше понимать их язык.

Сложившаяся ситуация требует от ИТ аналитиков (1) глубокого знания предметной области, особенностей внутренних процессов, внешней среды и трендов, (2) не менее глубоких знаний технологий, практического использования.

В профессии БА действительно вникать в тонкости архитектуры и разработки не надо. БА должен подробно выявить все сценарии работы с системой. А вот СА как раз эти сценарии подробно детализирует и опишет все нюансы на техническом уровне. Получается «сильный СА» может написать настолько подробные требования (после груминга с командой), что разработчику их нужно будет только реализовать.

Хороший БА кропотливо выявляет все сценарии и подробности использования системы, а хороший СА может писать сильно детализированные требования разработчикам. И там и там нужна кропотливость и детально вникать в работу в зоне своей ответственности.
👍165🔥1🤔1
Абстрактный пример:

Иван — БА компании «Исполнитель».
Ева — системный аналитик компании «Исполнитель».
Компании «Заказчик» нужна крупная доработка имеющейся системы.

В этой ситуации задачи Ивана (БА): выявить функциональные и нефункциональные требования Заказчика и Исполнителя, устранить противоречия между заинтересованными лицами для определения приемлемого решения, создать прототипы, взаимодействовать с заказчиком процессе разработки, осуществить демо-показ и приемку работы. Делать все это сообща с Евой.

Задачи Евы (СА): спроектировать доработку оптимальным образом, описать ее влияние на систему, ограничения и возможные улучшения, создать спецификацию, декомпозировать и передать в разработку задачи, проконтролировать их своевременное выполнение в соответствии с требованиями. Делать все это сообща с Иваном.
👍91
Литература аналитика

1. «Разработка требований к программному обеспечению» Карл Вигерс и Джой Битти
Классика среди всех книг по разработке требований. В книге подробно даются процессы сбора, выявления, обработки требований и работы с ними. По каждому процессу показан пример работы.

Благодаря книге можно получить определенные методы, которые помогут сократить сроки разработки и уменьшить количество ошибок. Книга довольно трудна для первого прочтения, поэтому начинать лучше с книг под пунктами два и три.

2. «Психбольница в руках пациентов, или почему высокие технологии сводят нас с ума» Алан Купер
Алан Купер первым заговорил о том, что проектирование продуктов должно осуществляться до непосредственной разработки и является этапом первостепенной важности.

Большинство продуктов функционирует и взаимодействует с пользователями только на основе задумки создателей, игнорируя реальные потребности использования.

Из книги следует мысль, что для продукта повышение качества взаимодействия важнее, чем снижение издержек. Для конечных пользователя удобный продукт всегда предпочтителен, чем неудобный многофункциональный.

3. «UX-дизайн. Практическое руководство по проектированию опыта взаимодействия» Расс Унгер и Кэролайн Чендлер
Отличная книга для совсем начинающих специалистов. В книге даются основы основ проработки бизнес-идеи, определения требований, проведению интервью, подготовке документации и формированию взаимодействия пользователей и продукта.

Книга помогает понять, с чего следует начать в первую очередь, как одни этапы разработки продукта взаимодействуют с другими. Очень много примеров и шаблонов. Практически сразу же после прочтения книги можно приступить к работе.

4. «Современные методы описания функциональных требований к системам» Алистер Коберн
В оригинале книга называется "Writing Effective Use Cases", что наиболее полно отражает ее суть. В книге описаны методы и примеры создания юз кейсов на основе практического опыта автора. Книга помогает понять, как использовать юз кейсы при описании сложных многофункциональных систем и вариантов взаимодействия с ними.

5. «Как писать хорошо» Уильям Зинсер
Автор рассказывает, как писать просто, понятно, чисто и интересно. Автор объясняет, как обращаться к читателю, как выбирать тему, как сформировать канву повествования. В книге даются плохие и хорошие примеры, как избавляться от словесного мусора. Автор объясняет, почему простота текста важна.

6. «Пользовательские истории. Искусство гибкой разработки ПО» Джефф Паттон
В оригинале название книги звучит как "User Story Mapping". Книга рассказывает про пользовательские истории (юзер стори) как о методе описания требований к проектируемому продукту.

Пользовательские истории довольно просто и доходчиво дают понимание заказчику, команде, пользователям о задачах и функциях разрабатываемой системы. Пользовательские истории находятся на более высоком уровне абстракции. На их основе удобно описывать сценарии взаимодействия (юз кейсы).

Stay tuned.
10🤔1
Порядок сбора требований:

1. Сначала выявляются цели создания Системы (бизнес-требования). Может сложиться впечатление, что фиксация данных требований не является обязательной для разработки. Но в этом случае у Исполнителя не будет возможности контролировать соответствие разработанной Системы тем целям, для которых она создавалась, а так же – возможности устанавливать семантические зависимости между целями разработки системы и сценариями ее использования;

2. Далее определяются роли пользователей Системы (как людей, так и других программных систем). После этого выявляются и описываются сценарии использования Системы каждой из данных ролей. Так формируются Требования пользователей.

3. Далее разрабатывается полный набор требований к функционалу Системы таким образом, чтобы данный функционал позволял выполнить все сценарии, описанные в Требованиях пользователей. Так же фиксируются ограничения для Системы и параметры среды ее функционирования.
👍62🤔1
Брокеры сообщений

Брокер сообщений (очередь сообщений) – это отдельный сервис, который отвечает за хранение и доставку данных от сервисов-отправителей к сервисам-получателям с помощью модели Pub/Sub.
Эта модель предполагает, что асинхронное взаимодействие осуществляется согласно следующей логике двух ролей:

1. Publishers публикуют новую информацию в виде сгруппированных по некоторому атрибуту сообщений;
2. Subscribers подписываются на потоки сообщений с определенными атрибутами и обрабатывают их.

Большинство брокеров предоставляют гарантии “at least once” и “at most once”.

At most once исключает повторную обработку сообщений, однако допускает их потерю. В этом случае брокер будет доставлять сообщения получателям по принципу “отправил и забыл”. Если получатель не смог по какой-то причине обработать сообщение с первой попытки, брокер не будет осуществлять переотправку.

At least once, напротив, гарантирует получение сообщения получателем, однако при этом есть вероятность повторной обработки одних и тех же сообщений.

Зачастую эта гарантия достигается с помощью механизма Ack/Nack (acknowledgement/negative acknowledgement), который предписывает совершать переотправку сообщения, если получатель по какой-то причине не смог его обработать.
Таким образом, для каждого отправленного брокером (но еще не обработанного) сообщения существует три итоговых состояния — получатель вернул Ack (успешная обработка), вернул Nack (неуспешная обработка) или разорвал соединение. Последние два сценария приводят в переотправке сообщения и повторной обработке.

Однако брокер может произвести повторную отправку и при успешной обработке сообщения получателем. Например, если получатель обработал сообщение, но завершил свою работу, не отправив сигнал Ack брокеру.
В этом случае брокер снова положит сообщение в очередь, после чего оно будет обработано повторно, что может привести к ошибкам и порче данных, если разработчик не предусмотрел механизм устранения дублей на стороне получателя.

#архитектура
🤔2👍1🔥1
Партиция - последовательность сообщений, раздел топика, а топик - это очередь.

В Кафке процесса доставки как такового нет: каждый читатель сам ответственен за вытягивание (pull) сообщений из партиций, которые он читает.

Каждый получатель закреплен за определенной партицией (или за несколькими партициями) в интересующем его топике, и при появлении нового сообщения получает сигнал на вычитывание следующего элемента в commit log, при этом отмечая, какое последнее сообщение он прочитал. Таким образом при переподключении он будет знать, какое сообщение ему вычитать следующим.

Базовое правило масштабирования Кафки — количество конкурентных читателей (то бишь группа сервисов, реализующих одинаковую логику обработки (реплик)) топика не должно превышать количество партиций в этом топике, иначе какая-то пара читателей будут обрабатывать одинаковый набор данных.
👍2🤔2
Чтобы избежать ситуации с чтением одной партиции конкурентными читателями, в Кафке принято объединять несколько реплик одного сервиса в consumer Group, в рамках которого Zookeeper будет назначать одной партиции не более одного читателя. Так как читатели привязываются непосредственно к партиции (при этом читатель обычно ничего не знает о количестве партиций в топике), ZooKeeper при подключении нового читателя производит перераспределение участников в Consumer Group таким образом, чтобы каждая партиция имела одного и только одного читателя.
Читатель обозначает свою Consumer Group при подключении к Kafka.
👍2
Подытожим основные преимущества Kafka

В один топик может писать один или несколько производителей – идеально для агрегирования данных из большого количества источников, что становится особенно полезно при использовании Кафки в качестве системы доставки сообщений в микросервисной архитектуре;

Несколько потребителей – с учетом особенностей механизма получения сообщений (pull) один и тот же поток сообщений может читать несколько потребителей, не мешая при этом друг другу. При этом конкурентных читателей (например, реплики одного сервиса) можно объединить в Consumer Group, а ZooKeeper, в свою очередь, будет следить, чтобы каждая партиция одновременно читалась не более, чем одним участником каждой группы;

Хранение данных на диске в течение длительного времени позволяет не беспокоится о потере данных при резком росте нагрузки. Кафка, будучи своего рода буфером, компенсирует отставание потребителей, позволяя накапливать в себе сообщения до нормализации нагрузки или масштабирования консьюмеров. Также обеспечивается гибкая конфигурация, где отдельные потоки данных (топики) хранятся на диске с разным сроком;

Хорошо масштабируется, за счет меньшей, в сравнении с AMQP брокерами, единицей параллелизма – партицией. Разные партиции могут храниться в разных брокерах, обеспечивая дополнительную гибкость при горизонтальном масштабировании;

Быстродействие. В силу простоты механизма, при которой процесса доставки нет как такового, а процесс передачи данных представляет из себя запись-хранение-выдача, Кафка обладает очень большой пропускной способностью – она исчисляется миллионами сообщений в секунду.
👍2