2018/10/14

بالعربي مقدمة عن Software Architecture واهميته

ان بناء البرامج ليس بالشيء البسيط فلبناء اي نظام لابد ان يمر بمجموعة مراحل اولها جمع المتطلبات والتخطيط ثم التصميم والبرمجة ثم الاختبار والتنصيب وهكذا
ومن اهم القرارات عند تصميم اي نظام هو اختيار الهيكل او ال Architecture الخاص بهذا النظام الذي يراعي متطلبات النظام التشغيلية و الفنية ويراعي جودة النظام من حيث الاداء و الامان والاستجابة للتعديلات وهكذا. في هذا المقال سوف نتناول مقدمة عن ال Software Architecture واهمية اختيار ال Style المناسب في بداية تصميم النظام لضمان نجاحه.


ما هو ال Software Architecture ؟


ولفهم المقصود بال Software Architecture تخيل معي السيناريو التالي :

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

فقمت انت ببناء النظام مثلا ك Desktop application معتمد علي قاعدة بيانات Access مثلا باعتبار ان البرنامج سيعمل علي جهاز واحد وموظف واحد وقمت ببناء النظام كله علي هذا الاساس 😱😱.

عند تسليم العميل اكتشفت أن لديه اكثر من مكتب بيع الكتب ويريد أن يعملوا جميعا علي نفس النظام (يال الهول).

اصبحت الان في ورطة كبيرة حيث أن نظامك أصبح لا يلائم عميلك ولكن لماذا حدث هذا ؟


الإجابة ببساطة انك لم تختار ال Architecture المناسب من البداية فمثلا في هذا المثال كان من المفترض أن تبني نظامك ك Client-Server Architecture بحيث أن النظام يسمح باتصال اكثر من Client (مكتب بيع المكتبة) علي ال Application Server كما هو الحال في ال Web based systems.



افترض معي انك قد راعيت كيفية عمل ال Deployment من البداية وصممت نظامك  Client-Server Architecture وكان فريقك هو مبرمج أو اثنان يقومان بكل العمل ولكن بعد فترة أصبح فريقك اكبر وأصبح هناك من يصمم الواجهات وهناك من يقوم بعمل اللوجيك الخاص بالنظام وهناك من يصمم قاعدة البيانات  وهكذا وانت لم تكن تراعي ذلك في ال Architecture ولم تكن تقسم نظامك الي طبقات مثلا طبقة الواجهات طبقة اللوجيك وطبقة للاتصال بقاعدة البيانات فماذا ستفعل ؟!!! 
اذا كنت من البداية معتمد ايضا علي Layered Architecture كانت امورك ستصبح اسهل.





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

يصعب تغييرها 


ومن الواضح أن القرارات الخاصة بال Software Architecture هي قرارات هامة جدا بمعني اننا نحدد شكل النظام العام ووحداته ولكن دون الدخول في تفاصيل كيفية التنفيذ وايضا هذه القرارات تكون مؤثرة يصعب تغييرها مستقبلا لذا لابد من الحذر الشديد في البداية

ولاختيار الـ Architecture المناسب لابد من الإجابة عن بعض الأسئلة منها


  • كيف سيقوم المستخدمين باستخدام نظامك ؟
    فقد يختلف الArchitecture باختلاف عدد او اسلوب المستخدمين فمثلا اذا كان المستخدم سيقوم باستخدام النظام من ال Mobile وايضا من الكمبيوتر فهنا قد تحتاج لاختيار Architecture مناسب لذلك
  • كيف سيتم عمل Deployment لنظامك ؟
    فقد يكون النظام سيتم تنصيبه على خادم واحد او سيتم تنصيبه على خوادم كثيرة وهنا يوجد اختلاف جوهري في عملية بناء النظام واختيار قاعدة بياناته بين تلك وذلك
  • ما هي المعايير التي تعبر عن جودة نظامك بمعني هل سرعة اداء واستجابة النظام ام امان النظام .... الخ؟
    فقد يهتم نظام بالاداء اكثر من الامان او يهتم نظام اخر بالامان اكثر من الاداء
  • كيف يتم تصميم النظام بحيث يستجيب للتغيرات مع مرور الوقت دون إعادة بنائه من جديد ؟

ال Architecture Styles


ويوجد اكثر من Style متعارف عليه لل Software Archictecture ذكرت بشكل مبسط جدا مثالين منهم في هذا المقال وهم ال Client Server Architecture و ال Layered Architecture ولكن يوجد Styles اخرى فمنها من يتهتم بطريقة ال Deployment ومنها من يهتم بتقسيم بناء النظام من الداخل وهكذا وسوف اتحدث عن هذه ال Styles في مقال او اكثر قادمين باذن الله. وايضا في المقالات القادمة سوف اتحدث عن علاقة ال Software Archeticture بال DevOps


الان بقي لك شيء واحد وهو ان تعمل Like لصفحتنا على Facebook وان تكتب تعليق اذا اعجبك المقال او اذا تريد المناقشة واعلم انك اذا لم تعمل Like فان ال الاسباجتي كود هو الذي منعك 😁😁😁


مراجع

https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff650706(v%3dpandp.10)
https://www.coursera.org/learn/software-architecture/





هناك تعليق واحد:

Hamada Zakaria يقول...

تسلم ايدك علي المقال وعلي تصميم المدونه

مقدمة عن الDevOps

في هذا المقال سوف اتحدث عن مقدمة بسيطة عن ال DevOps ولماذا لابد ان تهتم فرق تطوير البرمجيات به وما هي النتائج المترتبة عن استخدام اساليبه ...