Business | System analyst
14.2K subscribers
163 photos
89 videos
7 files
977 links
Авторский канал для бизнес/системных аналитиков от аналитика со стажем, как для начинающих, так и для бывалых. Выкладываем авторские посты, статьи (также зарубежные), видео, опросы, юмор))

Сотрудничество: @the_real_bird
Канал ИТ-анализ: @analysis_it
Download Telegram
​​Характеристики качества требований к ПО:

Что делает требование к ПО хорошим? Для этого есть характеристики качества требований к ПО, которые можно использовать, как чек-лист при написании или тестировании требований.

Характеристики качества требований по-разному определены различными источниками. Однако, следующие характеристики являются общепризнанными:

Единичность - требование относится только к одному свойству, т.е. должна существовать только одна трактовка требования

Завершенность - требование является полным и законченным с точки зрения представления в нём всей необходимой информации, ничего не пропущено по соображениям «это и так всем понятно». Также требование должно быть описано целиком в одном месте, а не разбросано по документу

Последовательность - Требование не противоречит другим требованиям и полностью соответствует внешней документации

Атомарность - требование является атомарным, если его нельзя разбить на отдельные требования без потери завершенности, и оно описывает одну и только одну ситуацию/функцию

Отслеживаемость - возможность отследить связь между требованием и другими артефактами проекта, каждое требование имеет уникальный идентификатор, по которому оно легко прослеживается

Актуальность - требование не должно быть устаревшим с течением времени

Выполнимость - Требование должно быть технологически выполнимым, реализуемым в рамках бюджета и сроков разработки проекта

Недвусмысленность - требование кратко определено без обращения к техническому жаргону, акронимам и другим скрытым формулировкам

Проверяемость - выполнение требования можно проверить. Реализованность требования может быть определена через один из четырёх возможных методов: осмотр, демонстрация, тест или анализ.

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

Полнота - требование должно быть определено для всех возможных ситуаций

#сбортребований

@ba_and_sa
​​Техники сбора требований к разработке ПО

Прежде, чем начать собирать требования, нам необходимо понимать, что такое требование (1), для чего их собирать (2), выявить всех заинтересованных лиц / стейкхолдеров (3), которые будут пользоваться системой

1️⃣ Требования к ПО- это спецификация того, что должно быть реализовано в системе.
Требования к ПО состоят из трех уровней:
- бизнес-требования
- требования пользователей
- функциональные требования

2️⃣ Сбор требований - это один из самых важных этапов процесса создания любой информационной системы, будь то десктопное, веб или мобильное приложение или же просто доработка уже существующего решения

3️⃣ Стейкхолдеры - это физическое или юридическое лицо, группа лиц, чьи действия и решения могут влиять на деятельность бизнеса, процессы в нем и прибыль. К стейкхолдерам относятся поставщики, сотрудники, акционеры, клиенты и другие стороны, которые напрямую заинтересованы в работе компании и ее результатах или имеют возможность воздействовать косвенно.

Теперь разберемся с техниками сбора требований. Не существует единственной техники, которой можно собрать абсолютно все требования к продукту. Для каждого этапа детализации потребностей подходит одна конкретная техника или комбинация нескольких.

Разберем наиболее часто используемые техники:

📌Интервьюирование - проходит один на один со сстейкхолдером в форме свободной беседы, в офлайн или онлайн формате. Прежде чем назначить встречу необходимо подготовить тему разговора и список вопросов, и направить собеседнику, чтобы он тоже подготовился. Интервью помогает детализировать понимание глобального вопроса, разбить общую тему на отдельные задачи, уточнить требования конкретного стейкхолдера к проекту

📌Мозговой штурм - метод решения задач, в котором участники обсуждения генерируют максимальное количество идей решений задачи, в том числе самые фантастические и глупые. Обычно используется для определения возможных решений проблем и уточнения деталей возможностей

📌Прототипирование - это техника для построения быстрой и приблизительной версию желаемой системы или части этой системы. Прототип демонстрирует возможности системы пользователям и дизайнерам. Прототип представляет механизм связи, позволяющий рецензентам, понять взаимодействие внутри системы

📌Анализ существующей документации - Данная методика может быть использована при наличии в организации документации, которая может помочь в определении потребностей Заказчика. Примеры документации включают в себя: регламенты,
описания процессов, структура организации, спецификации продукта, различные процедуры, стандарты и инструкции, шаблоны документов, нормативные акты и т.д.

📌Анализ вариантов использования (Use case) это описательный документ, в котором излагается последовательность событий, описывающих использование пользователем системы для достижения определенных целей. Use case описывают поведение системы, предназначенное для разработки, без описания того как это поведение должно быть разработано

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

