𝐸𝑛𝑔. 𝐻𝑎𝑓𝑒𝑑 𝐴𝑙-𝑅𝑎𝑧𝑦
قصة في تحليل النظم:
طالب جامعي يدرس مادة تطوير الويب في اخر الفصل طلب منه الدكتور بناء تطبيق مشابه لجوجل تاسك
الطالب انصدم عاد الى البيت يبحث عنه ويقرأ وراه ثم تعقد ولا يعرف من اين يبدأ حيث كان مشتتا ومتوترا ويجب ان يسلم المشروع في زمن محدد
اخوه رآه على غير طبيعته فسأله ما الامر
اخبره بالقصة ثم ساعده اخوه بأن يذهب الى رجل حكيم وهو مطور يعمل في شركة ولديه خبرة واحتمال كبير ان يساعده في هذا الامر
ذهب الى الحكيم وجلس معه واخبره
انا طالب علوم حاسوب ادرس تقنية ويب
لم يسبق لي ان عملت على مشاريع ويب كلها فقط على الكونسل والان طلب مني ان ابني مشروعا مشابها لجوجل تاسك ولا ادري كيف يمكنني انجازه
الحكيم قال لا تقلق يا بني كل شيء سيبدو سهلا اذا هدأت نفسك وفكرت بهدوء وسمعت الكلام وسنصل سويا الى الكيفية التي يجب ان تكون
سأل الحكيم الطالب
ما هو تطبيق تاسك الذي طلب منك ان تقوم ببناء مثله
وماذا يعمل
ومن يستخدمه
وما المشكلة التي يحلها
اجابه
لا ادري
قال له الحكيم
هذه اول مهمة لك وهي ان تذهب وتعود لي بهذه الاجابات وسنكمل معا لاحقا
ذهب الطالب وقرأ عنه في الانترنت لكنه لم يستخدمه حيث قدم هذه المعلومات
سأله الحكيم هل قمت بتجربة التطبيق واستخدامه
اجابه
لا
قال له هذه المهمة الثانية اريدك ان تستخدمه ثم تكتب تقريرا مفصلا عن كل التفاصيل التي ستعيشها اثناء التجربة لهذا التطبيق
عاد مرة اخرى واخبره انه قام باستخدام التطبيق عدة ايام وانه انشأ قوائم واضاف مهاما وعدلها وحذفها ووضع لها مواعيد ووضع علامات على المهام المنجزة وجربه من الهاتف ومن المتصفح وكتب تقريرا طويلا عن كل ما لاحظه
ابتسم الحكيم وقال ممتاز الان اصبحت تعرف ما الذي ستبنيه لكن لا يزال امامنا سؤال مهم
هل تعتقد انك ستجلس الان وتبدأ بكتابة الاكواد مباشرة
قال الطالب اليس هذا ما يجب ان افعله
قال الحكيم هذه هي اكثر غلطة يقع فيها المبتدئون يريدون القفز مباشرة الى البرمجة بينما البرمجة هي اخر خطوة وليست اول خطوة
تعجب الطالب وقال كيف ذلك
قال الحكيم قبل ان تبني اي منزل هل يبدأ العمال بتركيب الابواب والنوافذ
قال الطالب لا بل يبدأون بالمخططات ثم الاساسات
قال الحكيم وكذلك البرامج اذا لم تعرف ماذا ستبني فكيف ستكتب الكود
ثم امسك الحكيم ورقة وقلما وقال
اخبرني من هم الاشخاص الذين سيستخدمون هذا التطبيق
فكر الطالب قليلا ثم قال
اي شخص يريد تنظيم اعماله اليومية
قال الحكيم جيد وهل كلهم لديهم نفس الصلاحيات
قال الطالب لا اعتقد
قال الحكيم اذن اول مستخدم عندنا هو المستخدم العادي
ثم سأله ماذا يستطيع هذا المستخدم ان يفعل داخل النظام
بدأ الطالب يعد ما تعلمه اثناء استخدام التطبيق
قال يستطيع انشاء حساب وتسجيل الدخول وانشاء قائمة جديدة واضافة مهمة وتعديل المهمة وحذف المهمة وتحديد موعد لها ووضع علامة بأنها اكتملت والبحث عن المهام وترتيبها
قال الحكيم رائع انت الان لا تتحدث عن الاكواد بل تتحدث عن وظائف النظام
ثم قال له كل جملة قلتها تبدأ بفعل وهذا الفعل يعني ان النظام يجب ان يقدم خدمة للمستخدم
انشاء
تعديل
حذف
بحث
عرض
تسجيل
كل هذه تسمى متطلبات وظيفية
بدأ الطالب يشعر ان الصورة اصبحت اوضح
قال الحكيم الان سننتقل الى الخطوة التالية
كل شيء يستطيع المستخدم التعامل معه داخل النظام يسمى كيانا
فكر معي عندما قلت انشئ مهمة ما هو الشيء الذي انشأته
قال الطالب المهمة
قال الحكيم وعندما قلت انشئ قائمة
قال الطالب القائمة
قال الحكيم وعندما قلت انشئ حسابا
قال الطالب المستخدم
قال الحكيم اذن بدأنا نكتشف الكيانات الموجودة داخل النظام
لدينا مستخدم
ولدينا قائمة
ولدينا مهمة
ثم سأل الحكيم هل المهمة تعيش وحدها ام انها تنتمي الى قائمة
قال الطالب بل تنتمي الى قائمة
قال الحكيم وهل القائمة تنتمي لاحد
قال الطالب نعم لصاحب الحساب
ابتسم الحكيم وقال احسنت لقد بدأت تكتشف العلاقات بين الكيانات
فالبرنامج ليس مجرد صفحات بل هو مجموعة من الاشياء المرتبطة ببعضها بعلاقات منطقية
ثم رسم ثلاث دوائر على الورقة وكتب داخلها مستخدم وقائمة ومهمة
ورسم سهما من المستخدم الى القائمة وسهما اخر من القائمة الى المهمة
وقال هذه الرسمة البسيطة تساوي ساعات طويلة من كتابة الاكواد الخاطئة
لانك عندما تفهم البيانات اولا فإن بقية النظام يبدأ بالظهور امامك تدريجيا
نظر الطالب الى الورقة وقال الغريب انني اشعر ان المشروع لم يعد مخيفا كما كان
ابتسم الحكيم وقال لانك كنت تنظر الى المشروع كله دفعة واحدة اما الان فقد قسمناه الى اجزاء صغيرة وكل جزء اصبح مفهوما
وهكذا يفكر المهندسون الحقيقيون
انهم لا يبدأون بالسؤال كيف اكتب الكود
بل يبدأون بالسؤال ما المشكلة التي احاول حلها ومن سيستخدم النظام وما البيانات التي سأتعامل معها وما العمليات التي ستجري عليها
وعندما تصبح اجابة هذه الاسئلة واضحة يتحول الكود من شيء مخيف الى مجرد ترجمة لهذه الافكار الى لغة يفهمها الحاسوب
1 · 51 ·