آموزش کاربردی UML - قسمت سوم(sequence diagrams)

زبان مدل سازی یکپارچه
زبان مدل سازی یکپارچه

ادامه از قسمت دوم آموزش کاربردی UML - قسمت دوم (use case diagrams)

نمودار sequence

نمودار توالی یک نمودار زبان مدلسازی یکپارچه (UML) است که تعاملات بین اشیاء در یک سیستم را به ترتیب متوالی نشان می دهد. این یک نوع نمودار از انواع نمودار های تعامل است و به آن نمودار توالی UML نیز گفته می شود.

سلسله مراتب نمودار UML
سلسله مراتب نمودار UML


می‌توانید از یک نمودار توالی سیستم برای ترسیم سفر مشتری از طریق فروشگاه تجارت الکترونیک یا برای دریافت یک نمای کلی در سطح بالا از عملکردهای خاص کسب و کار مدنظر خود استفاده کنید.

در سناریوی اول، مشتری «بازیگر» یا موجودیت خارجی است که با عناصر نمودار تعامل دارد. نمودار مثال دوم لزوماً نیازی به داشتن «بازیگر» ندارد.

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

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


مزایای نمودار توالی

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

نمودار توالی چگونه کار می کند

بیایید بعنوان مثال از سیستم سفارش رستوران یک فست فود استفاده کنیم تا بفهمیم نمودار توالی چگونه کار می کند.
هنگامی که مشتریان می خواهد سفارشی را ثبت کنند، تعاملات زیر در طول این توالی انجام می شود:

  • به صندوق فروش می روند و سفارش می دهند.
  • صندوقدار سفارش را تایید می کند و جزئیات سفارش را به آشپزخانه می دهد.
  • کارکنان آشپزخانه غذا را آماده کرده و به پیشخوان تحویل می دهند.
  • صندوقدار سفارش را به مشتری تحویل می دهد.


در این سناریو سه بازیگر وجود دارد : مشتری، صندوقدار و آشپزخانه . آنها پیام ها را به این سو و آن سو ارسال می کنند.

اعمالی که در طول این توالی صورت می گیرد پیام ها هستند. مانند «ثبت سفارش»، «تأیید سفارش»، «جزئیات سفارش برای آماده‌سازی» و «تحویل سفارش».


نمودارهای توالی در یک نگاه

نمودارهای توالی ای عناصر را همانطور که در طول زمان برهم کنش دارند نشان می دهند و بر اساس اشیاء (افقی) و زمان (عمودی) سازماندهی می شوند:

محور اشیاء
محور افقی عناصری را نشان می دهد که در تعامل نقش دارند
به طور معمول، اشیاء درگیر در عملیات از چپ به راست بر اساس زمانی که در توالی پیام شرکت می کنند فهرست می شوند. با این حال، عناصر در محور افقی ممکن است به هر ترتیب ظاهر شوند.

محور زمان
محور عمودی نشان دهنده روندهای زمانی (یا پیشرفت) در پایین صفحه است.

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

تصویری کلی از نمودار توالی: سیستم هتل

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

در زیر نمودار توالی برای رزرو هتل آورده شده است.

نمودارهای تعامل پویا هستند. آنها نحوه همکاری اشیاء را توصیف می کنند.


نماد ها در نمودار توالی

Actor
Actor
  • یک نوع نقش که توسط یک موجودیت ایفا می شود که با موضوع تعامل دارد (مثلاً با تبادل پیام ها و داده ها)
  • نشان دهنده نقش هایی است که توسط کاربران انسانی، سخت افزار خارجی یا سایر موضوعات ایفا می شود.
    توجه داشته باشید که:
    یک بازیگر لزوماً نشان دهنده یک موجود فیزیکی خاص نیست، بلکه صرفاً یک نقش خاص از یک موجودیت است.
    یک شخص ممکن است نقش چندین بازیگر مختلف را بازی کند و برعکس، یک بازیگر معین ممکن است توسط چندین فرد مختلف ایفا شود.
Lifeline
Lifeline

یک LifeLine نشان دهنده یک شرکت کننده فردی در تعامل است.

Activations
Activations

نشان دهنده دوره ای است که در طی آن یک عنصر، عملیاتی را انجام می دهد.
قسمت بالایی و پایینی مستطیل به ترتیب با زمان شروع و تکمیل مطابقت دارند.

Call Message
Call Message

یک پیام یک ارتباط خاص را بین Lifelines از یک تعامل را تعریف می کند.
Call Message نوعی پیام است که نشان دهنده فراخوانی عملیات LifeLine هدف است.

Return Message
Return Message

یک پیام یک ارتباط خاص را بین Lifelines از یک تعامل تعریف می کند.
Return Message نوعی پیام است که نشان دهنده مقدار بازگشتی از یک عملیات است.

Self Message
Self Message

یک پیام یک ارتباط خاص را بین Lifelines از یک تعامل تعریف می کند.
Self Message نوعی پیام است که نشان دهنده فراخوانی پیام همان LifeLine است.

