التفكيك: مخطط تدفق البيانات المستوى الأول
التفكيك: مخطط تدفق البيانات المستوى الأول
أعطانا مخطط السياق (المستوى 0) الرؤية الشاملة من علٍ: فقاعة عملية واحدة تمثل النظام بأكمله، مع الكيانات الخارجية وتدفقات البيانات الرابطة بينها. تلك الفقاعة الوحيدة هي "صندوق أسود" — تخبر أصحاب المصلحة بـما يتبادله النظام مع العالم الخارجي، لكنها لا تقول شيئًا عن كيفية معالجة هذه التبادلات داخليًا. يفتح مخطط تدفق البيانات المستوى الأول هذا الصندوق الأسود بتعويض الفقاعة الوحيدة بمجموعة من العمليات الرئيسية — عادةً أربع إلى تسع — تمثل كل منها جزءًا متماسكًا من مسؤوليات النظام. وهو أكثر مخططات DFD فائدةً من الناحية العملية، إذ يقع عند المستوى الصحيح من التفاصيل لالتحقق من المتطلبات وتحديد نطاق قاعدة البيانات.
ما الذي يتغير من المستوى 0 إلى المستوى 1؟
تتغير أربعة أشياء عند تفكيك مخطط السياق إلى المستوى الأول:
- تُستبدل فقاعة العملية الوحيدة بعمليات فرعية مرقّمة (1.0، 2.0، 3.0 …).
- تظهر مخازن البيانات لأول مرة. المستوى 0 يخفيها؛ المستوى 1 يُسمّي كل مخزن دائم يقرأ منه النظام أو يكتب إليه.
- تُرسم التدفقات الداخلية بين العمليات الجديدة والمخازن، موضّحةً كيفية تنقل البيانات داخل النظام.
- تُحفَظ الكيانات الخارجية وتدفقات الحدود بالضبط — هذه هي قاعدة التوازن، وانتهاكها هو أكثر أخطاء المستوى الأول شيوعًا.
Appointment Confirmation يغادر النظام نحو المريض، فيجب أن يغادر هذا التدفق بالضبط حدودَ النظام في المستوى 1 أيضًا، حتى لو كان مصدره العملية 3.0 وليس صندوقًا أسود واحدًا.
اتفاقيات التسمية والترقيم
الاتفاقيات المتسقة تُبقي المخططات مقروءةً عبر الفريق:
- أرقام العمليات — استخدم أعدادًا صحيحة في المستوى 1 (1.0، 2.0، 3.0). لواحق الأعشار محجوزة للعمليات الفرعية في المستوى 2 (1.1، 1.2، 2.1 …).
- أسماء العمليات — دائمًا زوج فعل-مفعول:
Validate Login،Process Order،Generate Report. التسمية الاسمية فقط (مثل "Order Management") تُشير إلى أن الفقاعة هي في الحقيقة نظام فرعي لا عملية. - أسماء مخازن البيانات — أسماء جمع بدون أفعال:
D1 Appointments،D2 Patients،D3 Books. ابدأ بـD1،D2… للتمييز عن العمليات. - تسميات التدفقات — عبارات اسمية تطابق البيانات لا الفعل:
Booking Requestلا "Submit Booking".
بناء مخطط المستوى الأول: نظام حجز العيادة
لنشرع في بناء مخطط DFD المستوى الأول لـنظام حجز مواعيد العيادة الطبية. أرسى مخطط السياق ثلاثة كيانات خارجية — Patient، وDoctor، وHealth Authority — والتدفقات الحدودية التالية: Booking Request (داخل)، Appointment Confirmation (خارج)، Cancellation Notice (داخل)، Schedule Availability (داخل من الطبيب)، Schedule Summary (خارج إلى الطبيب)، وCompliance Report (خارج إلى الجهة الصحية).
بتحليل هذه التدفقات ومسؤوليات النظام، نُحدد خمس عمليات رئيسية:
- 1.0 Manage Patient Registration — إنشاء وتحديث سجلات المرضى.
- 2.0 Handle Booking Request — التحقق من التوافر وإنشاء المواعيد.
- 3.0 Manage Cancellations — حذف المواعيد أو إعادة جدولتها.
- 4.0 Manage Doctor Schedule — تحديث توافر الطبيب والاستعلام عنه.
- 5.0 Generate Reports — تجميع البيانات للجهة الصحية ومدير العيادة.
تدعم هذه العمليات ثلاثة مخازن بيانات: D1 Patients، وD2 Appointments، وD3 Doctor Schedules.
قراءة المخطط: ما يعنيه كل عنصر
تجوّل في المخطط بشكل منهجي، عنصرًا عنصرًا، عند مراجعته مع أصحاب المصلحة:
- العملية 1.0 تستقبل Patient Details من المريض (تدفق حدودي) وتكتب Patient Record في مخزن
D1 Patients. هذه الفقاعة هي بوابة التسجيل — لا عملية أخرى تخزن سجلات المرضى. - العملية 2.0 تستقبل Booking Request، تقرأ بيانات المريض من
D1للتحقق منه، تتحقق من الأوقات المتاحة فيD3 Doctor Schedules، تكتب موعدًا جديدًا فيD2 Appointments، وترسل Appointment Confirmation إلى المريض. لاحظ كيف تُنسّق هذه الفقاعة الوحيدة ثلاثة مخازن بيانات — إشارة إلى أنها قد تحتاج مزيدًا من التفكيك في المستوى 2. - العملية 3.0 تستقبل Cancellation Notice وتحذف أو تُعلّم السجل في
D2. - العملية 4.0 تستقبل Schedule Availability من الطبيب، تُحدّث
D3، وترجع Schedule Summary إلى الطبيب. - العملية 5.0 تقرأ من
D2 Appointmentsوتُجمّع Compliance Report المُرسَل إلى الجهة الصحية.
مثال ثانٍ: معالجة طلبات المتجر الإلكتروني
لتعزيز الأسلوب، تأمل مخطط DFD المستوى الأول لـمتجر إلكتروني مبسّط. التدفقات الحدودية في مخطط السياق هي: Order (داخل من العميل)، Order Confirmation (خارج إلى العميل)، Shipment Notice (خارج إلى العميل)، Stock Request (خارج إلى المورّد)، Stock Delivery (داخل من المورّد)، وSales Report (خارج إلى المدير).
هذا يقترح أربع عمليات رئيسية في المستوى الأول:
- 1.0 Process Order — يُتحقق من الطلب، يتحقق من المخزون في
D1 Inventory، يحجز المخزون، يكتب فيD2 Orders، يرسل Order Confirmation. - 2.0 Manage Inventory — يستقبل Stock Delivery من المورّد، يُحدّث
D1 Inventory؛ ويُطلق أيضًا Stock Request إلى المورّد عند انخفاض المخزون. - 3.0 Fulfil Shipment — يقرأ من
D2 Orders، يُحدّث حالة الطلب، يرسل Shipment Notice إلى العميل. - 4.0 Generate Sales Report — يقرأ من
D2 Orders، يُجمّع ويُرسل Sales Report إلى المدير.
كم عددًا من العمليات يُعدّ كثيرًا؟
التوجيه التقليدي هو أربع إلى تسع عمليات في المستوى الأول. أقل من أربع يعني في الغالب أن الفقاعات خشنة للغاية لتكون ذات معنى؛ وأكثر من تسع يُثقل المخطط معرفيًا، وهو في العادة إشارة إلى أن المحلل هبط إلى تفاصيل المستوى الثاني قبل الأوان. إذا وجدت نفسك ترسم اثنتي عشرة فقاعة، ابحث عن أزواج يمكن دمجها في عملية واحدة أعلى مستوى تُفكَّك لاحقًا.
قائمة تحقق قبل الانتهاء من مخطط DFD المستوى الأول
- كل تدفق حدودي من مخطط السياق يظهر في المستوى 1 بالاسم ذاته والاتجاه ذاته — متوازن.
- كل عملية تمتلك تدفقًا داخلًا واحدًا على الأقل وتدفقًا خارجًا واحدًا — لا ثقوب سوداء ولا معجزات.
- جميع تسميات العمليات هي أزواج فعل-مفعول.
- جميع مخازن البيانات مُسمّاة ومرقّمة (
D1،D2…). - لا تدفقات مباشرة من كيان إلى كيان تتخطى النظام (تلك تنتمي خارج حدود النظام).
- لا تدفقات تحكم (قرارات، شروط) — مخططات DFD تُظهر حركة البيانات لا المنطق؛ استخدم مخططات التدفق أو مخططات النشاط للمنطق.
مخطط DFD المستوى الأول المُنجَز جيدًا هو وثيقة تواصل قوية. المطورون يرون مخازن البيانات ويبدؤون بالتفكير في مخطط قاعدة البيانات. المُختبِرون يرون التدفقات الحدودية ويبدؤون في صياغة حالات الاختبار. المستخدمون التجاريون يرون أسماء العمليات المألوفة ويؤكدون صحة النطاق. في الدرس التالي سننزل بإحدى هذه العمليات إلى المستوى الثاني، متعلمين كيف نحافظ على الاتساق — ومتى نتوقف عن التفكيك بالضبط.