تحليل النظم: مخططات تدفق البيانات DFD
كيف تتبع البيانات داخل النظام لتكتشف المتطلبات الناقصة والمتعارضة قبل البرمجة؟ ⏱ نحو 45 دقيقة.
- تميّز عناصر
DFDالأربعة: الكيان الخارجي، والعملية، والمخزن، والتدفق. - ترسم المخطط السياقي والمستوى الأول لنظام.
- تطبّق قواعد المخطط الصحيح وتكتشف مخالفاتها.
- تستخدم
DFDللتحقق من اكتمال المتطلبات واتساقها.
١أين تذهب البيانات؟
حالات الاستخدام تصف ما يفعله المستخدمون. أما مخطط تدفق البيانات Data Flow Diagram (DFD) فيتتبع البيانات نفسها: من أين تدخل؟ ما العمليات التي تحوّلها؟ أين تُحفظ؟ وإلى من تخرج؟ هو من أقدم أدوات تحليل النظم وأكثرها فائدة لكشف المتطلبات الناقصة، وهو أحد مخرجات مشروع المحاكاة في خطة المقرر.
| العنصر | معناه | في Mermaid (اتفاق المقرر) |
|---|---|---|
| كيان خارجي | مصدر للبيانات أو مستقبل لها خارج النظام | T[المتدرب] مستطيل |
| عملية | تحوّل بيانات داخلة إلى بيانات خارجة، ولها رقم | p1((1.0<br>تسجيل)) دائرة |
| مخزن بيانات | بيانات محفوظة تُقرأ لاحقًا (جدول، ملف) | d1[(D1 الدورات)] أسطوانة |
| تدفق بيانات | بيانات تنتقل، ويُكتب عليه اسمها دائمًا | -- طلب جديد --> سهم عليه اسم |
٢المخطط السياقي: النظام كله دائرة واحدة
نبدأ بأعلى مستوى: النظام عملية واحدة رقمها 0، وحولها كل الكيانات الخارجية والبيانات المتبادلة معها. يحدد هذا المخطط نطاق النظام بدقة: ما داخل الدائرة مسؤوليتنا، وما خارجها ليس كذلك.
flowchart LR T[المتدرب] -- بيانات التسجيل --> P((0<br>نظام دورات)) P -- تأكيد التسجيل --> T R[موظفة التسجيل] -- قرار الاعتماد --> P P -- الطلبات الجديدة --> R P -- مبلغ الرسوم --> G[بوابة الدفع] G -- نتيجة الدفع --> P P -- تقرير الإيرادات --> M[المدير]
كل سهم يحمل اسم البيانات لا اسم الفعل: «بيانات التسجيل» لا «يسجّل». لاحظ أن المدير يستقبل فقط ولا يرسل؛ هل هذا صحيح؟ ربما يرسل «الشهر المطلوب» للتقرير. هكذا يكشف المخطط أسئلة للعميل.
٣المستوى الأول: ما داخل الدائرة
نفتح العملية 0 فنرى العمليات الرئيسية (1.0، 2.0، 3.0…) ومخازن البيانات بينها. يجب أن تبقى التدفقات مع الكيانات الخارجية نفسها كما في المخطط السياقي؛ هذا التوازن بين المستويين أول فحص للاتساق.
flowchart LR T[المتدرب] -- بيانات التسجيل --> p1((1.0<br>تسجيل)) p1 -- طلب جديد --> d2[(D2 التسجيلات)] d1[(D1 الدورات)] -- المقاعد المتاحة --> p1 d2 -- الطلبات المعلقة --> p2((2.0<br>اعتماد)) R[موظفة التسجيل] -- القرار --> p2 p2 -- حالة الطلب --> d2 d2 -- طلب معتمد --> p3((3.0<br>دفع)) p3 -- مبلغ الرسوم --> G[بوابة الدفع] G -- نتيجة الدفع --> p3 p3 -- إيصال --> T
تتبّع طلبًا واحدًا: يدخل من المتدرب إلى «تسجيل» التي تقرأ المقاعد من D1 وتكتب الطلب في D2، ثم تعتمده الموظفة، ثم يُدفع عبر البوابة ويعود الإيصال. اضغط ✏️ جرّب وعدّل وأضف عملية «4.0 التقارير» تقرأ من D2 وترسل «تقرير الإيرادات» إلى المدير.
٤قواعد مخطط صحيح
| القاعدة | لماذا؟ |
|---|---|
| كل تدفق يحمل اسمًا | سهم بلا اسم لا يقول أي بيانات تنتقل |
| لكل عملية مدخل ومخرج على الأقل | عملية بلا مخرج «ثقب أسود»، وبلا مدخل «معجزة» |
| لا تدفق مباشر بين مخزنين | البيانات لا تنتقل وحدها؛ لا بد من عملية تنقلها |
| لا تدفق مباشر بين كيان خارجي ومخزن | الكيان لا يكتب في جداولنا مباشرة؛ تمرّ البيانات بعملية تتحقق منها |
| التوازن بين المستويات | تدفقات الكيانات الخارجية في المستوى الأول تطابق المخطط السياقي |
flowchart LR d1[(D1 الدورات)] --> d2[(D2 التسجيلات)] T[المتدرب] --> d2 p9((9.0<br>حساب الخصم))
flowchart LR d1[(D1 الدورات)] -- سعر الدورة --> p9((9.0<br>حساب الخصم)) T[المتدرب] -- كود الخصم --> p9 p9 -- المبلغ بعد الخصم --> d2[(D2 التسجيلات)]
في الخطأ: تدفق من مخزن إلى مخزن، وكيان يكتب في مخزن مباشرة، وعملية معزولة بلا مدخل ولا مخرج، وأسهم بلا أسماء. في الصواب: كل البيانات تمر بالعملية 9.0، وكل سهم يحمل اسمه.
٥هل المتطلبات مكتملة ومتسقة؟
من الخطة: «استخدام أساليب تحليل النظم لتحليل المتطلبات والتأكد من اكتمالها واتساقها». المخطط أداة فحص، لا رسمة للزينة. ضع المتطلبات بجانب العمليات واسأل:
| الفحص | السؤال | ما يكشفه في «دورات» |
|---|---|---|
| الاكتمال | هل لكل متطلب وظيفي عملية تنفذه؟ | FR-12 «إصدار الشهادات» بلا عملية → إما نقص في التحليل أو متطلب مؤجل |
| الاكتمال | هل لكل عملية متطلب يبررها؟ | عملية «حساب الخصم» بلا متطلب → اسأل العميل: هل يوجد خصم أصلًا؟ |
| الاتساق | هل كل بيانات تُقرأ من مخزن تُكتب فيه في مكان ما؟ | D1 الدورات تُقرأ ولا يكتبها أحد → من يضيف الدورات؟ متطلب ناقص! |
| الاتساق | هل تتطابق الأسماء في كل المستندات؟ | «الطلب» هنا و«الحجز» هناك لنفس الشيء → وحّد المصطلح في المسرد |
توقّع وتحقّق
ما الذي يمثله الشكل الأسطواني في اتفاق المقرر؟
عملية لها مدخلات وليس لها أي مخرج تسمّى:
أي تدفق مخالف للقواعد؟
مخزن يُقرأ منه ولا يكتب فيه أحد يدل على:
الخلاصة
DFDيتتبع البيانات: من أين تدخل، وكيف تتحول، وأين تُحفظ، وإلى من تخرج.- المخطط السياقي: النظام عملية واحدة 0 مع الكيانات الخارجية، ويحدد النطاق.
- المستوى الأول: العمليات الرئيسية المرقمة والمخازن، ويتوازن مع السياقي.
- القواعد: أسهم مسماة، ولكل عملية مدخل ومخرج، ولا تدفق بين مخزنين أو بين كيان ومخزن.
- مخزن يُقرأ ولا يُكتب، أو عملية بلا متطلب، علامتا نقص في التحليل.
تحدٍّ تصميمي: DFD المستوى الأول: الحضور والتقارير
متقدموسّع مخطط تدفق البيانات بعمليتين جديدتين: «إعداد الحضور» للمدرب، و«تقرير الإيرادات» للمدير، مع الالتزام بكل قواعد المخطط الصحيح.
- ثلاث عمليات على الأقل (دوائر مرقمة): التسجيل، وإعداد الحضور، وتقرير الإيرادات.
- مخزنان على الأقل: D1 الدورات و D2 التسجيلات.
- المدرب يرسل رقم الدورة ويستقبل كشف الحضور، والمدير يستقبل تقرير الإيرادات.
- كل تدفق يحمل اسم بياناته، ولكل عملية مدخل ومخرج.
- لا تدفق مباشر بين مخزنين، ولا بين كيان خارجي ومخزن.
- المخطط مكتوب بصيغة صحيحة ويُرسم
- نوعه: مخطط تدفق flowchart
- ثلاث عمليات على الأقل
- مخزنا بيانات على الأقل
- كيان «المدرب»
- كيان «المدير»
- المدرب يستقبل كشف الحضور من عملية
- المدير يستقبل تقرير الإيرادات
- كل تدفق يحمل اسم بياناته
- لكل عملية مدخل ومخرج
- لا تدفق بين مخزنين
- لا تدفق بين كيان خارجي ومخزن
💡 تلميح 1
p4((4.0<br>إعداد الحضور))، والمخزن: d1[(D1 الدورات)].💡 تلميح 2
💡 تلميح 3
حاول بنفسك أولًا؛ للتصميم أكثر من حلّ صحيح، والفحص يتأكد من العناصر الأساسية فقط.
flowchart LR T[المتدرب] -- بيانات التسجيل --> p1((1.0<br>تسجيل)) d1[(D1 الدورات)] -- المقاعد المتاحة --> p1 p1 -- طلب جديد --> d2[(D2 التسجيلات)] p1 -- رقم الطلب --> T d2 -- قائمة المسجلين --> p4((4.0<br>إعداد الحضور)) C[المدرب] -- رقم الدورة --> p4 p4 -- كشف الحضور --> C d2 -- الرسوم المدفوعة --> p5((5.0<br>تقرير الإيرادات)) M[المدير] -- الشهر المطلوب --> p5 p5 -- تقرير الإيرادات --> M