تصميم البرمجيات وهندستها
يتعلق تصميم البرمجيات وهندستها بكيفية هيكلة نظام برمجي إلى مكونات وموصلات، وكيفية تقسيم المسؤوليات، وكيفية تلبية قرارات التصميم للاحتياجات الوظيفية وسمات الجودة.
Definition
تصميم البرمجيات هو عملية تحديد البنية والمكونات والواجهات والخصائص الأخرى للنظام، وهندسة البرمجيات هي مجموعة الهياكل التي تتألف من عناصر النظام وعلاقاتها وخصائص كليهما.
Scope
يغطي هذا المجال الأنماط والأنماط المعمارية (الطبقات، العميل-الخادم، الخدمات المصغرة، الموجه بالأحداث، الأنابيب والمرشحات)؛ مبادئ التصميم مثل النمطية، إخفاء المعلومات، التماسك، الاقتران، وفصل الاهتمامات؛ التصميم الموجه للكائنات والتصميم القائم على المكونات؛ أنماط التصميم؛ سمات الجودة المعمارية ومقايضاتها؛ وتدوينات النمذجة مثل UML المستخدمة للتعبير عن التصاميم.
Sub-topics
Core questions
- كيف يجب تقسيم النظام إلى وحدات ومكونات؟
- أي نمط معماري يدعم سمات الجودة المطلوبة على أفضل وجه؟
- كيف توجه مبادئ التصميم مثل الاقتران والتماسك الهيكل الجيد؟
- كيف تُحل مشاكل التصميم المتكررة بواسطة أنماط قابلة لإعادة الاستخدام؟
Key theories
- إخفاء المعلومات والنمطية
- جادل بارناس بأن الوحدات يجب أن تُعرّف لإخفاء قرارات التصميم التي يُحتمل أن تتغير خلف واجهات مستقرة، بحيث يكون التغيير محليًا؛ هذا المبدأ يكمن وراء النمطية، التغليف، والاقتران المنخفض.
- سمات الجودة المعمارية والمقايضات
- تُدفع الهندسة المعمارية بسمات الجودة مثل الأداء، قابلية التعديل، التوفر، والأمان؛ ولأن هذه تتعارض، فإن الهندسة المعمارية تدور أساسًا حول التفكير في المقايضات الموجهة بالتكتيكات والأنماط.
- أنماط التصميم
- توجد حلول معروفة ومُسماة لمشاكل التصميم المتكررة — أنماط إنشائية، هيكلية، وسلوكية — تلتقط الممارسات الخبيرة وتوفر مفردات مشتركة للتصميم الموجه للكائنات.
Clinical relevance
تُعد قرارات الهندسة المعمارية الأصعب تغييرًا لاحقًا والأكثر تحديدًا لسمات جودة النظام، لذا فإن التصميم والهندسة السليمة تقلل من تكلفة الصيانة على المدى الطويل، وتتيح قابلية التوسع والتطور، وتشكل تنظيم الفريق.
Evidence & guidelines
يوحد المعيار ISO/IEC/IEEE 42010 وصف الهندسة المعمارية، ويوفر مجال المعرفة SWEBOK لتصميم البرمجيات جنبًا إلى جنب مع النصوص المرجعية مثل Software Architecture in Practice إرشادات توافقية.
History
صاغ بارناس مبادئ التصميم المعياري في أوائل السبعينيات. نضج التصميم الموجه للكائنات وأنماط التصميم في الثمانينيات والتسعينيات، وظهرت هندسة البرمجيات كتخصص متميز مع عمل شو وغارلان في منتصف التسعينيات، وتلتها أنماط الخدمات الموجهة والخدمات المصغرة في الألفينيات والعقد الثاني من القرن الحادي والعشرين.
Debates
- الهندسة المعمارية المتجانسة مقابل الخدمات المصغرة
- يُناقش على نطاق واسع ما إذا كان يجب بناء الأنظمة كوحدة متجانسة قابلة للنشر أو كخدمات متعددة قابلة للنشر بشكل مستقل؛ توفر الخدمات المصغرة قابلية التوسع والنشر المستقلين على حساب تعقيد النظام الموزع، لذا فإن الاختيار الصحيح يعتمد على الحجم والهيكل التنظيمي.
Key figures
- David Parnas
- Mary Shaw
- Len Bass
- Erich Gamma
- Grady Booch
Related topics
Seminal works
- parnas1972
- gamma1994
- bass2012
Frequently asked questions
- ما الفرق بين التصميم والهندسة المعمارية؟
- تتعلق الهندسة المعمارية بالهياكل الأعلى مستوى والقرارات الأكثر تكلفة للتغيير — المكونات الرئيسية، تفاعلاتها، وسمات الجودة على مستوى النظام — بينما يغطي التصميم الهيكل الداخلي الأكثر تفصيلاً لتلك المكونات؛ الحدود هي حدود الأهمية وليست خطًا فاصلاً حادًا.
- لماذا تعتبر أنماط التصميم مهمة؟
- تلتقط الأنماط حلولًا مثبتة لمشاكل التصميم المتكررة وتمنح المهندسين مفردات مشتركة، مما يجعل التصاميم أسهل في التواصل، والتفكير فيها، وتطويرها؛ إنها إرشادات يجب تطبيقها بحكمة، وليست وصفات إلزامية.