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

كيف نقوم بتقسيم برامجنا الى عدة ملفات؟

مغلق
بدأه Wael Dalloul في 10 يناير 2007 · 7 رد · 1,688 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله :)

نرى في كثير من الاحيان انّ البرامج الكبيرة يكون حجم ال exe النهائي لبرامجها صغير جدا على الاغلب سوف يكون اقل من 500 كيلوبايت!!

دائما ترى انهم يستخدمون ملفات DLL و ملفات COM او حتى يتم تجزئة المشروع الى مجموعة من ال exe و يتم ربطها مع البرنامج الرئيسي, حيث ترى انّ البرنامج الرئيسي لا يحتوي في الاغلب إلا على استدعاءات للاوامر الموجودة في ملفات اخرى

كنت اتسأل دائماً لماذا؟ لماذا تقسيم الملفات الى اكثر من مكان و عدم وضعها ضمن ملف exe واحد يحتوي على كل الامور حتى على ال resources و بالتالي ترى حجم ملف ال exe النهائي كبير نوعا ما!

فوجدت الفوائد التالية لتقسيم المشروع:

1- عند وضع كل شيئ في ملف ال exe بالتالي سوف يتم تحميل كل شيئ في الذاكرة عند تشغيل البرنامج, بينما اذا كان البرنامج مقسم الى عدة اقسام سوف تقوم انت بتحميل الجزء الذي تريد في الوقت الذي تريد و تحرره متى اردت و بهذا يتم تخفيف الكثير الكثير من الاستعمال الغير مفيد للذاكرة

2- و ايضا مشكلة تحديث البرنامج, ففي اغلب الاحيان ترى الان البرامج المحترمة تقوم بعمل اداة ما لتحديث البرنامج في حال صدور نسخة احدث من على النت

فإذا كان البرنامج كله كتلة واحدة(ملف exe كبير) سوف تقوم الشركة بنسخ كامل الملف و بالتالي حجم كبير, اما اذا كان الملف مقسما الى عدة اقسام سوف يقوم التحديث في الاقسام التي تحتاج الى تحديث فقط. و لكن ايضا يمكن استخدام patch للتحديث على الملف ال exe الكبير و لكن الامر اصعب بكثير بالنسبة لي على الاقل.

3- و ايضا ممكن ان يستفاد في التقسيم في تنظيم العمل و توزيعه على فرق المبرمجين بحيث تعمل كل فرقة في قسم معين, و بالتالي تكون الامور مضبوطة بشكل افضل, برأيي هذه نقطة مهمة.

4- و ايضا ممكن ان نستثمر قسم معين مثل مكتبة DLL في استخدامها في تطبيقات اخرى او حتى بلغات اخرى, و لكن لا اريد الحديث الان عن المكتبات.

ما أريد ان اسأل عنه هو التالي:

كيف نقوم بتقسيم برامجنا؟ ما هي القاعدة التي سوف نعتمد عليها في التقسيم؟

هل سوف اضع كل فورم في ملف لوحدها؟ هل سأضع قسم من البرنامج مختص في امر معين لوحده؟

ام هل يجب ان اقرر تقسيم البرنامج حسب حجوم الذاكرة التي سوف يتم استخدامها في قسم معين, ام ماذا؟

هل هناك فوائد اخرى غير التي ذكرت في الاعلى للتقسيم؟

سؤال اخير: برأييك الشخصي ما هو حجم الملف ال exe الذي تعتبره كبير؟ هل عندما يتجاوز ال 1MB ام 500 كيلو؟

شكرا لكم

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#2

أخى العزيز Wael Dalloul

أنا فى رأى من ناحية فوائد التقسيم وتكملة لما ذكرت أنه سوف يكون أسهل للمبرمج فحص الكود ومعاينة كل جزء منه قبل إنتهاء المشروع(رغم أن بعض البرامج أو الأغلبية تقوم بجعل البرامج المقسمة لا تعمل ألا من خلال البرنامج الرئيسى وكيف هذا؟ وهذا من خلال أن تكون الأداة مرتبطة بعمل فى أى جزء من البرنامج المقسم فبالتالى سيكون من الضرورى عمل البرنامجين مع بعضهم وهذا صعب جدا عمله فمثلا يكون جزء من البرنامج بالحفظ فهذا الجزء لا يعمل منفردا ألا عندما يعمل جزيئية الكتابة وجزئية المعالجة وكذا جزء أخر وهى تعتبر نفس الفكرة التى طرحتها عن تطوير البرنامج ولكن بشىء أعمق)

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

