Время на прочтение
8 мин
Количество просмотров 49K
Процесс документирования архитектуры программного обеспечения может показаться пугающим. Но на самом деле достаточно всего 5 диаграмм, чтобы объяснить структуру вашей системы практически любому.
Задача архитектора решений ― четко донести проект системы до бизнеса, руководителей проектов и разработчиков. Нельзя просто нарисовать одно изображение, это невозможно и не принесет никому пользы. Вместо этого лучше сгруппировать различные проблемы и создать набор диаграмм, описывающих каждое представление. Конечно, есть миллиард способов сделать это. Как выбрать подходящий? За время работы в качестве архитектора решений я чаще всего использовал 5 диаграмм: контекстную диаграмму C4, диаграмму контейнеров, развертывания, последовательности и вариантов использования. В этой статье я рассмотрю подробно каждую из них.
Контекстная диаграмма
Веб-сайт, посвященный модели С4 (Context, Container, Component and Code), довольно хорошо объясняет свои диаграммы, я же поделюсь своим представлением, как эта модель работает.
Любая система работает в некотором контексте — окружении. В первую очередь, это пользователи и другие системы. Пользователи могут иметь разные роли, такие как создатель контента, читатель, администратор. Также они могут быть внутренними или внешними. Другие программы могут быть источником данных для вашей системы или получать информацию от нее. Важно понимать этот контекст, чтобы правильно спроектировать систему и напомнить себе о необходимости интеграции с внешними системами.
Пример
На этой диаграмме показана цифровая платформа необанкинга, представленная синим прямоугольником в центре.
Как рисовать
-
Определите пользователей.
-
Определите внешние системы.
-
Создайте единый прямоугольник, изображающий вашу систему.
-
Добавьте связи между системой, пользователями и внешними системами.
-
Напишите содержательные комментарии по каждому компоненту.
Инструменты
Существуют различные инструменты, которые можно использовать для создания контекстной диаграммы. Существуют трафареты C4 для OmniGraffle, примеры C4 для LucidChart, шаблоны есть также в draw.io. Чтобы использовать диаграммы как код, попробуйте PlantUML.
Допустим, мы хотим нарисовать такую диаграмму для цифровой платформы необанковского обслуживания с помощью uml:
@startuml
!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Context.puml
' uncomment the following line and comment the first to use locally
' !include C4_Context.puml
Person(customer, "Customer", "A bank client")
System(abc_system, "Digital Platform", "Allows freelancers and business owners see their transactions.")
System_Ext(idnow, "IDNow", "System for KYC and Qualified Eletronic Signatures")
System_Ext(pay, "Google Pay/Apple Pay", "Google Pay and Apple Pay systems")
System_Ext(dms, "DMS", "Document Management System")
System_Ext(crm, "CRM", "CRM")
System_Ext(current, "Existing Banking System", "Banking Backoffice")
Rel(abc_system, pay, "uses")
Rel(customer, abc_system, "Uses")
Rel_L(abc_system, idnow, "integrates")
Rel_Neighbor(abc_system, dms, "uploads files")
Rel_D(abc_system, crm, "integrates")
Rel_U(abc_system, current, "uses")
@enduml
Мы определяем человека, систему, внешние системы и отношения между ними. Предикаты Person, System и System_ext имеют 3 параметра: ключ, заголовок и описание. Предикат Rel также имеет 3 параметра, но они разные: ключ одной сущности, ключ другой и тип отношений между сущностями.
Нарисовать контекстную диаграмму можно любым удобным инструментом. Здесь можно найти несколько отличных примеров.
Важно
Контекстная диаграмма — это первое, что вы создаете при работе с системой. Если этого не сделать, это может стоить вам пропущенных интеграций и ошибок при проектировании системы. Контекст может включать некоторые детали более низкого уровня, это нормально.
Я боролся с контекстной диаграммой для одной банковской системы. Она должна была включать только недавно созданную систему и одного клиента, который не принесет никакой ценности. После согласования я добавил API Gateway и существующий Auth Provider, который мы собирались использовать. Таким образом, контекстная диаграмма стала обретать смысл и позволяла опустить эти элементы из диаграмм нижнего уровня.
Алексей, архитектор решений
У нас в разработке была образовательная система. На момент выпуска Alpha мы поняли, что аналитическая система не получает данные от клиентского приложения. Если бы у нас была контекстная диаграмма, мы бы не сделали такой ошибки. К счастью, это было легко исправить.
Джон, архитектор решений.
Резюме
Контекстная диаграмма — это важнейшее представление, обеспечивающее высочайший уровень понимания людей и систем, с которыми будет взаимодействовать ваша будущая система.
Диаграмма контейнеров
Контейнеры здесь не означают обязательно докер-контейнеры. Контейнер — это любой развертываемый объект или хранилище данных с точки зрения C4. Это может быть мобильное приложение, веб-сайт, виртуальная машина, докер-контейнер, база данных или хранилище объектов; все, что вы можете развернуть. По моему опыту эта диаграмма – самая сложная, а потому привлекает к себе особое внимание. Это, можно сказать, главная диаграмма, над которой нужно работать!
Эта диаграмма в разы масштабнее и более нагруженная, чем предыдущая. То, что было одним прямоугольником, теперь состоит из нескольких прямоугольников и стрелок. Эти прямоугольники теперь и являются контейнерами.
Пример
Как рисовать
-
Определите список сущностей: микросервисы, хранилища, внешние сервисы.
-
Поместите их на диаграмму.
-
Добавьте комментарии о назначении каждого компонента и технологии, которую он реализует.
-
Добавьте соединения со стрелками.
-
Добавьте значимые метки к каждой стрелке.
-
Подберите цвет схемы.
-
Создайте легенду.
Инструменты
То же, что и для контекстной диаграммы: Draw.io, OmniGraffle, LucidChart и другие.
Важно
-
Обратите внимание, что элементы расположены столбцами. Первый столбец — это просто API-шлюз, второй ― первая группа сервисов, затем вторая группа сервисов, затем несколько хранилищ. Таким образом вы продемонстрируете многоуровневую архитектуру, которая поможет понять границы и обязанности.
-
Когда количество микросервисов превысит однозначное число, ваши линии соединения начнут пересекаться. В академических книгах говорится, что для удобочитаемости нужно избегать пересечений. К сожалению, это не всегда возможно. Но не расстраивайтесь, диаграмму можно сделать удобочитаемой, используя разные цвета или ширину линий или разные стили линий (пунктирные, сплошные и т. д.).
-
Если вы используете специальный инструмент, (как я), вам необходимо включить блок легенды. Сами по себе стрелки и цвет непонятны — легенда объясняет всё это.
-
Очень распространенный вопрос, когда используешь облака, включать ли вы управляемые сервисы, такие как очереди сообщений? Я обычно отвечаю: «Нет». Это усложняет диаграмму, делает её нечитабельной. Если некоторые сервисы обмениваются данными через очередь сообщений, отобразите её с помощью стрелки отдельного типа.
Я учу своих коллег-архитекторов применять многоуровневый подход при создании схем контейнеров или компонентов и соединений. Эти диаграммы, как правило, включают в себя множество объектов, и их многослойная структуризация улучшает читаемость.
Илья, архитектор предприятия.
Резюме
Диаграмма контейнера даёт представление о том, из каких развертываемых элементов состоит серверная часть, и как эти компоненты взаимодействуют друг с другом.
Диаграмма последовательностей
Первые две диаграммы показывают, как элементы системы соотносятся друг с другом. Однако они не могут продемонстрировать, что происходит внутри системы. Например, пользователь регистрируется в вашей системе. Какие компоненты задействованы? Какие действия срабатывают? Как компоненты взаимодействуют друг с другом? Диаграмма последовательностей может ответить на эти вопросы.
Пример
Вверху мы видим взаимодействующие объекты: люди, веб-приложения и мобильные приложения, внешние системы, сервисы и хранилища данных. У каждого объекта есть вертикальная линия внизу. Взаимодействие между сервисами обозначено горизонтальными стрелками между вертикальными линиями. Эти стрелки могут быть разных типов в зависимости от того, синхронная это операция или асинхронная. Серые прямоугольники показывают, что процесс занимает некоторое время, и длина должна указывать на продолжительность: чем длиннее прямоугольник, тем больше время.
Как рисовать
-
Выберите функцию (вход, покупка и т. д.).
-
Определите сущности, участвующие в этом процессе.
-
Поместите их на диаграмму.
-
Добавьте взаимодействие (стрелки).
-
Добавьте ценные комментарии к каждой стрелке.
Инструменты
К сожалению, OmniGraffle не подходит для диаграмм последовательности. Поэтому для создания этой диаграммы я использую draw.io и LucidChart. Последний вариант является хорош тем, что вы можете рисовать диаграмму вручную или использовать диаграмму последовательности UML.
Важно
-
Диаграмма последовательностей абсолютно необходима при разработке новой функции, которую вы добавляете в систему. Он показывает части системы, которые функция затрагивает, точки интеграции с внешним программами и контракты, которые команда должна будет создать или обновить.
-
Диаграмма последовательности также полезна для QA инженеров. Она дает представление о том, где могут быть обнаружены потенциальные проблемы, и служит источником истины для тестовых случаев.
Проект шёл уже несколько месяцев, а некоторые части системы не были готовы к долгожданной функции. Стейкхолдеры были недовольны. Мы обсудили вопрос и договорились проектировать архитектуру до начала разработки. Диаграммы последовательностей очень помогли: мы получили полную картину до написания кода, а не после.
Владимир, Архитектор решений
Резюме
Диаграммы последовательности позволяют документировать поведение системы в различных бизнес-сценариях.
Диаграмма развертывания
С помощью диаграмм контекста, контейнеров и диаграммы последовательностей, можно понять, из каких частей состоит система, как они связаны и взаимодействуют друг с другом. Но вряд ли они могут ответить на вопросы доступности, масштабируемости и безопасности. В этом поможет схема развертывания.
Есть несколько разных вещей, которые необходимо отобразить.
-
Вычислительные ресурсы. Это могут быть виртуальные машины, докеры, кластеры Kubernetes и облачные функции. Мобильные устройства и настольные компьютеры также можно рассматривать как вычислительные ресурсы.
-
Хранилища. Постоянные хранилища данных, такие как реляционные базы данных и базы данных nosql, хранилища двоичных файлов, таких как изображения, музыка и видео, хранилища больших данных и так далее.
-
Ресурсы обмена сообщениями. Установки Kafka / RabbitMQ, Google Cloud pub / sub, AWS SQS и другие.
-
Сети. Ваши компьютеры используют сети для связи друг с другом. Должны отображаться как физические, так и виртуальные сети.
-
Зоны доступности. Вы можете думать о них как о центрах обработки данных.
-
Узлы инфраструктуры. DNS-серверы, балансировщики нагрузки, брандмауэры, сети CDN
На схеме отображаются вычислительные ресурсы, ресурсы хранения и обмена сообщениями, а также сети и зоны доступности. Он также включает узлы инфраструктуры, которые не выполняют никаких функциональных требований, но вместо этого обращаются к нефункциональным.
Как нарисовать
-
Разместите основные блоки: браузеры, мобильные устройства, общедоступное облако, центры обработки данных.
-
Разместите вычислительные ресурсы и ресурсы хранения.
-
Добавьте узлы инфраструктуры.
-
Добавьте сети.
-
Добавьте сетевые вызовы между узлами.
-
Добавьте ресурсы мониторинга.
Пример
В C4 нотации есть дополнительная диаграмма развертывания:
Обратите внимание на имена вычислительных ресурсов, их типы и номера узлов.
Другой пример для облака AWS:
Инструменты
Существует множество инструментов для создания схемы развертывания. OmniGraffle, LucidChart, Draw.io и другие прекрасно справляются с этой задачей, если установлены соответствующие шаблоны.
Важно
Каждая система имеет требования к безопасности, производительности, доступности и другим возможностям. Диаграмма развертывания помогает удовлетворить эти требования. В большинстве случаев диаграмма развертывания единственная, отображающая сетевые аспекты вашего решения. Диаграмма развертывания должна ясно и понятно показывать, как запросы проходят через систему.
Резюме
Диаграмма развертывания дополняет понимание системы с точки зрения внешнего вида.
Диаграмма вариантов использования
Предыдущие диаграммы были в основном техническими, в то время как диаграмма вариантов использования больше ориентирована на бизнес. Он показывает, как люди взаимодействуют с вашей системой на очень высоком уровне. Сами варианты использования можно рассматривать как бизнес-возможности, которые я описывал в этой статье.
Как рисовать
-
Нарисуйте прямоугольник. Это будет граница системы.
-
Определите, кто будет работать с системой.
-
Добавьте варианты использования внутри системы с помощью овалов.
-
Добавьте связи между участниками и вариантами использования.
Примеры
Инструменты
Архитектор может нарисовать диаграмму с помощью любого графического редактора и того же набора инструментов, что и для других диаграмм. Omnigraffle, LucidChart, Draw.io работают хорошо. Помните, что эта диаграмма является структурированной, поэтому вы можете использовать UML для её создания. В этом помогает PlantUml или LucidChart.
Резюме
-
Используйте контекстную диаграмму, чтобы отобразить представление системы на самом высоком уровне.
-
Документируйте варианты использования с соответствующей диаграммой.
-
Масштабируйте внутренние компоненты системы с помощью контейнеров и диаграмм развертывания.
-
Документируйте конкретные бизнес-кейсы с помощью диаграмм последовательности.
Недавно мы разбирали, как построить UML-диаграмму последовательности на примере проведения платежей в интернет-магазине с помощью защищенного банковского шлюза. В продолжение этого кейса, сегодня построим UML-диаграммы вариантов использования, классов и состояний для системы оплаты курса с применением промокода на скидку.
Границы системы, акторы и варианты использования: что такое диаграмма Use Case
Проектируя программную систему, аналитик прежде всего отвечает на вопрос, что она должна делать, т.е. какие возможности представлять для разных пользователей. Для описания таких вариантов использования в UML есть одноименная диаграмма – Use Case. Она позволяет наглядно показать границы системы и ее функции, сгруппированные по контексту – прецеденты. При том, что каждый прецедент фактически отражает одно или сразу несколько функциональных требований, UML-диаграмма Use Case и одноименная форма представления требований – это разные вещи, хоть и связанные между собой. Подробнее об этом мы рассказывали в отдельной статье.
В качестве иллюстративного примера рассмотрим систему онлайн-оплаты учебного курса. Пользователем этой системы является клиент. В терминологии UML он будет называться актор – сущность за пределами системы, которая взаимодействует с ней. На UML-диаграмме Use Case он изображается в виде человечка. Актору «Клиент» доступен основной вариант использования – «Оплатить договор» (на проведение обучающего курса по бизнес-анализу). Расширением этого варианта использования является «Оплатить со скидкой по промокоду», который уменьшает сумму платежа. Этот вариант использования является опциональным и расширяет основной, поэтому он будет связан с основным через связь extend, которая выглядит как пунктирная стрелочка с соответствующей надписью.
Далее следует детализировать, как именно выполняется процесс оплаты, раскрыв прецедент со схемы Use Case на UML-диаграмме последовательности. Однако, чтобы сделать это с привязкой к внутренним сущностям нашей программной системы, классам, следует сперва описать их на UML-диаграмме классов. Как это сделать, мы рассмотрим далее.
Ликбез по ООП или как построить UML-диаграмму классов
UML соответствует объектно-ориентированной парадигме программирования (ООП), ключевым понятием которой является класс. Класс – это абстракция сущностей с одинаковыми свойствами (атрибутами, полями) и поведением (методами, функциями). Классы могут быть связаны друг с другом через наследование и ассоциации. При наследовании класс-потомки имеют (наследуют) атрибуты и методы класса-родителя, а также свои собственные. А конкретные значения этих атрибутов задаются в реализации классов в виде их отдельных экземпляров, называемых объектами. Например, ООО «Рога и Копыта» и Иванов Иван Иваныч – это конкретные реализации классов «Юрлицо» и «Физлицо» соответственно. В частности, у объекта класса Физлицо есть поля с паспортными данными (ФИО и № паспорта), а у юрлица обязательно должны быть название и ИНН. При этом оба этих класса наследуют от родителя (Класс «Клиент») общие для них атрибуты (тип, номер телефона, email и адрес).
Ассоциация означает логическую связь между объектами разных классов. Например, договор на обучение связан с курсом. Поскольку в договоре нужно обязательно указать курс, эти классы будут связаны не простой ассоциацией, а ее более сложным вариантом – агрегацией. В этом случае у класса, который является целым, появится значок в виде незакрашенного ромбика. Если связь между объектами разных классов настолько сильная, что при уничтожении целого, уничтожаются и его части, ромбик будет закрашенным. Такая связь называется композицией и является самым сильным вариантом ассоциации. Можно также указать кратность связи, к примеру, в 1-м договоре на обучение могут быть указаны сразу несколько курсов. При этом над концами связи отобразятся мультипликаторы, обозначающие ее кратность.
UML для бизнес-аналитика: основы ООП и разработка моделей
Код курса
BUML
Ближайшая дата курса
10 августа, 2023
Длительность обучения
8 ак.часов
Стоимость обучения
15 000 руб.
Таким образом, в нашей системе интернет-оплаты договора с применением промокода по конкретному курсу будут следующие классы:
- Клиент – абстрактный класс-родитель для классов «Юрлицо» и «Физлицо»;
- Физлицо;
- Юрлицо;
- Договор;
- Курс;
- Промокод;
- Платеж.
Объекты разных классов могут взаимодействовать друг с другом через интерфейсы. В ООП интерфейс можно рассматривать как класс без атрибутов, но с методами, которые описывают поведение объекта класса, реализующего этот интерфейс, отвечая за предоставляемые функции. Это позволяет обеспечить один из ключевых принципов ООП – полиморфизм, чтобы унифицировать методы работы с разными объектами, вне зависимости от их типа и внутренней структуры. Например, класс «Промокод» предоставляет интерфейс «Управление промокодом», который используют объекты класса «Платеж». В результате, UML-диаграмма классов для нашего примера примет следующий вид.
Теперь, имея диаграмму классов, которая на концептуальном уровне описывает доменную область проектируемой системы, можно показать, как объекты разных классов взаимодействуют друг с другом на UML-диаграмме последовательности (Sequence).
Чтобы упростить рассмотрение основ ООП и базовых концепций UML, эта диаграмма последовательности не полностью отражает весь процесс интернет-оплаты через банковский шлюз. Как это происходит в реальности, мы рассматриваем здесь.
А в заключение покажем, как выглядит жизненный цикл объектов класса «Промокод» с помощью UML-диаграммы состояний (StateChart или State Machine). На мой взгляд, из всех UML-диаграмм она самая простая и понятная без дополнительных объяснений. Начиная со стартового события, объект последовательно проходит разные стадии жизненного цикла, меняя свое состояние в зависимости от некоторых условий.
Как описать архитектурные аспекты проектируемой информационной системы с помощью UML, читайте в нашей новой статье.
Проверить свои знания UML вы можете прямо на нашем сайте, выполнив бесплатный интерактивный тест.
Открытый тест по UML: основы бизнес-анализа для начинающих
А научиться самостоятельно разрабатывать эти и другие UML-диаграммы вам поможет специализированный курс «UML для бизнес-аналитиков». Только практика на реальных примерах. После 8-часового интенсива вы сможете дополнять текстовые схемы представления требований User Story и Use Case UML-диаграммами вариантов использования и детализировать их далее в диаграммы деятельности, последовательности и состояний, чтобы наглядно объяснить разработчикам, что именно должна делать программная система.
Унифицированный язык моделирования ( UML ) — это язык моделирования общего назначения в области разработки программного обеспечения, предназначенный для обеспечения стандартного подхода к визуализации проектирования системы. Первоначальным мотивом создания UML было желание стандартизировать различные системы обозначений и методы проектирования программного обеспечения. В UML диаграмма классов является одним из шести типов структурных диаграмм . Диаграммы классов являются основой процесса моделирования объектов и моделируют статическую структуру системы.
Структурные диаграммы показывают статическую структуру системы и ее частей на разных уровнях абстракции и реализации и то, как они связаны друг с другом. Элементы на структурной диаграмме представляют значимые концепции системы и могут включать абстрактные концепции, концепции реального мира и реализации. Существует семь следующих типов структурных диаграмм:
- Диаграмма классов
- Диаграмма компонентов
- Схема развертывания
- Диаграмма объекта
- Схема пакета
- Схема составной структуры
- Диаграмма профиля
Что такое диаграмма классов?
Диаграмма классов на унифицированном языке моделирования (UML) — это диаграмма статической структуры, которая описывает структуру системы, показывая ее классы, их атрибуты, операции (или методы) и отношения между объектами. Диаграмма классов — это план системы или подсистемы. Диаграммы классов можно использовать для моделирования объектов, составляющих систему, для демонстрации отношений между объектами и для описания ролей этих объектов и предоставляемых ими услуг.
Цель UML — предоставить стандартную нотацию, которую можно использовать всеми объектно-ориентированными методами, а также выбрать и интегрировать лучшие элементы предшествующих нотаций. UML был разработан для широкого круга приложений. Следовательно, он предоставляет конструкции для широкого спектра систем и действий (например, распределенные системы, анализ, проектирование и развертывание систем).
UML — это нотация, возникшая в результате объединения OMT с
- Техника объектного моделирования OMT [ James Rumbaugh 1991] – лучше всего подходит для анализа и информационных систем с интенсивным использованием данных.
- Booch [ Gradi Booch 1994] — отлично подходил для дизайна и реализации. Грэди Буч много работал с языком Ада и был главным игроком в разработке объектно-ориентированных методов для этого языка. Хотя метод Буча был сильным, нотация была принята хуже (в его моделях преобладало множество форм облаков — не очень аккуратно).
- OOSE (Object-Oriented Software Engineering [ Ivar Jacobson 1992]) — включает модель, известную как варианты использования. Сценарии использования — это мощная техника для понимания поведения всей системы (область, в которой объектно-ориентированный подход традиционно был слабым).
В 1994 году Джим Рамбо, создатель OMT, ошеломил мир программного обеспечения, когда он покинул General Electric и присоединился к Грэди Бучу в Rational Corp. Целью партнерства было объединить их идеи в единый унифицированный метод (рабочее название метод действительно был «унифицированным методом»).
Назначение диаграммы классов
Диаграммы классов полезны на многих этапах проектирования системы. На этапе анализа диаграммы классов могут помочь вам понять требования предметной области и определить ее компоненты. В проектах объектно-ориентированного программного обеспечения диаграмма классов, созданная на ранних стадиях проекта, содержит классы, которые часто преобразуются в реальные классы и объекты программного обеспечения при написании кода.
Позднее вы можете преобразовать ранний анализ и концептуальные модели в диаграммы классов, чтобы показать определенные части системы, пользовательские интерфейсы, логические реализации и т. д.
Диаграммы классов широко используются при моделировании объектно-ориентированных систем, поскольку они являются единственными диаграммами UML, которые могут быть отображены непосредственно на объектно-ориентированные языки. На этапе реализации цикла разработки программного обеспечения вы можете использовать диаграммы классов для преобразования моделей в код и кода в модели.
Пример класса
У собаки есть состояния – цвет, имя, порода, а также поведение – виляние, лай, еда. Объект является экземпляром класса.
Обозначение класса UML
Класс представляет концепцию, которая инкапсулирует состояние ( атрибуты ) и поведение ( операции ). Каждый атрибут имеет тип. Каждая операция имеет подпись . Имя класса является единственной обязательной информацией .
Имя класса:
- Имя класса появляется в первом разделе.
Атрибуты класса:
- Атрибуты показаны во втором разделе.
- Тип атрибута отображается после двоеточия.
- Атрибуты сопоставляются с переменными-членами (элементами данных) в коде.
Классовые операции (методы):
- Операции показаны в третьем разделе. Это услуги, предоставляемые классом.
- Тип возвращаемого значения метода отображается после двоеточия в конце подписи метода.
- Возвращаемый тип параметров метода отображается после двоеточия после имени параметра. Операции сопоставляются с методами класса в коде
Классовые отношения
Класс может быть вовлечен в одно или несколько отношений с другими классами. Связь может быть одного из следующих типов: (См. рисунок справа для графического представления отношений).
Имена отношений
- Имена отношений пишутся посередине ассоциативной строки.
- Названия хороших отношений имеют смысл, если прочитать их вслух:
- «Каждая электронная таблица содержит некоторое количество ячеек»,
- «выражение оценивается как значение»
- Они часто имеют небольшую стрелку, указывающую направление, в котором следует читать отношения, например, выражения оцениваются как значения, но значения не оцениваются как выражения.
Отношения — Роли
- Роль – это направленная цель ассоциации.
- Роли написаны на концах ассоциативной линии и описывают цель, которую играет этот класс в отношениях.
- Например, ячейка связана с выражением. Характер связи таков, что выражением является формула клетки.
Судоходность
Стрелки указывают, возможно ли при наличии одного экземпляра, участвующего в отношении, определить связанные с ним экземпляры другого класса.
Диаграмма выше предполагает, что,
- Имея электронную таблицу, мы можем найти все содержащиеся в ней ячейки, но это
- мы не можем определить по ячейке, в какой электронной таблице она содержится.
- Учитывая ячейку, мы можем получить соответствующее выражение и значение, но
- учитывая значение (или выражение), мы не можем найти ячейку, для которой это атрибуты.
Видимость атрибутов класса и операций
В объектно-ориентированном дизайне есть нотация видимости атрибутов и операций. UML определяет четыре типа видимости: public , protected , private и package .
Символы +, -, # и ~ перед именем атрибута и операции в классе обозначают видимость атрибута и операции.
- + обозначает общедоступные атрибуты или операции
- – обозначает частные атрибуты или операции
- # обозначает защищенные атрибуты или операции
- ~ обозначает атрибуты пакета или операции
Пример видимости класса
В приведенном выше примере:
- attribute1 и op1 MyClassName являются общедоступными
- attribute3 и op3 защищены.
- attribute2 и op2 являются частными.
Доступ для каждого из этих типов видимости показан ниже для членов разных классов.
Право доступа | общественный (+) | частный (-) | защищенный (#) | Пакет (~) |
---|---|---|---|---|
Члены одного класса | да | да | да | да |
Члены производных классов | да | нет | да | да |
Члены любого другого класса | да | нет | нет | в том же пакете |
Множественность
Сколько объектов каждого класса принимают участие в отношениях и множественности можно выразить как:
- Ровно один — 1
- Ноль или единица – 0..1
- Многие – 0..* или *
- Один или несколько – 1..*
- Точное число — например, 3..4 или 6
- Или сложное отношение — например, 0..1, 3..4, 6.* будет означать любое количество объектов, кроме 2 или 5.
Пример множественности
- Требование: Студент может посещать несколько курсов, и многие студенты могут быть зачислены на один курс.
- В приведенном ниже примере диаграмма классов (слева) описывает формулировку вышеуказанного требования для статической модели, а диаграмма объектов (справа) показывает моментальный снимок (экземпляр диаграммы классов) зачисления на курс для курсы по программной инженерии и управлению базами данных соответственно)
Пример агрегации — компьютер и комплектующие
- Агрегация — это частный случай ассоциации, обозначающий иерархию «состоит из».
- Агрегат — это родительский класс, компоненты — это дочерние классы.
Пример наследования — таксономия ячеек
- Наследование — еще один частный случай ассоциации, обозначающей «своего рода» иерархию.
- Наследование упрощает модель анализа, вводя таксономию
- Дочерние классы наследуют атрибуты и операции родительского класса.
Диаграмма классов — пример инструмента диаграммы
Диаграмма классов может также иметь примечания, прикрепленные к классам или отношениям. Примечания отображаются серым цветом.
В приведенном выше примере:
Мы можем интерпретировать значение приведенной выше диаграммы классов, прочитав пункты следующим образом.
- Форма — это абстрактный класс. Он показан курсивом.
- Форма — это суперкласс. Круг, прямоугольник и многоугольник являются производными от формы. Другими словами, Круг — это Форма. Это отношение обобщения/наследования.
- Существует связь между DialogBox и DataController.
- Форма является частью окна. Это агрегационные отношения. Shape может существовать без Window.
- Точка является частью Круга. Это композиционные отношения. Точка не может существовать без Окружности.
- Окно зависит от события. Однако Event не зависит от Window.
- Атрибутами Circle являются радиус и центр. Это класс сущности.
- Имена методов Circle: area(),circ(), setCenter() и setRadius().
- Радиус параметра в Circle является параметром in типа float.
- Метод area() класса Circle возвращает значение типа double.
- Атрибуты и имена методов Rectangle скрыты. У некоторых других классов на диаграмме также скрыты атрибуты и имена методов.
Пример диаграммы классов: система заказов
Пример диаграммы классов: графический интерфейс
Диаграмма классов может также иметь примечания, прикрепленные к классам или отношениям.
Работа со сложной системой — диаграмма нескольких или одного класса?
Неизбежно, если вы моделируете большую систему или большую бизнес-сферу, вам придется учитывать множество сущностей. Должны ли мы использовать несколько или одну диаграмму классов для моделирования проблемы? Ответ:
- Вместо моделирования каждой сущности и ее взаимосвязей на одной диаграмме классов лучше использовать несколько диаграмм классов.
- Разделение системы на несколько диаграмм классов облегчает понимание системы, особенно если каждая диаграмма является графическим представлением определенной части системы.
Перспективы диаграммы классов в жизненном цикле разработки программного обеспечения
Мы можем использовать диаграммы классов на разных этапах жизненного цикла разработки программного обеспечения и, как правило, моделируя диаграммы классов в трех различных перспективах (уровнях детализации) постепенно по мере продвижения вперед:
Концептуальная перспектива : диаграммы интерпретируются как описание вещей в реальном мире. Таким образом, если вы принимаете концептуальную перспективу, вы рисуете диаграмму, которая представляет концепции в изучаемой области. Эти концепции будут естественным образом относиться к классам, которые их реализуют. Концептуальная перспектива считается независимой от языка .
Перспектива спецификации : диаграммы интерпретируются как описание программных абстракций или компонентов со спецификациями и интерфейсами, но без привязки к конкретной реализации. Таким образом, если вы смотрите на спецификацию, мы смотрим на интерфейсы программного обеспечения , а не на реализацию.
Перспектива реализации : диаграммы интерпретируются как описание программных реализаций на определенной технологии и языке . Таким образом, если вы смотрите на реализацию, мы смотрим на программную реализацию .
Ищете бесплатный инструмент для построения диаграмм классов?
Visual Paradigm Online (VP Online) Free Edition — это бесплатное онлайн-программное обеспечение для рисования, которое поддерживает диаграммы классов, другие диаграммы UML, инструменты ERD и инструменты организационных диаграмм. Он имеет простой, но мощный редактор, который позволяет быстро и легко создавать диаграммы классов. В этом бесплатном редакторе UML нет рекламы, нет сроков доступа и нет ограничений, например, на количество диаграмм, количество фигур и т. д. Вы являетесь владельцем диаграмм, которые создаете для личных и некоммерческих целей.
Ищете более формальное моделирование UML на рабочем столе?
Visual Paradigm Community Edition был запущен в 2004 году для предоставления бесплатного программного обеспечения UML исключительно для некоммерческих целей, поддержки пользователей, которые делали свои первые шаги в моделировании UML и которым требуется бесплатное и кросс-платформенное программное обеспечение для моделирования UML для личного использования, например как применение UML в студенческих проектах.
Бесплатный инструмент моделирования UML для всех видов некоммерческих целей. Поддержка 13 диаграмм UML 2.x
Нас приняли более 1 миллиона установок по всему миру, и эта цифра продолжает расти. Многие люди используют платные версии Visual Paradigm для ежедневного рисования профессиональных диаграмм UML и ERD для проектирования и анализа систем и баз данных.
Причина 2
Доверие ИТ-специалистов и крупных организаций
Многие крупные организации, ИТ-компании, консультанты, университеты, неправительственные организации и правительственные учреждения по всему миру приняли Visual Paradigm (платные версии). На рисунке ниже показаны некоторые из наших платных клиентов.
Причина 3
Высокое качество – награда
Нам доверяют не только самые известные предприятия мира, но и вся отрасль. Visual Paradigm — многократный обладатель международных наград.
Причина 4
Самая широко используемая платформа для моделирования в академических кругах.
Наиболее широко используемый инструмент UML для академических кругов, принятый тысячами университетов и колледжей.
Причина 5
Сотни примеров UML и ERD, готовых для импорта в Visual Paradigm для мгновенного эксперимента или для начала работы с собственной моделью UML. Все бесплатно.
Причина 6
Путь обновления до коммерческих выпусков для широкого спектра приложений и возможностей
Простое обновление для огромного набора дополнительных функций (например, BPMN и поддержки совместной работы) и для коммерческого использования, начиная с 6 долларов США в месяц .
Причина 7
Форум активных пользователей для получения помощи и обмена идеями и опытом
Поддерживайте, делитесь и обменивайтесь своими идеями с другими людьми на форуме активных пользователей Visual Paradigm .
Причина 8
Кроссплатформенное, удобное, быстрое и отзывчивое приложение
Visual Paradigm может работать на разных платформах, таких как Windows, Linux и Mac. Его интуитивно понятный интерфейс и мощные функции моделирования делают моделирование быстрым и легким!
использованная литература
- Что такое УМЛ?
- Почему UML-моделирование?
- Обзор 14 типов диаграмм UML
- Что такое диаграмма классов?
- Что такое диаграмма компонентов?
- Что такое диаграмма развертывания?
- Что такое диаграмма объекта?
- Что такое пакетная диаграмма?
- Что такое составная структурная диаграмма?
- Что такое профильная диаграмма?
- Что такое диаграмма вариантов использования?
- Что такое Диаграмма активности?
- Что такое диаграмма состояний?
- Что такое диаграмма последовательности?
- Что такое коммуникационная диаграмма?
- Что такое обзорная диаграмма взаимодействия?
- Что такое временная диаграмма
Что такое DFD?
DFD (data flow diagram) — диаграмма потоков данных, один из основных инструментов структурного анализа и проектирования информационных систем, существовавших еще до широкого распространения UML.
В статье мы
- рассмотрим, зачем и когда стоит использовать DFD системному аналитику, а также
- разберем реальные кейсы построения этих диаграмм в проектах управления данными и интеграции информационных систем,
- расскажем правила DFD-нотации и практические примеры разработки моделей.
Вы узнаете достоинства и недостатки DFD-нотации по сравнению с другими методами бизнес-моделирования (IDEF0, BPMN, EPC, UML), поймёте ключевые принципы и инструменты их разработки.
Примеры движения данных в жизни
С потоками данных мы сталкиваемся не только при решении IT-задач, но и в реальной повседневной жизни.
Одним из примеров потока данных может стать документооборот, когда входящие обращения попадают в ту или иную папку (каталог или журнал), а часть обращений находится в работе, на подписании или в архиве.
Другим примером может стать товарооборот, когда товары перемещаются со склада в магазины и обратно. Или это может быть товарооборот с дополнительным потоком данных для дистанционной торговли: торговая площадка — банк — торговая площадка.
Самый популярный пример движения данных, с которым каждый из нас сталкивается ежедневно — это финансовые транзакции. Когда мы рассчитываемся карточкой на кассе магазина, системы эквайринга отправляют запросы и получают ответы, а мы получаем товар.
Потоки данных. Финансовые транзакции как пример движения данных
Партнёрские программы — ещё один пример потока данных из повседневной жизни. При использовании купона (специальной ссылки, бонусной карты) запускается обмен данными между продавцами, партнёрами и клиентом.
Партнёрские программы как пример движения данных
Наиболее актуальный жизненный пример движения данных — это вакцинация от коронавируса. В пункте вакцинации мы предоставляем данные паспорта, медицинского полиса и СНИЛС. Медицинский работник вписывает в рабочий журнал представленные нами сведения, дату прививки и данные о вакцине. Затем сведения вносятся в Регистр вакцинированных от COVID-19. Оттуда данные передаются в Госуслуги, где мы можем скачать личный QR-код.
Вакцинация от COVID-19 как еще один пример движения данных
Курс Анны Вичуговой
«Моделирование бизнес-процессов»
Курс для менеджеров и специалистов, которые хотят научиться структурировать корпоративную деятельность в виде бизнес-процессов, а также детально описывать их структуру и логику выполнения с помощью формальных нотаций
Кейсы из моих проектов
Кейс #1 Оптимизация затрат на недвижимость
Один из проектов этого года, с которым я работала, состоял в оптимизации затрат на управление недвижимостью в крупной распределённой компании со множеством отделов, филиалов, размещённых в разных помещениях разных районов и городов.
Потоки данных. Оптимизация затрат на недвижимость
Задача состояла в том, чтобы оптимально разместить определённое количество сотрудников в одном месте и сократить излишнюю арендную плату.
При этом необходимо было свести воедино данные из множества источников. К примеру, получить из отдела кадров сведения о количестве сотрудников и их должностях, от отдела охраны труда — требования к условиям труда сотрудников, которые занимают те или иные должности (то есть относятся к той или иной категории труда).
Дополнительно от службы управления недвижимостью я брала данные о собственных или арендуемых помещениях компании.
Кейс #2 Наполнение CRM-системы
Ещё один пример, с которым сталкивается любой бизнес — это наполнение CRM-системы. Источниками данных могут быть телефонные звонки, заявки из форм обратной связи на сайте компании, письма по электронной почте и даже менеджеров по продажам. Потоки данных сливаются в единое хранилище в виде CRM-системы.
Потоки данных. Наполнение CRM-системы
Кейс #3 Сквозная аналитика по веб-рекламе
Сквозная аналитика по веб-рекламе. Например, мы запустили рекламу на Google Ads, в Яндекс.Директ и через SEO. Из всех источников собираем данные о просмотрах рекламных объявлений и кликах, а затем передаем все эти данные в единую систему аналитики. Также в систему аналитики передаются сведения из CRM о том, откуда именно пришёл клиент.
Потоки данных. Сквозная аналитика по веб-рекламе
Кейс #4 Анализ конверсии сайта
Ещё один хороший кейс — анализ конверсии сайта. Я получала заявки из CRM-системы в виде CSV-файлов и данные из Google Adwords в этом же формате. Для проверки гипотезы, как связано количество посещений (DAU-метрика) с заявками в этот день, даже пришлось вручную написать небольшой Python-скрипт. Визуализацию результатов можно сделать в дашборде BI-системы или комплексном инструменте аналитики (например, Google Data Studio).
Потоки данных. Анализ конверсии сайта
Зачем нужны DFD-диаграммы?
Аналитики используют BPMN и EPC-нотации для того, чтобы описывать логику выполнения бизнес-процесса. Это отличные инструменты, но они не позволяют структурно показать, из каких источников данные поступают, какими процессами преобразуются и куда направляются.
Обычно такие задачи возникают:
- в проектах управления данными (Data Management)
- при интеграции информационных систем
- в проектах внедрения систем электронного документооборота
Диаграмма потоков данных позволяет описать движение и преобразование данных между внешними сущностями, хранилищами и процессами. Выходная информация одной внешней сущности или процесса является входной для другого процесса или сущности.
Три уровня проектирования DFD
Проектирование DFD-диаграмм охватывает 3 уровня абстракции:
1. Концептуальная диаграмма показывает движения потоков данных на самом верхнем уровне абстракции. Концептуальная диаграмма детализируется логическим и физическим потоками данных.
2. Диаграмма логических потоков данных отражает будущее или текущее состояние, описывая какие преобразования должны происходить независимо от физических ограничений.
3. Диаграмма физических потоков данных моделирует хранилища данных: принтеры, формы, устройства и другие проявления данных.
Структурный анализ
Подобно IDEF0, DFD-нотация относится к SADT-методологии и поддерживает принципы структурного подхода. Проектирование DFD начинается с контекстной диаграммы, которая декомпозируется по уровням детализации. При этом DFD-нотация рассматривает систему с точки зрения объекта, а не процесса, в отличие от IDEF0.
Структурный анализ — метод исследования системы, который начинается с её общего обзора, а затем иерархически детализируется по уровням абстракции. Иными словами, структурный анализ предполагает, что мы идем от общего к частному, разбивая систему как «черный ящик» на множество «черных ящиков», последовательно приближаясь к результату.
Иерархическая детализация по уровням абстракции
Результат фиксируется с использованием строгих правил записи в соответствии с алфавитом нотации и правилами использования элементов этого алфавита.
На каждом уровне контекст ограничен и включает в себя только существенные для данного уровня элементы. При этом следует помнить, что оптимальное рекомендуемое число элементов на каждом уровне — от трех до семи объектов.
Принципы структурного анализа:
- «разделяй и властвуй»
- иерархическая упорядоченность
- решение проблем через их разделение на множество независимых задач — «черных ящиков»
Компоненты DFD-диаграмм
Алфавит DFD-нотации включает четыре элемента: процесс, внешняя сущность, хранилище данных и поток данных.
Виды DFD-нотаций
Исторически синтаксис DFD-нотации применяется в двух вариантах: Йордона-Де Марко и Гейна-Сарсона.
Суть и набор элементов абсолютно одинаковые, варианты различаются только обозначениями некоторых элементов. Вы можете использовать любой вариант, главное, чтобы описание было понятно и вам, и вашим клиентам.
Основные правила построения DFD-диаграмм
Правил для построения DFD-диаграмм не так уж и много:
- Все потоки данных перемещаются между хранилищами через процессы. Если явного хранилища нет, нужно показывать по крайней мере промежуточные хранилища.
- DFD — нотация представления структуры процессов, поэтому не содержит логических операторов (XOR, AND OR) в отличие от процессно-событийных нотаций BPMN, EPC и UML-activity.
- Потоки данных на диаграмме должны быть названы и описаны в словаре данных. Иными словами, на диаграмме не должно быть элементов без имени.
- В отличие от IDEF0 для диаграммы потоков данных не важно, с какой стороны стрелка входит в блок «процесс» или «хранилище данных», а также с какой стороны выходит. Поток данных, выходящий из процесса, является его выходом или результатом, а входящий — входом.
- Как и в IDEF0, проектирование DFD начинается с создания контекстной диаграммы. Это верхний уровень, который кратко и емко описывает назначение и границы системы. Контекстная диаграмма относится к категории диаграмм, описывающих систему на уровне «черного ящика». Это означает, что на диаграмме отражены только внешние свойства, а не содержание системы. Потоки данных в нашем случае — это и есть внешние свойства системы. Дальнейшая декомпозиция этого «черного ящика» выполняется на следующих уровнях иерархии — вложенных диаграммах.
Контекстная диаграмма в нотации Йордана де Марко
Контекстная диаграмма содержит три основных компонента:
- Один процессный блок — проектируемый объект (например, система).
- Одна или несколько внешних сущностей — взаимодействующих с проектируемым объектом элементов окружения (группы пользователей, смежные системы).
- Исходящие и входящие потоки данных.
Рассмотрим в качестве примера выдачу кредита физическому лицу.
- Клиент подаёт заявку на кредит.
- Банк оценивает платежеспособность и надежность клиента.
- С учетом полученных сведений и на основании истории взаимоотношений с клиентом банк принимает решение о выдаче кредита. Решение содержит данные о выдаваемой сумме и процентной ставке.
- Банк создаёт кредитный счёт и перечисляет на него деньги.
Контекстная диаграмма в этом примере достаточно проста, она содержит только одну внешнюю сущность (клиент) и один процессный блок (выдача кредита).
Пример DFD: Выдача кредита. Контекстная диаграмма
Самая важная для проектирования информация содержится внутри процессорного блока. Его содержимое раскрывается в декомпозированной DFD-диаграмме.
Пример DFD: Выдача кредита
Что можно увидеть на этой DFD-диаграмме?
Первичная заявка на кредит в виде входящего потока данных попадает в процесс Первичный скоринг. На выходе из процесса скоринговая оценка клиента направляется в хранилище данных Заявка на кредит. Сюда же попадают данные о желаемой сумме займа и сведения о клиенте.
Клиент как внешняя сущность передаёт сведения о своих доходах. Эти данные помещаются в промежуточное хранилище Справка о доходах.
Процесс Оценка платежеспособности клиента обрабатывает данные из хранилища Заявка на кредит и из промежуточного хранилища Справка о доходах. На этом этапе рассматриваются персональные данные клиента, сведения о его доходах, стаже работы и условиях труда. Результат процесса — параметры кредита — поступают в хранилище Кредитный договор.
Процесс Проверка службы безопасности получает сведения о благонадежности клиента из множества источников (хранилищ данных). CRM-система банка хранит историю взаимодействия с клиентом. Служба безопасности формирует заключение, которое попадает в соответствующее промежуточное хранилище данных.
Процесс Генерация кредитного договора получает данные о положительном решении службы безопасности, параметры кредита из кредитного договора и данные заемщика. На выходе из процесса одобренная сумма кредита поступает в хранилище данных Кредитный счёт.
Из Кредитного счёта в процесс Выдача денег поступает поток денежных средств. Результатом финального процесса является выдача кредита клиенту.
Пример #2 Приготовление кофе в кофейном автомате
Поскольку DFD позволяет показывать не только информационные потоки данных, но и материальные потоки, мы рассмотрим бытовой пример — приготовление кофе с помощью кофейного автомата.
- Клиент задаёт машине параметры заказа, вносит в автомат деньги.
- Автомат обменивается данными с внешней системой банковского эквайринга, посылая счёт на оплату.
- Система возвращает чек за покупку.
- Аппарат выдаёт кофе клиенту.
Пример DFD: приготовление кофе в кофейном автомате. Контекстная диаграмма
На этапе декомпозиции процесса Приготовление кофе важно понять, что в первую очередь необходимо рассчитать стоимость заказа на основании параметров заказа: сколько требуется воды, сиропа, зерен и сахара.
Кроме того, нужно знать, достаточно ли этих ингредиентов в аппарате. Данные об ингредиентах мы обозначим как хранилища, которые передают данные об остатках в процесс Рассчитать стоимость заказа.
Стоимость ингредиентов передаётся в процесс расчёта из соответствующей базы. Результатом процесса является рассчитанная стоимость заказа, которая попадает в хранилище Счёт на оплату. Дальше стоимость заказа поступает в процесс Оплатить заказ, клиент вносит деньги, а сам процесс взаимодействует с внешней сущностью Система банковского эквайринга. Процесс направляет счёт на оплату и получает чек за покупку.
Пример DFD: приготовление кофе в кофейном автомате
Когда заказ оплачен, ингредиенты и рецепт передаются в процесс Приготовить кофе. Готовый напиток наливается в стаканчик, переданный из Склада стаканов. Это происходит в процессе Налить кофе. В результате клиент получает готовый напиток.
Давайте добавим в этот пример немного киберпанка. Предположим, что у нас умный кофейный автомат, который распознает клиента и хранит историю его покупок. Аппарат помнит, что клиент по понедельникам в хорошем настроении пьет сладкий латте, а в плохом настроении предпочитает маленькую чашечку бодрящего эспрессо.
Контекстная диаграмма в этом случае дополняется потоками идентификации клиента и формирования рекомендаций. В диаграмме также появится несколько новых внешних сущностей: Система распознавания лиц и Рекомендательная система. В качестве тренировки вы можете самостоятельно раскрыть эту контекстную диаграмму. Она будет похожа на предыдущий пример, но будет содержать ещё больше процессов обмена данными.
Пример DFD: приготовление кофе в кофейном автомате с системой распознавания лиц. Контекстная диаграмма
Пример #3 Предоставление контента
по интересам пользователя
В качестве третьего примера давайте рассмотрим систему по предоставлению пользователю контента с учетом его интересов. Контент поступает по каналам, которые предпочел клиент: это может быть telegram, любой другой мессенджер или просто email.
Как выглядит процесс?
Клиент вводит первичные параметры доставки контента и свои исходные интересы, а система будет направлять ему контент. Поскольку система интеллектуальная, контент будет формироваться с учетом реакций и предпочтений пользователя (Content-based filtering).
Если пользователю нравится смотреть на котиков, будем показывать ему больше котиков. Если пользователь указал, что подборка котиков ему не очень интересна, будем исключать такой материал из контента.
При этом система сама будет определять, что нравится пользователю, а что не нравится.
Пример DFD: предоставление контента по интересам пользователя. Контекстная диаграмма
Рассмотрим декомпозированную DFD-диаграмму, составленную для этого примера.
Пример DFD: предоставление контента по интересам пользователя
В процессе Изменение данных пользователем, куда приходят исходные интересы и параметры доставки, формируются предпочитаемые темы. Они передаются в промежуточное хранилище Профиль пользователя.
Просмотренный контент и — главное — реакция на него собираются в Хранилище событий пользовательского поведения. Как правило, это NoSQL-хранилища. Для сбора реакций на контент система анализирует поведение пользователя. Например, просмотрел ли пользователь данное видео полностью или быстро закрыл, прочитал статью и оставил комментарий либо поделился ссылкой и т.д.
В процессе Анализа интересов, куда попадают предпочитаемые пользователем темы и контент, который он просмотрел, формируется поток возможных интересов. Так система формирует Базу контента, откуда отфильтрованный контент попадает в процесс Формирование рекомендаций.
Сформированный список рекомендаций передаётся в промежуточное хранилище сообщения с рекомендуемым контентом. Процесс Отправка с учетом предпочитаемого канала доставляет контент пользователю.
Преимущества и недостатки DFD-нотации
Преимущества и недостатки
Инструменты для создания DFD-диаграмм
Можно рисовать DFD-диаграммы, используя привычные вам инструменты. Для этого подойдут, например, всем известные MS Visio или Draw.io. Но для выстраивания системы с разными уровнями детализации потребуются специализированные программы для моделирования.
Существует множество редакторов для построения DFD-диаграмм. Самым популярным является Ramus. Этот продукт имеет бесплатную версию, доступен в сетевом и локальном вариантах. StarUML — проект с открытым кодом, ещё один ходовой инструмент для создания диаграммы потоков данных. Для командной работы можно использовать облачное решение Lucidchart.
Говоря об инструментах визуального моделирования и проектирования DFD, следует рассказать и о BPwin. Этот программный продукт получил широкое применение на этапе зарождения системного анализа и часто упоминается в литературе.
Но самый главный инструмент аналитика — это, прежде всего, карандаш и бумага. Набросав эскиз от руки, вы всегда можете перенести его в любой визуальный редактор, дополнив нужными деталями.
Основные ошибки при
разработке DFD-диаграмм
1. Отсутствие контекстной диаграммы
На первый взгляд диаграмма с одним процессным блоком и несколькими внешними сущностями может показаться лишней. Некоторые аналитики сразу переходят к детализированным DFD. Однако построение контекстной диаграммы необходимо! При помощи контекстной диаграммы мы определяем границы и так называемый scope — объем будущей проектируемой системы.
Контекстная диаграмма наглядно отображает, что находится вне системы и даёт ответ на главный вопрос, какой внутренний процесс мы будем детализировать на диаграммах нижних уровней. Это помогает избежать одну из популярных ошибок проектирования систем, когда хочется «объять необъятное».
2. Неименованные потоки данных
Ещё одна часто встречающаяся ошибка — отсутствие названий у входящих и исходящих потоков. Каждая стрелка на схеме должна иметь название.
3. Отсутствие процессовНаличие процесса — один из основополагающих принципов моделирования DFD-диаграммы. Когда на диаграмме отражен только обмен данными между хранилищами без привязки к процессу, непонятно, каким образом и для чего хранилища передают данные друг другу.
4. Отсутствие внешних сущностейВажно помнить, что DFD-диаграмма должна содержать одну или несколько внешних сущностей — источников входящих в процесс данных.
5. Путаница между хранилищами и потоками данных
Этой ошибки можно избежать, помня, что данные в DFD представлены в двух состояниях. Данные в состоянии покоя помещаются в хранилища, а данные в состоянии движения отражаются при помощи входящих и исходящих потоков.
6. Стремление показать логику выполнения процессов. DFD – это нотация, предназначенная для моделирования структуры информационной системы, но не её логики. Поэтому будет ошибкой привязывать элементы DFD-диаграммы к временным шкалам или использовать условные операторы XOR, OR, AND.
7. Некорректное название элементов нотацииВ DFD-диаграмме не должно быть путаницы в названиях элементов. В именах внешних сущностей принято использовать существительное. Процесс — это компонент, описывающий действие, поэтому его имя начинается с глагола. Названия хранилищ и потоков данных начинаются с существительных имен.
8. Отсутствие выходов у процессовФункциональное моделирование помогает рассматривать бизнес-модель с точки зрения результативности. При моделировании системы мы исходим из того, что имеем на входе, и того, что желаем получить на выходе. Иными словами, процесс — это действие с заданным результатом. В DFD хорошей практикой считается визуально располагать сущности одного типа на одном уровне, обычно по горизонтали. Тогда становится очевидным правило для процесса «один вход — один выход».
Курс Анны Вичуговой
«Моделирование бизнес-процессов»
Курс для менеджеров и специалистов, которые хотят научиться структурировать корпоративную деятельность в виде бизнес-процессов, а также детально описывать их структуру и логику выполнения с помощью формальных нотаций
-
Вопрос:
Насколько актуально применение DFD-нотации?
Ответ:
DFD позволяет показать перемещение данных между процессами и хранилищами. Это особенно актуально в проектах дата-менеджмента, в проектах интеграции данных, при внедрении СЭД и CRM-систем. В статье подробно рассмотрены наиболее распространенные кейсы, с которыми сталкивается практически любой аналитик.
-
Вопрос:
Чем DFD отличается от контекстной диаграммы и диаграммы состояний?
Ответ:
Диаграмма состояний (Statechart diagram) — вид UML-диаграмм. Показывает изменение жизненного цикла объекта. То есть у неё совершенно другое предназначение. И в отличие от диаграммы потоков данных с её хранилищами, процессами и объектами, в Statechart diagram отражены объекты одного класса.
Контекстная диаграмма это часть DFD-нотации, с которой мы начинаем построение data flow diagrams.
-
Вопрос:
Какие ошибки или пробелы в проектировании можно выявить с помощью DFD-диаграммы?
Ответ:
В первую очередь DFD позволяет определить границы системы. На уровне контекстной диаграммы DFD помогает определить и не забыть при дальнейшем проектировании системы все внешние акторы: источники или потребители данных.
Кроме того, при проектировании системы важно не упустить «где что лежит», особенно если источники данных разрозненны. Именно в DFD-диаграммах отражены все хранилища данных, включая промежуточные хранилища.
-
Вопрос:
Какими нотациями и в какой последовательности можно дополнять описание, выполненное в DFD?
Ответ:
Поскольку DFD относится к структурным нотациям, то её целесообразно использовать в начале проектирования. Это позволяет взглянуть на разрабатываемую систему с точки зрения хранения, преобразования и передачи данных и понять, что требуется для автоматизации бизнес-процесса. Но DFD не описывает сам бизнес-процесс. Поэтому на практике DFD-диаграммы дополняются BPMN либо EPС-диаграммами.
Вичугова Анна Александровна
- Кандидат технических наук (Системный анализ, управление и обработка информации, 2013)
- Сертифицированный бизнес-аналитик (CBAP 2020, международная сертификация IIBA)
- Сертифицированный специалист Business Studio
- Сертифицированный специалист и администратор СЭД Directum
Профессиональные интересы: системный анализ, бизнес-анализ, разработка и поддержка СМК, ССП (KPI), анализ и формализация бизнес-процессов (UML, IDEF, BPMN), Data Science, технологии Big Data, разработка технической документации (ТЗ по ГОСТам серии 19.***, 34.***, руководства пользователя и администратора, описание программных продуктов), управление продуктами и проектами.
Подписаться на новые статьи
В
настоящее время большинство проектов
информационных систем (ИС) разрабатывается
в соответствии с какой-либо методологией
разработки ПО. Как следствие, разработчикам
требуется инструмент для моделирования
данных на этапах анализа и проектирования.
Таким инструментом являются ER-диаграммы
(Entity-Relationship, «Сущность-Связь»). Фактически
их использование является обязательным
при разработке информационных систем.
Модель
«сущность-связь» должна охватывать
реальные
объекты,
содержать всю необходимую информацию
для получения запросов
пользователя и
выходных отчетов.
Сущность
(Entity) – это объект, о котором в системе
будет накапливаться информация, например,
СТУДЕНТЫ или ПРЕПОДАВАТЕЛИ.
Атрибуты
– данные,
описывающие свойства сущности. Пример
атрибутов сущности СТУДЕНТЫ: ФИО,
домашний адрес, год рождения.
Совокупность
сущностей, характеризующихся в
информационной системе одним и тем же
перечнем свойств, называется классом
сущностей (набором объектов). Так,
например, совокупность всех сущностей
СТУДЕНТЫ составляет класс сущностей
СТУДЕНТЫ.
Класс
сущностей
описывается перечнем свойств сущностей,
составляющих этот класс. Экземпляром
сущности
называется конкретная сущность с
определенными свойствами).
В
данном разделе требуется привести
описание используемых в проекте сущностей
с их атрибутами. Спецификация атрибута
должна содержать его название, тип
данных, длину в знаках, домен (диапазон
принимаемых значений) и ключевое поле
(Таблица 1).
Таблица
1 – Преподаватель
Название |
Тип |
Длина |
Диапазон |
Ключевое |
Код Фамилия Имя Отчество Разряд Стаж |
Счётчик Строковый Строковый Строковый Числовой Числовой |
3 50 20 25 2 4 |
1-999 — — — 9 0-50 |
Да Нет Нет Нет Нет Нет |
ER-диаграммы
позволяют строить модели логической
структуры данных предметной области,
а так же производить моделирование
физической структуры систем хранения
данных.
Процесс
построения ER-диаграммы называется
ER-моделированием.
При этом используются следующие
классические обозначения. Класс сущностей
представляется в виде четырехугольника,
в котором записано уникальное имя класса
сущности (прописными буквами) и имена
атрибутов строчными буквами. По типу
различают множественные связи «один
к одному» (1:1), «один ко многим»
(1:n) и «многие ко многим» (m:n).
ER–диаграмма, содержащая различные типы
связей, приведена на рисунке 6. Степень
связи определяется количеством сущностей,
которые охвачены данной связью.
Рис.
6 ER–диаграмма
Для
создания реляционной БД необходимо
определить:
-
сколько
и каких таблиц должна включать БД; -
сколько
столбцов содержит каждая таблица; -
какие
атрибуты используются в качестве
ключей; -
как
устанавливаются связи
между
разными таблицами:
-
использование
в разных таблицах одного и того же
ключа; -
помещение
ключа одной таблицы в качестве атрибута
в записи другой таблицы; -
создание
специальных связующих таблиц;
-
как
обеспечить полноту, непротиворечивость
и согласованность информации, хранящейся
в БД.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #