هكذا كان ينجز فرعون مشاريعه البرمجية !

لسنا بمعرض المزاح أو سرد بعض الأساطير البرمجية جريا على عادتنا، بل أحدثك حديثا جَادًّا إن أنت وعيته ظفرت بِمُرَادِ المكتوب، وإن لم يَتَيَسَّر لك ذلك فعلى أهلها جنت براقش.
عملية تطوير البرمجيات ليس مقتصرة على مرحلة كتابة الشفرات وتنفيذها، وإنما تبدأ من مراحل متقدمة لتستمر إلى مراحل مابعد التطوير إن أنت أهملتها أو قللت من شأنها انعكست سلبا على منتوجك البرمجي، فتتفاجأ في ختام ما وصلت إليه ببرنامج رديء لا يرقى إلى مستوى تطلعاتك، بل قد تجد نفسك قبل بلوغ مرحلة الختام واقعًا - بين الفينة والأخرى - في أخطاء منهجية وأغلاط تحليلية تعود بك لنقطة الصفر، لتكرر نفس الخطأ وتتساءل باستمرار: أين الخلل؟
الخلل في عدم إعطاء كل مرحلة من المراحل الآتي ذكرها حقها ووقتها.
ولتكون القراءة ممتعة بعيدة عن الرتابة البرمجية سنضع مقارنات ثانوية – يمكنك تجاهلها - بين كل مرحلة من مراحل تطوير البرمجيات، وبين أساليب الطاغية فرعون في استعباد قومه والتسلط عليهم.

المرحلة الأولى: جمع متطلبات وتـفاصيل المشروع صغيرها وكبيرها

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

المرحلة الثانية: تصميم الحل

التخطيط Planning أو التحليل Analysis أو التصميم Design (مع أن لكل مفهوم معناه الخاص) لا يعني تحديدا تصميم الشاشات والواجهات الرسومية GUI أو كتابة شفرات برمجية تدور في خلدك، وإنما يشمل أيضا التصميم الوظيفي للمشروع Functional Design ، بحيث عليك أن تضع تخطيطا يشمل كل تفاصيل وحيثيات المشروع، الشيء الذي سيسهل عليك عملية تحويل المخططات إلى أوامر برمجية.
فالعمل دون تخطيط ناقص لا محالة، فكأنك تنوي بناء منزل دون تصميم، أو تركيب قطع غيار سيارة دون دليل تجميع.
عليك بالتحليل، فالبرمجة بلا تحليل، كالإعلام العربي بلا تضليل...
لا تخلط بين التحليل وبين التكويد، قَدِّمْ الأول على الثاني ولا تنجزهما في نفس الآن، فالتحليل يعطيك نظرة صافية تسهل عليك التكويد.
أضف إلى ذلك أن برنامجك في غياب مرحلة التحليل سيفتقد إلى العديد من المزايا والتحسينات، التي قد لا تلوح لك أثناء كتابة الكود لأتك استعجلت ولم تعط للتحليل وقته الكافي.
وأيقن أن غياب التحليل قبل مرحلة التكويد، أو الاستناد إلى تحليل سيء Bad Design سَيَجُرُّكَ إلى عدة خيبات أبرزها ضياع الوقت، نقصان جودة المنتج، ضياع المال، أفول سمعة المؤسسة التي باسمها تم أصدار المشروع، اهتزاز ثقة الفريق البرمجي بسبب السقوط المتواصل.
وجه الشبه بين هذه المرحلة وبين أساليب الطاغية فرعون يتجلى في دراسته لأزمة النبوءة التي تقول أن مولودا من بني إسرائيل سيستأصل شأفته، وتخطيطه للحل المتمثل في قتل كل المواليد الذكور بل واستغراقه في مرحلة التحليل والمشورة إلى أن وقف على رأي تنظيم العملية الإجرامية بأن يذبح الذكور في عام ويستبقيهم في العام الموالي  لكي لا يضعف اقتصاد مصر بسبب قلة اليد العاملة.

المرحلة الثالثة: قَسِّمْ كُودَكَ شِيَعًا 

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

المرحلة الرابعة: بداية التكويد

