معمارية برمجيات
المعمارية البرمجية لنظام ما هي مجموعة الهيكليات التي نحتاجها كي نستوعب آلية عمل وبناء النظام.[1][2][3] وهي تتضمن الأجزاء البرمجية والعلاقات التي تربط هذه الأجزاء ببعضها البعض، إضافة إلى خصائص هذه الأجزاء والعلاقات. يستعمل المصطلح أيضا لوصف عملية توثيق «معمارية البرمجيات». فتوثيقها يسهل التحاور والتفاهم بين جميع أصحاب الشأن. كما وأنها تبين القرارات التي اتخذت في مراحل تطوير النظام الأولى حول النظرة العامة لمعماريته. إضافة إلى ذلك، فهي تسهل عملية إعادة استخدام بعض النماذج والمكونات فيما بين المشاريع.
معمارية برمجيات
|
نظرة عامة
اعترضت علماء الحاسوب العديد من المشاكل تم التغلب على أولها بإيجاد بنية البيانات المناسبة واستنباطها ثم بالتفكير في خوارزميات تستخدم تلك البنيات واستخدام طريقة فصل الاهتمامات وتقسيمها. وبالرغم من أن مصطلح معمارية البرمجيات جديد نسبيا إلا أن رواده كانوا من الرياضيين القدامى نسبيا أمثال ادسخر دكسترا وغيره من المختصين في الرياضيات الأساسية. هؤلاء مهدوا الطريق لعلماء الإعلامية لكي يستعملوا طريقة التفكير التجريدي في حل المشكلات التي أصبحت أكثر تعقيدا مع مرور الزمن. فعلى سبيل المثال تعتبر نظرية المخططات من بديهيات علوم الإعلامية ويعود الفضل الكبير فيها إلى ادسخر دكسترا وأمثاله من الرياضيين. ثم مع بداية التسعينات بدأت تظهر بعض المحاولات لتجميع وتوحيد أشكال تصميم البرمجيات لتظهر أولى نماذج التصميم والتوصيات بأحسن الممارسات. لكن الجدير بالذكر هو أنه ليس هناك تعريفا محددا لمعمارية البرامج ولكن المتعارف عليه أن من أهدافها هو تسهيل حل المشاكل وصيانة البرامج.
لماذا معمارية البرمجيات مهمة
مثل أي بنية معقدة، البرمجيات يجب أن تكون مبنية على أساس متين حيث أن الأدوات الحديثة والمناهج تساعد على تبسيط مهمة بناء البرمجيات ولكنها لا تحل محل الحاجة إلى تصميم البرمجيات بعناية حيث أن بعض المخاطر تظهر من التصميم الضعيف للنظام والذي يكون غير قادر على دعم متطلبات العمل الحالية أو المقبلة لذلك يجب الأخذ بالاعتبار البنية التحتية لتكنولوجيا المعلومات والمستخدمين وطبيعة العمل في المنشأة.
عند تصميم البرمجيات يجب أحذ المجالات الثلاث بشكل متوازن. على سبيل المثال تجربة المستخدم للبرمجيات هي الحل في كثير من الأحيان مع الأخذ بالاعتبار طبيعة العمل في المنشأة والبنية ألتحتية للنظام وأي تغير في أحد هذه المكونات تؤثر بشكل كبير في المخرجات
بالمثل يمكن للتغيرات في متطلبات المستخدم يكون لها تأثير كبير على الأعمال فمثلا المسؤول عن النظام أو المنشأة قد لا يكون قادرا على تامين المعدات اللازمة لتحقيق هذا الهدف بنسبة 100 % فعدم القدرة على تامين المعدات اللازمة سيخفض نسبة تحقيق الهدف إلى 80 بالمئة على سبيل المثال
تركز معمارية البرمجيات على العناصر والمكونات الرئيسية وتفاعل العناصر والمكونات الرئيسية الأخرى ضمن بيئة التطبيق ومن الجدير بالذكر بان اختيار هياكل البيانات والخوارزميات والتطبيق المناسب يساعد في التصميم الجيد ويؤدى إلى نجاح البرمجيات وذلك باتباع العمليات المحكمة في معمارية البرمجيات وواستخدام المعرفة التي تتضمنها، وسوف يكون بناء الحلول المعمارية التي تعالج جميع الجوانب ذات الصلة ويمكن نشرها على البنية التحتية المناسبة ووتقديم النتائج التي تلبي الأهداف والغايات الأصلية.
الهدف من معمارية البرمجيات
الهدف من معمارية البرمجيات هوبناء جسر بين متطلبات العمل والمتطلبات التقنية من خلال فهم حالات الاستخدام ومن ثم إيجاد السبل لتطبيق تلك البرمجيات
وأيضا الهدف من العمارية هو تحديد المتطلبات التي تؤثر على بنية البرمجيات ومعماريه البرمجيات الجيدة تقلل من المخاطر من خلال بناء حل تقني برمجي جيد. والتصميم الجيد والمرن يكون قادرا على التعامل مع التغيرات التي قد تحدث على مر الزمن في تكنولوجيا الأجهزة والبرمجيات وكذلك في سيناريوهات المستخدم ومتطلباته.
يجب على مصصم معمارية البرمجيات الاهتمام بالقرارات المتعلفة بالتصميم والأمور المتعلفة بجودة البرمجيات وطرق حمايتها ومتطلبات المستخدم.
نضع في اعتبارنا أنه ينبغي لمعمارية البرمجيات:
التركيز على هيكل النظام ولكن مع إخفاء تفاصيل التنفيذ للبرمجيات.
التركيز على حالات الاستخدام والسيناريوهات.
المتطلبات المختلفة لأصحاب المصلحة.
التعامل مع المتطلبات الوظيفية والنوعية على حد سواء.
انظر أيضًا
- أركميت
- نمط معياري
- نموذج مضاد
- Attribute-driven design
- C4 model
- معمارية الحاسوب
- Distributed Data Management Architecture
- Distributed Relational Database Architecture
- Systems architecture
- تصميم النظام
- طريقة تحليل معمارية الأنظمة الحاسوبية
- Time-triggered system
المراجع
- Bass, Len؛ Paul Clements؛ Rick Kazman (2012)، Software Architecture In Practice, Third Edition، Boston: Addison-Wesley، ISBN 978-0-321-81573-6.
- ISO/IEC/IEEE 42010: Defining "architecture". Iso-architecture.org. Retrieved on 2013-07-21. نسخة محفوظة 07 أبريل 2017 على موقع واي باك مشين.
- Muller, Gerrit (20 أغسطس 2007)، "A Reference Architecture Primer" (PDF)، Gaudi site، مؤرشف من الأصل (PDF) في 04 يناير 2017، اطلع عليه بتاريخ 13 نوفمبر 2015.
وصلات خارجية
- Explanation on IBM Developerworks
- Collection of software architecture definitions at معهد هندسة البرمجيات (SEI), جامعة كارنيغي ميلون (CMU)
- International Association of IT Architects (IASA Global), formerly known as the International Association for Software Architects (IASA)
- SoftwareArchitecturePortal.org – website of IFIP Working Group 2.10 on Software Architecture
- SoftwareArchitectures.com – an independent resource of information on the discipline
- Software Architecture, chapter 1 of روي فيلدينغ's REST dissertation
- When Good Architecture Goes Bad
- The Spiral Architecture Driven Development – the SDLC based on the النموذج اللولبي aims to reduce the risks of ineffective architecture
- Software Architecture Real Life Case Studies
- بوابة برمجة الحاسوب
- بوابة تقانة