شرح الدرس
الوحدة 4 البرمجة
- البرمجة
- تمرين تقييمي 4.1 متابعة
- التخطيط
- التنفيذ
- ب تصميم حل برمجي لتلبية متطلبات العميل
- دورة حياة تطوير البرمجيات
- نتاج التعلم ب
- خطوة بخطوة: دورة حياة تطوير البرمجيات (SDLC) 6 خطوات
- خطوة بخطوة: دورة حياة تطوير البرمجيات (SDLC) متابعة
- خطوة بخطوة: دورة حياة تطوير البرمجيات (SDLC) متابعة
- تصميم حلول برمجية
- جمل تعريف المشكلة
- نتاج التعلم ب
- مثال عملي: كتابة جملة تعريف المشكلة باستخدام سؤال "ماذا؟"
- ميزات البرنامج
- المهام الرئيسة للبرنامج وتنسيقات الإدخال والإخراج
- نتاج التعلم ب
- الرسوم التوضيحية التخطيطية
- الجدول 4.12 مزايا وعيوب الرسوم البيانية التوضيحية
- الخوارزميات ومراحل المعالجة
- الكود الزائف
- المخططات الانسيابية (Flowcharts)
- مخططات الأحداث
- هياكل البيانات
- تخزين البيانات
- الجدول 4.13 مقارنة بين تنسيقات الملفات المختلفة المستخدمة لتخزين البيانات البسيطة
- نتاج التعلم ب
- هياكل التحكم
- التحقق من صحة البيانات
- فحص النطاق
- فحص الطول
- فحص الوجود
- تحقق من النوع
- فحص التنسيق
- رقم التحقق
- البرمجة
- التهجنة
- معالجة الأخطاء وإعداد التقارير
- البرمجة
- اختيار اللغة
- تفضيل العميل
- الملاءمة
- قابلية النقل
- قابلية الصيانة
- التوسع (Extensibility)
- الخبرة
- الوقت
- الدعم
- البرمجة
- التكلفة
- البرامج المحددة مسبقًا ومقتطفات الكود
- الأصول الجاهزة والأصلية
- ملاحظات من الآخرين
- خطة الاختبار
- القيود الفنية والتصميمية
البرمجة
الوحدة 4 البرمجة
تمرين تقييمي 4.1 متابعة
اختتم منشور مدونتك بتحليل وتقييم تأثير التفكير الحسابي في تصميم البرمجيات وجودة البرمجيات المنتجة. في أثناء كتابة منشور مدونتك، فكر بعناية في جمهورك المستهدف ومستوى معرفتهم بالبرمجة. فكر في كيفية شرح المفاهيم التقنية لجمهور قد يحتوي على كل من الخبراء والمبتدئين.
التخطيط
- ما المهمة؟ ما المطلوب مني فعله؟
- ما مدى الثقة التي أشعر بها في قدرتي على إنجاز هذه المهمة؟
- هل هناك أي جوانب قد أواجه صعوبة فيها؟
- هل أستخدم لغة مناسبة للفئة المستهدفة؟
- هل أفهم الفرق بين التحليل والتقييم؟
التنفيذ
- أعرف ما أفعله وما أريد تحقيقه.
- يمكنني تحديد أين أخطأت وتعديل تفكيري أو نهجي لإعادة نفسي إلى المسار الصحيح.
ب تصميم حل برمجي لتلبية متطلبات العميل
النقطة الأساسية لأي حل برمجي هي أنه يلبي متطلبات العميل. إذا لم تحقق ذلك بالفعل أو لم تتمكن من تحقيقه، فلا يهم مدى جاذبية الحل أو سهولة استخدامه أو فعاليته: فأنت لم تحل بالفعل مشكلة عميلك. تأكد من أنك تفهم حقًا متطلبات عميلك قبل أن تبدأ. بمجرد أن تبدأ في تصميم وتطوير الحل، يجب عليك أيضًا العودة إلى متطلبات العميل الأصلية على فترات منتظمة. سيساعدك هذا في الحفاظ على تطوير البرمجيات الخاصة بك على المسار الصحيح لتحقيق النجاح.
دورة حياة تطوير البرمجيات
تصميم حل برمجي هو عملية دورية ذات مراحل محددة بوضوح. على الرغم من وجود العديد من الإصدارات المختلفة لدورة حياة تطوير البرمجيات وتغير الأسماء، إلا أن معظم المراحل شائعة وتتبع الترتيب المنطقي نفسه. دورة حياة تطوير البرمجيات (SDLC) هي نموذج مفاهيمي. إنه يصف المراحل المستخدمة لإدارة إنشاء حل برمجي من بدايته إلى صيانته المستمرة وتقاعده النهائي أو استبداله. يتم عرض دورة حياة تطوير البرمجيات النموذجية في الشكل 4.26 في الصفحة الآتية.
المصطلح الرئيس
النموذج المفاهيمي - طريقة لتنظيم الأفكار والمفاهيم بطريقة منطقية. غالبًا ما تمثل النماذج المفاهيمية الأفكار المعنية بطريقة مرئية توضح العلاقات بينها بطريقة بسيطة يسهل فهمها.
33 الوحدة 4 البرمجة
نتاج التعلم ب
المصطلحات الرئيسة
حالة الاستخدام - قائمة بالإجراءات أو الأحداث التي تحدث بين المستخدم والبرنامج. تشمل حالات الاستخدام المحتملة التي تحدث عندما يحاول العميل سحب النقود من جهاز الصراف الآلي "رفض البطاقة" و"الرقم السري غير صحيح" و"ابتلاع البطاقة" و"صرف النقود" و"عدم توافر نقود". جدول التتبع - جدول يتتبع المدخلات والعمليات والمخرجات لكل حالة استخدام. يتضمن نتيجة متوقعة (ما يجب أن يحدث) ونتيجة فعلية (نتيجة البرنامج)، والتي يمكن مقارنتها ودراستها لتحديد النتائج غير المتوقعة.

