Диаграмма эффектов

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

Такое представление полезно на всех этапах разработки ПО - от первичного анализа до планирования работ и поддержки:

  1. На этапе первичного анализа применение диаграммы эффектов снижает затраты благодаря тому, что позволяет проектировщику быстрее построить целостную картину реализации будущей системы.
  2. На этапе проектирования диаграмма эффектов упрощает процесс декомпозиции за счёт проявления как необходимой, так и случайно сцепленности. Это делает задачу декомпозиции на подсистемы тривиальной и выполнимой по простой методике.
  3. На этапе планирования работ диаграмма эффектов снижает затраты за счёт того, что наглядно демонстрирует зависимости между подсистемами. Это позволяет быстро определить порядок выполнения работ, найти возможности их распараллеливания, построить более эффективный процесс разработки и уменьшить календарные сроки выполнения задач.
  4. На этапе поддержки построение диаграммы эффектов уменьшает количество регрессий, так как помогает проанализировать текущее поведение системы, понять, как оно должно и не должно измениться, и проявить скрытые связи в системе. Результатом этого является снижение количества регрессий.

Нотация

Диаграмма эффектов имеет гибкую нотацию, которая может быть адаптирована под конкретную задачу. Спецификация определяет две нотации:

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

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

Кейсы

Geoservices

Geoservices - это первая информационная система, спроектированная с помощью диаграммы эффектов актуальной версии. Это система для обновления информации о филиалах X5 Retail Group в Яндекс картах и 2Гис. Система обеспечивает хранение фотографий филиалов, сбор информации о них из нескольких внутренних источников и обновление информации в геосервисах по расписанию.

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

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

true story effects short

Кэмп

Кэмп - MVP специализированной геоинформационной системы для водителей-дальнобойщиков. В отличие от геоинформационных систем общего назначения, Кэмп позволяет найти не просто гостиницу по пути следования, а место, где водитель может и сам переночевать, и рефрижератор на 86 "кубов" припарковать.

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

Команда бакэнда начала работу с построения диаграммы эффектов. Создание диаграммы и декомпозиция на её базе позволила даже начинающим разработчикам разбить систему на понятные и низкосцепленные модули.

Результатом этого стала такая обратная связь руководителя по завершении проекта: "К бэку у меня вообще претензий нет. Он просто работает".

camp effects.drawio

Спецификация

В формате HTML.

Шаблон Draw.io

Шаблон Draw.io-файла с элементами нотации диаграммы эффектов.

Об авторе

Меня зовут Алексей Жидков. Я занимаюсь коммерческой разработкой ПО с 2005 года и преподаю на ФИТ НГУ и ВКИ НГУ с 2007 года.

За это время я был разработчиком или техлидом/архитектором 30 проектов для различных отраслей - от встроенного ПО для приставок кабельного телевидения и систем промышленного видеонаблюдения до АИИС КУЭ для ПАО "Транснефть" и проекта по анализу больших данных в финтехе.

Моя практика за эти годы показала, что процесс проектирования в нашей индустрии всё ещё не стал инженерной деятельностью, а скорее представляет собой смесь искусства и ремесла. Следствием этого зачастую становится чрезмерная стоимость проекта, обусловленная серьёзными ошибками в дизайне.

Для того чтобы сделать проектирование более систематизированным и предсказуемым я разработал диаграмму эффектов. Процесс декомпозиции системы на базе диаграммы эффектов является основой и отличительной чертой "Эргономичного подхода" - моего метода создания программ с минимальной итоговой стоимостью.

Если у вас появились вопросы по диаграмме эффектов - буду рад ответить на них:

  1. Email: me@azhidkov.pro
  2. Telegram: d-r-q