-❤️-
U3F1ZWV6ZTM1NzY5ODgxOTVfQWN0aXZhdGlvbjQwNTIyMzQ0NTY3
recent
عنوان إخباري

كل شيء عن هندسة البرمجيات

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

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


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

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


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

خلال سنوات تطور الحاصل في تصميم البرامج توصل المطورين إلى عدد قليل من الأساليب المعمارية القوية و التي تجنبهم مشكلات في الهندسة المعمارية وتصميم البرامج (المعروفة أيضًا باسم Big Ball of Mud). فيما يلي بعض من أشهرها :

  1. العمارة الطبقية
  2. العمارة المتدرجة
  3. العمارة الخدمية (SOA)
  4. هندسة الخدمات المصغرة

العمارة الطبقية


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

تقسم الهندسة المعمارية البرنامج إلى الطبقات التالية:

  1. طبقة العرض
  2. طبقة منطق الأعمال
  3. طبقة وصل البيانات


طبقة العرض : تحمل واجهة المستخدم التي تتفاعل مع العالم الخارجي و هي مسؤولة أيضًا عن توفير تجربة المستخدم لأنها الطبقة الوحيدة المعرضة للتفاعل مع المستخدم النهائي.

طبقة منطق الأعمال : وكما يوحي إسمها فهي تحتفظ بأساسيات العمل لتطبيق البرنامج و تحقيق أهدافه تقوم هذه الطبقة بفصل UI / UX عن الحسابات المتعلقة بالأعمال وبالتالي توفر مرونة لتعديل المنطق اعتمادًا على متطلبات العمل المتغيرة باستمرار دون التأثير على الطبقات الأخرى.

طبقة وصل الببانات : تحتفظ بمسؤولية التفاعل مع التخزين الدائم مثل قواعد البيانات ومعالجة البيانات المتنوعة التي لا تتعلق بالمجال (أي لا تتعلق بالعمل).

المزايا

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

العيوب

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

العمارة المتدرجة


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

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

نظام التدرج الأحادي


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

مثل هذا النظام مناسب فقط لتطبيق مستخدم واحد صغير الحجم ولا ينبغي استخدامه للتطبيقات المعقدة متعددة المستخدمين.

نظام التدرج


يتكون هذا النظام من جهازين فيزيائيين مثل الخادم والعميل و هو يوفر العزلة بين عمليات إدارة البيانات وعمليات معالجة البيانات.

الخادم :
يحتفظ بمخازن البيانات مثل قواعد البيانات.
العميل 
يحمل العرض التقديمي ومنطق الأعمال وطبقة ارتباط البيانات.


نظام متدرج / n-Tiered



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

الخدمات المعمارية الموجهة


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

قيمة العمل
الأهداف الاستراتيجية
قابلية التشغيل البينية الجوهرية
الخدمات المشتركة
المرونة


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


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


هندسة الخدمات المصغرة


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

ما تشتمل عليه الخدمات المصغرة


تتكامل الهندسة المعمارية من الخدمات الدقيقة المعزولة والموجزة والدقيقة القادرة على التوسع بشكل مستقل.

تتكون العمارة من 5 مكونات على النحو التالي :

خدمات
التكوين الخارجي
بوابة API
حاويات


خصائص الخدمات المصغرة


يجب أن تتكون معمارية الخدمات المصغرة على الخصائص التالية :

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


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

المزايا

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

السلبيات

  • فرصة أكبر للفشل أثناء الاتصال بين الخدمات المختلفة.
  • من الصعب إدارة عدد كبير من الخدمات.
  • يتطلب التنفيذ المزيد من الوقت
الاسمبريد إلكترونيرسالة