توضح العملية الآتية خطوة بخطوة كيفية تطبيق هذه الخطوات الست في تطوير البرمجيات.
خطوة بخطوة: دورة حياة تطوير البرمجيات (SDLC) 6 خطوات
1 تقييم متطلبات مشكلة محددة يجب أن تفهم تمامًا متطلبات العميل لحل مشكلة محددة. إذا لم يكن لديك فهم واضح لما يجب تحقيقه، فسيكون من الصعب أو حتى المستحيل إنشاء حل عملي. عادةً ما يتم استخلاص متطلبات حل المشكلة من موجز العميل. عندما تكون التفاصيل غير كافية أو تكون هناك حاجة إلى توضيح، يجب عليك التحقيق لفهم ما يريد العميل تحقيقه. قد يتضمن ذلك عددًا من تقنيات التحقيق المختلفة بما في ذلك:
- الاستجواب المباشر للمستخدمين أو الموظفين حول المهام التي يؤدونها وأنماط عملهم وأي صعوبات يواجهونها في وظائفهم
- مراقبة العملية اليدوية التي تتم حوسبتها، مثل ملء نموذج استفسار العميل أو حساب تكلفة الطلب
- فحص المستندات اليدوية التي تحتاج إلى حوسبة. قد يشمل ذلك نماذج جمع البيانات مثل نماذج الطلبات والجداول الزمنية أو قوائم الأسهم والمخرجات مثل التقارير أو الرسوم البيانية.
بمجرد تحديد المتطلبات بوضوح، من الممكن تحديد ما يكون ضمن نطاق المشروع وما لا يكون ضمن النطاق. من هذا، يمكنك إنشاء مواصفات التصميم.
2 إنشاء مواصفات التصميم يجب أن تتضمن مواصفات التصميم الكاملة العناصر الآتية:
- نطاق المشروع: هذا هو ما يغطيه الحل المقترح الخاص بك ويمكن أيضًا تسميته "مجال المشكلة". يساعد تحديد نطاق المشروع مقدمًا مطور البرامج على البقاء على المسار الصحيح وتجنب "زحف الميزات" - وهذا يعني إضافة ميزات غير مطلوبة في البداية، والتي من المحتمل أن تؤخر تنفيذ الحل.
34 الوحدة 4 البرمجة
خطوة بخطوة: دورة حياة تطوير البرمجيات (SDLC) متابعة
- المدخلات: هي القيم التي يتم إدخالها في البرنامج وكيف سيتم إدخال هذه القيم (على سبيل المثال يتم إدخالها يدويًا أو تلقائيًا من قاعدة بيانات).
- المخرجات: هي المعلومات التي تم إنشاؤها بواسطة البرنامج. يجب عليك أيضًا تضمين تفاصيل حول تنسيقها وتخطيطها.
- واجهة المستخدم: هي الطريقة التي سيتفاعل بها المستخدم مع البرنامج (مثل أنظمة القوائم واستخدام لوحة المفاتيح والفأرة والتحكم الصوتي وأنظمة الألوان والتخطيط).
- العمليات والخوارزميات: تشمل العمليات الحسابية التي يتم إجراؤها من أجل توليد المخرجات المرغوبة من البيانات التي يتم إدخالها والتحقق من صحة البيانات وما إلى ذلك.
- الجدول الزمني: هذا هو الوقت الذي ستستغرقه العملية، بما في ذلك الأهداف التي يجب إنجازها خلال مدة المشروع. يجب أن تتضمن أيضًا "المعالم" المتفق عليها، وهي نقاط محددة مسبقًا في العملية التي يمكن للمطور من خلالها إثبات مدى التقدم الذي تم إحرازه.
3 تطوير كود البرنامج يجب كتابة كود البرنامج باللغة التي اخترتها، على الرغم من أن العميل قد يحتاج أحيانًا إلى لغة معينة. سيعتمد الاختيار على مواصفات التصميم والمتطلبات المحددة للحل. كما رأيت بالفعل، هناك العديد من العوامل المختلفة التي ستؤثر في اختيارك للغة البرمجة. يجب أن توفر المدخلات والمخرجات والخوارزميات وواجهة المستخدم الموثقة للمطور المطلوبة رؤية واضحة جدًا لماهية البرنامج وكيف يجب أن يعمل. ويجب على المطور أخذ مواصفات التصميم واستخدام لغة البرمجة المختارة بأكبر قدر ممكن من الكفاءة لإنشاء كود برنامج عملي، باستخدام الميزات الأكثر ملاءمة للغة المحددة. في البيئة التجارية، يتم تحقيق ذلك عادةً باستخدام خطوات منفصلة، تُعرف باسم "نقاط القصة". هذه تقسم الأجزاء المختلفة من البرنامج الذي يتم العمل عليه إلى ساعات عمل، حيث تعادل ساعة واحدة عادةً نقطة قصة واحدة. هذا يعني أن الميزات الأكثر تعقيدًا ستعادل المزيد من نقاط القصة في المائة في التخطيط وتصحيح الأخطاء والاختبار. ينتج مطورو البرامج التجارية عمومًا أساس 40/60، ما يعني أنهم يقضون 60 في المائة من وقتهم في كتابة الكود و40 في المائة في التخطيط وتصحيح الأخطاء والاختبار.
4 التنفيذ يتضمن التنفيذ:
- اختيار لغة البرمجة الأكثر ملاءمة (إذا لم يكن العميل قد اختارها بالفعل)
- اختيار بيئة التطوير - أداة (أدوات) البرنامج المستخدمة لبناء البرنامج ونظام التشغيل وأحيانًا نوع الأجهزة
- كتابة أكواد الحل من مواصفات التصميم
- تصحيح الكود للتأكد من تحديد الأخطاء البسيطة وإزالتها قبل بدء الاختبار الرسمي.
5 الاختبار يعد الاختبار عملية أساسية تضمن أن أي برنامج يلبي تمامًا متطلبات العميل ويعمل بطريقة دقيقة وموثوقة وقوية. هناك نوعان شائعان من الاختبارات: اختبار الصندوق الأبيض واختبار الصندوق الأسود.
- عادةً ما يتم إجراء اختبار المربع الأبيض بواسطة المطور الذي أنتج البرنامج. يتضمن تتبع حالات الاستخدام من خلال منطق كود البرنامج وإكمال جداول التتبع.
- يتم إجراء اختبار الصندوق الأسود بواسطة مستخدم (أو مختبر داخلي ليس لديه وصول إلى الكود) وفقًا لحالة الاستخدام. لا يتعرض المستخدم لكود البرنامج ولا يحتاج إلى معرفة كيفية عمل البرنامج. أنت، بصفتك مطورًا، تهتم فقط بالنتيجة التي يحصل عليها المستخدم.
يتيح الاختبار تحسين البرنامج (جعله أكثر دقة أو تحديدًا) وتحسينه (جعله يعمل بشكل أسرع أو أكثر كفاءة).
35 الوحدة 4 البرمجة
خطوة بخطوة: دورة حياة تطوير البرمجيات (SDLC) متابعة
6 الصيانة
- الصيانة هي عملية مستمرة، ويؤدي ذلك إلى تصحيح كود البرنامج بناءً على الاختبار و/أو ملاحظات المستخدم.
- قد تعمل الصيانة على تكييف الحل الأصلي لتلبية احتياجات العملاء المتغيرة. على سبيل المثال، إذا كان العميل يتطلب في الأصل المعلومات المالية بعملة واحدة، وأصبح الآن يحتاج إليها بعدة عملات، فسيكون ذلك تعديلًا على الكود الحالي.
- بدلاً من ذلك، قد تعمل الصيانة على توسيع الحل من خلال تضمين وظائف إضافية. على سبيل المثال، إذا طلب العميل خيارات قائمة جديدة تمامًا لتلبية متطلبات جديدة تمامًا، فسيكون هذا توسعًا لتضمين وظائف إضافية.
المهارات
- مهارات التحليل واتخاذ القرار
- التواصل الكتابي الرسمي
- اختيار أدوات وأنظمة تكنولوجيا المعلومات المناسبة لتطوير حلول البرمجيات
نصائح
تذكر أنه قد يكون هناك أكثر من حل واحد يجب مراعاته لمشكلة واحدة.
القيود - القيود المفروضة على شيء ما. تشمل القيود في سياق البرمجة ميزات لغات البرمجة والمهارات التقنية للمطور والمنصات التي تدعمها لغة البرمجة وما إلى ذلك. السياق - الإعداد أو الظروف المحيطة بشيء ما. في تصميم حلول برمجية، سيتضمن السياق تفاصيل مثل الخلفية التاريخية للمشكلة.
- قد تتكرر العملية الكاملة لدورة حياة تطوير البرمجيات مرارًا وتكرارًا.
- أداء أي حل سيراجع في النهاية بمرور الوقت مع تغير احتياجات العميل أو ظروف العمل.
- يمكن أن تؤدي الصيانة النشطة إلى إطالة عمر البرنامج، ولكن في النهاية، ستتم إعادة تنفيذ دورة حياة البرنامج وسيتعين تقييم متطلبات الحل المحسن الجديد.
تصميم حلول برمجية
- تصميم أو مواصفات حلول البرمجيات هو وثيقة رسمية يتم إنجازها من قبل المطورين (بمساهمة من العملاء و/أو المستخدمين المستهدفين) قبل بدء البرمجة الفعلية.
- يجب أن يتضمن تحليلاً كاملاً لعملية حل المشكلة التي تم اتباعها وجميع الحلول المقترحة.
- إذا كُتبت بشكل صحيح، يجب أن توفر تفاصيل كافية للمبرمج الذي ليس لديه دراية بالمشكلة لبناء التطبيق المطلوب باستخدام الحل المفضل.
جمل تعريف المشكلة
جمل تعريف المشكلة هي عنصر أساسي في تصميم حلول البرمجيات. إنها أوصاف واضحة للمشكلات الموجودة، والأشخاص المتأثرين بالمشكلات والقيود التي قد تؤثر في الحل. عادةً ما يتم إنشاؤها في أثناء التحقيق الأولي والمناقشة مع العملاء من خلال طرح الأسئلة الخمسة: من، ماذا، متى، أين ولماذا؟ فهي تساعد المطورين على فهم المشكلة ونطاقها وقيودها. وبهذا تساعد المطورين على التركيز عند حل المشكلة. أسئلة 'ماذا؟' و'متى؟' ستساعدك في إنشاء ملخص كامل للمشكلة التي يجب حلها وتعقيدها، بالإضافة إلى فوائد وقيود أي حلول مقترحة.
- ما سياق هذه المشكلة؟
- ما طبيعة المشكلة التي يجب حلها؟
- ما حدود أو نطاق المشكلة؟
- ما المتطلبات التي يحددها العميل؟
- ما فوائد حل هذه المشكلة؟
- ما تأثير عدم حل هذه المشكلة؟
- ما الغرض من الحل المطلوب؟
- ما تعقيدات المشكلة التي نحتاج إلى حلها؟
- ما طبيعة التفاعل بين المستخدمين المستهدفين والحل؟
- ما مستوى التعاون الذي سيحصل عليه مصممو البرمجيات من المستخدمين والعملاء الحاليين عند حل المشكلة؟
36 الوحدة 4 البرمجة
نتاج التعلم ب
- ما الموارد المتاحة لحل هذه المشكلة؟
- متى تحدث المشكلة؟ هل يمكن عزل توقيتها؟ هل هناك نمط يمكن تعرفه؟
- متى يجب تشغيل هذا الحل؟
- أين تحدث المشكلة؟ هل يمكن عزل موقعها؟ هل هناك نمط يمكن تعرفه؟
- أين الحل الذي سيتم نشره؟
ستساعد الأسئلة من نوع 'من؟' في تحديد المستخدمين المستهدفين لحل برمجي وطبيعة التفاعل الذي سيكون لدى المستخدمين مع الحل البرمجي.
- من المتأثر بهذه المشكلة؟
- من يريد حل هذه المشكلة؟
ستساعد الأسئلة من نوع 'لماذا؟' في تحديد فوائد الحل البرمجي بشكل أكبر.
- لماذا تحدث هذه المشكلة؟ هل يمكن عزل سببها؟ هل هناك نمط يمكن تعرفه؟
- لماذا يجب حل هذه المشكلة؟
مثال عملي: كتابة جملة تعريف المشكلة باستخدام سؤال "ماذا؟"
تاجر مواد بناء لديه مشكلة في تكامل أنظمة المتجر والأنظمة عبر الإنترنت. يسأل المطور العميل، "ما طبيعة المشكلة التي يجب حلها؟" هذه هي جملة تعريف المشكلة الذي ينشئه المطور بناءً على إجابات العميل على سؤال "ماذا؟" سؤال: قد يكون لدى العميل حسابان تجاريان مختلفان يمكنه استخدامهما داخل فرع المتجر لشراء البضائع على الائتمان. ومع ذلك، عندما يزور متجرنا على الإنترنت، يمكنه فقط استخدام النوع الجديد من الحسابات - ببساطة لا يتم تعرف أنواع الحسابات القديمة وقد تلقينا شكاوى في هذا الصدد. نحتاج إلى السماح للعميل بتحديد الحساب الذي يريد استخدامه لشراء بضائعنا عن طريق اختيار الحساب الصحيح من القائمة المتاحة على الشاشة. جملة تعريف المشكلة هذه واضحة ومختصرة، وتصف المشكلة الدقيقة التي يجب حلها باستخدام المصطلحات الصحيحة لقطاع العميل.
ميزات البرنامج
يعد وصف ميزات الحل المقترح جزءًا أساسيًا من تصميم الحل. يتضمن ذلك مهام البرنامج الرئيسة، وأي تخزين مطلوب للبيانات والمدخلات والمخرجات المطلوبة.
المهام الرئيسة للبرنامج وتنسيقات الإدخال والإخراج
عند النظر في قيم الإدخال والإخراج المطلوبة، يجب عليك أيضًا التفكير في التنسيقات المطلوبة. على سبيل المثال، تم إطلاع أحد المطورين على إنشاء برنامج بسيط للتحويل بين ثلاث عملات اعتمادًا على اختيار
37 الوحدة 4 البرمجة
نتاج التعلم ب
- المستخدم.
- على سبيل المثال أي ثلاث عملات من الروبية أو اليورو أو الدرهم أو البات أو الليرة أو الريال أو الدينار.
- قام المطور بإنشاء تمثيل مرئي للمدخلات والمخرجات والعمليات وتخزين البيانات، كما هو موضح في الشكل 4.27 (العملات النموذجية هنا هي الروبية واليورو والدينار).
| المدخل المطلوب | العمليات المطلوبة | |||
|---|---|---|---|---|
| قيمة الروبية (9.99، رقم عشري بخانتين عشريتين) | اختيار العملة المستهدفة | التحقق من صحة الاختيار إلى D أو E | تحويل الروبية إلى الدرهم أو اليورو، بحسب اختيار المستخدم | مخرج المبلغ المحول |
| المخرج المطلوب | تخزين البيانات المطلوب |
|---|---|
| قيمة العملة المحولة إما إلى الدرهم أو اليورو بحسب اختيار المستخدم (9.99، رقم عشري بخانتين عشريتين) | لا يوجد |
عند تحديد التنسيقات، من المعتاد استخدام 9 لرقم عددي وX لرمز أبجدي وX لأي رمز.

