مقدمه
در مهندسی نرمافزار، پر کردن شکاف بین نیازهای ذینفعان و پیادهسازی فنی اغلب چالشبرانگیزترین مرحله توسعه است. رویکرد رویکرد مبتنی بر مورد استفاده یک روششناسی ساختاریافته و تکراری را برای حل این مشکل ارائه میدهد. با تمرکز بر نحوه تعامل کاربران با سیستمبرای دستیابی به اهداف خاص، این رویکرد اطمینان میدهد که الزامات شفاف، قابل آزمایش و مستقیماً قابل ردیابی به آثار طراحی هستند.
این راهنما یک مرور کامل از رویکرد مبتنی بر مورد استفادهرا ارائه میدهد که از الزامات سطح بالا به طراحی دقیق میرسد. ما از یک مثال پیوسته واحد—یک سیستم مدیریت سفارش آنلاین—برای تشریح هر مرحله استفاده خواهیم کرد تا ثبات و شفافیت را در طول فرآیند تضمین کنیم.
مرور کلی روششناسی
رویکرد مبتنی بر مورد استفاده از یک پیشرفت طبیعی از بالا به پایین پیروی میکند. هر مرحله، مرحله قبلی را دقیقتر کرده و ابهام را کاهش میدهد.

چرا این ترتیب اهمیت دارد؟
- نمودار مورد استفاده:یک فهرست کامل از قابلیتها و دامنه را ارائه میدهد. اسکن آن سریع است و برای توافق ذینفعان بر روی چه چیزیسیستم انجام میدهد، ایدهآل است.
- توضیح مورد استفاده:با تعیین دقیق پیششرطها، پسشرطها، بازیگران و اولویت، ابهام را از بین میبرد. این قرارداد رفتار را «منجمد» میکند.
- جریان رویدادها:قرارداد را به مراحل مشخص و قابل آزمایش تبدیل میکند. این به عنوان ماده خام هم برای موارد آزمایش و هم برای طراحی فنی عمل میکند.
- فعالیت/نمودار توالی:به عنوان پل ارتباطی با کد عمل میکند. این ابزار اشیاء مشارکتکننده، مسئولیتهای آنها، تبادل پیامها و قوانین دقیق انشعاب را شناسایی میکند.
مرحله ۱: نمودار مورد استفاده (نیازمندیها)
نمودار مورد استفاده،چه کسیبا سیستم تعامل دارد (نقشها) وچه کاریآنها میتوانند انجام دهند (مورد استفاده)، به همراه روابط بین آنها را ثبت میکند.
مفاهیم کلیدی
- نقش اصلی:مورد استفاده را آغاز میکند (در سمت چپ قرار میگیرد).
- نقش ثانویه:از سیستم پشتیبانی میکند یا اعلانها را دریافت میکند (در سمت راست قرار میگیرد).
- مرز سیستم:مستطیلی که محدوده سیستم را تعریف میکند.
<<شامل>>:رفتار اجباری مشترک را نشان میدهد. اگر مورد استفاده A مورد استفاده B را شامل شود، Bبایدبرای تکمیل A رخ دهد.<<گسترش>>:رفتار اختیاری را نشان میدهد. مورد استفاده B فقط در شرایط خاص، مورد استفاده A را گسترش میدهد.
مثال: سیستم مدیریت سفارش آنلاین

