صفحهٔ منبع 165Combined Fragment
Combined Fragment یک یا چند جنبه از Interaction ــ که Interaction Operand نام دارند ــ را نمایش میدهد که تحت کنترل Interaction Operator و Boolean Conditionهای متناظر، یعنی Interaction Constraintها، هستند. Fragment بهصورت Window شفاف نمایش داده میشود و برای هر Operand با خط افقی تقسیم میشود.
Sequence Diagram نمونه، Combined Fragmentها را در مدلسازی یک فرایند خرید ساده نشان میدهد. Loop Fragment تکرار روی تعداد نامعلومی Item خرید را نشان میدهد و پس از آن Cashier درخواست Payment میکند. Alternative Fragment گزینههای Payment را نمایش میدهد و به دو Operand برای Cash و Credit Card تقسیم شده است. پس از پایان Trace، در صورت برقرار بودن شرط پرداخت، Cashier Receipt را به Customer میدهد.
ترتیب Conditionهای Interaction Fragment را میتوان روی Diagram تغییر داد:
- Interaction Fragmentای با بیش از یک Condition را انتخاب کنید؛ فلشهای بالا و پایین کنار هر Condition ظاهر میشوند.
- فلش مناسب را برای تغییر ترتیب کلیک کنید.
عنصر تصویری اصلی — صفحه 165عنصر تصویری اصلی — صفحه 165© Sparx Systems 2026 — صفحهٔ 165 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 166انتخاب و جابهجایی Combined Fragment
برای انتخاب Combined Fragment باید نزدیک لبهٔ داخلی آن کلیک کنید یا Selection Rectangle دور Fragment بکشید؛ این طراحی برای جلوگیری از انتخاب تصادفی هنگام جابهجایی Messageهای داخل Fragment است.
Messageهایی که داخل Fragment یا Fragment Operand قرار دارند هنگام جابهجایی بالا و پایین همچنان در همان Container میمانند. برای خارجکردن Message از Fragment یا انتقال آن به موقعیت دیگری در Sequence داخل Fragment، Alt را نگه دارید و Message را Drag کنید. Fragment روی Sequence Diagram با جابهجایی Message داخلی Resize میشود تا Message را در خود نگه دارد.
وقتی Interaction Fragment انتخاب میشود، یکی از دو Element Icon در گوشهٔ بالا-راست ظاهر میشود که آزادی جابهجایی Fragment و Messageهای درون و زیر آن را کنترل میکند. برای حرکت مستقل Fragment، حالت «move freely» را فعال کنید. Interaction Fragment درون Operand نمیتواند از Operand خارج شود مگر در حالت move freely. جابهجایی Operand Line، Objectها و Messageهای زیر آن را به همان میزان جابهجا میکند. Fragmentهای شامل Fragment دیگر هنگام Resize شدن Child Fragment خود نیز Resize میشوند، مگر در حالت move freely.
Fill Opacity
از آنجا که Interaction Fragment معمولاً عناصر دیگری را میپوشاند، میتوانید Opacity عنصر را تغییر دهید تا عناصر پشت آن کاملاً مخفی، کامل نمایان یا با سایهٔ نسبی دیده شوند.
عنصر تصویری اصلی — صفحه 166عنصر تصویری اصلی — صفحه 166عنصر تصویری اصلی — صفحه 166عنصر تصویری اصلی — صفحه 166عنصر تصویری اصلی — صفحه 166© Sparx Systems 2026 — صفحهٔ 166 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 167پیش از تنظیم Opacity مطمئن شوید عنصر Fill Color دارد. از Toolbar شناور عنصر ــ با کلیک روی Fragment یا راستکلیک روی آن ــ آیکون Opacity را انتخاب کنید:
- 100%: Opacity کامل؛ عناصر پشت Fragment مخفی میشوند. برای نمایش یک عنصر خاص میتوان Z-Order | Bring to Top را روی آن اعمال کرد.
- 0%: بدون Opacity؛ Fill Color اعمال نمیشود و همهٔ عناصر پشت Fragment کاملاً دیده میشوند.
- 75%، 50% یا 25%: درجات میانی Opacity؛ عناصر پوشیده دیده میشوند اما زیر سایه قرار میگیرند.
مشخصات OMG UML
طبق UML 2.5.1 صفحهٔ 607، CombinedFragment یک Expression از InteractionFragmentها تعریف میکند و توسط Interaction Operator و InteractionOperandهای متناظر مشخص میشود. با CombinedFragmentها میتوان تعداد زیادی Trace را بهشکل فشرده و موجز توصیف کرد.
عنصر تصویری اصلی — صفحه 167عنصر تصویری اصلی — صفحه 167عنصر تصویری اصلی — صفحه 167عنصر تصویری اصلی — صفحه 167عنصر تصویری اصلی — صفحه 167© Sparx Systems 2026 — صفحهٔ 167 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 168ایجاد Combined Fragment
- آیکون «Fragment» را از صفحهٔ «Interaction Elements» در Diagram Toolbox روی Diagram بکشید.
- در فیلد «Type» فهرست را باز و یکی از Interaction Operatorها را انتخاب کنید.
- در فیلد «Condition» برای هر Operand یک Condition یا Interaction Constraint مشخص کنید.
- Frame مستطیلی نمایش داده میشود که با Lineهایی به Segmentهای مربوط به Operandها تقسیم شده است.
- Frame را Resize کنید تا Event Occurrenceهای لازم هر Operand را در بر بگیرد.
یادداشتها
- اگر Message به داخل Fragment یا Fragment Operand منتقل شود، همیشه در آن Container قرار میگیرد.
- Fragmentهای Sequence Diagram هنگام انتقال Message به پایین Resize میشوند تا Messageهای واردشده همچنان در Fragment باقی بمانند.
© Sparx Systems 2026 — صفحهٔ 168 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 169Interaction Operatorها
هنگام ساخت Combined Fragment باید Interaction Operator مناسب برای Characterize کردن Fragment انتخاب شود.
| Operator | عمل |
|---|
| alt | Interaction Fragmentها را بر اساس Boolean Condition تقسیم میکند. |
| opt | یک Fragment اختیاری Interaction را در بر میگیرد. |
| par | نشان میدهد Operandها موازی اجرا میشوند. |
| loop | نشان میدهد Operand طبق Interaction Constraint تعداد مشخصی تکرار میشود. |
| critical | Sequenceای را مشخص میکند که نباید توسط Processing دیگر Interrupt شود. |
| neg | Fragment را نامعتبر اعلام میکند و ضمنی سایر Interactionها را معتبر میداند. |
| assert | تنها Fragment معتبر قابل وقوع را مشخص میکند؛ اغلب داخل consider یا ignore استفاده میشود. |
| strict | Behaviorهای Operandها باید به ترتیب سخت اجرا شوند. |
| seq | Combined Fragment بهصورت Weakly Sequenced است؛ Ordering داخل Operand حفظ میشود ولی Ordering میان Operandها، جز در موارد الزام Lifeline، تعریف نشده است. |
| ignore | Messageهایی را مشخص میکند که هنگام Execution نادیده گرفته میشوند یا میتوانند هرجای Trace ظاهر شوند. |
| consider | Messageهایی را مشخص میکند که در Trace باید در نظر گرفته شوند؛ اغلب همراه assert استفاده میشود. |
| ref | Reference به Diagram دیگر؛ برای ایجاد آن یک Diagram موجود را از Browser روی Diagram جاری Drag کنید. |
مشخصات OMG UML
طبق UML 2.5.1 صفحات 583–585، Value مربوط به interactionOperator برای Semantics CombinedFragment اهمیت دارد و برای هر Enumeration Value تعریف میشود.
© Sparx Systems 2026 — صفحهٔ 169 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 170Alternative
Operator alt نشان میدهد CombinedFragment یک انتخاب Behavior است و حداکثر یک Operand انتخاب میشود. Operand انتخابی باید Guard صریح یا ضمنی True داشته باشد؛ نبود Guard بهمعنای Guard ضمنی True است. مجموعهٔ Traceهای Choice اجتماع Traceهای Guardدار Operandها است. Operand با Guard else نقیض Disjunction همهٔ Guardهای دیگر است. اگر هیچ Guardای True نباشد، هیچ Operand اجرا نمیشود و باقی Enclosing InteractionFragment ادامه مییابد. اگر Inner Gate در یکی از Operandهای alt استفاده شود، Gate همنام باید در همهٔ Operandها وجود داشته باشد.
Option
opt Choiceای است که یا Operand منفرد رخ میدهد یا هیچچیز؛ از نظر Semantics معادل alt با یک Operand غیرخالی و یک Operand خالی است.
Break
break سناریویی را نشان میدهد که بهجای ادامهٔ Enclosing InteractionFragment اجرا میشود. اگر Guard True باشد Operand Break اجرا و باقی Fragment نادیده گرفته میشود؛ اگر False باشد Break نادیده گرفته و ادامه انتخاب میشود. بدون Guard انتخاب Non-deterministic است. Break CombinedFragment باید همهٔ Lifelineهای Enclosing Fragment را پوشش دهد.
Parallel
par Parallel Merge رفتار Operandها را نشان میدهد. OccurrenceSpecificationهای Operandهای مختلف میتوانند با هر Interleaving ظاهر شوند، به شرط حفظ Ordering داخل هر Operand.
Weak Sequencing
seq Weak Sequencing را تعریف میکند: ۱) Ordering داخل هر Operand حفظ میشود؛ ۲) OccurrenceSpecificationهای Lifelineهای متفاوت میتوانند هر ترتیب داشته باشند؛ ۳) روی یک Lifeline، OccurrenceSpecification Operand اول قبل از Operand دوم قرار میگیرد. اگر Participantها جدا باشند به Parallel Merge و اگر فقط یک Participant باشد به Strict Sequencing تبدیل میشود.
Strict Sequencing
strict Ordering سخت Operandها را در سطح اول CombinedFragment تعریف میکند؛ OccurrenceSpecificationهای Fragmentهای تو در تو مستقیماً با OccurrenceSpecificationهای Enclosing Fragment مقایسه نمیشوند.
Negative
neg Traceهای Operand منفرد را نامعتبر تعریف میکند؛ سایر InteractionFragmentها مثبت و معرف Traceهای معتبرند.
Critical Region
critical یک Critical Region تعریف میکند.
© Sparx Systems 2026 — صفحهٔ 170 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 171Critical Region یعنی Traceهای Region نمیتوانند با OccurrenceSpecificationهای دیگر روی Lifelineهای پوششدادهشده Interleave شوند. Region برای تعیین Traceهای معتبر توسط Enclosing Fragment بهصورت Atomic رفتار میکند؛ حتی اگر CombinedFragment بیرونی مانند par Interleaving را مجاز بداند، Critical Region آن را محدود میکند.
Ignore / Consider
ignore مشخص میکند برخی Message Typeها در Combined Fragment نمایش داده نشدهاند و در Execution متناظر بیاهمیت بوده و نادیده گرفته میشوند؛ یا میتوانند هرجای Trace ظاهر شوند. consider برعکس، Messageهایی را که باید در Combined Fragment لحاظ شوند مشخص میکند و معادل Ignore کردن همهٔ Messageهای دیگر است.
Assertion
assert یک Assertion است؛ Sequenceهای Operand تنها Continuationهای معتبر هستند و سایر Continuationها Trace نامعتبر میسازند. Assertion اغلب با Ignore یا Consider ترکیب میشود.
Loop
loop یک Loop را مشخص میکند. Operand بین تعداد حداقل و حداکثر تکرار میشود. Guard میتواند Lower/Upper Iteration Count و Boolean Expression داشته باشد. Loop دستکم minint بار و حداکثر maxint بار اجرا میشود؛ پس از حداقل تکرار، اگر Boolean Expression False شود Loop پایان مییابد. Loop کاربرد بازگشتی Operator seq است که هر Iteration را پس از نتیجهٔ Iterationهای قبلی Sequence میکند. اگر Loop یک InteractionConstraint مستقل با Specification داشته باشد، ادامهٔ Loop منوط به True بودن آن Specification در Execution است، بدون توجه به Minimum Iteration تعیینشده.
© Sparx Systems 2026 — صفحهٔ 171 از ۴۲۲ — ایجادشده با Enterprise Architect