المحطّة ١: من الفكرة إلى المتطلّبات وقصص المستخدم
لا تفتح المحرّر بعد؛ حوّل الفكرة إلى متطلّباتٍ وقصص مستخدمٍ أوّلًا. ⏱ نحو 20 دقيقة.
- تحوّل فكرةً غامضةً إلى متطلّباتٍ واضحةٍ قابلةٍ للقياس.
- تكتب قصص المستخدم بصيغتها الصحيحة.
- تفرّق بين المتطلّبات الوظيفيّة وغير الوظيفيّة.
- تحدّد نطاقًا أدنى صالحًا وتحمي مشروعك من زحف النطاق.
١الفكرة قبل الكود
كل منتجٍ ناجحٍ بدأ فكرةً، لكنه لم ينجح إلّا حين تحوّلت الفكرة إلى متطلّباتٍ واضحة. الخطأ الشائع عند المبتدئ أن يفتح المحرّر ويكتب الكود مباشرةً — فيتوه، ويعيد، ويبني أشياءً لا يحتاجها أحد.
مشروعنا: «مفكّرة مهامّي» — تطبيق ويب يسجّل فيه المستخدم دخوله، فيضيف مهامّه، ويطوي ما أنجزه، ويحذف ما انتهى. بسيطٌ في ظاهره، لكنه يلمس كل طبقةٍ تعلّمتها: قاعدة بيانات، خلفية PHP، واجهة، جلسات، وتأمين.
المتطلّبات هي «عقدٌ» بينك وبين نفسك (وبين المطوّر وعميله في الواقع): تحدّد بدقّةٍ ما الذي سيُبنى قبل أن تكتب سطرًا — فتقيس عليها تقدّمك وتعرف متى «انتهى» المشروع.
٢قصّة المستخدم: صيغةٌ تُجبرك على التفكير بالمستخدم
تعلّمت في مقرّر 241 قصّة المستخدم (User Story). نكتب كل ميزةٍ بصيغةٍ واحدة تركّز على مَن يريدها وماذا يريد ولماذا:
قصص مشروعنا الأساسيّة (نطاق أدنى صالح — MVP):
- بصفتي زائرًا، أريد إنشاء حساب باسم مستخدمٍ وكلمة مرور، حتى أحفظ مهامّي الخاصّة.
- بصفتي مستخدمًا، أريد تسجيل الدخول والخروج، حتى لا يصل أحدٌ غيري إلى مهامّي.
- بصفتي مستخدمًا، أريد إضافة مهمّة بعنوان، حتى أتذكّرها.
- بصفتي مستخدمًا، أريد رؤية قائمة مهامّي أنا فقط، حتى أتابع ما عليّ.
- بصفتي مستخدمًا، أريد تعليم مهمّة كمنجَزة أو حذفها، حتى تبقى القائمة نظيفة.
٣متطلّبات وظيفيّة وغير وظيفيّة
نفرّق — كما في 241 — بين نوعين من المتطلّبات:
| النوع | يجيب عن | أمثلة من مشروعنا |
|---|---|---|
وظيفيّة (Functional) | ماذا يفعل النظام؟ | تسجيل الدخول، إضافة مهمّة، عرض مهامّ المستخدم فقط، الحذف. |
غير وظيفيّة (Non-functional) | ما جودة أدائه؟ | كلمات المرور مُعمّاة، الصفحات تفتح بسرعة، الواجهة تعمل على الجوّال، لا ثغرات حقنٍ شائعة. |
٤مخرَج هذه المحطّة: وثيقة متطلّبات صغيرة
ناتجك من هذه المحطّة ورقةٌ واحدةٌ (أو ملفّ) تحوي:
- جملةً واحدةً تصف المنتج وهدفه.
- قائمة قصص المستخدم للنطاق الأدنى.
- المتطلّبات الوظيفيّة وغير الوظيفيّة.
- قائمة «خارج النطاق — لاحقًا».
هذه الوثيقة ستقود كل المحطّات التالية: كل جدولٍ في القاعدة، وكل مسارٍ في الخلفية، وكل زرٍّ في الواجهة سيعود إلى قصّةٍ هنا.
توقّع وتحقّق
أيّ هذه قصّة مستخدمٍ صحيحة الصياغة؟
«كلمات المرور يجب أن تُحفظ مُعمّاة» هو متطلّب:
ما أفضل علاجٍ لـ «زحف النطاق»؟
متى نعدّ المشروع «منتهيًا»؟
الخلاصة
- المنتج يبدأ بالمتطلّبات لا بالكود؛ المتطلّبات عقدٌ يحدّد «ما الذي سيُبنى».
- قصّة المستخدم: بصفتي (دور) أريد (فعلًا) حتى (فائدة).
- الوظيفيّة = ماذا يفعل النظام؛ غير الوظيفيّة = جودته (أمان، أداء، سهولة).
- حدّد النطاق الأدنى
(MVP)وأجّل الباقي في قائمة «لاحقًا». - مخرَجك: وثيقة متطلّباتٍ من صفحةٍ تقود كل المحطّات التالية.
تحدٍّ تصميمي: وثيقة متطلّبات «مفكّرة مهامّي»
تصميمياكتب وثيقة متطلّباتٍ من صفحةٍ واحدةٍ لمشروعك. اجعلها أساسًا تعود إليه في كل محطّةٍ لاحقة. يمكنك كتابتها في مستندٍ أو على ورقة.
- جملة المنتج وهدفه.
- قصص المستخدم للنطاق الأدنى بصيغتها الصحيحة.
- جدول المتطلّبات الوظيفيّة وغير الوظيفيّة.
- قائمة «خارج النطاق — لاحقًا».