والله أعلم

سلام

befor any great jop there is a bad jop had done

#3

هناك فائدة أخرى ان برنامجك يصبح "أنظف"

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

الشيفر اقل و بالتالي اوضح و اسهل صيانة

تخيل اني اريد ان اضع مكون شبكة على النموذج من خلال كتابة الشيفرة التي تنشأ الشبكة من الصفر اي رسمها و خصائصها

سيصبح حجم الشيفر التي امامي ضخما و لن يكن التعامل معها مريحا

بينما اذا استخدمت مكون شبكة فسيختفي كم هائل من الشيفرة اضافة إلى ان كود مكون الشبكة قد اختبر من قبل و بالتالي لن اركز عليه

و سأركز على مشاكل و صيانة الكود الرئيسي

اقتباس
سؤال اخير: برأييك الشخصي ما هو حجم الملف ال exe الذي تعتبره كبير؟ هل عندما يتجاوز ال 1MB ام 500 كي

بصراحة لو بلغ حجم الملف 3 او 4 ميجا فلن اعتبره كبيرا

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

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#4

كنت اتناقش انا و الاخ تمام حول الموضوع على الماسنجر و اليكم النقاش كاملاً:

اقتباس
Tammam says:

شو اجا على بالك قصة موضوع تقسيم ملفات المشروع

Tammam says:

موضوع حلو و مهم

Wael says:

هاد الموضوع, كان شاغل بالي كثيرا في الفترة الماضية, و لم اجد إي كتاب او إي مقال في الانترنت يشرح عن هذا الامر

Tammam says:

بس انت سألت سؤال و ما جاوبت عليه

Tammam says:

متى تعتبر ان حجم الملف كبير

Wael says:

بالنسبة لي سابقا فوق 10 ميغا, اما الان يجب ان يكون تحت 500 كيلو

Tammam says:

ليش

Wael says:

لانه بعد تقسيم المشروع, لا داعي لوجد الكثير من الامور في القسم الرئيسي

Tammam says:

في كتير برامج محترمة اوقات حجمها 5 ميجا

Wael says:

و بالتالي هذا قد يساعد في تسريع اقلاع البرنامج

Wael says:

مثل ماذا؟

Tammam says:

طبعا الملف الرئيسي لحالو 5 ميجا

Wael says:

هل لاحظت VS2005 او VS2003

Tammam says:

في برنامج رسم بشتغل عليه

اسمو RealDraw

Tammam says:

شو فيهن

Wael says:

انظر حجم الملف

Wael says:

ال exe

Tammam says:

الملف الرئيسي للغة نفسها

Wael says:

نعم

Tammam says:

لو كان 1 كيلو فليس مقياسا

Tammam says:

لانها محرر لغة برمجة و كان لميكروسوفت

مقاييس معينة عند بناءه

Wael says:

برنامج jetaudio تقريبا حجمه 2 ميغا

Tammam says:

خذ مثلا حجم ملف Word 2003

Tammam says:

حجم الملف الرئيسي لوحده 11 ميجا

Wael says:

نعم

Tammam says:

بينما في نفس الاصدارة حجم ملف

outlook هو 191 كيلو

Wael says:

ما يزال الامر غير واضح بالنسبة لي, متى يتم التقسيم و لماذا؟؟ لذلك سألت

Tammam says:

و انا جاوبت و ابديت وجهة نظري

Tammam says:

لكنك عند شرحك لميزات تقسيم المشروع قدمت

جزءا من الاجابة

Wael says:

انا قدمت ما عندي, ولكن هناك الكثير من الامور التي اريد المناقشة بها حتى يصبح الامر واضح لدي

Wael says:

انا الان حيران, هل الامر احترافي, ام انه افضل, ام ماذا, لا اعرف حقيقة

Tammam says:

احترافي و افضل

Tammam says:

و انت ذكرت المميزات التي تجعله كذلك

Wael says:

برأيك لماذا حجم VS اقل من 500 كيلو, و حجم ملف الورد اكبر من 11 ميغا؟

Tammam says:

كما ذكرت لك حجم vs يجب ان يكون

هكذا لأنه يحقق احد اهداف ميكروسوفت

التي طمحت لها منذ فترة طويلة

Tammam says:

الهدف هو: عدة لغات بيئة واحدة

Tammam says:

و بالتالي لو جمعت ميكروسوفت

هذا الامر في ملف واحد سيكون ضخما جدا

Wael says:

و حتى برنامج الورد, ليس كله في ملف واحد

