المستوى: مبتدئ
يتكون هذا الموضوع من أجزاء عديدة وهذا الجزء الأول منها.
برمجة الكائنات هو علم يهتم بمحاكات الكائنات الموجودة وبرمجتها على الحاسوب، وبهذا نقوم بتكوين عالم برمجي يختص بنطاق معين كالمكتبة مثلا، فمن أجل تكوين مكتبة برمجية قد نحتاج لتصميم كائنات مكتبية مثل كتاب وقائمة ورف، بل وأيضا كائنات ذات عوالم أخرى بَيْدَ أنها قد تتعلق بالمكتبة من جهة أو من أخرى كتلميذ ومدرس.
من أجل هذا، نحتاج للتفكير قبل البدء، التفكير في الكائنات التي سنحتاجها، في خصائصها ووظائفها والعلاقات فيما بينها، وهذا لا يكون سهلا لأن صناعة كون برمجي متماسك ومنظم يتطلب تحليلا وتصميما مُرَكزا قبل البدء العبثي في التكوين والبرمجة.
هذا الموضوع يضم معلومات من أجل اكتساب مهارات التحليل والتصميم للأكوان البرمجية، وهذا الجزء الأول هو تمهيد وتحفيز لما يليه من الأجزاء.
1. قبل البدء
علم الحاسوب هو من العلوم الغربية، لم نطوره نحن العرب ولا يد لنا فيه إلا من بعيد، لهذا فإنه ببحتك عن موضوع علمي للحاسوب، في ويكيبيديا أو غيرها، قد ترى مصطلحات غير متناسقة وصعبة الفهم بل وغير عملية، هذا ليس نقص في لغتنا بل هو فقط نتيجة الترجمة الحرفية للمصطلحات العلمية الغربية، حيث قد يترجمها أشخاص لا صلة لهم بالمجال، أو لا صلة لهم باللغة، أقول أنه لا عيب في تغيير مصطلح غربي ما لتسهيل فهمه، وهذا ما أفعله في المواضيع، إذ أبدل الجهد في اختيار المصطلحات واستعمال المعبرة منها والعملية، ولقتل هذا التضارب في المصطلحات يجب تكوين اتحاد عربي لعلوم الحاسوب ينشر موقعا به جميع المصطلحات الحاسوبية المختارة بعناية.
2. التحليل والتصميم
التحليل هو التحقيق في كل مايتطلبه مشكل ما دون البحث عن الحل، فقط تحديد المتطلبات والإحاطة بالمشكل وفهمه جيدا.
التصميم من جهة أخرى هو اقتراح حل تصميمي يتماشى والمتطلبات المحددة أثناء التحليل، لايضم التصميم برمجة بل فقط نماذج ورسوم بيانية تتكلم عن الشيء وتصفه، من أجل هذا نحتاج لمعيار عام نتبعه وهاذا المعيار يسمى لغة النمذجة الموحدة.
3. لغة النمذجة الموحدة
هي طريقة قياسية وموحدة تحدد كيفية رسم النماذج والرسوم التي تعبر عن الكون البرمجي الذي نريد صنعه، وهي تضم رسومات منها ما يختص بوصف السياق العام للكون وأخرى تصف الكائنات والعلاقات فيما بينها، ورسومات أخرى سنتعلمها لاحقا.
الان ونحن أمام مشكل ما، نعلم أنه يجب علينا البدء بالتحليل والتصميم، وأن النتائج يتم التعبير عنها بواسطة لغة النمذجة الموحدة، ولكن السؤال المحوري هو كيف؟ كيف أحلل وأصمم؟ ما الخطوات التي يجب اتباعها؟ من أين أبدء و إلى أين أنتهي؟ ماذا أفعل وماذا لا أفعل؟ سلسلة الأسئلة طويلة ولَها وُضعت مناهج عديدة يمكن إتباعها، من أشهرها المنهج المُوحَد.
4. المَنهج الموحد
عموما، منهج برمجة هو نهج نتبعه من أجل بناء وبرمجة وصيانة نظام برمجي ما، يشتهر المنهج الموحد عن باقي المناهج بنظرية التطوير بالدورات.
1.4. التطوير بالدورات
تُقَسَمُ عملية التطوير إلى دورات مدتها الزمنية قصيرة نسبيا (4 أسابيع في كل دورة مثلا)، وكل دورة تعتبر مشروعا صغيرا بداته، عند نهاية كل دورة، تكون النتيجة إصدارا جزئيا للبرنامج، قابلا للإشتغال والتنفيذ، كل دورة تتضمن أنشطة التحليل والتصميم والبرمجة والتجريب الخاصة بها.
يتمحور هذا النمط من التطوير البرمجي حول فكرة التطوير المتدرج للنظام، بحيث نقوم بتكبير وصقل النظام تدريجيا وعبر العديد من الدورات، ينمو النظام بشكل تدريجي ودوري بمرور الوقت، دورة بعد دورة، حتى يكتمل النظام ويصبح جاهزا للإصدار الكامل.
2.4. لماذا التطوير بالدورات؟
من الناس من يقوم بتحديد المتطلبات وتحليلها تُم تصميم النظام بشكل كامل، شامل ونهائي، بحيث أنه، أثناء التطوير وكتابة الأكواد، يتفادى ما أمكنه التعديل والتبديل في التصميم، وهذا المنهج جيد إلا أنه مستحيل، فكثيرا ما أدركنا احتياجنا لكائن أو علاقة أو خاصية ما أثناء البرمجة ولم نفكر فيها يوم قمنا بالتصميم، وزيادة الأشياء حسب الحاجة قد يؤثر سلبا على تماسك النظام، إذ أنه في كل زيادة أو نقصان يجب إعادة التفكير في التصميم الكلي للنظام وهذا أمر متعب يذهب بمتعة البرمجة ويجعل منها عقابا يضرب له ضربا وحسابا.
في التطوير بالدورات، في كل دورة نختار مجموعة صغيرة من المتطلبات، نصممها، نبرمجها ونجربها. ففي الدورات المبكرة من المشروع، قد تكون المتطلبات غير دقيقة، ولكننا نصقلها دورة بعد دورة، وذلك إعتمادا على تجريب الإصدارات الجزئية للنظام وكذلك اَراء المطورين والمستعملين له.
أكثر من ذلك، فعوض شق الرأس في البحث عن المتطلبات الدقيقة والتصميم الكامل والمثالي، فإن التنفيذ والتجريب الواقعي للبرنامج يعطي فكرة أوضح حول ما يجب فعله من حيث تحديد المتطلبات والتصميم. فالمستعمل تكون له فرصة ليرى إصدارا جزئيا بعينه ويقول: نعم هكذا أريده، والاَن وقد جربته، فبصراحة أريده أن يكون كذا وكذا. وهذا يكون أفضل من التعب على نظام لا يجده المستعمل عمليا بالنسبة إليه، فنحن لا نستطيع الإعتماد على تخيلات المستعمل فهي غالبا ما تكون بعيدة على ما يحتاجه هو حقا، فبإعطائه الفرصة للتجريب تصبح متطلباته أكثر واقعية ووضوحا.
5. بعض المصطلحات المتعلقة بالمنهج الموحد
1.5. فترات التطوير
تتكون دورة حياة مشروع معين من عدة دورات، ولعدم خلط الأمور، يتم تقسيم هذه الدورات إلى أربعة فترات، بحيث أن كل فترة منها تضم مجموعة دورات: فترة البدء، فترة الإعداد، فترة البناء، فترة الانتقال.
سنقوم لاحقا بعرض مثال عملي من خلاله سنستطيع فهم ماهية وأهداف كل فترة ومتى ننتقل من واحدة لأخرى.
2.5. التخصصات، الأنشطة والنواتج
في المنهج الموحد، نطلق مصطلح تخصص على مجموع الأنشطة والنواتج التي تختص بمجال معين. نسمي نشاطا كل عمل نقوم به، فكتابة الأكواد يعتبر نشاطا ورسم نموذج ما هو نشاط، ونسمي ناتجا كل ما ينتج عن نشاط معين، فسطور الأكواد ناتج، والرسوم ناتج، والوثائق والصور والكتابات كلها نواتج.
تخصصات المنهج الموحد |
6. كيف يعمل كل هذا؟
في جعبتنا خمسة مفاهيم (الدورات، الفترات، التخصصات، الأنشطة والنواتج)، نعلم أنها كلها تتعلق بالمنهج الموحد لكن كيف نعمل بها جميعا في سبيل اتباع هذا المنهج؟
التخصصات والفترات في المنهج الموحد |
يمر كل مشروع من أربع فترات (البدء، الإعداد..)، تُقسم كل فترة إلى عدة دورات (ثلاث، اربع أو بضع عشرات)، في كل دورة نعمل على عدة تخصصات (نمذجة الأعمال، المتطلبات..). فمثلا في الدورة السابعة من فترة الإعداد، نقوم بنمذجة الأعمال ثم المتطلبات والتصميم فالإنجاز والتجريب، وفي نهاية الدورة يكون لدينا برنامج جزئي قابل للتنفيذ والإشتغال، نعمل على تطويره أكثر في الدورة الثامنة من فترة الإعداد وهكذا.
7. ماذا بعد؟
كان هذا تمهيدا لما سوف يليه، ليس من الضروري فهم كل شيء بل فقط تكوين فكرة عامة، والمهم هو المتابعة وعدم التفكير في التوقف، فرغم أنه قد يحس ببعض الإرتباك والتشويش في الأمور فكل شيء سيصبح واضحا وسهلا في الأخير، وكل ما نقدمه في موضوعنا يعد من الممارسات الجيدة والمتفق عليها بحيث تحصل على أكمل تصميم وأفضل النتائج، بهذا قد يكون الشخص على اقتناع بما يقوم به ويحب عمله أكثر.
على أي ما سنتعلمه هو كالتالي:
في التدوين الموالي سنقوم بعرض مثال عملي للتحسيس بأهمية ما نقوم به، بعد ذلك سندرس فترتي البدء والإعداد حسب النموذج الموحد، هذا يتضمن كل الدورات والتخصصات المتعلقة. علما أن فترة البناء هي ببساطة البرمجة وكتابة الأكواد وسنتكلم عنها في حدود.
بصفة عامة مواضيعنا تتضمن المهارات التالية:
1. تحليل المتطلبات.
2. أساسيات تحليل وتصميم الكون البرمجي، وتحديد أدوار الكائنات.
3. تصميم الأكوان باستعمال بعض قوالب التصميم.
4. قد نتكلم عن كيفية تصميم بيئة عمل لعدم البدء في كل مرة من الصفر.
نُكمل إن شاء الله في تدوين قادم.
والله أعلم.