Также есть и другие техники по сбору требований, такие как, воркшоп, семинары, совещания, работа в фокус-группе и тд.

#сбортребований
----------------------

Комбинирование методик позволяет повысить эффективность сбора требований, а так же избежать их «потери». При сборе требований необходимо помнить, что важны не только функциональные требования (ЧТО делает система), но и нефункциональные (КАК система это делает)

Тщательно собранные требования минимизируют риски проекта, т.к. позволяют сформировать четкий и понятный базис для разработки системы
​​​​Алоха! сегодня предлагаю поговорить о таком методе сбора требований как "Event storming"

Если не вдаваться в подробности, то можно сказать, что одним из важных и сложных моментов, предшествующим разработке архитектуры приложения, это сбор требований и моделирование бизнес-процессов. И это не зависит сложный ли намечается продукт или легкий, требования все равно нужны, так как надо понимать "Что" требуется сделать, "Какие" объекты будут в будущей системе и "Какие" сценарии должны происходить. И сложность требований будет зависеть от самого продукта, так как в сложном бизнес-процессе будет присутствовать большое количество объектов и вариантов сценариев с ними. И именно для сбора требований к сложным продуктам помогает подход Event storming, так как знания о продукте или бизнес-процессах можно получить из устаревшей документации или их можно получить только у собственника бизнеса или product manager/project manager, грубо говоря данные требования не будут описаны в едином источнике знаний, а будут разбросаны по всем процессам и участникам вовлеченным в продукт.

Теперь поговорим именно о методе сбора требований "Event storming" - как же он поможет нам собрать требования:

Event storming - подход к решению проблем в процессе разработки, введённый итальянским программистом Альберто Брандолини, успешно используемый им в контексте DDD.

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

Главный результат — это быстрое исследование предметной области и фиксация знаний среди заинтересованных лиц

Структура Event storming:

🟨Пользователь Actor / Клиент - человек, выполняющий команду через представление
🟦Команда - это команда, выполняемая пользователем через представление агрегата, которая приводит к созданию события домена
🟨Агрегат - совокупность объектов домена, которые можно рассматривать как единое целое
🟥Внешняя система - сторонний поставщик услуг, например платежный шлюз или транспортная компания
🟧Событие домена - это событие, происходящее в бизнес-процессе
🟪Бизнес-процесс / Правило - обрабатывает команду в соответствии с бизнес-правилами и логикой
🟩Представление - это представление, с которым пользователи взаимодействуют для выполнения задачи в системе
Наглядное представление структуры приведено в прикрепленной картинке👇


Более подробно познакомиться с темой можно с помощью полезных материалов:

📌Event Storming на практических кейсах:
- Статья
- Презентация

📌Книга "Event Storming​" (если есть ссылки на прочтение книги, делитесь в комментах) - данную книгу можно назвать комиксом. Если вам интересна тема со стикерами, досками и kanban, то event storming скорее всего тоже вам «зайдет»‎. Книга Event Storming - рассказывает о технике специфицирования в терминах DDD, CQRS и Event Sourcing в форме увлекательной игры со стикерами, фломастерами и доской (доска может быть физической или виртуальной, но с физической гораздо веселее). С точки зрения наглядности, метод не успевает за Activity и BPMN-диаграммами. Но он гораздо более легковесный и прост в освоении и понимании.

#сбортребований

Автор: @ba_and_sa
​​Нефункциональные требования к системе

При разработке или при внедрении существующей Информационной системы специалисты обязательно столкнутся в своей работе с необходимостью определения требований.

Можно разделить требования на поведенческие (требования к поведению системы или требования, которые несут функциональный характер) и не поведенческие (которые несут нефункциональный характер).
К поведенческим требованиям можно отнести: функциональные требования, пользовательские требования и бизнес-требования.
А вот Нефункциональные требования (NFRs), являются часто просто всеобъемлющим термином, который охватывает все требования пользователя, не являющиеся в явном виде функциональными. NFRs иногда называют скорее не поведенческими, чем нефункциональными. К ним можно отнести: Бизнес-правила, системные требования, требования к документированию, требования к дизайну, требования к надежности и безопасности, и т.д.

Функциональные требования - описывают, что конкретно нужно реализовать в той или иной системе или продукте, какие действия должны производить пользователи в отношении данной разработки

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

