قريت كتاب “Designing Software Architectures” من حوالي 3 سنين، وحد هيستلفه مني قريب، فقلت أراجع الملاحظات اللي كنت كاتبها عنه:

١. دورة حياة الـ Software Architecture
• بتبدأ بـ Architectural Requirements
• بعدين Architectural Design
• بعدين Architectural Documentation
• وأخيرًا Evaluation و Implementation

الكتاب بيركز علي جزء Architectural Design بشكل خاص.

٢. دور الـ Architect
• مش بس تصميم تقني، ده دور استراتيجي محتاج Leadership و Communication و Negotiation وكمان مهارات تقنية وإدارية وتحليلية.

٣. Meta Architecture
• بتكون مرجعية  للشركة عن مكان كل component  في ال  general architecture  للشركة بحيث تضمن التماسك بين الأنظمة المختلفة.

٤. Reference Architecture
• بتاخد نفس فكرة الـ Meta Architecture بس بتقدم حلول جاهزة (Templates) واختصارات لتوفير الوقت.
• أمثلة:
• بناء Web Application
• أو بناء API
• أو Internal Tool
• بتساعد في توحيد التصميم وتقليل وقت التطوير.

٥. Attribute-Driven Design (ADD)
• تركز على Quality Attributes (زي Performance, Security, Usability) في كل Iteration.
• التصميم بيمشي بشكل تكراري مرن بدل ما يبقى خطة ثابتة.
• مع كل متطلب جديد بتراجع التصميم وتعدله.

٦. Design Kanban Board
• وسيلة لتتبع تقدم التصميم في كل Iteration:
• Not Yet Addressed
• Partially Addressed
• Completely Addressed

٧. أهمية الـ Quality Attributes
• المتطلبات غير الوظيفية اللي بتحدد جودة النظام زي Performance و Security و Usability.
• الكتاب بيشدد على إنها سبب رئيسي في نجاح التصميم.

٨. Tactics (Design Concepts Catalog)
• أفكار تصميمية (مش تطبيقات فعلية) لكل نوع من المتطلبات:
• Availability Tactics, Security Tactics, Performance Tactics… إلخ
• بتساعدك تاخد قرارات مناسبة لجودة النظام.

الكتاب ده مرجع ممتاز لأي حد مهتم بتصميم الـ Software Architecture، لأنه بيوازن بين التقنية والاحتياجات والقيود وبيساعدك تاخد قرارات مدروسة تخدم مشروعك.