Tammam says:

هناك فرق

Wael says:

هناك الكثير من الامور تكون داخل ملفات DLL

Wael says:

إلى الان لم يتضح الامر لدي, لاحظ ايضا برنامج nero حجمه 14 ميغا و ايضا برنامج firefox حجم 7 ميغا

Tammam says:

ليس كل ما يتعلق بـ VS موجود بملفات DLL

Wael says:

هناك الكثير من exe

Tammam says:

و لا حتى EXE ستجد كثيرا من الملفات

بلواحق غريبة

Tammam says:

على فكرة word و VS برنامجان متشابهان تماما لكن اهدافهما مختلفة

Tammam says:

الاول محرر نصوص له هدف واحد هو انشاء

الوثائق الرقمية

Tammam says:

الثاني محرر نصوص لكن هدفه ان

يكون شاملا فيشمل عدة لغات

و يتعامل مع كم كبير من الملفات و التنسيقات

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#5

السبب الأساسي بالاضافة للاسباب التي ذكرها الشباب هو ال Re-usability فكل مكتبة منفصلة ستجد أنها مستخدمة في عدة مشاريع لنفس الشركة ...

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#6
اقتباس
السبب الأساسي بالاضافة للاسباب التي ذكرها الشباب هو ال Re-usability فكل مكتبة منفصلة ستجد أنها مستخدمة في عدة مشاريع لنفس الشركة ...

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

ام الامور التي سبق ذكرها هامة؟ و بالتالي يجب اخذها بعين الاعتبار اي يحسب لها حسابات

بالنسبة للسؤال التالي:

برأيك لماذا حجم VS اقل من 500 كيلو, و حجم ملف الورد اكبر من 11 ميغا؟

انا الى الان لم افهم هذه النقطة, لماذا؟؟

حيث انّ برنامج الورد يستخدم في كثير من البرامج, من بينها برنامج outlook مثلا عند كتابة رسالة!

سؤال اخر: هل تقسيم البرنامج يتم دراسته قبل البدء في عمل البرنامج؟ ام بعد الانتهاء من عمله نستطيع تقرير التقسيم الافضل كيف سوف يكون؟

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#7
اقتباس
بالنسبة للسؤال التالي:

برأيك لماذا حجم VS اقل من 500 كيلو, و حجم ملف الورد اكبر من 11 ميغا؟

انا الى الان لم افهم هذه النقطة, لماذا؟؟

حيث انّ برنامج الورد يستخدم في كثير من البرامج, من بينها برنامج outlook مثلا عند كتابة رسالة!

سؤال اخر: هل تقسيم البرنامج يتم دراسته قبل البدء في عمل البرنامج؟ ام بعد الانتهاء من عمله نستطيع تقرير التقسيم الافضل كيف سوف يكون؟

برأى أنا وبعد الملاحظة هذا يعتمد على طريقة تقسيم الملف وحجم الجزيئية المضافة للملف الرئيسى فلاحظ حجم ملفات ال dll والملفات الأخرى المتواجدة مع كلاهما الموجود مع كلا من vs and word ستلاحظ أن حجم هذه الملفات أكبر بكثير من حجم الملفات الأخرى مع word وهذا على ما أعتقد لأنه فى word تم إضافة جزء كبير من عمل البرنامج فى الملف الرئيسى بالعكس من برنامج vs فقد أعتمد البرنامج الرئيسى بشكل كبير على الأستدعاء فقط وهذا ما يتضح من حجومهما والله أعلم

أما عن تقسيم البرنامج فهى تخطط لها قبل الشروع فى عمل البرنامج وتحدد ولكن قد يترتب ويختلف جدول التقسيم أثناء عمل البرنامج من حيث شروعية أو عد شروعية وحتمية وعدم حتمية ;) إضافة المكتبات بداخل البرنامج أى تحميل إستاتيكى أو بملف خارجى أخر أى تحميل ديناميكى

والله أعلم

سلام

befor any great jop there is a bad jop had done

#8

أحد أهم عوامل تخفيض حجم التطبيق هو عزل resources بملفات خارج الملف التنفيذي, وغالبا ما تكون الحجوم الكبيرة للتطبيقات بسبب resources كبيرة مضمنة في التطبيق.

برأيي ملف تنفيذي أكبر من 2MB يعتبر كبيرا وما دون ذلك جيد.

سأعود لتكملة النقاش في بقية النقاط لاحقا, حاليا الوقت لا يسمح.

هذا الموضوع مغلق.

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