Как нарисовать хорошую архитектурную схему: 7 распространенных типов и примеров
Как нарисовать хорошую архитектурную схему: 7 распространенных типов и примеров

Для многих разработчиков диаграммы архитектуры являются не только незаменимым навыком, но и ключевым инструментом для понимания, планирования и создания программных систем. Однако перед лицом разнообразных системных требований и сложной бизнес-логики построение диаграммы архитектуры стало общей проблемой, с которой сталкиваются многие программисты. Сегодня мы специально пригласили г-на Ли Чжихуэя, старшего архитектора Tongcheng Travel и Tencent Cloud TVP. Г-н Ли также является автором бестселлера «Архитектура с высоким параллелизмом на практике: от анализа требований к проектированию системы». использовать свои глубокие технические навыки и богатый опыт. Практический опыт помогает нам раскрыть тайну общих архитектурных схем и проанализировать принципы их выбора и сценарии применения на разных этапах разработки программного обеспечения.

//////////

«Жуйи, У Цзин, У Нэн — особенности «черного мифа» в мире операционных систем» Прямая трансляция «Программисты Goose Factory лицом к лицу» продолжится в среду вечером. Запишитесь на просмотр, и у вас будет возможность поймать Гуся. Заводские периферийные подарки!

01. Введение

в разработке программного обеспечения,Стать архитектором — «запредельная мечта» многих программистов.。Архитектура Технические возможности, необходимые учителям, многомерны и всеобъемлющи.。но стать Архитектураразделение,Первой способностью должно быть рисование диаграммы архитектуры.,Потому что системе нужен дизайн,нужен дизайн Архитектура фотография,А учитель Архитектуры — это тот, кто нарисовал картину Архитектуры. Как говорится «картинка стоит тысячи слов».,Диаграмма Архитектуры служит языком и мостом для общения между инженерами Архитектуры и различными должностями, такими как менеджеры по продуктам, инженеры-разработчики и инженеры-испытатели.,Ее важность очевидна.

Давайте сначала посмотрим на архитектурную диаграмму об архитектуре. Архитектурная диаграмма — это диаграмма, описывающая основные компоненты системы и их взаимосвязи. Так из чего же состоит сама архитектура? Какие части с ним связаны? Какова связь между этими частями?

Как показано на картинке выше,Для каждой системы есть своя Архитектура,Архитектура состоит из элементов Архитектуры и связей между ними.,Эти элементы и отношения передаются через Архитектура Документация для отображения。Архитектура Документация должна удовлетворять потребности различных заинтересованных сторон.сосредоточиться на какой-то момент, например, инженер-разработчик сосредоточить внимание Как реализовать код, сосредоточен инженер по эксплуатации и техническому обслуживанию; система Какое оборудование необходимо и какова схема сети? Какие функции реализованы в документе Архитектура для удовлетворения различных задач? наточка,Необходимо представить через различные представления архитектуры. Эти виды Архитектуры — это то, что мы часто называем картинками Архитектуры.,так,В реальной работе архитекторам не нужно рисовать одну архитектурную схему, а нужно рисовать множество архитектурных схем в соответствии с различными потребностями.

02. Диаграммы общей архитектуры UML

Существует множество способов построения архитектурных диаграмм, и наиболее распространенным методом в настоящее время по-прежнему является UML, унифицированный язык моделирования. UML содержит в общей сложности 10 типов графики, из которых обычно используются 7: диаграммы классов, диаграммы последовательности, диаграммы компонентов, диаграммы развертывания, диаграммы вариантов использования, диаграммы состояний и диаграммы деятельности.

  • Диаграмма классов

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

Класс состоит из трех частей: имя класса, список атрибутов класса и список методов класса. Между классами существует 6 типов статических отношений: ассоциация, зависимость, комбинация, агрегация, наследование и обобщение. Изображение связанной группы классов и их отношений представляет собой диаграмму классов. Пример диаграммы классов выглядит следующим образом:

  • Временная диаграмма

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

Как видно из рисунка, у каждого участника имеется вертикальная нисходящая линия жизни, которая представлена ​​пунктирной линией. Сообщения между участниками представляют собой последовательные отношения между их вызовами сверху вниз. Отсюда и возник термин «диаграмма последовательности». Каждая линия жизни имеет несколько полосок активации, представляющих собой тонкие прямоугольные полоски. Если эта полоска появляется, это означает, что участник активен.

Диаграммы последовательностей обычно используются для представления взаимодействий между участниками. Этот участник может быть объектом класса или участником более высокой детализации, например компонентом, сервером, подсистемой и т. д. Короче говоря, диаграммы последовательности можно использовать, если они описывают взаимодействие между различными участниками.

  • диаграмма компонентов