К нефункциональным требованиям (NFRs) можно отнести:
Технические ограничения (Restrictions) - ОС и их версии, сетевые особенности, браузеры и их версии, устройства и другие аппаратные требования
Локализация (Localizability) - требования к возможности и простоте локализации приложения, перечень языков, на которые предполагается локализация приложения
Производительность (Performance) - требования к количеству одновременно работающих пользователей, обслуживаемых транзакций, времени реакции, продолжительности вычислений, скорости и пропускной способности каналов связи
Масштабируемость (Scalability) - оценивает самые высокие рабочие нагрузки, при которых система все еще будет справляться
Надежность (Reliability) - поведение приложения при наступлении нештатных ситуаций, например, автоматический перезапуск, восстановление работы, дублирование важных данных, резервирование логики
Доступность (Availability) - требования ко времени непрерывной работы приложения, например, 24x7, минимальное время простоя и т.п.)
Безопасность (Security) - Как система и ее данные защищены от атак или несанкционированного доступа
Удобство использования (Usability) - удобно ли людям пользоваться продуктом. Можно оценивать по 5 параметрам: Обучаемость, Эффективность, Запоминаемость, Ошибки, Удовлетворенность)

NFRs - должны быть измеримы и их можно проверить и протестировать

#сбортребований

Автор: @ba_and_sa

Более подробно познакомиться с темой помогут статьи:
📌Что такое нефункциональные требования, примеры, что в них должно быть
📌Нефункциональные требования к системе: понятие и примеры
📌О нефункциональных требованиях. Примеры, типы и подходы к их формированию
​​Алоха! Если вы работаете в области аналитики или только хотите начать, то вы знаете, как важно тщательно анализировать и понимать требования к разрабатываемому продукту.

Поэтому предлагаю краткую методику/подход по сбору и анализу требований к программному продукту с последующим проектированием системы на их основе:

Шаг 1. Определение заказчика и заинтересованных сторон.
Определите, кто является заказчиком разработки ПО и кто из заинтересованных сторон может повлиять на требования и функциональность ПО.

Шаг 2. Определение целей и задач проекта.
Необходимо определить, что именно заказчик ожидает от вашего проекта, а также выяснить задачи, которые необходимо выполнить, чтобы достичь этих целей.

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

Шаг 3. Сбор требований заказчика.
Начните с сбора основных требований, которые должны быть реализованы в ПО. Это могут быть данные о функциональности, интерфейсе пользователя, возможных ограничениях и т.д.

На данном шаге необходимо определить функции продукта и способы его интеграции в существующие процессы.

Шаг 4. Анализ требований.
Проходит структуризация уже собранных раннее требований. Т.е. необходимо предоставить четкий список не дублируемых требований к системе

Шаг 5. Описание функциональных и нефункциональных требований к проекту.
Вы можете использовать различные методы формализации требований и нотации, чтобы описать необходимые пункты.

Шаг 6. Обеспечьте связь между требованиями и спецификациями системы.
Разработайте тестовые сценарии (Use case) и функциональные требования к отдельным компонентам, чтобы убедиться, что они хорошо интегрируются в систему.

Шаг 7. Установление приоритетности требований.
Оцените важность каждого требования в разработке ПО и установите их порядок приоритетности.

Шаг 8. Определение ограничений и требований безопасности.
При разработке любой программы необходимо учитывать требования безопасности для защиты от взломов и утечки данных.

Шаг 9. Оценка финансовых возможностей проекта.
Проанализируйте затраты на разработку, внедрение и поддержание проекта на протяжении его жизненного цикла (в основном это делает ПМ или РП)

Шаг 10. Определение технологий и инструментов (сопоставление полученных результатов с возможностями технической инфраструктуры проекта и ресурсами разработчиков).
Выберите технологии и инструменты, которые используются для создания ПО, и проверьте, соответствует ли их уровень требованиям (в основном это делает ПМ или РП).

Шаг 11. Определение пользователей ПО.
Определите ключевых пользователей ПО и их потребности. Это поможет анализировать опыт и поведение пользователей для улучшения функциональности приложения.

Шаг 12. Разработка документации.
Разработайте документацию на основе всех результатов, полученных в ходе сбора требований и опишите бизнес-процессы. Это позволит описать структуру ПО и параметры, а также необходимые инструкции и рекомендации для пользователей.

Шаг 13. Согласование и обновление требований.
Возможно, после общения с клиентом и заинтересованными сторонами выяснятся дополнительные нужды и требования. Обновите требования и внесите соответствующие изменения в документацию и согласуйте ее с заказчиком и заинтересованными лицами.

Шаг 14. Оценка результатов аналитической работы, проведенной на начальных этапах проекта.
Выделите направления для дальнейшей работы, учитывая предыдущие результаты и опыт.

#сбортребований

Источник: @ba_and_sa

Источник картинки
Please open Telegram to view this post
VIEW IN TELEGRAM