قام المطور بتحديد جميع المدخلات والمخرجات وذكر صيغها، خاصة عدد الأماكن العشرية التي يجب استخدامها. كما قام بتضمين تفاصيل أي تحقق مطلوب.
الرسوم التوضيحية التخطيطية
سيحتوي تصميم الحل بالتأكيد على عدد من المخططات المختلفة، أو الرسوم التوضيحية التخطيطية. هناك ثلاثة أنواع شائعة يمكن تضمينها، يركز كل منها على جوانب من تجربة المستخدم (UX). وهي كالآتي:
- تخطيطات الشاشة، توضح كيفية تنظيم العناصر على "الصفحة" الافتراضية
- واجهات المستخدم، والتي توضح كيفية تفاعل المستخدم مع التطبيق
- عناصر التنقل، توضح كيف سينتقل المستخدم بين "الصفحات" الافتراضية المختلفة.
يمكن رسم هذه الرسوم التوضيحية (انظر الشكل 4.28) على الورق أو إنشاؤها إلكترونيًا باستخدام أدوات تصميم متخصصة، والعديد منها متاح عبر الإنترنت.

تجربة المستخدم (UX) - مقياس لكيفية تفاعل المستخدم مع البرنامج ورضاه عند استخدامه.
38 الوحدة 4 البرمجة
الجدول 4.12 مزايا وعيوب الرسوم البيانية التوضيحية
| المزايا | العيوب |
|---|---|
| يمكن تسريع عملية الإنشاء عندما يتم إنشاء الرسوم التوضيحية باستخدام أدوات التصميم أو الشراء الإلكترونية. | يمكن أن يكون مستهلكًا للوقت إذا كان يجب تكرارها من خلال عدد من مراجعات التصميم. |
| يمكن أن تكون سهلة وسريعة التغيير، خاصة إذا تم إنشاؤها إلكترونيًا. | يمكن أن يكون من الصعب أن يكون من الصعب تكرار المظهر على الشاشة بدقة. |
| السماح للمصمم بإرشاد المستخدمين المحتملين عبر مسار التطبيق. قد يساعد ذلك في تحديد مواضع الارتباك أو الصعوبة في أثناء تحسين التصميم. | |
| السماح للعملاء بمشاهدة النماذج الأولية للتجربة المقصودة للمستخدم قبل بدء كتابة الكود. تحسين مشاركة العملاء من خلال إشراكهم في عملية التصميم. هذا يعني أن التطبيق النهائي لديه أفضل فرصة ممكنة لتلبية متطلباتهم بالكامل. | |
| السماح للمصممين بتجربة أفكار مختلفة والحصول على تعليقات حول أفكارهم. | |
| توفير وقت التطوير، حيث لا يضطر المطورون إلى تعديل كود البرنامج بشكل متكرر، خاصة وأن التعديلات قد تؤدي إلى حدوث أخطاء. |
الخوارزميات ومراحل المعالجة
الخوارزمية هي مجموعة من التعليمات التي يتم اتباعها لحل مشكلة أو تنفيذ مرحلة معينة من المعالجة في الحل الشامل، مثل التحقق من صحة مدخلات المستخدم. قد تتكون تطبيقات البرامج من العديد من الخوارزميات المختلفة، التي يتم تنفيذها من قبل المبرمج باستخدام مزيج من تركيبات البرمجة والوظائف والإجراءات المختلفة. لأنها قد تكون صعبة في التواصل، يمكن تمثيل الخوارزميات باستخدام عدد من أدوات التصميم المختلفة، بعضها يقدم توضيحًا بيانيًا. الأدوات الثلاثة الأكثر شيوعًا هي الكود الزائف والمخططات الانسيابية ومخططات الأحداث أو الجداول.
الكود الزائف
- الكود الوهمي هو مخطط غير رسمي للخوارزمية، ويُعبر عنه بلغة طبيعية. يمكن تحويله إلى لغة البرمجة المستهدفة.
- على سبيل المثال، يوضح الشكل 4.29 عملية بسيطة من عمر مستخدم يتراوح بين 18 و60. يجب ألا يحتوي الكود الوهمي على أي أوامر أو بناء جملة للغات البرمجة.
``text Do Ask user for their age Input user's age If age is less than 18 or greater than 60 then Output age error Else Output age accepted Endif While age is not between 18 and 60. ``
موضوعات ذات صلة
تمت مناقشة تخطيطات الشاشة والتنقل لتطبيقات الأجهزة المحمولة (تقنية تسمى التخطيط الشبكي) في الوحدة 7: تطوير تطبيقات الأجهزة المحمولة.
تمت مناقشة الخوارزميات المستخدمة لتصميم تطبيقات الأجهزة المحمولة في الوحدة 7: تطوير تطبيقات الأجهزة المحمولة.

