نمودارهای UML معمولاً در دو دسته قرار میگیرند:ساختاری نمودارها که توصیفکننده اجزای تشکیلدهنده یک سیستم هستند، ورفتاری نمودارها که توصیفکننده عملکرد سیستم هستند. مثالهای زیر از یک سناریوی فروشگاه آنلاین واحد استفاده میکنند تا بتوان آنها را مقایسه و تطبیق داد. UML 2.5.1 مشخصات رسمی مورد ارجاع در اینجا است.
PlantUML بسیاری از نمادگذاریهای UML را مستقیماً ترسیم میکند. چندین نوع نمودار تخصصی—بهویژه پروفایل، ساختار ترکیبی، ارتباط و نمای تعامل—ممکن است با استفاده از یک تقریب عملی در PlantUML به جای یک رندرر اختصاصی نمودار بیان شوند. نظرات، این موارد را مشخص میکنند.

نمودارهای ساختاری
۱. نمودار کلاس
کلاسهای سیستم، دادهها و عملیات آنها، و روابطی مانند وابستگی، ارثبری و ترکیب را نشان میدهد. از آن برای بحث درباره مدلهای دامنه یا طراحی شیگرا استفاده کنید.

@startuml
class Customer {
+id: String
+email: String
+placeOrder(): Order
}
class Order {
+number: String
+status: OrderStatus
+total(): Money
}
class OrderLine {
+quantity: int
+unitPrice: Money
}
class Product {
+sku: String
+name: String
}
Customer "1" -- "0..*" Order : places
Order "1" *-- "1..*" OrderLine : contains
OrderLine "*" --> "1" Product : refers to
@enduml
آن را بخوانید:یک مشتری میتواند سفارشهای متعددی ثبت کند؛ یک سفارش شامل یک یا چند خط است؛ هر خط به یک محصول اشاره میکند. الماس پررنگ نشاندهنده ترکیب است: سفارش، خطوط خود را مالک است.
۲. نمودار شیء
نمونههای عینی و پیوندها را در یک لحظه زمانی نشان میدهد. برای نمایش دادههای نمونه یا توضیح یک مدل کلاس با یک سناریوی خاص مفید است. در PlantUML، از نمادگذاری شیء استفاده کنید.

@startuml
object "alice:Customer" as alice {
id = C104
email = [email protected]
}
object "order:Order" as order {
number = O9001
status = PAID
}
object "line:OrderLine" as line {
quantity = 2
unitPrice = 19.99
}
object "mug:Product" as mug {
sku = MUG-01
name = Travel mug
}
alice -- order
order *-- line
line --> mug
@enduml
۳. نمودار مؤلفه
اجزای نرمافزاری قابل استقرار یا قابل تعویض و وابستگیهای آنها را نشان میدهد. از آن برای ارتباط درباره معماری برنامه و مرزهای یکپارچهسازی استفاده کنید.

@startuml
component "Web Store" as web
component "Order Service" as orders
component "Payment Adapter" as payments
database "Order DB" as db
cloud "Payment Provider" as provider
web --> orders : REST
orders --> db : SQL
orders --> payments : authorize
payments --> provider : HTTPS
@enduml
۴. نمودار ساختار ترکیبی
اجزای داخلی یک طبقهبندیکننده—مانند یک مؤلفه یا کلاس—و نحوه اتصال آن اجزا از طریق پورتها را نشان میدهد. زمانی مفید است که همکاری داخلی مهمتر از معماری سیستم اطراف باشد.
PlantUML یک نحو اختصاصی و بهطور جهانی پشتیبانیشده برای ساختارهای ترکیبی ارائه نمیدهد. این طرح به سبک نمودار کلاس، اجزا و اتصالات را منتقل میکند:

@startuml
allowmixing
skinparam componentStyle rectangle
class Car {
}
package "Car" {
component "engine : Engine" as engine {
portout p1
}
component "transmission : Transmission" as trans {
portin p2
portout p3
}
component "wheel : Wheel [4]" as wheels {
portin p4
}
p1 -- p2 : drives
p3 -- p4 : power
}
@enduml این را به عنوان یک طرح ساختاری در نظر بگیرید؛ این طرح پورتهای رسمی UML یا معانی اتصال را نشان نمیدهد.
۵. نمودار استقرار
موجودیتهای نرمافزاری یا خدمات را روی گرههای سختافزاری و محیطهای اجرایی نقشهبرداری میکند. از آن برای توضیح محل اجرای نرمافزار و نحوه ارتباط گرههای زمان اجرا استفاده کنید.

