de_DEen_USes_ESfa_IRfr_FRhi_INid_IDpl_PL

تسلط بر رویکرد مبتنی بر مورد استفاده: راهنمای جامعی برای الزامات و طراحی

مقدمه

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

این راهنما یک مرور کامل از رویکرد مبتنی بر مورد استفادهرا ارائه می‌دهد که از الزامات سطح بالا به طراحی دقیق می‌رسد. ما از یک مثال پیوسته واحد—یک سیستم مدیریت سفارش آنلاین—برای تشریح هر مرحله استفاده خواهیم کرد تا ثبات و شفافیت را در طول فرآیند تضمین کنیم.


مرور کلی روش‌شناسی

رویکرد مبتنی بر مورد استفاده از یک پیشرفت طبیعی از بالا به پایین پیروی می‌کند. هر مرحله، مرحله قبلی را دقیق‌تر کرده و ابهام را کاهش می‌دهد.

مرور کلی روش‌شناسی: رویکرد مبتنی بر مورد استفاده با هوش مصنوعی + VPasCode

چرا این ترتیب اهمیت دارد؟

  1. نمودار مورد استفاده:یک فهرست کامل از قابلیت‌ها و دامنه را ارائه می‌دهد. اسکن آن سریع است و برای توافق ذینفعان بر روی چه چیزیسیستم انجام می‌دهد، ایده‌آل است.
  2. توضیح مورد استفاده:با تعیین دقیق پیش‌شرط‌ها، پس‌شرط‌ها، بازیگران و اولویت، ابهام را از بین می‌برد. این قرارداد رفتار را «منجمد» می‌کند.
  3. جریان رویدادها:قرارداد را به مراحل مشخص و قابل آزمایش تبدیل می‌کند. این به عنوان ماده خام هم برای موارد آزمایش و هم برای طراحی فنی عمل می‌کند.
  4. فعالیت/نمودار توالی:به عنوان پل ارتباطی با کد عمل می‌کند. این ابزار اشیاء مشارکت‌کننده، مسئولیت‌های آن‌ها، تبادل پیام‌ها و قوانین دقیق انشعاب را شناسایی می‌کند.

مرحله ۱: نمودار مورد استفاده (نیازمندی‌ها)

نمودار مورد استفاده،چه کسیبا سیستم تعامل دارد (نقش‌ها) وچه کاریآن‌ها می‌توانند انجام دهند (مورد استفاده)، به همراه روابط بین آن‌ها را ثبت می‌کند.

مفاهیم کلیدی

  • نقش اصلی:مورد استفاده را آغاز می‌کند (در سمت چپ قرار می‌گیرد).
  • نقش ثانویه:از سیستم پشتیبانی می‌کند یا اعلان‌ها را دریافت می‌کند (در سمت راست قرار می‌گیرد).
  • مرز سیستم:مستطیلی که محدوده سیستم را تعریف می‌کند.
  • <<شامل>>:رفتار اجباری مشترک را نشان می‌دهد. اگر مورد استفاده 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
نام ثبت سفارش
بازیگر اصلی مشتری
بازیگر فرعی انبار
پیش‌شرط‌ها مشتری وارد شده است؛ سبد خرید حداقل شامل یک کالا باشد؛ کالاها موجود باشند
پس‌شرط‌ها (موفقیت) سفارش با وضعیتتأییدشده؛ پرداخت دریافت شد؛ شماره پیگیری صادر شد
شرایط پس از اجرا (شکست) سفارش ایجاد نشد؛ سبد خرید بدون تغییر باقی ماند؛ کاربر از دلیل مطلع شد
روند اصلی → به مرحله ۳ مراجعه کنید
روندهای جایگزین / استثنا موجودی ناکافی؛ پرداخت رد شد
اولویت بالا

هدف:این مرحله تعریف می‌کند که چه چیزی باید صادق باشدقبل ازاجرای مورد استفاده (شرایط پیش‌نیاز) و چه چیزی باید برقرار باشدبعد از(شرایط پس از اجرا)، با تعیین معیارهای واضح موفقیت/شکست.