بمجرد ما تقوم بتوزيع مشروعك إلى وحدات، عليك بدء التكويد لكن بعد أن تحدد ما يلي:
ماهي لغة البرمجة المناسبة لإنجاز المشروع (جافا، سي شارب، فيجوال بيسك، ..)؟
ماهو نوع المشروع الذي علي اختياره في برنامجي (ويب، ويندوز، موبايل، سيرفيس، ..)؟
هل يوجد لدي بعض الأكواد التي يمكنني إعادة استخدامها في برنامجي؟
هل سيحتاج برنامجي إلى قاعدة البيانات؟
إن كان الجواب نعم: ماهو نظام إدارة قواعد البيانات الأمثل في حالتي هذه (أوراكل، MS SQL Server، MySQL، MS Access، ..)؟
هل برنامجي سيكون متعدد اللغات والثقافات (Multi-Languages and Multi-Culture) ؟
في هذه المرحلة بدأ فرعون عملية تقتيل الأطفال عليه من الله ما يستحق.

المرحلة الخامسة: تحزيم البرنامج

هذه المرحلة لا تقل أهمية عن سابقاتها، بل لا قيمة لبرنامجك إن لم تقم بإعداد ملف تنصيب يضمن سلامة اشتغاله على حواسيب أخرى.
ضمن برنامجك كل ما سيجتاجه من متطلبات قبلية، على سبيل المثال لو صممت برنامجا في بيئة الدوت نيت، لا تنس أن تضمن ملف التنصيب إطار العمل دوت نيت فريموورك، وإن كان يحتوي على تقارير الكريستال فضع كذلك حزم الكريستال ريبورت...
إن كان برنامجك موصولا بقاعدة بيانات وتحتاج إلى تغيير معلومات ربط الاتصال من السيرڤر بعد عملية التحزيم، فلا تتردد أن تضع في برنامجك واجهة من أجل إعدادات الربط مع نظام إدارة قواعد البيانات، من خلالها يستطيع العميل أو التقني المكلف بعملية التنصيب أن يحدد عنوان السيرڤر ومعلومات الوصول إلى قاعدة البيانات متى ما شاء، فإن لم تستطع أن تنشىء هذه الشاشة فضع معلومات الاتصال في ملف خارجي من نوع XML مثلا لكي تتمكن من تعديلها يدويا.
هذه المرحلة شبيهة جدا بالمرحلة التاريخية التي أراد فيها فرعون أن ينهي قصة موسى عليه وعلى نبينا الصلاة والسلام فاتهمه بالسحر وجمع عليه السحرة ليبرهن لقومه أنه مصيب في رميه لموسى بالسحر، فكانت هذه الخطوة قاصمة ظهر فرعون وانقلب السحر على الساحر وآمن السحرة وبهت فرعون.

المرحلة السادسة: الاختبار

حينما تصل إلى هذه المرحلة لا تصرخ بشدة: لقد أنهيت البرنامج !
رويدك، فإن وراء الأكمة ما وراءها كما يقال، لأن هذه المرحلة هي الأصعب على الإطلاق لأنها تستلزم منك معنويات عالية وصبرا شديدا.
ستجد أن بعض الأمور التي كنت تظنها تشتغل بشكل جيد ليست كما توهمت، لأنك جربتها بشكل أحادي، أما الآن بعد أن شملتها التجربة العامة فقد بان عوارها وما كان لها أن تكون كما هي عليه الآن، إذن عليك إعادة صياغتها بالشكل المناسب لتتناعم مع باقي عمليات البرنامج.
ستجد أخطاء برمجية، ستجد أغلاط في الحساب، ستجد مشاكل في تنسيق التواريخ والعملات، ستجد مشاكل في الترميز واللغات والموارد من صور وملفات صوتية، ستجد بطء في بعض الشاشات، ستجد تـقارير بشعة كانت تظهر جميلة لأنك جربت عليها عنصرين أو ثلاثة فلما جاوزات ثلاث صفحات دخل المحتوى في الفوتر، ستجد وستجد...
لذلك عليك أن تضبط أعصابك وبشدة، وأن تنظر إلى الأمر بشكل طبيعي، فقد أديت ما عليك بأمانة لكنك أغفلت هذه الأمور لسبب أو لآخر.
قم بإصلاح الأخطاء وإجراء التعديلات المناسبة، قد تبدو لك بعض التحسينات بفعل تراكم التجارب فأنجزها دون تردد.
ثم أعد التجربة بشكل جنوني إلى أن تظهر أخطاء أخرى، وهكذا حتى تخلص برنامجك من كل الشوائب والنقائص.
أما هذه المرحلة فهي الخطوة التي لم يقم بها الطاغية فرعون فاستكبر على اختبار دعوة موسى وهارون عليهما السلام، ولو أنه استمع بخضوع لهما، وجرب حلاوة الإيمان لما دفعه الكبر إلى أن أغرقه في اليم ليكون عبرة لكل مجرم أثيم.