@startuml
node "Customer device" as client {
artifact "Browser"
}
node "Cloud" {
node "Application host" as appHost {
artifact "Store API"
}
database "Order database" as db
}
cloud "External payment provider" as pay
client --> appHost : HTTPS
appHost --> db : SQL
appHost --> pay : HTTPS
@enduml
۶. نمودار بسته
عناصر مدل را در نامفضاها یا لایهها گروهبندی میکند و وابستگیها بین آن گروهها را نشان میدهد. از آن برای توضیح سازماندهی کد و جهت معماری استفاده کنید.

@startuml
package "store.web" {
class CheckoutController
}
package "store.application" {
class PlaceOrder
}
package "store.domain" {
class Order
class Product
}
package "store.persistence" {
class OrderRepository
}
CheckoutController ..> PlaceOrder
PlaceOrder ..> Order
PlaceOrder ..> OrderRepository
@enduml
۷. نمودار پروفایل
یک گسترش اختصاصی به UML را با استفاده از استریوتایپها، مقادیر برچسبدار و قیود تعریف میکند. از آن زمانی استفاده کنید که یک پروژه نیاز به یک واژگان مدلسازی یکپارچه فراتر از UML استاندارد دارد.
PlantUML میتواند مفاهیم پروفایل را به عنوان یک طرح به سبک UML نمایش دهد، اما این یک رندرکننده اختصاصی برای نمودار پروفایل نیست.

@startuml
class "«profile» StoreProfile" as Profile
class "«stereotype» «Service»" as Service
class "«stereotype» «Repository»" as Repository
class "«metaclass» Component" as Component
Profile ..> Service : defines
Profile ..> Repository : defines
Service ..> Component : extends
Repository ..> Component : extends
note right of Service
tagged value:
owner: String
end note
@enduml
نمودارهای رفتاری
۸. نمودار مورد استفاده
نقشهای خارجی و اهداف سیستمی که با آنها تعامل دارند را نشان میدهد. از آن برای تعیین محدوده و ثبت الزامات عملکردی در سطح بالا استفاده کنید.

@startuml
جهت چپ به راست
نقش مشتری
نقش "ارائهدهنده پرداخت" به عنوان Provider
مستطیل "فروشگاه آنلاین" {
مورد استفاده "مرور محصولات" به عنوان Browse
مورد استفاده "ثبت سفارش" به عنوان Place
مورد استفاده "پرداخت سفارش" به عنوان Pay
مورد استفاده "ردیابی سفارش" به عنوان Track
}
مشتری --> Browse
مشتری --> Place
مشتری --> Track
Provider --> Pay
Place ..> Pay : <<شامل>>
@enduml
۹. نمودار فعالیت
یک جریان کاری را مدلسازی میکند: اقدامات، تصمیمها، مسیرهای موازی و تحویلها. از آن برای فرآیندهای کسبوکار، رویههای عملیاتی یا جریان کنترل یک الگوریتم استفاده کنید.

@startuml
شروع
:انتخاب اقلام;
:وارد کردن جزئیات تحویل;
:محاسبه مجموع;
اگر (اقلام موجود هستند؟) آنگاه (بله)
:مجوز پرداخت;
اگر (پرداخت تأیید شد؟) آنگاه (بله)
:ایجاد سفارش;
:ارسال تأییدیه;
در غیر این صورت (خیر)
:نمایش خطای پرداخت;
پایان اگر
در غیر این صورت (خیر)
:نمایش اقلام غیرموجود;
پایان اگر
پایان
@enduml
۱۰. نمودار ماشین حالت
حالتهایی را که یک موجودیت میتواند اشغال کند و رویدادها یا شرایطی که باعث گذار میشوند، توصیف میکند. از آن زمانی استفاده کنید که رفتار یک شیء به حالت فعلی آن وابسته باشد.

@startuml
[*] --> پیشنویس
پیشنویس --> در انتظار پرداخت : ارسال
در انتظار پرداخت --> پرداخت شده : پرداخت تأیید شد
در انتظار پرداخت --> لغو شده : پرداخت رد شد
در انتظار پرداخت --> لغو شده : مشتری لغو میکند
پرداخت شده --> ارسال شده : ارسال
ارسال شده --> تحویل شده : تحویل تأیید شد
لغو شده --> [*]
تحویل شده --> [*]
@enduml
۱۱. نمودار توالی
پیامهای مبادله شده بین شرکتکنندگان را به ترتیب زمانی نشان میدهد. از آن برای توصیف یک سناریو، جریان فراخوانی API یا تعامل بین سرویسها استفاده کنید.