مرحله ۳: رویدادها (سناریوها)

این بخش قلب رفتاری رویکرد است. مورد استفاده «ثبت سفارش» به یکسناریوی متنی—ترتیبی از مراحل شماره‌گذاری‌شده که پیش از وجود هرگونه نمودار طراحی دقیق نوشته می‌شود.

سناریوی اصلی موفقیت (روند پایه)

  1. مشتری وارد حساب می‌شود.
  2. مشتری سبد خرید را همراه با اقلام انتخاب‌شده ارسال می‌کند.
  3. سیستم محتویات سبد خرید و موجودی انبار را اعتبارسنجی می‌کند.
  4. سیستم کل مبلغ را از طریق درگاه پرداخت دریافت می‌کند.
  5. سیستم سفارش را با وضعیتتأییدشده.
  6. سیستم یک تأییدیه سفارش همراه با شناسه سفارش بازگردانده است.
  7. سیستم انبار را برای چیدن، بسته‌بندی و ارسال سفارش مطلع می‌کند.

سناریوهای جایگزین

  • 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قطعه ترکیبی:سه سناریو (موفقیت، موجودی ناکافی، شکست پرداخت) را در بر می‌گیرد و مستقیماً جریان رویدادهای مرحله ۳ را منعکس می‌کند.

۴ب. نمودار فعالیت (دیدگاه فرآیند)

رابط VPasCode که نمودار فعالیت ثبت سفارش را با نوارهای شناور (swimlanes) برای مشتری، سیستم و انبار نمایش می‌دهد.

@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) به خاطر بسپارید:

  1. نمودارهای مورد استفاده (Use Case):
    • از usecase برای توابع استفاده کنید.
    • از ...> برای <<include>> روابط.
    • از <... برای <<extend>> روابط.
    • از rectangle "نام سیستم" {} برای تعریف مرز سیستم.
  2. نمودارهای توالی:
    • شرکت‌کنندگان را با استفاده از تعریف کنید actor, participant، یا database.
    • از -> برای فراخوانی‌های همگام و --> برای پاسخ‌ها.
    • از activate و deactivate برای نمایش عمر اشیاء.
    • از alt, غیر، و پایان برای قطعات ترکیبی که جریان‌های جایگزین را نشان می‌دهند.
  3. نمودارهای فعالیت:
    • از |#color|LaneName| برای تعریف نوارهای شنا.
    • از :action; برای فعالیت‌ها.
    • از if/else/endif برای گره‌های تصمیم‌گیری.
    • از شروع و توقف برای مشخص کردن مرزهای فرآیند.

نتیجه‌گیری

رویکرد مبتنی بر مورد استفاده تنها یک تکنیک مستندسازی نیست؛ بلکه چارچوبی برای اصلاح تدریجی است. با شروع از تصویر کلی (نمودار مورد استفاده) و ورود به جزئیات رفتارهای خاص (جریان رویدادها) و تعاملات فنی (ترتیب/نمودارهای فعالیت)، تیم‌ها می‌توانند اطمینان حاصل کنند که هر خط کد به یک نیاز کاربر تأییدشده بازمی‌گردد.

این روش خطر سوءتفاهم بین ذینفعان و توسعه‌دهندگان را کاهش می‌دهد، تست را از طریق سناریوهای شفاف آسان‌تر می‌کند و منجر به طراحی سیستمی مستحکم و کاربرمحور می‌شود. چه در حال ساخت یک پلتفرم ساده تجارت الکترونیک باشید و چه یک سیستم پیچیده سازمانی، پایبندی به این پیشرفت ساختاریافته منجر به الزامات شفاف‌تر و نرم‌افزار با کیفیت بالاتر خواهد شد.

This post is also available in Deutsch, English, Español, Français, English, Bahasa Indonesia and Polski.