0

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

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

spaghetti code:

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

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

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

legacy code:

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

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

  • لم يتم الاحتفاظ بالكود من قبل المطور الأصلي.
  • كُتب الكود في بداية الأمر لأنظمة تشغيل لم تعد مدعومة حالياً.
  • لا يمكن استخدام الاختبارات الآلية للعثور على الأخطاء في هذا الرمز.

اقرأ أيضاً: كل ما تود معرفته عن المنهجية الرشيقة الأجايل Agile في تطوير البرمجيات وطريقة تطبيقها

API:

هندسة البرمجيات

API هو اختصار لواجهة برمجة التطبيقات، وهو وسيط برمجي أيّ مجموعة من الوظائف والإجراءات تسمح لتطبيقين بالتحدث مع بعضهما البعض، في كل مرة استخدمت فيها تطبيقاً مثل فيسبوك، أو أرسلت رسالة فورية، أو تحققت من الطقس على هاتفك، كنت تستخدم API.

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

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

Software Development Kit (SDK) أساسيات هندسة البرمجيات

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

تم تصميمها للعمل مع أنظمة تشغيل أو أجهزة أو لغات حوسبة محددة، وتحتوي جميع حزم SDK تقريباً على بعض المكونات الأساسية:

  • مكتبات الشيفرة: هذه هي الشيفرة الخام التي يقوم المطورون بتوصيلها لجعل التطبيق يفعل ما يريدونه.
  • واجهة برمجة التطبيقات API: تسمح للتطبيق بالاتصال بسهولة بالخدمات الأخرى.
  • بيئة التطوير المتكاملة IDE: هذه هي الواجهة التي يقوم المطورون من خلالها ببرمجتهم، وهي تتضمن مترجماً يترجم لغة البرمجة عالية المستوى لشفرة مصدر SDK إلى لغة منخفضة المستوى يمكن استخدامها لإنشاء التطبيقات.
  • الوثائق: هذه هي التعليمات التي تشرح كيف يجب على المطورين استخدام الكود، يعدّ التوثيق الواضح والشامل معياراً مهماً للـ SDK الجيد.
  • مصحح الأخطاء: يعمل التصحيح تلقائياً على تصحيح الأخطاء الطفيفة، مما يسهل عملية تطوير التطبيق.
  • نماذج التعليمات البرمجية: تساعد هذه النماذج المطورين على البدء من خلال إعطائهم بعض الأمثلة على التعليمات البرمجية قيد التشغيل ومساعدتهم على استخدامها بطرق بسيطة.

اقرأ أيضاً: التطوير بدون كود: تعرّف على أهم منصات بناء تطبيقات برمجية بدون كتابة سطر واحد

FrameWork:

هندسة البرمجيات

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

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

Library:

هندسة البرمجيات

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

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

في بيئات (MS-Windows)، يكون لملفات المكتبة امتداد DLL.

Coupling:

هندسة البرمجيات

الاقتران في هندسة البرمجيات هو جزء من مواصفات متطلبات البرمجيات (SRS) التي تستخدم لتحديد عوامل الاعتماد على كل وحدة من وحدات البرمجيات واستقلالها مع وحدات أخرى، ويستخدم كمؤشر على الترابط فيما بين الوحدات، حيث كلما انخفضت قيمة الاقتران، كلما ارتفعت جودة البرمجيات.

يوجد نوعان للاقتران هما:

Tightly coupled:

الكائن المقترن بإحكام هو كائن يحتاج إلى معرفة القليل عن الكائنات الأخرى، وعادة ما تعتمد الكائنات المقترنة بإحكام بشكل كبير على واجهات بعضها البعض.

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

Loose coupling:

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

Unit testing:

هندسة البرمجيات

اختبار الوحدة هو نوع من اختبار البرمجيات حيث يتم اختبار الوحدات الفردية أو مكونات البرمجيات، والغرض من ذلك هو التحقق من أن كل وحدة من كود البرنامج تعمل على النحو المتوقع.

يتم إجراء اختبار الوحدة أثناء تطوير التطبيق (مرحلة الترميز) بواسطة المطورين، تعزل اختبارات الوحدة جزءاً من التعليمات البرمجية وتتحقق من صحتها، قد تكون الوحدة وظيفة فردية أو طريقة أو إجراء أو وحدة نمطية أو كائن.

Test Driven Development (TDD):

التطوير المدفوع بالاختبار هو نهج لتطوير وهندسة البرمجيات، يتم فيه تطوير حالات الاختبار لتحديد والتحقق من صحة ما سيفعله الكود.

بعبارات بسيطة، يتم إنشاء حالات الاختبار لكل وظيفة واختبارها أولاً، وإذا فشل الاختبار، تتم كتابة الكود الجديد لاجتياز الاختبار وجعل الكود بسيطاً وخالياً من الأخطاء.

debugging:

هندسة البرمجيات

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

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

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

Refactoring:

هندسة البرمجيات

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

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

Hybrid vs Native vs PWA التطور في هندسة البرمجيات

هندسة البرمجيات

Native apps: تتم كتابة التطبيقات الأصلية بلغات التعليمات البرمجية الخاصة بنظام التشغيل المعين الذي تم تطويرها من أجله. أولاً، كانت لغة البرمجة Java من أجل نظام Android، ولغة البرمجة Objective-C من أجل نظام IOS، ولكن نظراً لتطور البرامج سريع الخطى الذي واجهناه منذ العقود القليلة الماضية استُبدلت هذه التقنيات بلغة البرمجة Kotlin من أجل نظام Android، ولغة البرمجة Swift من أجل نظام IOS.

Hybrid app development: يجمع تطوير التطبيقات المختلطة بين عناصر التطبيقات الأصلية Native وتطبيقات الويب، إنها تسمح للمطورين بالبرمجة بلغة واحدة يمكن تشغيلها في أنظمة تشغيل مختلفة.

PWA (Progressive Web Apps): تعد تطبيقات الويب التقدمية جديدة نسبياً في عالم تطوير التطبيقات وهندسة البرمجيات حيث تم اعتمادها على نطاق واسع في السنوات الأخيرة، تسعى تطبيقات الويب هذه إلى الظهور والتصرف تماماً مثل التطبيقات الأصلية.

هذا يعني أنه يمكن تثبيت تطبيقات الويب التقدمية والوصول إليها على الأجهزة المحمولة (تعمل دون الاتصال بالإنترنت) ويمكنها أيضاً استخدام ميزات الأجهزة مثل الكاميرا ونظام تحديد المواقع العالمي GPS.

0

شاركنا رأيك حول "مصطلحات أساسية في هندسة البرمجيات يجب عليك معرفتها"