الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سلسلة دروس تبسيط معمارية النظم

بدأه SystemArchitecture في 7 يوليو 2008 · 9 رد · 2,289 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

اولا : هذه الدروس ملك للفريق العربى للبرمجة ولايجوز نقلها الى اى مكان اخر بدون الاشارة للمصدر

متى نستخدم اساليب معمارية النظم

"عند القيام بعمل مشاريع جديدة كبيرة الحجم او معقدة مع مراعاة وجود نسبة كبيرة للمغامرة نتيجة التغيرات التى تحدث اثناء الفترة الطويلة المستغرقة فى بناء النظام "

المجموعة الاولى من سلسلة دروس معمارية النظم

تشمل الاساليب التالية :-

· النواة قبل كل شىء Kernel

· الطريق دائما ذهاب وعودة Two-Way

· لايوجد شىء ثابت Dynamic World

· العالم كله افتراضى Virtual World

· كل شىء وارد Everything may occur

· القوانين تمثل العالم The Rules Presents the world

الدرس رقم واحد فى سلسلة الدروس المبسطة لمعمارية النظم

أولا : النواة قبل كل شىء Kernel

قبل ان تفكر فى العمل عليك ان تفكر بماذا تعمل بمعنى ماالذى تستخدمه لانجاز العمل

تخيل انك فقدت ماتستخدمه لانجاز اعمالك بالتاكيد لابد من البحث عن بديل ولكن ذلك ليس حلا للمصيبة حيث انك تواجه انهيار ماقمت بعمله فى الفترة الماضية.

تخيل انك تقوم بالبرمجة باستخدام لغة ما والان تغير العالم واصبحت هناك لغات احدث ولكنك لديك مشاريع عديدة بهذه اللغة فهل حسبت حساب هذا اليوم ؟ اليوم الذى تغادر فيه اللغة التى تستخدمها لانجاز العمل او تغادر نظام التشغيل – او تغادر نوعية الحاسب الذى تستخدمه او المكتبات التى تعتمد عليها.

ماذا لو كان لديك مشروع قمت بعمله خلال (5 سنوات)

هل تعيد بناء المشروع مرة اخرى وتمضى خمس سنوات اخرى لبذل المجهود مرة ثانية ؟

تخيل انك مبرمج بلغة متطورة جدا ولكنها تعمل فى نظام تشغيل واحد

وقمت بعمل مشروع استغرق منك عامين كاملين وفوجئت ان العملاء يطلبون نسخة من نفس المشروع تعمل على جميع انظمة التشغيل ؟

طبعا ستفكر فى الحل وستبحث عنه لانك واجهت المشكلة فى واقعك

ولكن العقل يقول الوقاية خير من العلاج ولهذا فى معمارية النظم يتم مراعاة ذلك

(القاعدة رقم 1 فى معمارية النظم)

"النواة قبل كل شىء"

"النواة هى نقطة البداية التى يبدا منها النظام وهى تمثيل يكون ظاهرا لجميع اجزاء نظامك الذى تقوم به على انه هو العالم كله"

post-165181-1215413845_thumb.gif

عندما تقوم ببناء النظام فان البداية تكون النواة

والتى هى عبارة عن الرابط بين مشروعك وبين البيئة المحيطة

ثم يتم بناء المشروع بحيث ان كل شىء يتم يعود الى النواة التى هى

مسئولة عن التخاطب مع البيئة

بمعنى انك لاتتعامل مع تعليمات لغة البرمجة مباشرة لبناء النظام

وانما تقوم بعمل رابط بينك وبين لغة البرمجة ثم تستخدم هذا الرابط

وطبيعة النواة قد تكون عبارة عن مكتبات Libraries وقد تكون برامج واحيانا لغات برمجة صغيرة الحجم لمهام خاصة.

ونظرا لان بناء النواة شىء مكلف فان تحديد مهام النواة مهم جدا

فليس كل المشاريع تستلزم بناء نواة كاملة تغطى كل متطلبات النظام

حيث يمكن ان تكون النواة تغطى الاجزاء التى يستعملها النظام فى البيئة وقد يحدث فيها تغير فى المستقبل

والنواة تحميك من انهيار كل شىء فى لحظة نتيجة حدوث تغيرات مفاجئة فى البيئة

كما ان النواة تعتبر حلا استراتيجيا عند الحيرة بين الاختيارات المختلفة

مثال:-

عند قيامى بعمل بيئة رسومية متكاملة كانت البداية تشمل مكتبة جرافك تقوم بالرسم على الشاشة فقط بالاضافة الى استقبال المدخلات من لوحة المفاتيح والفارة وكانت البيئة المتوفرة هى

1 – نظام تشغيل دوس DOS

2 - لغة البرمجة القديمة كليبر CA-Clipper

3 - مكتبة لدعم برمجة الكائنات Class(Y)

4 - اربعة مكتبات شهيرة ومختلفة للجرافك

هما FGLib و LightLib و DGE و FAST

والجزء الرابع الخاص بتوفر اربعة مكتبات شهيرة ومختلفة للجرافك كان هو المشكلة

لان عملية تحديد ماهى المكتبة الافضل امر ليس من السهل الجزم به

فهمناك ملامج المكتبة وماتوفره من امكانيات وايضا السرعة وكذلك الاستقرار الذى يستلزم التطبيق فى مشاريع كبيرة

وكانت النواة حلا لانها تمثل هذه البيئة وتتعامل معها ويتم بناء باقى اجزاء النظام من خلال التعامل مع النواة.

