أساسيات معمارية البرمجيات

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

أساسيات معمارية البرمجيات

Software Architecture & Design Introduction

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

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

من أمثلة القرارات التي يتم اتخاذها في تصميم معمارية البرمجيات:

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

أهداف معمارية البرمجيات

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

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

أنواع معمارية البرمجيات

Software Architecture Overview — Software Heritage documentation

يوجد أربع أنواع عند تطبيق أساسيات معمارية البرمجيات من منظور الشركات الكبرى:

  • معمارية العمل (Business Architecture): هذا النوع يركز على استراتيجية العمل، والحكم، والتنظيم الجيد، وتحديد العمليات الرئيسية من خلال الشركة، والتركيز على التحليل والتصميم الجيد للعمليات.
  • معمارية البرمجيات (Software Architecture): المخطط الرئيسي لأنظمة البرمجيات، وطرق التعامل بين المكونات الرئيسية، وعلاقة كل جزء بسير العمل.
  • معمارية المعلومات (Information Architecture): تحديد الموارد المستخدمة في البيانات.
  • معمارية تكنولوجيا المعلومات (Information Technology Architecture): تحدد الأجهزة والبرامج التي تشكل نظام المعلومات الخاص بالشركة.

قيود معمارية البرمجيات

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

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

What is a Software Architect, Anyway? | by Jan Nelson | Hitachi Solutions  Braintrust | Medium

يوفر مهندس معمارية البرمجيات الحلول التي يمكن للفريق التقني استخدامها لتصميم وإنشاء البرنامج، ويتميز بالخصائص التالية:

خبرة التصميم Design Expertise

  • الخبرة في تصميم البرمجيات، باستخدام عدة منهجيات وطرق مختلفة، مثل: التصميم كائني التوجه (Object Oriented Design)، والتصميم حدثي التوجه (Event Driven Design).
  • قيادة فريق التطوير وبذل الجهد في عملية التطوير لضمان سلامة التصميم.
  • القدرة على مراجعة اقتراحات التصميم المختلفة، والمفاضلة بينهم.

خبرة الاختصاص Domain Expertise

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

الخبرة المنهجية Methodological Expertise

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

الخبرة التقنية Technology Expertise

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

الدور الخفي لمهندس معمارية البرمجيات

What Are The Characteristics of Quality Code? - Rosa Fiore

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

خصائص الجودة

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

خصائص الجودة الثابتة

تعرف هيكلية النظام والشركة، ومرتبطة بشكل مباشر بمعمارية النظام، والتصميم، وكود المصدر، ولكنها غير مرئية للمستخدم النهائي، كما تؤثر على تكلفة التطوير والصيانة، ومن أمثلة خصائص الجودة في هذا النوع: نمط الوحدات (Modularity)، وقابلية الاختبار (Testability)، وقابلية الصيانة (Maintainability).

خصائص الجودة المتغيرة

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

مبادئ تصميم معمارية البرمجيات

SOLID Principles In Practice. Every developer must know… | by Didem Eren |  Medium

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

أنماط بناء معمارية البرمجيات

Top 5 Most Used Architecture Patterns

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

  • النمط الطبقي: تقسم هذه المعمارية النظام إلى طبقات منفصلة، ولكل طبقة مسؤولية محددة.
  • معمارية الخدمات المصغرة: تتكون هذه المعمارية من خدمات مستقلة قابلة للتطوير يتم نشرها وإدارتها بشكل منفصل. وتعد من أهم أساسيات معمارية البرمجيات.
  • معمارية الحدث: تستند هذه المعمارية إلى التفاعلات بين المكونات المختلفة من خلال الأحداث.
  • معمارية MVC: تقسم هذه المعمارية البرنامج إلى ثلاثة مكونات: نموذج (Model) ورؤية (View) ومراقب (Controller).

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

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى
Translate »
error: ان المحتوى محمي

أنت تستخدم إضافة Adblock

برجاء دعمنا عن طريق تعطيل إضافة Adblock