طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 241 · تحليل وتصميم برمجيات الويب
الدرس 7 · الوحدة 3: التحويل من متطلبات العميل إلى مواصفات دقيقة

تحليل النظم: مخططات تدفق البيانات DFD

كيف تتبع البيانات داخل النظام لتكتشف المتطلبات الناقصة والمتعارضة قبل البرمجة؟ ⏱ نحو 45 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تميّز عناصر DFD الأربعة: الكيان الخارجي، والعملية، والمخزن، والتدفق.
  • ترسم المخطط السياقي والمستوى الأول لنظام.
  • تطبّق قواعد المخطط الصحيح وتكتشف مخالفاتها.
  • تستخدم DFD للتحقق من اكتمال المتطلبات واتساقها.

١أين تذهب البيانات؟

حالات الاستخدام تصف ما يفعله المستخدمون. أما مخطط تدفق البيانات Data Flow Diagram (DFD) فيتتبع البيانات نفسها: من أين تدخل؟ ما العمليات التي تحوّلها؟ أين تُحفظ؟ وإلى من تخرج؟ هو من أقدم أدوات تحليل النظم وأكثرها فائدة لكشف المتطلبات الناقصة، وهو أحد مخرجات مشروع المحاكاة في خطة المقرر.

العنصرمعناهفي Mermaid (اتفاق المقرر)
كيان خارجيمصدر للبيانات أو مستقبل لها خارج النظامT[المتدرب] مستطيل
عمليةتحوّل بيانات داخلة إلى بيانات خارجة، ولها رقمp1((1.0<br>تسجيل)) دائرة
مخزن بياناتبيانات محفوظة تُقرأ لاحقًا (جدول، ملف)d1[(D1 الدورات)] أسطوانة
تدفق بياناتبيانات تنتقل، ويُكتب عليه اسمها دائمًا-- طلب جديد --> سهم عليه اسم

٢المخطط السياقي: النظام كله دائرة واحدة

نبدأ بأعلى مستوى: النظام عملية واحدة رقمها 0، وحولها كل الكيانات الخارجية والبيانات المتبادلة معها. يحدد هذا المخطط نطاق النظام بدقة: ما داخل الدائرة مسؤوليتنا، وما خارجها ليس كذلك.

diagram.mmd
flowchart LR  T[المتدرب] -- بيانات التسجيل --> P((0<br>نظام دورات))  P -- تأكيد التسجيل --> T  R[موظفة التسجيل] -- قرار الاعتماد --> P  P -- الطلبات الجديدة --> R  P -- مبلغ الرسوم --> G[بوابة الدفع]  G -- نتيجة الدفع --> P  P -- تقرير الإيرادات --> M[المدير]

بيانات التسجيل

تأكيد التسجيل

قرار الاعتماد

الطلبات الجديدة

مبلغ الرسوم

نتيجة الدفع

تقرير الإيرادات

المتدرب

0
نظام دورات

موظفة التسجيل

بوابة الدفع

المدير

كل سهم يحمل اسم البيانات لا اسم الفعل: «بيانات التسجيل» لا «يسجّل». لاحظ أن المدير يستقبل فقط ولا يرسل؛ هل هذا صحيح؟ ربما يرسل «الشهر المطلوب» للتقرير. هكذا يكشف المخطط أسئلة للعميل.

٣المستوى الأول: ما داخل الدائرة

نفتح العملية 0 فنرى العمليات الرئيسية (1.0، 2.0، 3.0…) ومخازن البيانات بينها. يجب أن تبقى التدفقات مع الكيانات الخارجية نفسها كما في المخطط السياقي؛ هذا التوازن بين المستويين أول فحص للاتساق.

diagram.mmd
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

بيانات التسجيل

طلب جديد

المقاعد المتاحة

الطلبات المعلقة

القرار

حالة الطلب

طلب معتمد

مبلغ الرسوم

نتيجة الدفع

إيصال

المتدرب

1.0
تسجيل

D2 التسجيلات

D1 الدورات

2.0
اعتماد

موظفة التسجيل

3.0
دفع

بوابة الدفع

تتبّع طلبًا واحدًا: يدخل من المتدرب إلى «تسجيل» التي تقرأ المقاعد من D1 وتكتب الطلب في D2، ثم تعتمده الموظفة، ثم يُدفع عبر البوابة ويعود الإيصال. اضغط ✏️ جرّب وعدّل وأضف عملية «4.0 التقارير» تقرأ من D2 وترسل «تقرير الإيرادات» إلى المدير.

٤قواعد مخطط صحيح

القاعدةلماذا؟
كل تدفق يحمل اسمًاسهم بلا اسم لا يقول أي بيانات تنتقل
لكل عملية مدخل ومخرج على الأقلعملية بلا مخرج «ثقب أسود»، وبلا مدخل «معجزة»
لا تدفق مباشر بين مخزنينالبيانات لا تنتقل وحدها؛ لا بد من عملية تنقلها
لا تدفق مباشر بين كيان خارجي ومخزنالكيان لا يكتب في جداولنا مباشرة؛ تمرّ البيانات بعملية تتحقق منها
التوازن بين المستوياتتدفقات الكيانات الخارجية في المستوى الأول تطابق المخطط السياقي
✗ خطأ
diagram.mmd
flowchart LR  d1[(D1 الدورات)] --> d2[(D2 التسجيلات)]  T[المتدرب] --> d2  p9((9.0<br>حساب الخصم))

