State Machine Diagram

📘 الفصل السابع: State Machine Diagram

مخطط آلة الحالات – SDLC


1️⃣ ما هو State Machine Diagram؟

مخطط State Machine Diagram هو مخطط يُستخدم لتمثيل حياة كائن (Object) داخل النظام، من لحظة إنشائه وحتى انتهاء استخدامه، من خلال:

  • الحالات (States) التي يمر بها
  • والانتقالات (Transitions) بين هذه الحالات

📌 الفكرة الأساسية:

الكائن لا يبقى دائمًا بنفس الحالة، بل ينتقل بين حالات مختلفة حسب الأحداث التي يتعرض لها.


2️⃣ المفاهيم الأساسية (Core Concepts)

 State (الحالة)

هي وضع أو حالة يكون فيها الكائن خلال فترة معينة من حياته، مثل:

  • New
  • Active
  • Waiting
  • Completed
  • Cancelled

👉 الحالة تمثل:

  • شرط معين
  • أو تنفيذ فعل
  • أو انتظار حدث


🔹 Transition (الانتقال)

هو التحرك من حالة إلى حالة أخرى نتيجة:

  • حدث (Event)
  • شرط (Condition)
  • أو تنفيذ عملية

مثال:

Order ينتقل من Pending إلى Confirmed


🔹 Origin State

هي الحالة الأصلية قبل أن يبدأ أي انتقال.


🔹 Destination State

هي الحالة التي يصل إليها الكائن بعد تنفيذ الانتقال.


🔹 Pseudo State (الحالة الوهمية)

  • تمثل نقطة البداية
  • تُرسم على شكل دائرة سوداء
  • لا تمثل حالة فعلية، بل بداية دورة الحياة


3️⃣ مكونات الانتقال (Transition Syntax)

يُكتب الانتقال بالصيغة التالية:

transition-name (parameters) [guard-condition] / action-expression

شرحها:

  • transition-name: اسم الحدث
  • parameters: معاملات (إن وُجدت)
  • [guard-condition]: شرط منطقي (True / False)
  • / action-expression: الإجراء الذي يُنفَّذ

📌 الانتقال لا يحدث إلا إذا كان الشرط صحيحًا.


4️⃣ Concurrency (التزامن في الحالات)

 Concurrent States

يعني أن الكائن يمكن أن يكون:

  • في أكثر من حالة في نفس الوقت

مثال:

Printer يطبع + يتلقى أوامر


 Path

مسار متسلسل من حالات وانتقالات.


 Concurrent Paths

عدة مسارات تعمل بالتوازي.

 تُستخدم Synchronization Bars (مثل Activity Diagram) لتمثيل التزامن.

  • Multiple exits من State → OR
  • Multiple exits من Synchronization bar → AND


5️⃣ خطوات إنشاء State Machine Diagram

الخطوة 1️⃣

مراجعة Class Diagram واختيار الكلاسات التي تحتاج تتبع حالات.


الخطوة 2️⃣

تحديد جميع الحالات الممكنة للكائن.


الخطوة 3️⃣

تحديد الانتقالات التي تخرج الكائن من كل حالة.


الخطوة 4️⃣

ترتيب الحالات بالترتيب الصحيح زمنيًا.


الخطوة 5️⃣

البحث عن:

  • مسارات متزامنة
  • حالات مستقلة


الخطوة 6️⃣

إضافة:

  • الأحداث
  • الشروط (Guards)
  • الإجراءات (Actions)


الخطوة 7️⃣

مراجعة المخطط والتأكد من:

  • تغطية كل الحالات
  • معالجة الحالات الاستثنائية
  • وجود بداية ونهاية واضحة


6️⃣ مثال تطبيقي: SaleItem

لماذا SaleItem؟

لأن له حالات يجب تتبعها مثل:

  • Created
  • Reserved
  • Sold
  • Cancelled

ما نفعله؟

  • نحدد الحالات
  • نحدد متى ينتقل من حالة لأخرى
  • نرسم المخطط


7️⃣ مثال تطبيقي: InventoryItem

حالات محتملة:

  • In Stock
  • Reserved
  • Sold
  • Returned
  • Out of Stock

الخطوات:

  1. اختيار InventoryItem
  2. بناء أجزاء (Fragments)
  3. ترتيبها
  4. البحث عن التزامن
  5. إضافة الشروط والأفعال
  6. مراجعة المخطط النهائي


8️⃣ لماذا State Machine Diagram مهم؟

✅ الفوائد:

  • يوضح سلوك النظام بوضوح

  • يقلل الأخطاء المنطقية

  • يساعد في:

    • التحليل

    • التصميم

    • الاختبار

  • مهم جدًا في:

    • الأنظمة المالية

    • أنظمة الطلبات

    • الأنظمة الحساسة للحالة


9️⃣ الفرق بينه وبين Activity Diagram

State MachineActivity Diagram
يركز على حالة الكائنيركز على سير العمل
يهتم بسلوك Objectيهتم بالعملية
مرتبط بـ Classمرتبط بـ Use Case

🧠 الخلاصة التعليمية

State Machine Diagram يشرح كيف يتغير وضع الكائن بمرور الوقت،
وهو أداة أساسية لفهم سلوك النظام وليس فقط وظائفه.

Comments