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