Recursive Message
Recursive Message

یک پیام یک ارتباط خاص را بین Lifelines از یک تعامل تعریف می کند.
پیام بازگشتی نوعی پیام است که نشان دهنده فراخوانی پیام از همان LifeLine است.


اما تفاوت Self Message , Recursive Message چیست ؟

هنگامی که در حال فراخوانی توابعی در کلاس هستید که هیچ پیامی ارسال نمی‌کنند (یا می‌فرستند، اما شما نمی‌خواهید آن را در توالی نشان دهید، باید از یک Self Message استفاده کنید).

اما اگر می‌خواهید نحوه تعامل توابع داخلی کلاس با LifeLine دیگر را مدل کنید، باید از Recursive Message برای نشان دادن این موضوع استفاده کنید.

Create Message
Create Message

یک پیام یک ارتباط خاص را بین Lifelines از یک تعامل تعریف می کند.
Create message نوعی پیام است که نشان دهنده نمونه سازی lifeline (هدف) است.

Destroy Message
Destroy Message

یک پیام یک ارتباط خاص را بین Lifelines of an Interaction تعریف می کند.
Destroy Message نوعی پیام است که بیانگر درخواست از بین بردن چرخه حیات lifeline هدف است.

Duration Message
Duration Message

یک پیام یک ارتباط خاص را بین Lifelines of an Interaction تعریف می کند.
Duration Message فاصله زمان بین دو لحظه زمانی برای فراخوانی پیام را نشان می دهد.

Note
Note

یک یادداشت توانایی الصاق اظهارات مختلف را به عناصر می دهد. یادداشت صرفا ممکن است حاوی اطلاعاتی باشد که برای یک مدلساز مفید باشد.

Message and Focus of Control


یک رویداد(Event) هر نقطه ای از تعامل است که در آن چیزی اتفاق می افتد.
Focus of control که به آن رخداد اجرا نیز می گویند، تصویر بالا یک رخداد اجرا به صورت مستطیل بلند و نازک روی LifeLine نشان می دهد
تصویر بالا دوره ای را نشان می دهد که در طی آن یک عنصر، عملیاتی را انجام می دهد. بالا و پایین مستطیل به ترتیب با زمان شروع و تکمیل مطابقت دارند.

قطعات توالی(Sequence Fragments)

قطعات توالی ایجاد و نگهداری نمودارهای توالی را دقیق تر و آسان تر می کند
یک قطعه توالی به عنوان یک جعبه نشان داده می شود که قطعه ترکیبی نامیده می شود، که بخشی از تعاملات درون نمودار توالی را در بر می گیرد.
عملگر قطعه (در گوشه بالا سمت چپ) نوع قطعه را نشان می دهد
انواع قطعه: ref، assert، loop، break، alt، opt، neg

Sequence Fragment
Sequence Fragment

اپراتور alt(Alternative multiple fragments) : فقط موردی که شرطش درست است اجرا می شود.

اپراتور opt(Optional) : قطعه فقط در صورتی اجرا می شود که شرط ارائه شده درست باشد. معادل یک alt فقط با یک ردیابی.

اپراتور par(Parallel) : هر قطعه به صورت موازی اجرا می شود.

اپراتور loop(Loop) : قطعه ممکن است چندین بار اجرا شود.guard اساس تکرار را نشان می دهد.(برای درک guard به تصویر پایین مراجعه کنید)

اپراتور region(Critical region) : قطعه می تواند تنها یک thread داشته باشد که آن را به طور همزمان اجرا می کند.

اپراتور neg(Negative) : قطعه یک تعامل نامعتبر را نشان می دهد.

اپراتور ref(Reference) : به یک تعامل تعریف شده در نمودار دیگر اشاره دارد. قاب برای پوشش LifeLine های درگیر در تعامل ترسیم شده است. شما می توانید پارامترها و مقدار بازگشتی را تعریف کنید.

اپراتور sd (Sequence diagram) : برای احاطه کردن یک نمودار توالی کامل استفاده می شود.


نمونه نمودار با قطعات ترکیبی

Combined Fragment Example
Combined Fragment Example


نمودار توالی برای مدلسازی سناریوهای use case

یک سناریو یک مسیر یا جریان از طریق یک use case است که توالی ای از رویدادها را توصیف می کند که در طول یک اجرای یک سیستم رخ می دهد که اغلب با یک نمودار توالی نشان داده می شود.

Sequence Diagram for Modeling Use Case Scenarios
Sequence Diagram for Modeling Use Case Scenarios


نحوه رسم نمودار توالی

نمودار توالی سناریو یا جریان رویدادها را در یک use case نشان می دهد. جریان پیام نمودار توالی بر اساس روایت use case خاص است.
سپس، قبل از اینکه ترسیم نمودار توالی را شروع کنید یا تصمیم بگیرید که چه فعل و انفعالی باید در آن گنجانده شود، باید نمودار use case را ترسیم کنید و توضیح جامعی از آنچه آن use case خاص انجام می دهد را آماده کنید.