ولهذا كان هناك اصدارات مختلفة من النواة بحيث ان كل اصدار يعتمد على مكتبة جرافك.

وتم العمل خمس سنوات بحيث تتم جميع عمليات الاختبار على الاصدارات الاربعة من النواة التى تظهر للنظام بشكل واحد.

واثناء العمل فى تطوير النظام

خرجت المكتبتين LightLib و FAST من التصفيات مبكرا ولم تكن الملامح المتاحة بهما كافية لبناء كامل النظام.

وبعد اكتمال البيئة الرسومية تم التاكد ان النواة التى تعتمد على المكتبة FGLib هى الافضل من حيث الاستقرار.

بينما المكتبة DGE هى الافضل من حيث السرعة

وتم اختيار الاستقرار على حساب السرعة (لا يعنى هذا ان النظام بطىء)

ومن هنا نجد ان الاعتماد على النواة قلل الخطورة المترتبة على تغير البيئة والغى الحاجة الى اعادة بناء النظام

ملخص الدرس الاول

النواة تحمى استثمارك فى بناء النظام وتختلف النواة فى مستوى التعقيد حسب العامل الذى تراعى تغيره فى البيئة هل هو

1- العتاد Hardware

2- نظام التشغيل Operating System

3- لغة البرمجة Programming Language

4- المكتبات Libraries

من النقطة واحد الى اربعة تزيد نسبة حدوث التغير المفاجىء

بينما تقل التكلفة الناتجة عن عمل حساب التغير المفاجىء

واخيرا اشهر نواة فى معمارية النظم هى نواة نظام التشغيل الخاص بالحاسب وهى تراعى التغير فى العتاد Hardware

والله الموفق

تم تعديل هذه المشاركة بواسطة SystemArchitecture في 7 يوليو 2008 في 10:10

#2

يرجى وضع الدروس مستقبلا في مكانها المناسب.

تم النقل لمنتدى تصميم التطبيقات (و يشمل نظم التشغيل) و تعريبها

It's hard to stay in such ridiculous situation

#3

شكرا اخى Mohammed Akram

على وضع الدروس فى مكانها المناسب

وباذن الله الدروس القادم ستكون هنا

جزاك الله خيرا

والله الموفق

#4

يبدوا ان سلسلة دروس معمارية النظم لاتلقى اهتماما

وجيد انى عرفت ذلك فى البداية حتى اتوقف عن هذا الاتجاه

وعائد قريبا ان شاء الله لبدء سلسلة اخرى فى موضوع اخر

والله الموفق

#5

ما هو الإهتمام الذي تريده ؟؟

ردود بمشكور وغراره ؟؟

أنت تكتب المعلومة ليستفيد بها من يستفيد ومن لا يريد فلن يضيرك هذا في شئ , عموماً انت حر في ما تختاره :)

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#6
اقتباس
ما هو الإهتمام الذي تريده ؟؟

ردود بمشكور وغراره ؟؟

أنت تكتب المعلومة ليستفيد بها من يستفيد ومن لا يريد فلن يضيرك هذا في شئ , عموماً انت حر في ما تختاره

المشرف الغالى علينا جميعا : GamingMasteR

كلمات الشكر لم تكن ابدا مقصد من يسعى للخير

وانما هى لمعرفة مدى جدوى الموضوع وفائدة

طالما والحمد لله هناك مجال للكتابة فى مواضيع متنوعة

فانى اشدو نحو الخوض فى المواضيع التى تناسب اكبر عدد بقدر الامكان طمعا فى زيادة الخير ان شاء الله

والله الموفق

#7

نريد دروس.. أكواد.. سي بلس.. برمجة.. وليس كلام نظري ومخططات مثل التي تملأ ويكي <_<

أخي System لماذا لا تكتب لنا كود Kernel صغير مثلا؟

#8
اقتباس
نريد دروس.. أكواد.. سي بلس.. برمجة.. وليس كلام نظري ومخططات مثل التي تملأ ويكي

أخي System لماذا لا تكتب لنا كود Kernel صغير مثلا؟

عليه أن ينتهي من ايصال أفكاره عبر الشرح النظري ... هذا شيء مطلوب ... لكن كلنا أمل ألا يتوقف بعد الجزء النظري ولا نرى شيئا عمليا.

عموما أقترح عليك التالي:

الان تشرح تركيبة النواه ... بعد ما تنتهي من هذه الجزئيه لا تقفز على الأخرى نظريا ... تنتهي من الأمثله العمليه على الجزء النظري الذي تم شرحه ... ومن ثم يفتح باب الأسئله والنقاش ...

لو احببت ان ترى أسلوب دروس شيق ... راجع دروس برمجة الشبكات للأستاذ فادي عبدالقادر ... أسلوب شيق وممتع وحبذا لو اتبعته ... ستلقى اهتماما كبيرا.

It's hard to stay in such ridiculous situation

#9

المشكله أخي المشرف أنه لا يتخطي الجزء النظري أبداً !!

كل ما يفعله هو بلا.. بلا.. بلا.. ثم مخطط أو العكس يعني.. مخطط.. ثم بلا.. بلا.. بلا.. :lol:

فعلا أنا تابعت جزء كبير من دروس الأخ فادي من فتره كبيره.. ما شاء الله عليه أسلوب شيق وعلم وأخلاق وأدب العلماء فعلا.

#10

درس جميل

مشكور يا SystemArchitecture نورت المنتدى انتى و اخوك bestprogrammer

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…