تعتبر هذه المقالة جزء من أجزاء عديدة سنقوم بنشرها باستمرار إن شاء الله من أجل تقريب هندسة البرمجيات Software Engineering لأذهان رواد أكاديمية المبرمجين العرب.
- ويحك يا مغبون ! لماذا تضيع
وقتك في مرحلة التصميم Design؟ ألا ترى أنه لا جدوى من هذه الخزعبلات مادمت تعرف ما الذي عليك
عمله؟
فقط قم بفتح بيئة التطوير
وابدأ في كتابة الأكواد التي تروج في ذهنك وسترى أنك ستنجز البرنامج دون تحليل أو
صداع رأس.
رفع المبرمج اللبيب رأسه ثم
رد بهدوء:
- لا تستعجل يا صديقي، وأمهلنا
نخبرك اليقين.
ثم تابع بنفس الهدوء:
التخطيط أو التحليل أو
التصميم لا يعني تحديدا تصميم الشاشات والواجهات الرسومية GUI
أو كتابة أكواد تدور في خلدك كما تتصور، وإنما يعني كذلك
التصميم الوظيفي والعملي، بمعنى تحديد طريقة التعامل مع البرنامج واختيار أفضل
السبل والطرق لإنجازه على أحسن وجه، إذن فالتصميم يجمع بين الشكل والوظيفة appearance
and functionality
تصور
معي بناء منزل من دون تصميم، أو تركيب أجزاء سيارة دون مخطط، أو تجميع جهاز موزع إلى قطع دون دليل تجميع، فكذلك يا صاحبي شأن
التحليل، فهو ذلك التصور السليم الذي ستسير وفقه حتى يتم إنشاء البرنامج بالشكل الذي
ترتضيه ويرضي العميل، أما أن تأتي وتبدأ إنتاج البرنامج مباشرة فذلك أشبه بتجميع
قطع لعبة puzzle
لم تشاهد صورتها الأصلية، فنسبة الفشل إذن كبيرة جدا.
عليك بالتحليل، فالبرمجة بلا تحليل، كالإعلام العربي بلا تضليل...
واعلم أن مجرد تصور الأكواد في ذهنك هو جزء من مرحلة التصميم، لكن
شروعك في التكويد مباشرة خطأ جسيم وسوء تقدير، لأنك تعمل عملين مهمين بالتوازي: التحليل والتكويد، وهذا
سيتسبب في بطء عملية الإنتاج ناهيك عن ضياع جزء غير يسير من تصورك العام للبرنامج،
وبالتالي ستقوم بإنتاج برنامج شائه سيصدم العميل، وسيجعلك
تشك في مداركك البرمجية.
أضف
إلى ذلك أن برنامجك سيفتقد إلى العديد من المزايا والتحسينات optimizations، التي قد لا تكتشفها لأنك بدأت
التكويد مباشرة، في حين لو تريثت قليلا، ستظهر لك العديد من الإضافات الرائعة التي
يمكنك زيادتها إلى برنامجك، إضافة إلى العديد من الأفكار التي قد تفيدك قبل بدء عملية التكويد وتوفر عليك الكثير من
الوقت.
غياب
التحليل قبل مرحلة التكويد، أو الاعتماد على تحليل سيء Bad
Design قد يتسبب لك في مجموعة من الخسارات أبرزها:
- ضياع
الوقت: التحليل السيء سيدفعك باستمرار إلى
العودة إلى نقاط تجاوزتها بغرض التعديل أو الاستغناء على أجزاء من الكود، لأن
برمجة الأنظمة تكون متسلسلة وكل جزء مرتبط بغيره، وأي خطأ منهجي أو نقص في
التحليل قد يستنزف الكثير من وقتك في أمور أنجزتها وستجد نفسك مضطرا إلى
إعادة إنجازها لأنك أقمتها على غير وجهها.
- ضياع
الجودة: بما أن برنامجك قائم على تحليل سيء
أو قائم دون تحليل، فكن على يقين أنه سيكون رديئا بجميع المواصفات: شكلا
ووظيفة، ولن يرتاح المستخدم النهائي إليه، بل قد لا يستطيع فهمه فضلا عن أن
يتعامل معه.
- ضياع
المال: لأنك إن
أنشأت برنامجا بتحليل سيء فكن على يقين أنه سيكون مليئا بالأخطاء التي قد
تعوق اشتغاله بشكل صحيح مما يدفع العميل إلى رفع تقارير الخطأ إليك باستمرار، والتي ستستنزف وقتك وتضيع عليك فرصة الاشتغال على برامج
أخرى لجلب العائد المالي، بل وقد يؤثر التحليل السيء على عملية بيع البرنامج
بحيث لن تكون طلبات له بسبب سوء اشتغاله.
- ضياع
السمعة: إن كانت لديك
مؤسسة أو مكتب وقمت بإنتاج برنامج يفتقد إلى التحليل السليم فكن على يقين أن
سمعتك في السوق ستهوي إلى أقصى المنحدرات وقد رأيت بعيني كيف خسرت بعض
الشركات بسبب كثرة شكاوي العملاء ومنهم من يشهر عيوب البرنامج بل وقد يطعن في
الشركة عامة.
- ضياع
الثقة في النفس:
إن كان لديك فريق برمجي ووزعت العمل عليهم دون تحليل وفي كل مرة تقول لهم:
لقد أخطأنا في كذا وكذا، والتحليل ينقصه كذا وكذا، وتعالوا بنا نعود إلى نقطة
كذا وكذا، فكن على يقين أن ثقة الفريق ستهتز، ومزاجهم سيتم تكديره بكثرة
إعادة نفس العمل جراء سوء التحليل.
أما
إن كنت تشتغل على البرنامج بمفردك، فقد تضجر وتجزع بسبب كثرة الرجوع إلى نقاط
سابقة، وصدقني قد تفكر في التوقف عن إكمال البرنامج، وكله بسبب عنادك وسخريتك من
مرحلة التخطيط.
جزاك الله خير الجزاء كفيت ووفيت
ردحذفشكرا
مرحبا بك أخي الحبيب عبد اللطيف، نورتنا بمرورك.
حذفشكرا لك .......... انا بدات تعلم البرمجة حديثا ولو اجد احسن من موقعك انطلق منه
ردحذفبارك الله فيك أخي الحبيب، شهادتكم فخر لنا.
حذفهذه مشكلة أكثر المبرمجين , يبدأ مباشرة بكتابة الكود والنتيجة برنامج فاشل أو غير مكتمل أساساً! شكراً لك أستاذنا خالد
ردحذفتماما أخي خالد، لابد من المرور بمرحلة التخطيط لضمان إكمال البرنامج على الوجه السليم.
حذفمقال جميل, و لكن السؤال بعد التحليل ؟ كيف أكتب مطلبي من الأكواد؟
ردحذفلأقل ما أفعل أنا بكل صراحة و ما أعجز عنه؟
1-أحدد فكرة البرنامج والهدف منه و مدخلاته و مخرجاته.
2-أحدد الفائدة الممكنة من مخرجاته أو توسيعها فيما بعد.
3-أبدأ بـ SQL و أكتب الجداول جميعها و بشكل متمكن.
4- أذهب إلى C# و أبدأ بصنع واجهة البرنامج وباقي الفورمات حسب ما حددت سابقا من الإدخالات و الإخراجات.
5-أبدأ بالتكويد وكن هنا أحيانا يصعب عليي غالبا برمجة أفكاري و طلباتي إلى لغة البرمجة, ما الحل؟
شكرا
ammar harfoush
حياك الله أخي عمار، سؤالك دقيق جدا، وأجوبته إن شاء الله سنبثها في الأجزاء القادمة من هذه السلسلة المكتوبة.
حذفشكرا أخي خالد علي الإسهاب في هذه النقطة الهامة..
ردحذف*بما أن معظم البرامج في العالم العربي مرتبطة بقواعد بيانات فقاعدة بيانات البرنامج مهمة جدا في التركيز علي تحليلها جيدا.
*أيضا نحتاج إلي ربط بين كيفية إستخدام البرمجة الشيئية OOP و خطوات تحليل كيفية تكويد البرنامج بمعني تحديد الـ Classes و الـ Methodsالخاصة بها و ربط مجموعة الـ Classes بمجموعة الوظائف Methods ، لأننا نتعلم إستخدام الـ OOP دون تعلم كيفية إستخدامها في مرحلة التحليل المنطقي التي يترتب عليها رسم الـ UML لكل مجموعات البرمجة و بدء كتابة الأكواد. فا لو أمكن عمل محاضرة فيديو لشرح هذه النقطة.
مع تمنياتي لك بدوام التوفيق ...
كلام جميل جدا بارك الله فيك، وبالفعل هذه هي الحلقة المفقودة في المناهج التعليمية العربية: الربط بين النظري والتطبيقي.
حذفأسعدني مرورك.
كلام جميل وفي الصميم إذا لاقيمة للبرمحجة والتصميم من دون تحليل
ردحذفتماما أخي الفاضل سياف، غياب التحليل يعني الضياع بين الأخطاء المنهجية.
حذفشكرا على المعلومات القيمة, لكن كيف يكون التخطيط وماهي مراحله ,ارجو ان يكون هناك شرح ومثال واضح يبسط كل ذلك,واتمنى لكم المزيد من التفوق والنجاح
ردحذفهذا ما سنتناوله في المقالات القادمة إن شاء الله إذ سنعتمد على لغة UML كلغة قوية لتحليل النظم.
حذفأزال المؤلف هذا التعليق.
ردحذفاخي خالد اريد منك جزاك الله خيرا معرفة نوعية اللغة اواللغات المستعملة في متل هده البرامج
حذفhttps://www.youtube.com/watch?v=N9mDp1KJg5Q
جزاك الله خيرا اخ خالد ..............وزادك الله علوا في الدين والدنيا
ردحذفآمين اللهم آمين، ولكم بالمثل أخي الفاضل عبد الغني.
حذفجزيت خيرا اخى الفاضل
ردحذفولكن الوقوع فى الخطأ وارد دائماً حتى لو كان التحليل دقيق
وبالفعل كلامك صحيح
والله المسهل والمعين
حفظك الله ورعاك أخي أحمد
حذفكل التحية و الاحترام و التقدير
ردحذفنحن بانتظار كتابك علي احر من الجمر
اعانك الله عليه و سدد خطاك
حياك الله أخي الفاضل أحمد وحيى الله أهلنا الأشراف في غزة الكرامة.
حذفجزاك الله كل الخير والسعادة في دنياك واخراك ونساله ان يمن علينا وعليك بالمزيد
ردحذفشكرأ لك اخي خالد اتمنى الاستمرار في هندسة البرمجيات "Software Engineering"
ردحذفكيف اقوم بتحليل البرنامج؟؟؟؟؟؟
ردحذفشكراّ على هذا الموضوع الجميل والملهم
حذفمشكور
ردحذفومزيد من التقدم
اسأل الله لك التوفيق والسداد ... وسوف اتواصل معك قريبا اخي خالد
ردحذفاين الدرس 62 من مشروع إدارة المبيعات بلغة سي شارب و SQL Server
ردحذفالسلام عليكم
ردحذفأخي السعداني أرجو من مقامكم السامي أن تشرح لي بإختصار ما هو الفرق بين C++ و لغة الفيجوال بيسيك
و ما هو SQL
جازاك الله خيرا
شكرا لك على الموضوع نفعني كثيرا جزاك الله خير جزاء
ردحذفسلام أخي سعيد.جزاك الله خيرا فقد استفدت من منشوراتك كثيرا.أخي سعيد أنا مهووس بالبرمجة واريد صقل معارفي في هذا المجال كما أود أن أحصل على شهادة مهندس في هدا الميدان ولو من مدرسة خصوصية فبماذا تنصحني يا أخي سعيد وبأي مدرسة؟علما يا أخي أني مدرس رياضيات بالسلك الثانوي الاعدادي عمومي.واشتغل بمدينة الداخلة.واريدك يا أخي أن تنير طريقي فعندي رغبة جامحة ولدي شغف واستعداد كبير من اجل الحصول على هذه الشهادة وشكرا وبارك الله في علمك
ردحذفجزاك الله خير الجزاء كفيت ووفيت
ردحذفشكرا
بارك اللة فيك اخ خالد
ردحذفممتاز جدا
ردحذف