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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

استخدام Serial Port وتقنية AT Command لإرسال رسائل SMS بلغة سي شارب


السلام عليكم ورحمة الله وبركاته، في غضون هذا الدرس الشيق سوف نتعرف بحول الله على مفهوم Serial Port وأهميته في ربط الأجهزة الخارجية مع الحاسوب.
وسنتعرف كذلك على كيفية إعداد الربط مع GSM Modem عبر خطوات محددة، ثم بعد ذلك سنقوم بإنشاء برنامج بلغة سي شارب لإرسال رسائل SMS عبر تقنيات AT Command والكلاس SerialPort التابعة لمجال الأسماء Ports التابع بدوره لمجال الأسماء System.IO.
في الأخير سوف نستعرض معا نتيجة التطبيق عبر أخذ صورة للرسالة التي تم بعثها بواسطة التطبيق.
فرجة نافعة ودام لكم البشر والفرح !