@startuml
skinparam linetype ortho
skinparam defaultFontSize 14
skinparam defaultFontColor #333333
skinparam vpDiagramType UseCaseDiagram
skinparam actor {
BackgroundColor #E8F5E9
}
skinparam usecase {
BackgroundColor #BBDEFB
BorderColor #1976D2
ArrowColor #1976D2
}
left to right direction
actor "Customern(Primary)" as cust
actor "Warehousen(Secondary)" as wh
rectangle "Order Management System" {
usecase "Place Order" as UC1
usecase "Cancel Order" as UC2
usecase "Track Order" as UC3
usecase "Login" as UC4
usecase "Print Invoice" as UC5
}
cust -[#black]- UC1
cust -[#black]- UC2
cust -[#black]- UC3
UC1 -[#crimson]- wh
UC2 -[#crimson]- wh
UC1 ...> UC4 : <<include>>
UC2 ...> UC4 : <<include>>
UC3 ...> UC4 : <<include>>
UC1 <... UC5 : <<extend>>
@enduml
تحلیل نمودار:
- اینمشتری دست به ثبت، لغو و پیگیری سفارشها میزند.
- انبارانبار در ثبت و لغو سفارشها مشارکت دارد (احتمالاً بهمنظور بهروزرسانی موجودی).
- ورود در ثبت، لغو و پیگیری سفارشها گنجانده شده است، به این معنی که احراز هویت برای این اقدامات الزامی است.
- چاپ فاکتور مکمل ثبت سفارش است، به این معنی که یک گام اختیاری است که ممکن است پس از ثبت سفارش رخ دهد.
مرحله ۲: شرح مورد استفاده (مشخصات)
یک نمودار نامهای مورد استفاده را بیان میکند اما فاقد جزئیات است. جدولشرح مورد استفاده جدولقرارداد دقیق هر مورد استفاده را مشخص میکند.
مثال: UC-01 ثبت سفارش
| فیلد | مقدار |
|---|---|
| شناسه مورد استفاده | UC-01 |
| نام | ثبت سفارش |
| بازیگر اصلی | مشتری |
| بازیگر فرعی | انبار |
| پیششرطها | مشتری وارد شده است؛ سبد خرید حداقل شامل یک کالا باشد؛ کالاها موجود باشند |
| پسشرطها (موفقیت) | سفارش با وضعیتتأییدشده؛ پرداخت دریافت شد؛ شماره پیگیری صادر شد |
| شرایط پس از اجرا (شکست) | سفارش ایجاد نشد؛ سبد خرید بدون تغییر باقی ماند؛ کاربر از دلیل مطلع شد |
| روند اصلی | → به مرحله ۳ مراجعه کنید |
| روندهای جایگزین / استثنا | موجودی ناکافی؛ پرداخت رد شد |
| اولویت | بالا |
هدف:این مرحله تعریف میکند که چه چیزی باید صادق باشدقبل ازاجرای مورد استفاده (شرایط پیشنیاز) و چه چیزی باید برقرار باشدبعد از(شرایط پس از اجرا)، با تعیین معیارهای واضح موفقیت/شکست.
مرحله ۳: رویدادها (سناریوها)
این بخش قلب رفتاری رویکرد است. مورد استفاده «ثبت سفارش» به یکسناریوی متنی—ترتیبی از مراحل شمارهگذاریشده که پیش از وجود هرگونه نمودار طراحی دقیق نوشته میشود.
سناریوی اصلی موفقیت (روند پایه)
- مشتری وارد حساب میشود.
- مشتری سبد خرید را همراه با اقلام انتخابشده ارسال میکند.
- سیستم محتویات سبد خرید و موجودی انبار را اعتبارسنجی میکند.
- سیستم کل مبلغ را از طریق درگاه پرداخت دریافت میکند.
- سیستم سفارش را با وضعیت
تأییدشده. - سیستم یک تأییدیه سفارش همراه با شناسه سفارش بازگردانده است.
- سیستم انبار را برای چیدن، بستهبندی و ارسال سفارش مطلع میکند.
سناریوهای جایگزین
- 3الف. موجودی ناکافی: سیستم کالاهای ناموجود را گزارش داده و به سبد خرید بازمیگردد.
- 4الف. پرداخت رد شد: سیستم مشتری را مطلع کرده و سفارش را ایجاد نمیکند.
قانون کلیدی: هر سناریو مستقیماً به یک گام در شرح مربوط میشود. این جریانها مبنای نمودارهای فعالیت و توالی در مرحله بعدی خواهند بود.
مرحله ۴: طراحی دقیق (نمودارهای توالی و فعالیت)
در این مرحله، شما بر اساس جنبهای از سیستم که مایل به برجستهسازی آن هستید، نمادگذاری را انتخاب میکنید.
- نمودار توالی: برخطوط حیات، ترتیب پیامها و مسئولیتها بین اشیاء تأکید میکند. برای کشف کلاسها و روشها ایدهآل است.
- نمودار فعالیت: برجریان کنترل و تصمیمگیری از طریق نوارها/شرکتکنندگان تأکید میکند. برای مستندسازی فرآیندها و مسئولیتهای نقشها ایدهآل است.
4الف. نمودار توالی (دیدگاه تعامل)

@startuml
title نمودار توالی ثبت سفارش
skinparam linetype ortho
skinparam defaultFontSize 14
skinparam defaultFontColor #333333
skinparam sequenceParticipant underline
skinparam vpDiagramType InteractionDiagram
skinparam {
FontSize 14
ArrowColor #4A4A4A
ArrowFontColor #4A4A4A
BackgroundColor #FFFFFF
BorderColor #DEDEDE
FontColor #333333
Participant {
BorderColor #0077B6
BackgroundColor #F0F8FF
FontColor #005691
}
Actor {
BorderColor #6A057F
BackgroundColor #F5EEF8
FontColor #510363
}
Sequence {
ArrowThickness 2
LifeLineBorderColor #444444
LifeLineBackgroundColor #F7F7F7
BoxBorderColor #AAAAAA
BoxBackgroundColor #FFFFFF
BoxFontColor #333333
}
}
actor "مشتری" as USR
participant "سرویس سفارش" as OS
participant "درگاه پرداخت" as PG
database "پایگاه داده سفارش" as DB
activate USR
USR -> OS : submitOrder(items)
activate OS
alt اعتبارسنجی و پرداخت
OS -> OS : validateCart(items)
OS -> PG : charge(total)
activate PG
PG --> OS : paymentOk
deactivate PG
OS -> DB : saveOrder(status=confirmed)
activate DB
DB --> OS : orderId
deactivate DB
OS --> USR : orderConfirmation(orderId)
else موجودی ناکافی
OS -> DB : checkStock(items)
activate DB
DB --> OS : stockUnavailable
deactivate DB
OS --> USR : error("موجود نیست")
else پرداخت ناموفق
PG --> OS : paymentFailed
OS --> USR : error("پرداخت رد شد")
end
deactivate OS
@enduml
مفاهیم کلیدی:
- فراخوانیهای همگام: پیکانهای توپر (
->). - پاسخها: پیکانهای خطچین (
-->). - نوارهای فعالسازی:نشاندهنده عمر پردازشی یک شیء است.
altقطعه ترکیبی:سه سناریو (موفقیت، موجودی ناکافی، شکست پرداخت) را در بر میگیرد و مستقیماً جریان رویدادهای مرحله ۳ را منعکس میکند.
۴ب. نمودار فعالیت (دیدگاه فرآیند)

@startuml
<style>
element { MaximumWidth 150 }
start { Backgroundcolor #00695C }
stop { Backgroundcolor #C2185B }
activity{ Backgroundcolor #81D4FA; MaximumWidth 150 }
diamond { Backgroundcolor #FFB74D; MaximumWidth 80 }
arrow { LineColor #424242; Fontcolor #000000 }
swimlane{ Fontcolor #000000; FontSize 14 }
</style>
title نمودار فعالیت ثبت سفارش
|#F0F8FF|مشتری|
start
:ورود;
:مرور کاتالوگ;
:افزودن کالا به سبد;
if (آماده پرداخت؟) then (بله)
:ادامه به پرداخت;
else (خیر)
:بازگشت به مرور;
stop
endif
|#E8F5E9|سیستم|
:اعتبارسنجی سبد;
:پردازش پرداخت;
if (پرداخت تأیید شد؟) then (بله)
:ایجاد سفارش (وضعیت=تأیید شده);
else (خیر)
:اعلام شکست پرداخت;
endif
|#F5EEF8|انبار|
if (پرداخت تأیید شد؟) then (بله)
:انتخاب و بستهبندی کالا;
:ارسال سفارش;
:ارسال شماره رهگیری;
stop
else (خیر)
stop
endif
@enduml
مفاهیم کلیدی:
- مسیرهای شناور (Swimlanes):هر اقدام را به طرف مسئول (مشتری، سیستم، انبار) اختصاص دهید.
- گرههای تصمیمگیری:
if/then/else/endifساختارها سناریوهای انشعابی را کدگذاری میکنند. - نشانگرهای شروع/پایان:آغاز و پایان فرآیند را مشخص میکنند.
نکات کلیدی PlantUML
برای مدلسازی مؤثر این رویکرد با استفاده از PlantUML، نکات زیر را در مورد نحو (Syntax) به خاطر بسپارید:
- نمودارهای مورد استفاده (Use Case):
- از
usecaseبرای توابع استفاده کنید. - از
...>برای<<include>>روابط. - از
<...برای<<extend>>روابط. - از
rectangle "نام سیستم" {}برای تعریف مرز سیستم.
- از
- نمودارهای توالی:
- شرکتکنندگان را با استفاده از تعریف کنید
actor,participant، یاdatabase. - از
->برای فراخوانیهای همگام و-->برای پاسخها. - از
activateوdeactivateبرای نمایش عمر اشیاء. - از
alt,غیر، وپایانبرای قطعات ترکیبی که جریانهای جایگزین را نشان میدهند.
- شرکتکنندگان را با استفاده از تعریف کنید
- نمودارهای فعالیت:
- از
|#color|LaneName|برای تعریف نوارهای شنا. - از
:action;برای فعالیتها. - از
if/else/endifبرای گرههای تصمیمگیری. - از
شروعوتوقفبرای مشخص کردن مرزهای فرآیند.
- از
نتیجهگیری
رویکرد مبتنی بر مورد استفاده تنها یک تکنیک مستندسازی نیست؛ بلکه چارچوبی برای اصلاح تدریجی است. با شروع از تصویر کلی (نمودار مورد استفاده) و ورود به جزئیات رفتارهای خاص (جریان رویدادها) و تعاملات فنی (ترتیب/نمودارهای فعالیت)، تیمها میتوانند اطمینان حاصل کنند که هر خط کد به یک نیاز کاربر تأییدشده بازمیگردد.
این روش خطر سوءتفاهم بین ذینفعان و توسعهدهندگان را کاهش میدهد، تست را از طریق سناریوهای شفاف آسانتر میکند و منجر به طراحی سیستمی مستحکم و کاربرمحور میشود. چه در حال ساخت یک پلتفرم ساده تجارت الکترونیک باشید و چه یک سیستم پیچیده سازمانی، پایبندی به این پیشرفت ساختاریافته منجر به الزامات شفافتر و نرمافزار با کیفیت بالاتر خواهد شد.
This post is also available in Deutsch, English, Español, Français, English, Bahasa Indonesia and Polski.







