لماذا نرسم قبل أن نكتب؟
درس 1 من 6
1لماذا نرسم قبل أن نكتب؟
الرسم ليس زينة توضع في التقرير، بل سؤال يُجاب عنه. هذا الجزء يحدّد أي سؤال يجيب عنه كل مخطّط، ومتى يكون الرسم مضيعة وقت صريحة.
ماذا تشاهد في الرسم: لكل سؤال مخطّط: من يستخدم النظام، وما الأشياء فيه، ومن ينادي من، وما خطوات العملية.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
قبل أن تبني بيتًا ترسم مخططه، لكنك لا ترسم كل شيء: ترسم الغرف لتسأل «هل تكفي؟»، وترسم الأنابيب لتسأل «أين يمر الماء؟». كل رسم يجيب عن سؤال واحد. والرسم الذي لا يجيب عن سؤال تحتاجه هو وقت ضائع مهما كان جميلًا.
كل مخطط UML يجيب عن سؤال مختلف: حالات الاستخدام عن «من يريد ماذا»، والأصناف عن البنية والتعدد، والتسلسل عن ترتيب الرسائل، والنشاط عن الخطوات والقرارات. ارسم حين تكون كلفة الخطأ في الكود أعلى من كلفة الرسم، وتوقّف حين لا يغيّر الرسم قرارًا.
المتطلبات قبل البداية
فهم الأصناف والكائنات
تعرف أن الصنف قالب والكائن نسخة منه. لا تحتاج أكثر من هذا للبداية.
ورقة أو أداة رسم
ارسم بيدك أولًا. الأداة تجعل الرسم جميلًا، والورقة تجعله صحيحًا أسرع.
مشروع حقيقي صغير
ستطبّق على نظام مكتبة بسيط. أي نظام تعرفه يصلح، المهم أن تعرف قواعده.
المفاهيم الأساسية
لغة رسم موحّدة لا لغة برمجة: مجموعة رموز متفق عليها حتى يفهم مهندسان الرسم نفسه بلا شرح شفهي. هذا كل ما هي، وهذا يكفي.
كل مخطّط يجيب عن سؤال واحد. من يستخدم النظام ولماذا؟ → حالات الاستخدام. ما الأشياء وعلاقاتها؟ → الأصناف. من ينادي من وبأي ترتيب؟ → التسلسل. ما خطوات العملية وقراراتها؟ → النشاط. إن لم تستطع كتابة سؤال المخطّط في سطر، فلا ترسمه.
هيكلي يصوّر لحظة ساكنة: ما يوجد وكيف يتصل. وسلوكي يصوّر الزمن: ما يحدث وبأي ترتيب. أكثر الأخطاء شيوعًا محاولة حشر الزمن في مخطّط هيكلي.
ليست التوثيق بل كشف التناقض مبكرًا. خط علاقة واحد يُجبرك على سؤال «هل يمكن أن يكون بلا مالك؟»، وهذا السؤال أرخص على الورق بألف مرة من كشفه في قاعدة بيانات فيها بيانات حقيقية.
الرسم لا يثبت صحة ولا يقيس أداءً ولا يحلّ خلافًا في الأولويات. ومن يرسم عشرين مخططًا قبل أن يكتب سطرًا لا يخطّط، بل يؤجّل.
كيف يعمل؟
شكل 1، عائلتا UML: الساكن والمتحرّك، ولكل سؤاله
شكل 2، قرار واحد قبل كل رسم: هل يجيب، وهل يغيّر قرارًا؟
| السؤال | المخطّط | الجزء هنا |
|---|---|---|
| من يستخدم النظام ولماذا؟ | حالات الاستخدام | ٢ |
| ما الأشياء وما علاقاتها؟ | الأصناف | ٣ |
| من ينادي من وبأي ترتيب؟ | التسلسل | ٤ |
| ما خطوات العملية وقراراتها؟ | النشاط | ٤ |
| كيف نخزّن هذا كله؟ | نماذج البيانات | ٥ و٦ |
التمرين: من كلام أمين المكتبة إلى نموذج
النظام الذي سنبنيه عبر الأجزاء الأربعة الأولى: مكتبة صغيرة. القواعد التي جمعناها من «أمين المكتبة» في أربع جمل:
- العضو يستعير نسخة من كتاب، لا الكتاب نفسه.
- النسخة الواحدة عند عضو واحد في وقت واحد، أو عند لا أحد.
- العضو يستعير ٥ نسخ كحدّ أقصى، ولا يستعير وعليه تأخير.
- الكتاب قد يكون في المكتبة بلا أي نسخة متاحة، ويبقى كتابًا.
| ما قاله أمين المكتبة | ما يعنيه في النموذج |
|---|---|
| «العضو يستعير كتابًا» | العضو يستعير نسخة من كتاب |
| «الكتاب موجود عندنا» | الكتاب سجلّ ببليوغرافي، وقد لا تكون له نسخة متاحة |
| «خمس كتب» | خمس نسخ مستعارة في وقت واحد |
| «عليه تأخير» | له استعارة واحدة على الأقل تجاوزت تاريخ الإرجاع |
اعتقاد شائع × الحقيقة
| الاعتقاد | الحقيقة |
|---|---|
| «UML لغة برمجة قديمة.» | ليست لغة برمجة أصلًا، بل رموز رسم. والرموز لا تقدم. |
| «المخططات توثيق يُكتب بعد الكود.» | المخطّط بعد الكود توثيق، والمخطّط قبله قرار. الثاني هو الذي يوفّر المال. |
| «ارسم كل المخططات لكل نظام.» | ارسم المخطّط الذي له سؤال لا تعرف جوابه. الباقي عمل بلا مشتر. |
| «المخطّط الجميل مخطّط جيد.» | المخطّط الجيد هو ما يجعل القارئ يسأل سؤالًا محدّدًا. الجمال لا يكشف تناقضًا. |
| «التعدّدية تفصيلة نضيفها لاحقًا.» | التعدّدية هي القاعدة التجارية نفسها: «١» و«٠..٥» و«*» ثلاثة أنظمة مختلفة تمامًا. |
جرّب بنفسك
قال العميل: «كل مشروع له مدير واحد، والمدير قد يدير عدة مشاريع». أي مخطّط يجيب عن هذا؟
لأن الجملة تصف ما يوجد وكيف يتصل بأعداد محدّدة: مشروع ← مدير بتعدّدية ١، ومدير ← مشاريع بتعدّدية ٠..*. هذا سؤال هيكلي لا زمني، والنشاط والتسلسل يصفان الزمن.
مخطّط لا تستطيع كتابة سؤاله في سطر واحد. ماذا تفعل؟
الغموض ليس نقص تفاصيل في الرسم، بل نقص وضوح في السؤال. إضافة التفاصيل أو الجمال تخفي الغموض ولا تحلّه.
بطاقات مراجعة سريعة
تحقّق من فهمك
1. بجملة واحدة: ما الفرق بين مخطّط قبل الكود ومخطّط بعده؟
الذي قبله قرار: يمكن أن يغيّر ما ستكتبه، فتكلفة تصحيحه ممحاة. والذي بعده توثيق: يصف ما كُتب، وتكلفة تصحيحه إعادة كتابة. كلاهما مفيد، لكن الأول هو ما يوفّر المال.
2. اشرح بالتفصيل الخطأ الذي أمسكناه في مثال المكتبة.
كلام أمين المكتبة قال «العضو يستعير كتابًا»، فلو رسمنا العلاقة بين العضو والكتاب لصار السؤال «هل الكتاب مستعار؟» بلا جواب حين تكون في المكتبة ثلاث نسخ: واحدة مستعارة واثنتان على الرفّ. العلاقة الصحيحة إلى النسخة، لأن النسخة هي الشيء الذي يمكن أن يُمسَك باليد ويكون عند شخص واحد. والدرس العام: الاسم في كلام العميل ليس دائمًا الصنف في النموذج.
3. (اكتشف الخطأ) زميل رسم مخطّط أصناف وفيه سهم اسمه «ثم يرسل بريدًا». ما الخطأ؟
أدخل الزمن في مخطّط هيكلي. مخطّط الأصناف يصف ما يوجد وكيف يتصل، ولا يملك مفهوم «ثم». الترتيب يُرسم في مخطّط التسلسل أو النشاط. والعلامة التي تكشف هذا الخطأ دائمًا: ظهور كلمات مثل «ثم» و«بعد» و«أولًا» على خطوط العلاقة.
4. العميل يقول: «النظام يجب أن يكون سريعًا». هل ترسم؟
لا. هذه ليست جملة يجيب عنها رسم: ليس فيها سؤال عن بنية ولا عن ترتيب، بل فيها هدف غير مقيس. الخطوة الصحيحة أن تحوّله إلى رقم ومعيار («صفحة العضو تُحمّل في أقل من ٣٠٠ مللي ثانية لـ٩٥٪ من الطلبات») ثم تقيس. وبعد القياس قد يصبح للرسم دور، في الجزء السادس تحديدًا.
5. (قرار) فريقك يطلب «توثيق UML كامل» لنظام موجود يعمل بلا مشاكل. ما ردّك؟
أسأل: من القارئ وما السؤال الذي لا يستطيع الجواب عنه الآن؟ لو كان القارئ مهندسًا جديدًا فالمطلوب مخطّط واحد أو اثنان: نظرة عامة على المكوّنات، ومخطّط تسلسل لأهم عملية. أما «توثيق كامل» فهو عمل كبير يتعفّن بسرعة لأن الكود يتغيّر والرسم لا. المخططات التي لا أحد يسألها سؤالًا تصبح خاطئة بصمت، وهي أسوأ من غيابها.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
مقالات2
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.