@startuml
نقش مشتری
شرکتکننده "فروشگاه وب" به عنوان Web
شرکتکننده "سرویس سفارش" به عنوان Orders
شرکتکننده "سرویس پرداخت" به عنوان Payments
مشتری -> Web : ارسال تسویه حساب
Web -> Orders : ایجاد سفارش
Orders -> Payments : مجوز پرداخت
Payments --> Orders : تأیید شد
Orders --> Web : تأیید سفارش
Web --> Customer : نمایش تأییدیه
@enduml
۱۲. نمودار ارتباطی
بر روی اینکه کدام اشیاء با هم همکاری میکنند و پیوندهای بین آنها تأکید میکند؛ شمارهگذاری پیامها ترتیب تعاملات را نشان میدهد. از آن زمانی استفاده کنید که شبکه شرکتکنندگان همکاریکننده مهمتر از یک خط زمانی باشد.
PlantUML در مجموعه استاندارد UML خود یک رندرکننده اختصاصی برای نمودار ارتباطی ندارد. این طرح پیوند شیء، پیامها را با شمارههای توالی برچسبگذاری میکند:

@startuml
شیء مشتری
شیء فروشگاه وب
شیء سرویس سفارش
شیء سرویس پرداخت
مشتری --> WebStore : ۱: تسویه حساب()
WebStore --> OrderService : ۱.۱: ایجاد سفارش()
OrderService --> PaymentService : ۱.۲: مجوز()
PaymentService --> OrderService : ۱.۳: تأیید
OrderService --> WebStore : ۱.۴: تأییدیه
@enduml
۱۳. نمودار نمای کلی تعامل
یک نمای کنترلجریان سطح بالا از تعاملات ارائه میدهد که جریان به سبک فعالیت را با ارجاعات به سناریوهای تعامل ترکیب میکند. از آن برای نشان دادن اینکه چگونه چندین سناریوی سطح توالی در یک فرآیند بزرگتر جای میگیرند، استفاده کنید.
این مثال PlantUML از یک نمودار فعالیت به عنوان نمای کلی استفاده میکند، که در آن نامهای سناریو به جای تعاملات ارجاعشده قرار گرفتهاند:

@startuml
skinparam conditionStyle InsideDiamond
title نمودار نمای کلی تعامل: سیستم پردازش سفارش
start
:مشتری سفارش را ثبت میکند;
if (آیا کالا موجود است؟) then (بله)
partition "sd توالی پرداخت" {
:مجوز پرداخت;
:کسر موجودی انبار;
}
else (خیر)
partition "sd فرآیند سفارش معوق" {
:اعلام به مشتری;
:ایجاد درخواست تأمینکننده;
}
endif
fork
partition "sd توالی ارسال" {
:بستهبندی سفارش;
:ارسال به آدرس;
}
fork again
partition "sd توالی صورتحساب" {
:ایجاد فاکتور;
:ارسال ایمیل رسید;
}
end fork
:بستن سفارش;
stop
@enduml برای تبادلهای پیامی دقیق در داخل هر سناریو، یک نمودار توالی جداگانه ایجاد کنید.
۱۴. نمودار زمانبندی
تغییرات وضعیت یا مقدار را در برابر محور زمان نشان میدهد. از آن برای رفتارهای حساس به زمان، پروتکلها، تعاملات سختافزاری یا الزاماتی که شامل مدتها و مهلتها هستند، استفاده کنید.

@startuml
robust "سفارش" as Order
concise "پرداخت" as Payment
@0
سفارش پیشنویس است
پرداخت در حالت بیکار است
@5
سفارش در انتظار است
پرداخت در حال پردازش است
@10
پرداخت تأیید شده است
@12
سفارش تأیید شده است
@enduml
انتخاب نمودار
با سوالی که نیاز دارید نمودار به آن پاسخ دهد شروع کنید:
-
چه چیزی در سیستم وجود دارد؟کلاس، شیء، جزء، ساختار ترکیبی، بسته، پروفایل یا استقرار.
-
سیستم چه کاری انجام میدهد؟مورد استفاده، فعالیت یا ماشین وضعیت.
-
شرکتکنندگان چگونه همکاری میکنند؟توالی، ارتباط، نمای کلی تعامل یا زمانبندی.
هر نمودار را بر یک هدف متمرکز نگه دارید، از نامهای یکسان در سراسر نمودارها استفاده کنید و تنها به اندازهای جزئیات را شامل کنید که برای مخاطب و تصمیم مورد نیاز کافی باشد. قطعات PlantUML نقاط شروع هستند: سینتکس پشتیبانیشده توسط رندرکننده خود را بررسی کنید، بهویژه برای انواع نمودارهای تخصصی.
This post is also available in Deutsch, English, Español, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文.