از مثال use case بالا «Create New Online Library Account»، ما بر روی use case به نام «Create New User Account» تمرکز خواهیم کرد تا نمونه نمودار توالی خود را ترسیم کنیم.

قبل از ترسیم نمودار توالی، لازم است اشیاء یا بازیگرانی را که در ایجاد یک حساب کاربری جدید دخیل هستند، شناسایی کنید. اینها خواهند بود :

  • کتابدار
  • سیستم مدیریت کتابخانه آنلاین
  • پایگاه داده اطلاعات کاربری
  • سیستم ایمیل


هنگامی که اشیاء را شناسایی کردید، مهم است که شرح مفصلی در مورد آنچه use case انجام می دهد بنویسید. از این توضیحات، می توانید به راحتی فعل و انفعالات (که باید در نمودار توالی ای وجود داشته باشد) را که بین اشیاء بالا رخ می دهد، کشف کنید.

در اینجا مراحلی وجود دارد که در use case به نام "Create New Online Library Account" رخ می دهد.

  • کتابدار از سیستم درخواست می کند که یک حساب کتابخانه آنلاین جدید ایجاد کند
  • سپس کتابدار نوع حساب کاربری کتابخانه را انتخاب می کند
  • کتابدار مشخصات کاربر را وارد می کند
  • جزئیات کاربر با استفاده از پایگاه داده اعتبار کاربر بررسی می شود
  • حساب کاربری جدید کتابخانه ایجاد شد
  • سپس خلاصه ای از جزئیات حساب جدید برای کاربر ایمیل می شود


از هر یک از این مراحل، می توانید به راحتی مشخص کنید که چه پیام هایی باید بین اشیاء در نمودار توالی رد و بدل شود. پس از روشن شدن، می توانید ادامه دهید و شروع به ترسیم نمودار توالی کنید.

نمودار توالی زیر نشان می دهد که چگونه اشیاء موجود در سیستم مدیریت کتابخانه آنلاین با یکدیگر تعامل می کنند تا عملکرد «Create New Online Library Account» را انجام دهند.

اشتباهات رایج در ترسیم نمودار توالی


هنگام ترسیم نمودارهای توالی، طراحان این اشتباهات رایج را مرتکب می شوند. با اجتناب از این اشتباهات می توانید از کیفیت نمودار خود اطمینان حاصل کنید.

  • اضافه کردن جزئیات بیش از حد این کار نمودار را به هم می ریزد و خواندن آن را دشوار می کند.
  • نمودارهای توالی منسوخ و قدیمی که در مقایسه با Interface ها، معماری های واقعی و غیره سیستم بی ربط هستند. فراموش نکنید که آنها را جایگزین یا تغییر دهید.
  • عدم ایجاد فضای خالی بین متن مورد استفاده و پیکان پیام؛ این کار خواندن نمودار را برای هر کسی دشوار می کند.
  • منشا فلش های پیام را با دقت در نظر نمی گیریم.

این اشتباهات رایج را که به تفصیل در راهنمای نمودار توالی توضیح داده شده است ببینید: اشتباهات رایجی که هنگام ترسیم نمودارهای توالی باید از آنها اجتناب کنید.


مثال هایی از نمودار توالی

ATM Time Constraint
ATM Time Constraint

در این سناریو، سیستم کارت را رد می کند.مشتری کارت را وارد می کند و کارت رد می شود. برای سیستم، چندین عمل ضروری است. یک محدودیت 10 ثانیه را به عنوان حداکثر فاصله زمانی قابل قبول برای تراکنش مشخص می کند.

Appointment
Appointment

این مثال نمودار توالی، اشیاء و پیام‌ها را برای سناریویی از use case از Make Appointment نشان می‌دهد، که فرآیندی را توصیف می‌کند که طی آن یک مشتری یک قرار جدید ایجاد می‌کند یا یک قرار ملاقات را برای سیستم قرار مطب پزشک لغو یا برنامه‌ریزی می‌کند.

Time Constraints (Hospital Bed Allocation)
Time Constraints (Hospital Bed Allocation)


این یک مثال نمودار توالی است که به شما نشان می دهد چگونه می تواند با اطلاعات زمان بندی برخورد کند.

محدودیت ها: معمولاً برای نشان دادن محدودیت های زمانی در پیام ها استفاده می شود. آنها می توانند برای زمان بندی یک پیام یا فواصل بین پیام ها اعمال شوند.
مدت زمان: مدت زمان فعال‌سازی یا زمان بین پیام‌ها را می‌توان با علائم Create نشان داد.


قسمت اول : آموزش کاربردی UML برای توسعه دهندگان نرم افزار

قسمت دوم آموزش کاربردی UML - قسمت دوم (use case diagrams)

بیشتر بخوانید : نقشه راه توسعه دهندگان Asp.NET Core


https://zarinp.al/farshidazizi