Компоненты — это элементы дизайна с большей степенью детализации, чем классы. Компонент обычно содержит множество классов. Диаграммы компонентов обычно используются для описания физических компонентов, таких как JAR, DLL и т. д. На практике, когда мы проектируем модули, мы чаще используем диаграммы компонентов.

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

  • Схема развертывания

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

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

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

  • диаграмма вариантов использования

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

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

  • диаграмма состояний

Диаграммы состояний используются для отображения переходов состояний в жизненном цикле одного объекта.

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

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

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

  • диаграмма деятельности

Диаграммы деятельности в основном используются для описания логики процессов и бизнес-процессов. В UML нет блок-схемы. Часто люди используют диаграммы действий вместо блок-схем.

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

Кроме того, диаграммы деятельности вводят важное понятие — дорожки для плавания. Дорожка для плавания представляет собой диапазон доменов, который иногда также называют поддоменом, например, три диапазона доменов на рисунке выше: отели, блокчейн и компании, эксплуатирующие транспортные средства. Диаграммы действий могут разделить действия на различные дорожки в соответствии с областями, системами, ролями и т. д. в соответствии с объемом действий, что делает границы процесса более четкими.

03. Сценарии применения и сроки построения архитектурных диаграмм в цикле разработки программного обеспечения.

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

  1. На этапе анализа спроса, в основном с помощью диаграммы вариантов использование Для описания функций и сценариев использования системы для ключевых бизнес-процессов можно использовать диаграмму; Описание деятельности Если на этапе требований предлагается интеграция с какой-то существующей подсистемой, то можно использовать Временную; Диаграмма описывает вызывающую связь между новой системой и исходной подсистемой. Ее можно упростить с помощью Диаграммы; классы абстрагируют модель предметной области и описывают отношения между основными объектами предметной области, если внутри некоторых объектов, таких как пользователи и заказы, происходят сложные изменения состояния, вы можете использовать диаграмму; умею описывать.
  2. На этапе эскизного проектирования, автор Схема развертывания Описать окончательный физический чертеж системы с помощью диаграммы; компонентови компоненты Временная Диаграммадизайн основных модулей программного обеспечения и их взаимосвязей, также можно использовать компонент Диаграмма; Деятельность описывает логику процесса между компонентами.
  3. На этапе детального проектирования основным результатом является Диаграмма. классови подобные Временная Диаграмма, для руководства при разработке окончательного кода. Если внутри определенного метода класса есть более сложная логика, то можно использовать логику этого метода. деятельность для описания.

04. Заключение

Наконец, я хочу сказать, что UML — это язык, и основная цель языка двоякая: одна — мышление, а другая — общение. Поэтому, когда вы думаете об архитектуре программного обеспечения, вы можете также нарисовать свои мысли; когда вы хотите рассказать другим о проекте вашей архитектуры, вы также можете нарисовать для них несколько архитектурных диаграмм.

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

Возможно, вы обнаружили,В моем примере диаграммы UML выше,Просто используйте некоторые нестандартные элементы модели UML.,как говорить,Даже если в вашем произношении есть акцент и диалект.,Но пока другая сторона может понять,Нет проблем,НапротивЕсли вы не осмеливаетесь говорить из-за страха некачественного произношения, вы можете пропустить весь мир.

Здесь я рекомендую простой онлайн-инструмент для рисования: https://app.diagrams.net/ Нарисуйте свою первую архитектурную схему и начните свой путь в качестве архитектора. Если вы хотите обратиться к некоторым конкретным случаям и увидеть, как диаграмма архитектуры конкретно выражает определенную идею дизайна и как несколько диаграмм архитектуры составляют документ проекта архитектуры, я рекомендую вам прочитать мою статью «Практика архитектуры с высоким параллелизмом: из анализа требований». к системному дизайну.

Об авторе

Ли Чжихуэй, старший архитектор Tongcheng Travel и Tencent Cloud TVP, уже давно занимается исследованиями и разработками в области больших данных и архитектуры больших веб-сайтов. Он работал техническим экспертом в Alibaba, архитектором Азиатско-Тихоокеанского центра исследований и разработок Intel и техническим директором Zhaimi и других компаний. Мастер-ключ Wi-Fi. Автор исходного кода Apache Spark, автор бестселлеров «Архитектура с высоким параллелизмом на практике: от анализа требований к проектированию системы», «Техническая архитектура больших веб-сайтов: основные принципы и анализ примеров» и книги Geek Time «Изучение больших данных с нуля». "автор колонки.

-End-

Автор оригинала|Ли Чжихуэй

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose