مستوى DFD الثاني والموازنة
مستوى DFD الثاني والموازنة
يُفصّل مخطط تدفق البيانات من المستوى الأول العمليات الرئيسية للنظام، غير أن المحللين يكتشفون أحياناً أن بعض هذه العمليات لا تزال معقدة للغاية لتحديدها مباشرةً. يحلّ تحليل المستوى الثاني هذه المشكلة بتوسيع فقاعة واحدة من المستوى الأول إلى مخطط مستقل يكشف المنطق الداخلي لتلك العملية بالتفصيل. وبما أن كل توسعة تُضيف تدفقات ومخازن جديدة، يضمن مبدأ يُسمى الموازنة تناسق كل مستوى مع المستوى الذي يعلوه.
متى يجب التعمق أكثر؟
لا تحتاج كل عملية في المستوى الأول إلى مخطط من المستوى الثاني. القاعدة العملية: إن كانت العملية لا يمكن وصفها بوضوح في بطاقة فهرسة واحدة، أو إن كانت تشمل أكثر من وظيفة منطقية مستقلة، فيجب تحليلها. في المقابل، العملية البدائية — التي تُنجز تحويلاً منطقياً واحداً فقط — لا تُحلَّل أبداً؛ بل تُكتب لها مواصفة عملية (mini-spec) بدلاً من ذلك.
نظام الترقيم
يُوضّح نظام ترقيم العمليات التسلسل الهرمي بجلاء. إذا كان المستوى الأول يحتوي على عمليات 1.0 و2.0 و3.0، فإن توسيع العملية 2.0 يُنتج أبناءً بالأرقام 2.1 و2.2 و2.3 وهكذا. يُخبر هذا النظام العشري القارئَ فوراً بالعملية الأم المالكة لأي عملية فرعية، بصرف النظر عن العمق (2.3.1، 2.3.2، …).
قاعدة الموازنة
الموازنة هي أهم اختبار صحة في مجموعة مخططات DFD المتعددة المستويات. القاعدة بسيطة: كل تدفق بيانات يعبر حدود عملية أم يجب أن يظهر بالاسم والاتجاه ذاته في مخطط العملية الابنة.
- كل تدفق يدخل العملية
2.0في المستوى الأول يجب أن يدخل في مكان ما على مخطط المستوى الثاني. - كل تدفق يخرج من العملية
2.0في المستوى الأول يجب أن يخرج من مكان ما على مخطط المستوى الثاني. - مخازن البيانات الداخلية (المستخدمة فقط من قِبَل العمليات الابنة) تظهر في المستوى الثاني لكنها مخفية عن المستوى الأول — وهذا صحيح تماماً.
- مخازن البيانات المشتركة مع عمليات أخرى في المستوى الأول يجب أن تظهر في كلا المستويين بأسماء متطابقة.
2.0، لكن هذا الاسم لا يظهر في أي مكان على مخطط المستوى الثاني، فالنموذج غير متوازن. إما أن التدفق مفقود من المستوى الثاني، أو تمت إعادة تسميته — وكلاهما خطأ.
دراسة حالة: نظام حجز عيادة
استذكر نظام حجز العيادة من الدرس السابق. كان مخطط المستوى الأول يتضمن العملية 2.0 — معالجة الموعد، التي تستقبل Appointment Request من المريض وتُنتج Confirmation وSchedule Update كمخرجات. هذه العملية معقدة بما يكفي لتحليلها. فيما يلي مخطط المستوى الثاني الكامل للعملية 2.0.
قراءة مخطط المستوى الثاني
تتبّع العمليات واحدة تلو الأخرى:
- 2.1 — التحقق من الطلب: تستقبل الطلب الخام من المريض (نفس التدفق الداخل إلى
2.0في المستوى الأول) وتتحقق منه بمراجعة D1 سجلات المرضى للتأكد من وجود المريض واكتمال الطلب، ثم تُخرج Validated Request. - 2.2 — التحقق من التوافر: تستعلم D3 الجدول الزمني (مخزن داخلي يظهر في هذا المستوى فقط) وتُحدد Available Slot.
- 2.3 — حجز الموعد: تحجز الموعد في D3 وتُمرّر Booking Details إلى الخطوة التالية. كما تُنتج Schedule Update الذي يخرج من الحدود ليصل إلى الطبيب — مطابقاً تماماً للمستوى الأول.
- 2.4 — إرسال التأكيد: تُنسّق وترسل Confirmation إلى المريض — مطابقاً أيضاً للمستوى الأول.
قائمة التحقق من الموازنة
بعد رسم أي مخطط من المستوى الثاني، نفّذ قائمة التحقق التالية:
- أحصِ كل تدفق داخل إلى العملية الأم أو خارج منها في المستوى الأول.
- تحقق من أن كل تدفق يظهر في المستوى الثاني — بنفس الاسم والاتجاه، داخلاً أو خارجاً من الحدود.
- أحصِ كل مخزن بيانات مشترك متصل بالعملية الأم في المستوى الأول.
- تحقق من أن كل مخزن مشترك يظهر في المستوى الثاني بنفس المعرّف والاسم.
- المخازن الداخلية (المستخدمة فقط داخل هذه العملية) لا تحتاج للظهور في المستوى الأول — فهي تفصيل مخفي بالتجريد.
التعمق أكثر: المستوى الثالث وما بعده
تنطبق القواعد ذاتها إذا كانت أي عملية في المستوى الثاني لا تزال معقدة. يمكن توسيع العملية 2.2 إلى مخطط من المستوى الثالث يحتوي أبناءً 2.2.1 و2.2.2 وما يليها. في الممارسة العملية، تكتمل مواصفة معظم الأنظمة التجارية عند المستوى الثاني أو الثالث. إذا وجدت نفسك تحتاج إلى مستوى رابع أو أعمق، فأعِد النظر في ما إذا كان النظام كبيراً جداً في نطاقه، أو ما إذا كانت أداة نمذجة مختلفة (كمخطط التسلسل) ستخدم الغرض بشكل أفضل.
أخطاء الموازنة الشائعة
- إعادة تسمية التدفقات: استخدام Booking Request في المستوى الثاني بينما يسميه المستوى الأول Appointment Request — تغيير صامت يكسر قابلية التتبع.
- التدفقات المفقودة: مخرج في المستوى الأول لا يظهر في المستوى الثاني لأن المحلل نسيه.
- التدفقات الزائدة: تدفقات في المستوى الثاني تعبر حدود العملية الأم لكنها لا تظهر في المستوى الأول — تمثل سلوكاً غير موثق للنظام.
- الاتجاه الخاطئ: تدفق يدخل العملية الأم في المستوى الأول لكنه يخرج منها في المستوى الثاني، مما يشير إلى خطأ منطقي في أحد المستويين.
اكتشاف هذه الأخطاء مبكراً — خلال المراجعة بين الزملاء أو الجلسة التفصيلية المنظمة — أقل تكلفة بكثير من اكتشاف التناقضات أثناء التصميم أو البرمجة. مخططات DFD المتوازنة والمتعددة المستويات تُشكّل النموذج المرجعي للعمليات الذي تعتمد عليه بقية وثيقة التحليل.