39 الوحدة 4 البرمجة
المخططات الانسيابية (Flowcharts)
المخطط الانسيابي هو تمثيل بياني لتمثيل للخوارزمية، يوضح إجراءاتها ومنطقها من خلال مجموعة من الرموز الموحدة. يعرض الشكل 4.30 الخوارزمية نفسها الواردة في الشكل 4.29 في الصفحة السابقة، ولكن يتم تمثيلها في مخطط انسيابي.

مخططات الأحداث
مخططات الأحداث أو جداول الأحداث تُستخدم لتسجيل الأحداث في جدول بسيط. لكل حدث، يتم تضمين التفاصيل الآتية في الجدول:
- اسم الحاوية التي يوجد بها الكائن المستجيب (مثل Form1)
- اسم الكائن الذي يستجيب للحدث (مثل Button1)
- الحدث الذي يتم الرد عليه (مثل النقر)
- معالج الحدث الذي يتم تشغيله بواسطة المراقب (مثل ()button1Action).
يمكن أن تعمل جداول الأحداث كقائمة تحقق مفيدة عند بناء مكونات واجهة المستخدم الرسومية للتطبيق.
بحث
على الرغم من أنه يمكن إنشاء المخططات الانسيابية يدويًا، إلا أن هناك العديد من الأدوات المجانية عبر الإنترنت التي تدعم إنشائها بطريقة "السحب والإسقاط" سهلة الاستخدام.
40 الوحدة 4 البرمجة
هياكل البيانات
يجب أن يوضح أي حل برمجي الهياكل المختلفة التي يمكن استخدامها كجزء من الخوارزمية. وهي تختلف عن تخزين البيانات حيث يتم تخزين البيانات في ذاكرة الوصول العشوائي في أثناء تنفيذ التطبيق. تشمل هياكل البيانات الشائعة المصفوفات (أحادية البعد، ثنائية البعد، ثلاثية البعد، الطوابير، المكدسات والسجلات.
تخزين البيانات
تصميم أي حل برمجي يتضمن التعامل مع استمرارية وجود البيانات. يُقال إن تخزين بيانات الحاسوب في ذاكرة الوصول العشوائي (RAM) "متقلب" أو غير مستقر لأنه يُفقد عند فصل الطاقة، على سبيل المثال عند إيقاف تشغيل الحاسوب. هذا يعني أنه، بينما لا بأس من تخزين البيانات في ذاكرة الوصول العشوائي في أثناء تشغيل البرنامج، تحتاج إلى أكثر ديمومة (غير متطاير) من تخزين البيانات لتمكين البيانات من الوجود بين استخدامات البرنامج، خاصة عند إزالة الطاقة. تشمل أشكال تخزين البيانات غير المتطايرة التخزين المغناطيسي، مثل القرص الصلب، أو محرك فلاش USB. أكثر أشكال تخزين البيانات غير المتطايرة شيوعًا هو ملف البيانات. وهي خاصية مدعومة من قبل معظم لغات البرمجة. على الرغم من أن ملف البيانات يخزن البيانات المستندة من قبل البرنامج على وسائط غير متقلبة، إلا أنه لا يخزن البرنامج نفسه. يتم الاحتفاظ بهذه في ملفات منفصلة. قد توجد ملفات البيانات في العديد من التنسيقات المختلفة. تشمل الأمثلة الشائعة:
- الرمز القياسي الأمريكي لتبادل المعلومات (ASCII) أو النص
- ثنائي (حيث يتم تخزين الأرقام كقيمة ثنائية نقية وليس بوصفها أكواد رموز ASCII فردية)
- csv: قيمة مفصولة بفاصلة.
- XML (لغة الترميز القابلة للتوسع).
يوضح الجدول 4.13 كيف يمكن تحديد بيانات العميل نفسها في ASCII وCSV وXML للمقارنة.
الجدول 4.13 مقارنة بين تنسيقات الملفات المختلفة المستخدمة لتخزين البيانات البسيطة
| تنسيق ملف البيانات | مثال على تخزين البيانات | ملاحظات |
|---|---|---|
| ASCII | CustomerAcc Lastname Firstname Location 000000001 Jones Alex London 000000003 Willis Claire Swindon | يتم استخدام الصف الأول للعناوين. يتم استخدام علامة تبويب لفصل كل قيمة. يفصل سطر جديد بيانات كل عميل. |
| CSV | CustomerAcc,Lastname,Firstname,Location 000000001,Jones,Alex,London 000000003,Willis,Claire,Swindon | يتم استخدام الصف الأول للعناوين ويتم فصل كل قيمة بفاصلة. يفصل سطر جديد بيانات كل عميل. |
| XML | <?xml version="1.0"> <Customer> <CustomerAcc>000000001</CustomerAcc> <Lastname>Jones</Lastname> <Firstname>Alex</Firstname> <Location>London</Location> </Customer> <Customer> <CustomerAcc>000000003</CustomerAcc> <Lastname>Willis</Lastname> <Firstname>Claire</Firstname> <Location>Swindon</Location> </Customer> | تبدأ وثيقة XML بعلامة XML توضح إصدارها. يتم 'حطر' كل عميل أو فصله عن الآخرين باستخدام زوج من علامات البدء والنهاية للعميل. يتم وضع كل جزء من البيانات في زوج من العلامات الافتتاحية والختامية التي تصف السمة، على سبيل المثال CustomerAcc. |
41 الوحدة 4 البرمجة
نتاج التعلم ب
غالبًا ما يتأثر اختيار تنسيق ملف البيانات باستخدامه. على سبيل المثال، إذا كان من المقرر استيراد ملف بيانات إلى تطبيق جدول بيانات (مثل Microsoft Excel)، فإن CSV هو خيار شائع. يمكن استخدام ملفات البيانات لأغراض عديدة، مثل تخزين سجلات المستخدمين، أو معلومات تكوين البرنامج أو تفاصيل ترخيصه. يتطلب تصميم حل برمجي منك النظر في تخزين البيانات بالطرق الآتية:
- ما متطلبات تخزين البيانات لحل المشكلة (مثل بيانات العملاء وبيانات المنتجات)؟
- ماذا يجب أن تسمى الملفات؟
- كيف سيتم الوصول إلى البيانات (مثل القراءة، الكتابة أو الإلحاق)؟
- إذا تم تحديث البيانات أو حذفها وما إلى ذلك، كيف سيحدث ذلك؟
- ما تنسيق الملف الذي سيتم استخدامه (مثل ASCII أو CSV أو XML)؟
- أين يجب تخزين الملف (مثل اسم الوسائط والمجلد)؟
- قد تتطلب الحلول الأكثر تعقيدًا العديد من ملفات البيانات لكي تعمل بشكل صحيح.
- في بعض الحالات، خاصة عند البحث عن الوظائف وعندما تكون هناك حاجة إلى علاقات بيانات معقدة، قد يكون من الأنسب استخدام قاعدة بيانات علاقاتية بدلاً من ملفات البيانات.
هياكل التحكم
- تشمل هياكل التحكم التسلسلات والاختيارات والتكرارات.
- تحتوي خوارزمية التحقق الموضحة في الشكلين 4.29 (الصفحة 39) و4.30 (الصفحة 40) على جميع هياكل التحكم الثلاثة.
- يجب أن يظهر الحل البرمجي بوضوح نطاق هياكل التحكم المختارة وكيفية استخدامها لحل المشكلات المعقدة كجزء من خوارزمية.
- المخططات الانسيابية والكود الزائف هي تقنيات جيدة لاستخدامها في تسليط الضوء على هذه التفاصيل.
التحقق من صحة البيانات
ربما سمعت القائل جودة المخرجات هي انعكاس لجودة المدخلات. هذا يصف القاعدة العامة بأن جودة المخرجات تعتمد بشكل مباشر على جودة المدخلات. إذا كانت المدخلات غير مفهومة، فسيكون الناتج أيضًا غير مفهوم. التحقق هو العملية التي تتحقق مما إذا كانت القيمة المدخلة منطقية ومعقولة قبل معالجتها. استخدام مربعات الاختيار والأزرار وقوائم الاختيار عادةً ما يحد من خيارات الإدخال إلى مدخلات خاطئة من المستخدم، ومع ذلك، لا تزال معظم البرامج تتطلب التحقق للتعامل مع احتمال وجود مدخلات خاطئة من المستخدم، خاصة عند استخدام مدخلات لوحة المفاتيح التقليدية.
الإلحاق - الإضافة إلى نهاية شيء ما. في ملف بيانات، يعني إضافة بيانات جديدة إلى النهاية.
المصادقة لا تفحص ما إذا كانت البيانات قد تم إدخالها بدقة. هذه عملية منفصلة تسمى الاعتماد.
خطأ وقت التشغيل - مشكلة تحدث في أثناء استخدام التطبيق. تؤدي هذه الأخطاء إلى قفل التطبيق (إنهاء المستخدم وإعادته إلى قائمة الجهاز أو سطح المكتب).
من المهم جدًا بناء قواعد التحقق في الحل، للتحقق مما إذا كانت المدخلات المختلفة منطقية وتمنع النتائج غير الدقيقة، أي أخطاء وقت التشغيل أو تعطل التطبيق القاتل. هناك عدة أنواع مختلفة من التحقق.
فحص النطاق
يُقيم فحص النطاق ما إذا كانت البيانات المدخلة ضمن نطاق الحد الأدنى إلى الحد الأقصى الصالح. على سبيل المثال، إذا كان العميل مقيدًا بشراء ما يصل إلى عشرة من عنصر معين، فإن النطاق الصالح سيكون من 0 إلى 10. سيتم اعتبار الإدخال خارج هذا النطاق غير صالح. الشفرة النموذجية لبرنامج #C لإجراء هذا النوع من التحقق موضحة في الشكل 4.31 في الصفحة الآتية. بالطبع، إدخال 0 سيشير إلى أن العميل لا يحاول شراء أي عدد من العنصر. ومع ذلك، فإنه ما زال إدخالًا صالحًا منطقيًا وسيمر عبر التحقق. النطاقات لا تقتصر على المدخلات العددية. على سبيل المثال، يمكن أن تمثل الرموز 'A' إلى 'F' نطاقًا صالحًا أيضًا.
42 الوحدة 4 البرمجة
نتاج التعلم ب
```csharp const int MIN = 0; //minimum value of the range const int MAX = 10; //maximum value of the range
string strNumber; //string to temporarily store our input int qtyValue; //our inputted quantity
//perform loop while quantity is outside range do { //input quantity Console.WriteLine("Enter quantity between {0} and {1}:", MIN, MAX); strNumber = Console.ReadLine(); qtyValue = int.Parse(strNumber);
//check is quantity outside range if (qtyValue < MIN || qtyValue > MAX) { Console.WriteLine("Sorry, the quantity entered is outside the allowed range"); } } while (qtyValue < MIN || qtyValue > MAX);
Console.WriteLine("Your quantity of {0} is valid, thank you.",qtyValue);
//@TODO other things with the quantity...
//wait for keypress to continue Console.ReadKey(); ```

فحص الطول
فحص الطول يُقيم عدد الرموز التي تم إدخالها، وبعض المدخلات المعروفة جيدًا لها أطوال محدودة؛ على سبيل المثال:
- يتم تقييد رسائل خدمة الرسائل القصيرة (SMS) إلى 160 رمز
- تم تحديد التغريدات في الأصل بعدد 140 رمز (مشتقة من طول الرسائل النصية القصيرة ناقص 20 رمزًا لعنوان المستخدم الفريد).
الشكل 4.32 يظهر مقتطف #C يحد من إدخال الرموز إلى طول أقصى محدد مسبقًا بواسطة ثابت.
```csharp const int MAX = 10; //set maximum number of characters
string message; //our message to input and process int messageLength; //our message's length in characters
//perform loop while string too long! do { //input string Console.WriteLine("Enter message (max {0} characters)", MAX); message = Console.ReadLine();
messageLength = message.Length;
//check its length if (messageLength > MAX) { Console.WriteLine("Sorry, your message of {0} characters is too long.",messageLength); } } while (messageLength > MAX); ```

43 الوحدة 4 البرمجة
فحص الوجود
- فحص الوجود يُقيم ما إذا كانت البيانات موجودة - أي ما إذا كانت موجودة.
- على سبيل المثال، يجب على المستخدم إدخال ما إذا كان 'ذكر' أو 'أنثى' عند ملء نموذج تسجيل، ويضمن التحقق من التواجد أنهم لم يتركوا الإدخال فارغًا أو غير محدد.
تحقق من النوع
- فحص النوع يُقيم ما إذا كانت البيانات المدخلة من النوع الصحيح، كما في الشكل 4.33. على سبيل المثال، إذا كان على المستخدم إدخال عمره، فإن ذلك يتطلب أن يكون الإدخال عددًا صحيحًا (رقمًا كاملاً).
- إذا لم يمنع المبرمج إدخال أنواع غير صحيحة، فقد يتسبب ذلك في حدوث خطأ قاتل في أثناء وقت التشغيل.
| العمر أ | (نوع البيانات هو رمز، هذا غير صالح) |
|---|---|
| العمر 16 | (نوع البيانات هو عدد صحيح، هذا صالح) |
| العمر 16/09/01 | (نوع البيانات هو تاريخ، هذا غير صالح) |
الشكل 4.33 مثال على فحص النوع
فحص التنسيق
فحص التنسيق يُقيم ما إذا كانت البيانات المدخلة في التنسيق الصحيح، على سبيل المثال، يتحقق من أن سلسلة تحتوي على رمز منطقة بريدية في المملكة المتحدة تتبع التنسيق 'POI 3AX'.
- PO هو المنطقة، مثل GL (غلوستر) - يجب أن تكون هذه الرموز أحرف إنجليزية كبيرة، أحرف أبجدية، أو رمز أو رمزين.
- 1 هو الحي، عادة ما يكون بين 1 و20 لكل منطقة - يجب أن يبلغ هذا الرمز ما يصل إلى رقمين.
- 3 هو القطاع، وعادة ما يغطي ما يصل إلى 3000 عنوان - يجب أن يكون هذا رقمًا واحدًا.
- AX هي الوحدة، وعادة ما تغطي ما يصل إلى 15 عنوانًا - يجب أن تكون هذه الرموز أحرف إنجليزية كبيرة، أحرف أبجدية، مكونة من رمزين.
سيتم تطبيق فحص التنسيق على رمز المنطقة البريدية وفقًا لهذه القواعد، كما هو موضح في الشكل 4.34.
| الرمز البريدي؟ GL2 4TH (الرمز البريدي صالح) |
|---|
| الرمز البريدي؟ W1A 1AA (الرمز البريدي صالح) |
| الرمز البريدي؟ GL2 4TH (الرمز البريدي غير صالح؛ يمكن أن يكون القطاع رقمًا واحدًا فقط) |
الشكل 4.34 فحص التنسيق على رمز المنطقة البريدية
الرموز البريدية في الأردن تتكون من 5 أرقام، على سبيل المثال، وسط عمان هو 11110. في هذه الحالة، سيكون التحقق من التنسيق هو التأكد من أن الرمز يحتوي على خمسة أرقام ويبدأ بالرقم 1. وبالمثل، تحتوي الرموز البريدية لباكستان على خمسة أرقام، ولكن يمكن أن يكون الرقم الأول أي شيء بين 1 و9. أي رمز يبدأ بالرقم 0 سيكون غير صحيح حتى لو كان يتكون من 5 أرقام.
رقم التحقق
- عادةً ما يكون رقم التحقق عبارة عن رمز واحد (عادةً رقم) مشتق من خوارزمية يتم تنفيذها على جزء من البيانات.
- تم تصميم الخوارزمية لإنشاء هذا الرقم المحدد فقط إذا كانت البيانات (مثل سلسلة من الرموز) تحتوي على تلك الرموز بالضبط وتم ترتيبها بهذا الترتيب المحدد. أي رمز غير صحيح أو تبديل لمواضع الرموز ينتج عنه قيمة مختلفة ويفشل الاختبار.
- تُستخدم أرقام التحقق في الغالب لاكتشاف الأخطاء في القيم المدخلة مثل الباركود وأرقام الحسابات المصرفية وأكواد تسجيل البرامج.
44 نتاج التعلم ب
البرمجة
رقم الكتاب الدولي المعياري ذو العشرة أرقام (10-ISBN) يستخدم رقم تحقق. على سبيل المثال، كان لإصدار سابق من هذا الكتاب رقم 10-ISBN هو 1846909287. يتم التعامل مع الرقم الأخير (7) كرقم تحقق. يمكنك تحديد ما إذا كان هذا الرمز صحيحًا باستخدام التقنية الموضحة في البيان المرحلي الآتي. بعد يناير 2007، انتقلت الكتب إلى تنسيق رقم ISBN مكون من 13 رقمًا. الرقم الأخير في رقم ISBN المكون من 13 رقمًا هو أيضًا رقم التحقق.
خطوة بخطوة: التحقق من صحة الرقم
1 اضرب كل رقم في أوزان موضعية أصغر وأصغر، كما هو موضح في الجدول 4.14.
| الجدول 4.14 رقم التحقق للكتاب الدولي للطالب | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| الأرقام في رقم الكتاب الدولي ISBN | 7 | 8 | 2 | 9 | 0 | 9 | 6 | 4 | 8 | 1 |
| عامل الضرب | 10× | 9× | 8× | 7× | 6× | 5× | 4× | 3× | 2× | 1× |
| المجاميع الفرعية | 10 | 72 | 32 | 42 | 54 | 0 | 36 | 6 | 16 | 7 |
2 أضف المجاميع الفرعية في جميع الأعمدة:
3 قم بإجراء قسمة الباقي على 11: 275 قسمة على 11 = 25 المتبقي 0 هل المتبقي 0؟ نعم، هناك، ما يعني أن رقم ISBN صالح. أي نتيجة أخرى تعني إدخال رقم ISBN غير صحيح.
قسمة الباقي - إجراء عملية القسمة وإرجاع الباقي بدلاً من حساب الناتج العشري أو الكسري.
تحدد هذه التقنية الأرقام غير الصحيحة أو المتبادلة في الكود. في المثال المعطى في خطوة بخطوة، يُعتبر الرقم الأخير (7) هو رقم التحقق.
التهجنة
فحص الإملاء يقيم ما إذا كانت الكلمات المدخلة يمكن العثور عليها في قاموس إلكتروني - أي أنها كلمات صالحة.
معالجة الأخطاء وإعداد التقارير
العديد من لغات البرمجة الحديثة لديها ميزات بناء جملة مصممة للتعامل مع أخطاء وقت التشغيل عند حدوثها. إذا لم تكن لديهم هذه الميزات، فإن التطبيق سيتعطل أو يتجمد دون استجابة. من الأساليب الشائعة لمعالجة الأخطاء استخدام تعبير "try... throw... catch" الذي يمكن العثور عليه في العديد من اللغات، بما في ذلك ++C و#C وJava وOracle وPHP. تعمل تقنية معالجة الأخطاء هذه عن طريق محاولة تنفيذ عملية ما، والتقاط أي أخطاء محتملة و(اختياريًا) إلقاء استثناء مناسب. يمنع هذا النهج التطبيق من فشل العملية بطريقة غير محكومة، حيث أن ذلك قد يتسبب في تعطل التطبيق بالكامل. مثال على هذه التقنية في معالجة الأخطاء موضح في الشكل 4.35 في الصفحة الآتية من خلال توضيح مخاطر القسمة على الصفر. في هذا المثال، يتم وضع عملية القسمة داخل كتلة المحاولة، تحسبًا لإدخال المستخدم '0' (صفر) كرقم ثاني. تم القيام بذلك لأن قسمة رقم على صفر يمكن أن تولد خطأ خطيرًا على منصة الحاسوب وقد تؤدي إلى تعطل وقت التشغيل. باستخدام كتلة "try... catch"، يمكنك تجنب ذلك من خلال عرض الاستثناء الذي تم اكتشافه، والذي يعد في هذه الحالة خطأ "DividebyZero".
45 نتاج التعلم ب
```csharp using System; using System.Collections.Generic; using System.Linq; using using System.Text;
namespace test { class Program { static void Main(string[] args) { float num1; // first number float num2; // second number float quotient; // result of dividing first number by second string strNumber; // string to temporarily store our input
quotient = 0;
//get 1st number Console.WriteLine("Enter 1st number"); strNumber = Console.ReadLine(); num1 = float.Parse(strNumber);
//get 2nd number Console.WriteLine("Enter 2nd number"); strNumber = Console.ReadLine(); num2 = float.Parse(strNumber);
//try the division try { quotient = num1 / num2; Console.WriteLine("{0} / {1} = {2}", num1, num2, quotient); } catch (DivideByZeroException e) { //output the handled exception Console.WriteLine("Error exception caught was: {0}", e); }
//wait for key press before finishing Console.ReadKey(); } } } ```

البرمجة
الإبلاغ عن الأخطاء هو جانب مهم من تطوير البرمجيات. قد يتم توجيهها إلى المستخدم، من خلال إخباره بأنه ارتكب خطأ، أو نحو المطور، حتى يتمكن من فهم أين واجه البرنامج خطأ وطبيعة هذا الخطأ. تشمل التقنيات الشائعة للإبلاغ عن الأخطاء:
- عرض رسالة خطأ على الشاشة و/أو رمز خطأ
- إلحاق تفاصيل الخطأ بملف سجل إلكتروني يمكن عرضه بشكل منفصل
- إرسال بريد إلكتروني إلى المطور يتضمن تفاصيل الخطأ.
اختيار اللغة
هناك عدد من العوامل المختلفة التي تؤثر في اختيار لغة البرمجة لمشروع تطوير البرمجيات.
تفضيل العميل
قد يعبر عميلك عن تفضيله للغة برمجة معينة.
الملاءمة
اعتمادًا على الطبيعة التقنية لمهمة تطوير البرمجيات، قد تكون لغات البرمجة المختلفة أكثر ملاءمة في كل حالة. إذا كنت تقوم بإنشاء حل للتجارة الإلكترونية، فعادةً ما تستخدم (PHP: معالج النص التشعبي المسبق) أو تقنيات ASP.NET من Microsoft. هذا لأن هذه لغات برمجة نصية من جانب الخادم. إنهم يقدمون الوظائف والميزات والمكتبات التي تمكن من التطوير السريع لهذا النوع من الحلول. إذا كنت تقوم بإنشاء لعبة فيديو، يمكنك استخدام ('C sharp' C#) من Microsoft. تميل #C إلى أن تكون مفضلة بسبب إطار عمل .NET الواسع. XNA، الذي يمكّن من تطوير ألعاب الفيديو لنظام التشغيل Microsoft Windows وXbox وهواتف Windows المحمولة. إذا كنت تقوم بإنشاء كود برمجي للتفاعل مع الأجهزة الإلكترونية، يمكنك استخدام لغة C. تستخدم هذه الأنظمة المدمجة قدرة C على الوصول إلى الأجهزة على مستوى 'الهيكل المادي' (bare metal)، حيث يمكنها بدء وتوقيت ومراقبة الإشارات الإلكترونية بسهولة في الوقت الفعلي. لهذا السبب، يعد C خيارًا برمجيًا شائعًا للتحكم في تفاعل Raspberry Pi أو Arduino مع الأجهزة الخارجية.
يجب عليك دائما التأكد من عدم عرض معلومات التصحيح على شاشة المستخدم. هذا لأنها قد تكشف عن طريق الخطأ بيانات حساسة أو الأعمال الداخلية للبرنامج. هذا مهم بشكل خاص عند تطوير التطبيقات عبر الإنترنت من أجل منع القرصنة والاحتيال المحتمل.
تحقق من سبب قيام العميل بتحديد لغة برمجة لاستخدامها عندما يقوم بإحاطة فريق التطوير بسير العمل.
وحدة المعالجة المركزية ARM - عائلة من وحدات المعالجة المركزية ذات الكفاءة في استهلاك الطاقة التي أنشأتها شركة ARM، المعروفة سابقًا باسم آلات RISC المتقدمة، والتي تُستخدم في مجموعة متنوعة من الأجهزة الإلكترونية مثل الهواتف المحمولة والأجهزة اللوحية وأجهزة الألعاب المحمولة. مستقل بنائيًا - كود غير مصمم للتشغيل على عائلة معينة من وحدات المعالجة المركزية ولكن بدلاً من ذلك، يتم تشغيله على جهاز افتراضي.
قابلية النقل
- بعض لغات البرمجة أكثر قابلية للنقل من غيرها. وهذا يعني أن الكود البرمجي المكتوب يمكن ترجمته (تحويله إلى كود الآلة أو النظام الثنائي) ليُستخدم على العديد من وحدات المعالجة المركزية المختلفة.
- لغة C هي لغة برمجة ناضجة ولذلك يتوفر عدد لا يحصى من برامج التحويل لترجمتها، بما في ذلك ذلك تلك التي تقوم بالتحويل المتبادل من منصة أجهزة إلى أخرى.
- على سبيل المثال، يمكن لبرنامج التحويل البرمجي للغة C على منصة Microsoft Windows (معالج 64_X86) إنشاء كود آلة ليعمل على جهاز Android (وحدة المعالجة المركزية ARM)، مثل الهاتف المحمول أو الجهاز اللوحي، وغيرها. قللت Java من بعض مخاوف قابلية النقل.
- هذا لأن كود Java، عند ترجمته إلى كود بايت "مستقل بنائيًا" عن المعالج، يمكن تشغيله في الآلات الافتراضية الخاصة للغة جافا (JVM). توجد هذه الأجهزة الافتراضية ضمن مجموعة واسعة من الأجهزة، من الهواتف المحمولة إلى أجهزة التلفاز.
قابلية الصيانة
- على الرغم من أن الصيانة هي واحدة من المراحل المتأخرة في دورة حياة تطوير البرمجيات (SDLC)، إلا أنها ستؤثر في اختيار لغة البرمجة.
- من غير المحتمل أن لا تحتاج الحلول المبرمجة إلى صيانة أبدًا. الأسباب الأكثر شيوعًا للصيانة هي الأخطاء والتغييرات في احتياجات العميل أو المستخدم.
- يمكن أن تستغرق الصيانة وقتًا، لذلك من المهم أن تشجع لغة البرمجة المستهدفة على ممارسات المطور الجيدة مثل القابلية للقراءة والتوسع.
- ستؤدي هذه العوامل إلى كود برمجي أسهل في الصيانة، وهذا مفيد بشكل خاص إذا كان الشخص الذي يقوم بصيانة الحل البرمجي ليس المطور الأصلي.
47 نتاج التعلم ب
التوسع (Extensibility)
- التوسع يصف قدرة الحل على النمو (أو التوسيع) مع تغير احتياجات العميل أو المستخدمين بمرور الوقت.
- بعض الأساليب البرمجية، مثل البرمجة كائنية التوجه (OOP)، قابلة للتوسع بشكل خاص.
- يرجع هذا الأمر إلى أن طبيعتها القائمة على الفئات تعكس بشكل وثيق المواقف والعمليات والبيانات في العالم الحقيقي، ما يضمن أن يكون الكود سهل التكيف مع تغير الاحتياجات.
- لهذا السبب، فإن لغات البرمجة كائنية التوجه مثل ++C و#C تحظى بشعبية كبيرة.
الخبرة
ترتبط القدرة التقنية للمطور بمعرفته بلغة برمجة معينة. ما لم يتم توظيف مطورين خارجيين بعقود قصيرة الأجل لمدة المشروع، فإن اختيار اللغة مفيد بالخبرة المتاحة داخل الشركة. غالبًا ما يتم تشجيع المطورين على توسيع مجموعة مهاراتهم وهذا يعني أنه قد يتم إرسالهم في برامج دراسية من قبل مديريهم كجزء من تطويرهم المهني المستمر (CPD). ومع ذلك، غالبًا ما تكون الشركات مستعدة لدفع أجر لمطوري العقود للحصول على الخبرة في التقنيات الجديدة أو المطلوبة إذا لم يكن لدى مطوريها الداخليين مجموعة المهارات المطلوبة لتنفيذ المشاريع الحرجة.
الوقت
يعتمد طول الوقت المستغرق في التطوير على تعقيد المشكلة واختيار لغة البرمجة والأدوات المستخدمة لحل المشكلة. تم تصميم معظم بيئات التطوير الحديثة لتحسين سرعة عمل المبرمج. هذا لأن تحسين الإنتاجية في القطاع التجاري مهم في خفض التكاليف. التطوير السريع للتطبيقات (RAD) هو نهج لتطوير البرمجيات يمكن المبرمجين من إنتاج الكود البرمجي بسرعة كبيرة. يتم تحقيق ذلك باستخدام لغات البرمجة التي تسمح للمبرمج بإنشاء نماذج أولية للتطبيق بسرعة. يمكن بعد ذلك تعديل هذه النماذج الأولية من خلال عملية تكرارية لاختبار العميل والمراجعة. يمكن أن يقلل ذلك وقت المستغرق في تخطيط المشروع. يعتمد التطوير السريع للتطبيقات (RAD) أيضًا على استخدام مقتطفات الكود القابلة لإعادة الاستخدام وإنشاء واجهة مستخدم بالسحب والإفلات. هذا يعني أن لغات البرمجة التي تدعم التطوير السريع للتطبيقات (RAD)، مثل Visual Basic .NET من Microsoft، يمكن أن يكون لها تأثير مفيد في وقت التطوير.
الدعم
- يمكن تنزيل العديد من لغات البرمجة وأدوات التطوير مجانًا من الإنترنت. وهذا يسمح للمطورين ببناء حلول تجارية بتكاليف قليلة.
- ومع ذلك، قد لا يكون هناك أي دعم فني لهذه اللغات والأدوات المجانية. بالإضافة إلى ذلك، قد لا يتم تحديثها أو صيانتها.
- لهذا السبب، من المهم عند اختيار لغة برمجة أن تعرف أن التكنولوجيا لن تتوقف أو تصبح غير مدعومة في المستقبل القريب.
- قد يعني هذا أن المطور قد يفضل شراء أداة تطوير تقدم دعمًا كاملاً من الشركة المصنعة، وتحديثات وإصلاحات متكررة، ومجتمعًا نشطًا من المستخدمين.
النموذج الأولي - نموذج عملي للحل المطلوب أو مكونات الحل. قد لا يشتمل على جميع الوظائف ولكنه يسمح للعملاء والمستخدمين باختبار ومراجعة الحل المقترح. ثم يتم الاستفادة من التعقيدات في تحسين النموذج الأولي وتستمر العملية حتى يصبح المنتج النهائي جاهزًا.
48 نتاج التعلم ب
البرمجة
الوحدة 4
التكلفة
يمكن ربط تكلفة تطوير المشروع بعدد من العوامل. العديد من هذه العوامل مرتبط بشكل مباشر أو غير مباشر باختيار لغة البرمجة. تشمل عوامل التكلفة القابلة للتحديد:
- أدوات التطوير
- المهارات البرمجية المطلوبة، إما من خلال تدريب الموظفين الحاليين وإما توظيف مطورين بعقود يمتلكون الخبرة اللازمة في اللغة
- التراخيص المطلوبة للغات أو الأدوات أو توزيع كود البرنامج التنفيذي
- سرعة التطوير (الوقت المستغرق لتطوير الحل البرمجي باللغة المختارة)
- سهولة الصيانة (احتمالية الأخطاء)
- سهولة التوسع
حساب تكلفة المشروع مهمة معقدة، واختيار لغة البرمجة يلعب دورًا رئيسًا في تقديرات التكلفة.
البرامج المحددة مسبقًا ومقتطفات الكود
في بعض الأحيان يكون من الممكن دمج برامج محددة مسبقًا أو مقتطفات من الأكواد الموجودة داخل الحل. يجب توثيقها كجزء من تصميم حلول برمجية حتى يعرف مطورو المستقبل ما يتعاملون معه. يتم تقديم العديد من بينات تطوير البرمجيات من الأكواد المكتوبة مسبقًا والتي يمكن الرجوع إليها أو ببساطة "إسقاطها" في الحل في أثناء تطويره. بالإضافة إلى ذلك، يمكن أيضًا تنزيل شفرة الطرف الثالث ودمجها مع القليل من الصعوبة التقنية. استخدام البرامج والرموز المسبقة له مزايا وعيوب، كما هو موضح في الجدول 4.15. يجب على المطورين دائمًا التحقق من أن استخدامهم لبرنامج أو مقتطف كود محدد مسبقًا لا ينتهك شروط الاستخدام التي حددها المطور الأصلي. على سبيل المثال، قد يقدم المطور الكود الخاص به "مجانا للاستخدام" طالما لم يتم استخدامه في حل مطور تجاريًا. إذا استخدم مطور آخر هذا الكود في منتج تجاري ينتجه، فسيعتبر تصرفه غير قانوني.
فكّر مليًا
ينطوي تصميم أي تطبيق على كميات كبيرة من التخطيط، لا سيما من حيث التحقيق في متطلبات العميل وفهمها وتعقيدات لغة البرمجة المختارة. يجب ألا يقتصر أي حل مقترح على سرد ميزات البرنامج التي تحتاج إلى مراعاتها فحسب، بل يجب أن يكون فحصًا شاملًا لجميع العوامل التي شكلت حلك، بما في ذلك التعليقات الواردة من العميل (إذا كنت قد شاركت تصميمات النماذج الأولية) وزملائك. كما أن تسجيل النتائج بدقة وبشكل شامل خلال تصميم الحلول (بما في ذلك إعداد الأصول الأصلية) يعزز حل المشكلات من خلال توفير أساس متين لبدء التطوير الفعال.
الجدول 4.15 مزايا وعيوب استخدام كود طرف ثالث في الحل
| المزايا | العيوب |
|---|---|
| يوفر وقت التطوير. | قد يتسبب الكود في حدوث أخطاء محتملة إذا لم يتم اختباره بشكل مناسب. |
| يوفر المال (إذا كانت البرامج/الكود مجانية ولا تتطلب ترخيصًا إضافيًا). | قد لا يكون الكود قابلاً للتعديل (في بعض الحالات، قد يمنع المطور الأصلي التعديل بشكل صريح). |
| من المحتمل أن يتم اختيار الكود مسبقًا لذا يجب أن يكون خاليًا من الأخطاء. | قد يؤدي ذلك إلى مشاكل توافق غير متوقعة. |
| من المحتمل أن يتم كتابة الكود بطريقة فعالة وقابلة للصيانة. | قد لا يعمل الكود مع حل المطور إذا تم تحديث البرنامج/الشفرة المحددة مسبقًا. |
| قد يوفر الكود وظائف إضافية قد تكون مفيدة في المستقبل. | قد تحتوي البرامج المحددة مسبقًا على برامج ضارة، خاصة إذا تم تنزيلها من مصدر غير موثوق به. |
| قد لا يكون هناك دعم من المطور الأصلي. | |
| قد يتم إيقاف الكود أو التخلي عنه. |
49 نتاج التعلم ب
الأصول الجاهزة والأصلية
عادةً ما تحتوي البرامج الحديثة على عرض تقديمي غني بالوسائط وتدمج مجموعة واسعة من الأصول عالية الجودة لتعزيز مظهرها وواجهة المستخدم والوظائف. قد تتضمن الأصول الرقمية النموذجية:
- الرسوم - مثل PNG أو BMP أو JPEG
- الرسوم المتحركة - مثل HTML5، Adobe Flash SWF وملفات GIF المتحركة
- الصوت - مثل MP3، WAV
- فيديو - مثل MP4، AVI
- أنواع الخط والخطوط - مثل Arial وTimes New Roman وVerdana.
يجب تضمين الأصول المستخدمة من قبل المطور في تصميم حلول البرمجيات كمورد رئيس. يتم تجميعها بحسب الفئة ويتم سرد التفاصيل الآتية لكل أصل:
- أسماء الملفات (والمسارات)
- تنسيقات الملف
- أحجام الملفات
- الأبعاد/الدقة بالبكسل (للرسوم الرقمية)
- المدة (للصوت والفيديو الرقمي)
- إطارات (للرسوم المتحركة)
- إطارات في الثانية (إطارات في الثانية - للرسوم المتحركة والفيديو)
- ملاحظات حول الغرض/الاستخدام في البرنامج
- أي معلومات ترخيص مطلوبة، مثل حقوق الطبع والنشر والأصلية.
نوع الخط - تصميم الأبجدية، أي الأشكال الفعلية للحروف والرموز. "Arial" و"Times New Roman" هما مثالان لنوع الخط. الخط - كلمة تستخدم لوصف الملف الرقمي الذي يحتوي على الخط. على سبيل المثال، arial.ttf هو ملف خط TrueType. يستخدم العديد من الأشخاص مصطلحي "نوع الخط" و"الخط" بالتبادل.
عند استخدام أي أصل رقمي، يجب أن تقر بحقوق الطبع والنشر الخاصة به. في بعض الأحيان، قد تحتاج إلى طلب إذن رسمي لتضمين الأصل من مالك حقوق الطبع والنشر. قد يشمل ذلك دفع رسوم ترخيص لمالك حقوق الطبع والنشر. في المملكة المتحدة، يتم تعريف حقوق النشر بموجب قانون حقوق النشر والتصاميم وبراءات الاختراع لعام 1988.
ملاحظات من الآخرين
يتمثل أحد الجوانب الرئيسة لعملية تصميم البرامج في تلقي الملاحظات من الأقران وعميلك. تصميم التطبيق هو عملية تكرارية - أي أنها تكرر عملية معينة عدة مرات حتى تقترب من الاكتمال. ويُمكن استخدام الملاحظات في تحسين عملية معاودة إجراء العملية. جمع الملاحظات حول تخطيطات الشاشة، واجهة المستخدم، التنقل، الخوارزميات وما إلى ذلك سيساعدك على تحسين أفكارك. وسيتيح ذلك لك تحديد وإزالة جوانب التصميم التي لا تعمل بشكل جيد وتحديد الأفكار التي يحبها المستخدمون والاحتفاظ بها. سيساعدك أيضًا على اكتساب الثقة في قدراتك على حل المشكلات، ويشجعك على النظر في أفكار بديلة ويقوي قدرتك على اتخاذ القرارات وتبرير التغييرات للآخرين.
في سياق تطوير حل البرنامج الخاص بك، ستتلقى تعليقات من أقرانك ومستخدمي الاختبار والعميل. يمكن أن تكون وجهات نظر وآراء الآخرين مفيدة للغاية، لأنها عادة ما تكون غير متحيزة ويمكن أن توفر حكمًا محايدًا حول تصميم وتنفيذ برنامجك. هذا مهم بشكل خاص عند النظر في نقاط الضعف، وكذلك نقاط القوة. تعلم كيفية تلقي الملاحظات بشكل إيجابي. سيضمن ذلك أن تستجيب لها بطريقة ناضجة وبناءة وأن تتمكن من استخدامها لتحسين المنتج النهائي وأن تكتسب مهارة في حل المشكلات.
تعد التعليقات أيضًا مكونًا رئيسًا للاختبار القوي لتطبيقات الأجهزة المحمولة، كما هو موضح في الوحدة 7: تطوير تطبيقات الأجهزة المحمولة.
50 نتاج التعلم ب
خطة الاختبار
يجب أن يكون الاختبار جزءًا من تصميم الحلول البرمجية. ويجب أن توضح خطة الاختبار كيف تخطط لاختبار برنامجك، خطوة بخطوة، وأن تتضمن العديد من حالات الاستخدام. كل حالة استخدام تروي قصة تفاعل المستخدم الناجح أو غير الناجح مع البرنامج. تشمل حالات الاستخدام تفاصيل:
- البيانات التجريبية المدخلة
- العمليات المنفذة
- ترتيب العمليات التي يتم تنفيذها
- استجابة المستخدم لمطالبات البرنامج.
عادةً ما توجد بيانات الاختبار في واحدة من ثلاث حالات ممكنة:
- النموذجي/العادي - البيانات ضمن النطاق المقبول الذي سيدخله المستخدم عادةً.
- طرفي - بيانات غير محتملة عند حواف النطاق المقبول.
- خاطئ - البيانات التي لا يجب إدخالها (مثل النص بدلاً من الأرقام).
يجب اختيار بيانات الاختبار بشكل واقعي، حيثما كان ذلك مناسبًا. على سبيل المثال، يمكن أخذها من القيم التي يقدمها العميل، خاصة إذا كنت تقوم بأتمتة عملية يدوية، مثل معالجة الطلبات لعميلك.
القيود الفنية والتصميمية
قد تكون مهاراتك في حل المشكلات محدودة بمجموعة متنوعة من القيود التقنية والتصميمية. يجب أن تنعكس هذه القيود في تصميم الحلول البرمجية وقد تشمل ما يأتي:
- الاتصال - ما الأجهزة أو اتصالات الشبكة المطلوبة لتطبيقك؟ هذا مهم بشكل خاص عند الحاجة إلى أجهزة خاصة (على سبيل المثال للإدخال أو التخزين أو الإخراج) أو إذا كان التطبيق يحتاج إلى اتصال شبكة نشط.
- تخزين الذاكرة - هل هناك متطلبات ذاكرة الوصول العشوائي (RAM) التي يجب ألا تتجاوزها البصمة الرقمية لبرنامجك؟
- لغات البرمجة - هل تم اختيار لغة البرمجة مسبقًا من قبل العميل؟ قد يحدث هذا إذا كان لديهم خبرة مع التطبيقات المكتوبة بلغات برمجة معينة.
لمزيد من المعلومات حول بيانات الاختبار، راجع الوحدة 5: نمذجة البيانات.
يوضح تصميمك للحلول قدرتك على نقل أفكارك ومقاصدك بدقة للآخرين من خلال الكلمة المكتوبة والمنطوقة. هذا صحيح سواء كنت تتواصل مع العميل عبر البريد الإلكتروني أو تكتب كودًا زائفًا أو تجمع ملاحظات المقابلة أو تنشئ مخططات انسيابية لتمثيل الخوارزميات المعقدة. يجب أن يتفاعل استخدامك للنبرة واللغة بشكل مثمر مع العميل والمستخدمين المحتملين للبرنامج النهائي. قد يُطلب منك تقديم الحل الخاص بك إلى العميل. سيكون عرضك التقديمي أكثر نجاحًا إذا كنت:
- تستخدم نبرة إيجابية وجذابة
- تختار مستوى مناسبًا من اللغة التقنية التي يفهمها جمهورك المستهدف
- تجنب استخدام المصطلحات غير الضرورية.
وقفة للتفكير
هل يمكنك شرح نتاج التعلم هذا؟ ما العناصر التي وجدتها أسهل؟ تلميح: دون النظر إلى نص هذه الدراسة، قم بإنشاء قائمة بسيطة بالأنشطة والوثائق التي تحتاج إلى تجميعها كجزء من تصميم الحلول البرمجية. توسيع الأفق: ما العوامل التي قد تؤثر في اختيار لغة البرمجة؟