المرحلة السابعة: توثيق المشروع

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

هناك 15 تعليقًا:

  1. السلام عليك و رحمة الله تعالى و بركاته
    جزاك الله خيرا عنا
    موضوع جميل و رائع و تنسيق في محتوى الكلمات و شرح وافي
    اريد ان استفسر في شيء
    اذا امكن فهناك درسان لم يجد عدد من المهتمين في مجال البرمجة سبيلا لهما مع ان اليوتيوب مليء بالفيديوهات العديمة الفائدة
    1-لديك برنامج صنعته بالفيجوال سي شارب و قاعدة البيانات sql server
    ولدينا 5 اجهزة متصلة في شبكة محلية بالكابل rj45
    في الجهاز الاول يوجد البرنامج الرئيسي و قاعدة البيانات sql server
    نريد من باقي الاجهزة ان عندما يفتحوا البرنامج يتصلوا بقاعدة البيانات الموجودة على الحهاز الاول و إذا أضيفت سجلات أو حذفت يقوم البرنامج بتحديت البيانات من الاجهزة الاخرى الى الجهاز الرئيسي .
    هذا في شبكة محلية و كيف يمكن لنا ان نقوم بهاته العملية ممع شبكة خارجية.
    2-التحديث التلقائي للبرنامج فمثلا انا صنعت برنامج لعميل و العميل اصبح يشتغل به و بعد شهر اراد هذا ان يضيف شيء ما في البرنامج مفهوم
    وهو في مدينة و انا في مدينة
    وانا احتفظ ب code source للبرنامج و اضفت ما يريده العميل
    فكيف يتوصل بالتحديت التلقائي للبرنامج واتمنى ان لا اكون اطلت في الكلمات و تقبل مني فائق الاحترام و التقدير و دمت في رعاية الله
    و السلام عليكم و رحمة الله تعالى و بركاته
    أخوك مصطفى عاطيف

    ردحذف
  2. جممميل شكرا ابعدت والعنوان روعه ههههههههههههههههههههههههههههههههههه

    ردحذف
  3. بارك الله فيك وزادك علما . وجزاك الله عنا خير الجزاء

    ردحذف
  4. بارك الله فيك و في والديك جزاك الله خيرا

    ردحذف
  5. جزاكم الله خيرا ونفع بكم

    ردحذف
  6. جزاك الله خيرا .. والله أني أغبطك فقد جمعت العلم والخلق .. أسأل الله ان تكون من إخواني الخاصة

    ردحذف
  7. زادك الله من فضله ورفع قدرك

    ردحذف
  8. رفع الله قدرك ، وجعله صدقة جارية في ميزانك

    ردحذف
  9. رفع الله قدرك ، وجعله صدقة جارية في ميزانك

    ردحذف
  10. موضوع جميل جدا اخى الكريم بارك الله فيك واتمنى من الله ان يعلى قدرك

    ردحذف
  11. كل يوم عن يوم يزيد حبي واعجابي بك اخي . موضوعك اليوم يمثل الخوارزميات ولكن بطريقة مختلفة ترصد الماضي وتنمي العقل على التفكير السليم ... شكرا لك

    ردحذف
  12. اسمح لي الا اوجه الشكر و التقدير لك , بل ان اقدمهما لشخص آخر................
    الشكر و التقدير إلى من أخرجتك الى هذه الدنيا ولها من كل التقدير و الاحترام
    داعيا الله عز و جل ان يدخلها الجنة هي و امي و امهات المسلمين جميعا

    ردحذف
  13. موضوع رائع وانت اروع اخي الكريم !

    ردحذف