D1 الدورات

D2 التسجيلات

المتدرب

9.0
حساب الخصم

✓ صواب
diagram.mmd
flowchart LR  d1[(D1 الدورات)] -- سعر الدورة --> p9((9.0<br>حساب الخصم))  T[المتدرب] -- كود الخصم --> p9  p9 -- المبلغ بعد الخصم --> d2[(D2 التسجيلات)]

سعر الدورة

كود الخصم

المبلغ بعد الخصم

D1 الدورات

9.0
حساب الخصم

المتدرب

D2 التسجيلات

في الخطأ: تدفق من مخزن إلى مخزن، وكيان يكتب في مخزن مباشرة، وعملية معزولة بلا مدخل ولا مخرج، وأسهم بلا أسماء. في الصواب: كل البيانات تمر بالعملية 9.0، وكل سهم يحمل اسمه.

٥هل المتطلبات مكتملة ومتسقة؟

من الخطة: «استخدام أساليب تحليل النظم لتحليل المتطلبات والتأكد من اكتمالها واتساقها». المخطط أداة فحص، لا رسمة للزينة. ضع المتطلبات بجانب العمليات واسأل:

الفحصالسؤالما يكشفه في «دورات»
الاكتمالهل لكل متطلب وظيفي عملية تنفذه؟FR-12 «إصدار الشهادات» بلا عملية → إما نقص في التحليل أو متطلب مؤجل
الاكتمالهل لكل عملية متطلب يبررها؟عملية «حساب الخصم» بلا متطلب → اسأل العميل: هل يوجد خصم أصلًا؟
الاتساقهل كل بيانات تُقرأ من مخزن تُكتب فيه في مكان ما؟D1 الدورات تُقرأ ولا يكتبها أحد → من يضيف الدورات؟ متطلب ناقص!
الاتساقهل تتطابق الأسماء في كل المستندات؟«الطلب» هنا و«الحجز» هناك لنفس الشيء → وحّد المصطلح في المسرد

توقّع وتحقّق

ما الذي يمثله الشكل الأسطواني في اتفاق المقرر؟

عملية لها مدخلات وليس لها أي مخرج تسمّى:

أي تدفق مخالف للقواعد؟

مخزن يُقرأ منه ولا يكتب فيه أحد يدل على:

الخلاصة

تحدٍّ تصميمي: DFD المستوى الأول: الحضور والتقارير

متقدم

وسّع مخطط تدفق البيانات بعمليتين جديدتين: «إعداد الحضور» للمدرب، و«تقرير الإيرادات» للمدير، مع الالتزام بكل قواعد المخطط الصحيح.

المطلوب:
  • ثلاث عمليات على الأقل (دوائر مرقمة): التسجيل، وإعداد الحضور، وتقرير الإيرادات.
  • مخزنان على الأقل: D1 الدورات و D2 التسجيلات.
  • المدرب يرسل رقم الدورة ويستقبل كشف الحضور، والمدير يستقبل تقرير الإيرادات.
  • كل تدفق يحمل اسم بياناته، ولكل عملية مدخل ومخرج.
  • لا تدفق مباشر بين مخزنين، ولا بين كيان خارجي ومخزن.
✓ التحقق الآلي: يقرأ المختبر مخططك (العناصر والروابط) ويفحصه
  • المخطط مكتوب بصيغة صحيحة ويُرسم
  • نوعه: مخطط تدفق flowchart
  • ثلاث عمليات على الأقل
  • مخزنا بيانات على الأقل
  • كيان «المدرب»
  • كيان «المدير»
  • المدرب يستقبل كشف الحضور من عملية
  • المدير يستقبل تقرير الإيرادات
  • كل تدفق يحمل اسم بياناته
  • لكل عملية مدخل ومخرج
  • لا تدفق بين مخزنين
  • لا تدفق بين كيان خارجي ومخزن

💡 تلميح 1
العملية: p4((4.0<br>إعداد الحضور))، والمخزن: d1[(D1 الدورات)].
💡 تلميح 2
كشف الحضور يحتاج قائمة المسجلين من D2، فارسم تدفقًا من D2 إلى العملية 4.0.
💡 تلميح 3
إن ظهر ✗ في «لكل عملية مدخل ومخرج»، ابحث عن دائرة تخرج منها الأسهم فقط أو تدخل إليها فقط.

حاول بنفسك أولًا؛ للتصميم أكثر من حلّ صحيح، والفحص يتأكد من العناصر الأساسية فقط.

diagram.mmd
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

بيانات التسجيل

المقاعد المتاحة

طلب جديد

رقم الطلب

قائمة المسجلين

رقم الدورة

كشف الحضور

الرسوم المدفوعة

الشهر المطلوب

تقرير الإيرادات

المتدرب

1.0
تسجيل

D1 الدورات

D2 التسجيلات

4.0
إعداد الحضور

المدرب

5.0
تقرير الإيرادات

المدير

انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس