📘 الفصل السابع: 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]: شرط منطقي (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
الخطوات:
- اختيار InventoryItem
- بناء أجزاء (Fragments)
- ترتيبها
- البحث عن التزامن
- إضافة الشروط والأفعال
- مراجعة المخطط النهائي
8️⃣ لماذا State Machine Diagram مهم؟
✅ الفوائد:
-
يوضح سلوك النظام بوضوح
-
يقلل الأخطاء المنطقية
-
يساعد في:
-
التحليل
-
التصميم
-
الاختبار
-
-
مهم جدًا في:
-
الأنظمة المالية
-
أنظمة الطلبات
-
الأنظمة الحساسة للحالة
-
9️⃣ الفرق بينه وبين Activity Diagram
| State Machine | Activity Diagram |
|---|---|
| يركز على حالة الكائن | يركز على سير العمل |
| يهتم بسلوك Object | يهتم بالعملية |
| مرتبط بـ Class | مرتبط بـ Use Case |
🧠 الخلاصة التعليمية
State Machine Diagram يشرح كيف يتغير وضع الكائن بمرور الوقت،
وهو أداة أساسية لفهم سلوك النظام وليس فقط وظائفه.