الرئيسية     المنتدى     أرشيف المقالات       المكتبة       رفع الصور     إتصل بنا
- المنتدى - كل المشاركات
   كل المشاركات (orwah)


« 1 ... 97 98 99 (100) 101 102 103 ... 111 »


مقدمة في عناصر الوصول لقواعد البيانات
مدير الموقع
مشترك منذ:
2005/2/13 16:07
من Syria
الردود: 1197
غير متصل الآن
قواعد البيانات في دلفي : DataBases In Delphi


إن دعم دلفي اللامحدود لقواعد البيانات يعتبر من أهم سمات هذة اللغة , ومنذ بدايات دلفي أخذت سيطا واسع الإنتشار عن قوة دعمها لقواعد البيانات .

سوف نتكلم في هذة المقالة عن دعم دلفي الواسع لقواعد البيانات ..

الوصول إلى قاعدة البيانات لمحة تاريخية : Accessing a Database: BDE, dbExpress, and Other Alternatives
في بدايات دلفي كان الدعم الوحيد لقواعد البيانات من خلال محرك قواعد بيانات بورلاند BDE (Borland DataBase Engine) ,

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

دلفي 5 شهدت بدايات دعم الـADO (Microsoft Active X Data Object ) وكذلك الـ IBX (InterBase Express )

دلفي 6 أضافت DBExpress إلى القائمة , والذي هو أداة جديدة تدعم تعدد_المنصات ومكونات دخول إلى قواعد البيانات تتسم بالإستقلال والمحمولية , تم تطويرها من قبل بورلاند وهي مرفقة مع كايلكس على لينكس ودلفي على ويندوز .

محرك قواعد بيانات بورلاند : Borland Database Engine (BDE)

تم إنشاء ال BDE مع جداول البارادوكس , حتى قبل أن تكون دلفي قد وجدت بعد . ثم قامت بورلاند بتوسيعة لاحقا ليدعم قواعد بيانات محلية أخرى والعديد من مخدمات الـ SQL (SQL Servers) كذلك ,

يستطيع BDE تأمين دخول مباشر إلى dBASE,Paradox,ASCII,FoxPro, وجداول Access .

وكذلك لة مجموعة من المشغلات (Drivers) تسمى Sql Links وهي متاحة فقط على النسخة Delphi Enterprise تسمح بالدخول إلى بعض مخدمات الSQL , مثل Oracle,Sybase,Microsoft,Informix,InterBase, DB2 servers.

وإذا أردت الدخول إلى قاعدة بيانات أخرى غير متوفرة فإن الBDE يستطيع التعامل مع مشغلات الـ ODBC أيضا .



الميزة الخاصة لإستخدام الـ BDE أن هذة التقنية مدمجة ومضمنة بشكل جيد جدا في دلفي , وعناصرة مدعومة بشكل جيد بالشرح والمساعدة في دلفي , وهو الحل الحيوي الأساسي للدخول إلى قواعد بيانات محلية مثل Paradox و Dbase
وسيئات هذا الخيار أن بورلاند قد أوقفت دعمة وتطويرة , ولن يتوفر لة تحديثات مستقبلية فيما بعد ,
كما أنك بحاجة إلى تنصيبة وإعدادة على جهاز الزبون ,

وهو محرك ثقيل الوزن يتطلب الكثير من ملفات التنصيب ومتطلبات الذاكرة , وهو متاح فقط على ويندوز ,.

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

أما إذا كنت تستخدم مخدم Sql فإني أرى النقل إلى تقنية ربط أخرى خيارا واردا , حسب حاجاتك وتوقعاتك .

يوجد ثلاث أنواع من عناصر الـ DataSet في BDE هيTable و Queryو StoredProc بالإضافة إلى UpdateSQL المستخدمة بالإتصال مع عنصر الQuery .

المكونان DataBase و Session يستخدمان لإعداد الإتصال مع قاعدة البيانات , والعنصر BatchMove يستخدم من أجل نسخ البيانات , .


المكون ADO : ActiveX Data Objects :
ADO وهو إختصار للعبارة ActiveX Data Objects هو واجهة عالية المستوى من مايكروسوفت من أجل الوصول (دخول) قواعد البيانات , ينفذ ADO على تقنية Microsoft ’s data-access OLE DB والذي يسمح بالوصول إلى قواعد البيانات العلائقية وغير العلائقية كذلك البريد الإلكتروني ونظم الملفات وبعض الأغراض الأخرى .

يملك محرك ADO خصائص ومميزات مشابهه لل BDE حيث

يدعم قواعد البيانات المحلية ومخدمات الـ SQL كذلك , وهو أيضا محرك ثقيل الوزن حقيقي مثل BDE , تتصف إعداداتة بإنها بسيطة وسهلة (لإنة ليس مركزيا) ,كما أن التنصيب من الناحية النظرية ليس مهما (!..)

الجميل أن هذا المحرك يأتي مضمنا مع الإصدارات الحالية (الحديثة) من النظام ويندوز .....

ولكن لتعلم على كل حال أن التوافقية المحدودة بين الإصدارات المختلفة للـ ADO مع نفسة سوف تجبرك على تحديث أجهزة المستخدمين ليملكو نفس إصدارة الADO التي إستخدمتها لتطوير البرنامج ونفس الحجم من MDAC (Microsoft Data Access Components) والذي سوف يحدث جزء كبير من نظام التشغيل مما يجعل هذة العملية بعيدة عن البساطة والسهولة ... .

ببساطة ADO ليس متوافقا مع نفسة ومع إصداراتة اللاحقة ., وهذا حال مايكروسوفت دومــا ...

إن إستخدام ADO مع Access أو SQLServer يؤمن بلا شك بعض الميزات الإضافية , لإنها مشغلات مايكروسوفت تعمل على قواعد بيانات مايكروسوفت, يعني بالعامية منقول أهلية بمحلية , لذلك توقع أداء متماسكا في هذة الحالة .

إن إستخدام ADO من أجل Access يعتبر حلا جيدا , ولكن إذا كنت تخطط لإستخدام مخدم SQL آخر أولا عليك التأكد من توافر مشغلات جيدة لة (Drivers) – ربما تظهر لك بعض المفاجأات ..

ADO قوي تماما , ولكن عليك أن تتأقلم معه جيدا ... , إنة موجود فعليا بين تطبيقك وقاعدة البيانات .

ومن الجانب المضاد : لا تستخدم ADO إذا كنت تفكر بالتطوير متعدد-المنصات لإن هذة التقنية الخاصة بمايكروسوفت غير متوفرة من أجل نظام تشغيل آخر .

بإختصار . إستخدم ADO إذا كنت تخطط للعمل فقط على ويندوز وتريد إستخدام Access أو قواعد بيانات مايكروسوفت أخرى , أو أنك عثرت على مزود OLE DB جيد من أجل قاعدة البيانات التي تخطط لإستخدامها ,


مكتبة الـ dbExpress : The dbExpress Library
إحدى خصائص النسخة السادسة6من دلفي هي بداية مكتبة قواعدبيانات DBExpress من أجل منصة الويندوز .

أنا أقول مكتبة لإنة وعلى عكس الـ BDE والـ ADO فإن DBExpress يعتبر خفيف الحجم تماما , وأضع خطا تحت ويندوز لإن نفس المكتبة متوفرة على لينكس من أجل كايلكس Kylix .

أن أهم ميزتين في DBExpress هي أن يكون خفيفا ومحمولا (سهل التنقل) . وهما السبب الكامن وراء إنتاجة من شركة بورلاند .

وأهم مايميزة بالتالي هو أنة وبشكل أساسي لا يحتاج إلى أي إعدادات على جهاز الزبون .....

وبالمقارنة مع البقية فإن DBExpress محدود بالقدرات , فهولايستطيع الدخول إلا على مخدمات الـSQL , (وبالتالي لاقواعد بيانات محلية .....) كما أنة لايملك مقدرات التخزين المؤقت (no caching capabilities) , ويؤمن فقط الإتصال غير الموجة مع البيانات ...

كنظرة أولى ربما تظن أن هذة الأداة عديمة النفع وغير جيدة ... ؟؟؟

وبالمقابل هذة هي الميزات التي جعلتها ومميزة وقويه :

الإتصال غير الموجة مع البيانات وبدون أي تحديث موجة هو الحالة المعيارية في حال كنت تريد خدمات طباعة التقارير وتوليد ملفات html , أو إظهار محتويات قاعدة البيانات .

إذا كنت تريد بناء واجهات مستخدم لتعديل البيانات بدلا من ذلك , تذكر بإن دلفي تملك أدوات خاصة (ClientDataSet ) والتي تؤمن حلول الإستعلامات والتخزين المؤقت.. (caching and query resolution.) . فإذا دمجت DBExpress معها فإنك ستحصل على أداء رائع ومتفوق ,

هذة المكونات تسمح لتطبيقك المبني على DBExpress بإمتلاك تحكم أكثر بكثيرمن بإستخدام محرك قواعد بيانات منفصل. والذي يقوم بأمور إضافية لك , لكنة يقوم بة بالطريقة التي يريدها هو وليست الطريقة التي تريدها أنت .

لاتنسى أن DBExpress لايسمح لك بالخطأ ويجبرك على إتخاذ حلول سريعة وقويه .

ومن المهم جدا أن تفكر بإن بورلاند قد نشرت هذة المكتبة , وهي الخيار الحيوي الوحيد المتاح من أجل لينكس , وقد أوقفت بورلاند تطوير BDE وتطور DBExpress بدلا عنة ,, ذلك فإن المستقبل لها ولن تتوقف بورلاند عن دعمها في المدى القريب وسوف تستمر بتحديثها . لذلك فإن التفكير في الDBExpress كحل في البرامج هو رأي سديد , وكذلك التفكير في تحديث برامج قواعد بيانات أخرى إلى هذة البنية الجديدة DBExpress ...


محرك إنتربيز InterBase Express (IBX) :
إن إنتربيز سيرفر هو منتج بورلاند مفتوح- المصدر ... والأجمل أنة مجاني كذلك ,...

على عكس BDE و ADO و DBExpress فإنExpress InterBase ليس محرك مخدم قواعد بيانات مستقل , وإنما تقنية من أجل دخول مخدم قواعد بيانات محدد (وهو InterBase) , فإذا كنت تخطط لإستخدام InterBase فقط كنظام إدارة قواعد بياناتك العلائقية (your back-end RDBMS,) فإن إستخدام هذة المجموعة من العناصر سوف تمنحك التحكم الأعلى لهذا المخدم , وتقدم الأداء الأفضل , وتسمح لك كذلك بالتحكم والمحافظة على المخدم من خلال تطبيق زبون عادي .....

ملاحظة : إن إستخدام InterBaseExpress يلقي الضوء على إستخدام عناصر مخصصة للإتصال بنوع محدد من قواعد البيانات , والتي هي متوفرة من أجل العديد من الأنواع مثل Oracle, Access, dBase والعديد ...

وبإختصار فإنك تستطيع إستخدام InterBaseExpress إذا كنت متأكدا أنك لن تغير نوع قاعدة بياناتك في المستقبل , وتريد تحقيق الأداء الأعلى والتحكم الأفضل على حساب الإستقرارية والمحمولية ...

والمشكلة الأساسية لهذا النوع من الأدوات , أنة إذا لم يحقق لك هذا الأداء الأعلى ما تريدة فإنك ستضطر للبحث على مكونات خاصة بنوع آخر من البيانات وتضطر لتعلمها وتعلم حالاتها الخاصة من جديد ,, بدلا من تعلم محرك قواعد بيانات عام يسهل عليك تغيير النوع أو التعلم ....



العنصر ClientDataSet :
وأخيرا يوجد عنصر مشتق من TdataSet والذي يملك سلوك خاص ويمكن دمجة مع أدوات وصول لقواعد بيانات أخرى

في الحقيقة إن عنصر الـ ClientDataSet يستخدم للدخول إلى بيانات مخزنة بالذاكرة , البيانات المخزنة بالذاكرة هي بيانات مؤقتة بشكل كامل , وسوف تفقد عندما تقوم بإغلاق برنامجك . يمكن حفظها إلى ملف محلي وتوريدها إلى عنصر إتصال آخر ..

ماأريد قوله أن إستخدام ClientDataSet لوحدة غير مناسب إلا للمشاريع الصغيرة (يحمل كل السجلات إلى الذاكرة دفعة واحدة) مع أنه يعتبر أكثر عنصر قواعد بيانات يملك دوال تحكم والميزات الموجودة فيه أفضل من غيرة وغير موجودة في BDE أو ADO ..... ولكن يمكن كما أتفقنا أن ندمجه مع جداول DbExpress عن طريق مزود Provider مرفق مع DbExpress يقوم بكل العمل عوضا عنك . وبهذه الطريقة نكون قد أستفدنا من كل ميزات ClientDataSet ونحن نعمل على ملفات مؤقته على جهازنا , وعند الحاجة نقوم بإرسال هذة الملفات دفعة واحدة أو عند كل حفظ أو حذف إلى السيرفر وبالتالي الإستفادة من كل ميزات DbExpress كذلك .

للمزيد حول clientDataSet
إضغط هنا ..



بقلم عروة علي عيسى

7/5/2004

بتصرف عن Mastering Delphi 7



مقالة قديمة سأحاول دعم الأدوات الجديدةى في دلفي . قريبا

أرسلت بتاريخ: 2005/3/17 3:47
خيارات المشاركة وتحويلها إلى تطبيقات أخرى خيارات


تقديم لـ DELPHI 2005 :
مدير الموقع
مشترك منذ:
2005/2/13 16:07
من Syria
الردود: 1197
غير متصل الآن
شكرا يا ikossan .

أضفتها لقسم الدروس , لإنها بشرحها الواضح والصور المرفقة تصلح لتكون درس في القسم .

أرسلت بتاريخ: 2005/3/16 7:52
خيارات المشاركة وتحويلها إلى تطبيقات أخرى خيارات


الى المشرف عروة.
مدير الموقع
مشترك منذ:
2005/2/13 16:07
من Syria
الردود: 1197
غير متصل الآن
همهم ... الأخ الحبيب peruzzi

خلص ياسيدي .... معناها فيك تعتبر حالك بموقعك , أهلين وسهلين فيك Vampire . ولاتبخل علينا بملاحظاتك .

أرسلت بتاريخ: 2005/3/16 7:22
خيارات المشاركة وتحويلها إلى تطبيقات أخرى خيارات


حجوم ملفات لغة دلفيDelphi . خطأ لغة ام خطأ مبرمج
مدير الموقع
مشترك منذ:
2005/2/13 16:07
من Syria
الردود: 1197
غير متصل الآن
وهي أيكوسان حكالكم الحكاية من الأول للأخير ... وبالصور .

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

ملاحظة , هيك بدك تفسدن يالشباب بالشروحات الجاهزة , يعني شو كان صار لو بحثو شوي بالجوجل ؟؟ :x: .. عم أمزح صديقي , أكيد الكل عم يدعيلك لأنك وفرت ساعات أنترنت بحث

حطيت رابط للموضوع بالموقع الرائع arabteam خلي بقية الشباب يضطلعو عالموضوع

أرسلت بتاريخ: 2005/3/15 9:16

حررت بواسطة orwah في 2005/3/15 20:11:07
خيارات المشاركة وتحويلها إلى تطبيقات أخرى خيارات


أي محرك تفضل لبرمجة الألعاب DirectX أم OpenGL
مدير الموقع
مشترك منذ:
2005/2/13 16:07
من Syria
الردود: 1197
غير متصل الآن
إقتباس :

Vampire كتب :
صناعة الألعاب سهلة و لكن بتعترضنا مشكلة وحدة هي الوقت ..


:r: رأيي :
ليست سهلة هي من مجموعة الأصعب حتما ...
وليست مشكلة الوقت فقط , بل أيضا العمل المنظم المتكامل ولاسيما في الإطار الجماعي .

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

أرسلت بتاريخ: 2005/3/15 9:08
خيارات المشاركة وتحويلها إلى تطبيقات أخرى خيارات


الى المشرف عروة.
مدير الموقع
مشترك منذ:
2005/2/13 16:07
من Syria
الردود: 1197
غير متصل الآن
أهلا vampire ..
تكرم عينك .
منتدى visual basic صار هون :
http://www.orwah.net/modules/newbb/viewforum.php?forum=24

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

أتمنى لك دوام الصحة والعافية , مع أني لم أعرفك يا vampire
أهلا بك هنا , بإنتظار مشاركاتك التي تعرفنا عليك أكثر

عروة

أرسلت بتاريخ: 2005/3/15 8:57
خيارات المشاركة وتحويلها إلى تطبيقات أخرى خيارات


صنعة البرمجيات ضد هندسة البرمجيات
مدير الموقع
مشترك منذ:
2005/2/13 16:07
من Syria
الردود: 1197
غير متصل الآن
ملاحظه : الكتاب متوفر في مكتبة الكتب

أرسلت بتاريخ: 2005/3/14 8:19
خيارات المشاركة وتحويلها إلى تطبيقات أخرى خيارات


بين الدلفي والفيجوال بيسك ...دعوة للمقارنة والمشاركة
مدير الموقع
مشترك منذ:
2005/2/13 16:07
من Syria
الردود: 1197
غير متصل الآن
جميل .....
الأسمبلي المضمن تقنية راقية تؤمن low level access وتعطي جرعة إضافية من القوة للغة البرمجة .

دلفي تدعم الأسمبلي المضمن بإصدارات win32 , لكن إصدارات Delphi for .Net كغيرها من لغات منصة .Net (لغات المستقبل) تم تجريدها من هذه الميزة , ولم تعد delphi 2005 (في شخصية .NEt فقط , حيث تدعم delphi 2005 بناء تطبيقات win32 الإعتيادية) ولم تعد delphi 2005 على سبيل المثال تدعم الأسمبلي المضمن , تحت شعار أمن التطبيقات الذي أولته .net إهتماما خاصا (راجع بند أمن اللغة في المنتدى : إضغط هنا)

المهم نعود لنسخ دلفي 32 (خذ مثلا دلفي7 وما قبلها) . الأسمبلي المضمن يدخل في اجزاء كثيرة من كود مكتبات VCL نفسها , خذ مثلا تابع التحويل الشهير inttostr الذي تمت كتابته بالأسمبلي ليعطي أكفأ أداء ممكن ..

دلفي تدعم كتابة مقاطع أسمبلي , لابل من الشائع رؤيه هكذا مقاطع في أكوادها . خاصة عندما يتعلق الموضوع بالسرعة العاليه , او بالوصول لمنافذ خاصة , أو لإستخدامات التحكم الآلي أو غيرها ...

inline assimpler وسام شرف على صدر اللغات الداعمة له , ومن أهمها delphi التي لازالت تحتفظ بمخزون قوة إضافي لحالات مشابهه

visual Basic , (أقصد بها فيجوال بيزك التقليدية وليست VB.NET ) . تعتمد هذه اللغة بنية مميزة تؤمن لك تحقيق أهداف مذهلة بضريبة صغيرة جدا , تعتمد على تبسيط فكرة بناء تطبيقات النوافذ . VB لغة تستحق الإحترام لإنها تحقق لك ما وعدتك به , ولكنها لم تعدك قط بأن تؤمن لك دخول منخفض المستوى من شاكلة أسمبلي مضمن مثلا .
أقصد من ذلك ان مايقدمة الأسمبلي المضمن للأسف ليس من أهداف فيجوال بيزك , التي تفضل القيام بالأمور السهلة بطريقة أكثر سهولة .
في حين تنحاز أستراتيجية دلفي للقول . القيام بالأمور الصعبة بطريقة أسهل . حتما ليست أسهل من VB ولكنها سهلة نسبيا .

Visual Basic لاتدعم أسمبلي مضمن , ولاتفكر في ذلك . محترفو فيجوال بيزك يعرفون ذلك ويسعون لتحقيق أفضل تأقلم مع خصائص VB السلبية منها والإيجابية .

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

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

أرسلت بتاريخ: 2005/3/14 8:01
خيارات المشاركة وتحويلها إلى تطبيقات أخرى خيارات


صنعة البرمجيات ضد هندسة البرمجيات
مدير الموقع
مشترك منذ:
2005/2/13 16:07
من Syria
الردود: 1197
غير متصل الآن
صنعة البرمجيات ضد هندسة البرمجيات

undo من شباب الفريق العربي للبرمجة كتب مقالة حلوة عن هندسة البرمجيات مقابل صنعة البرمجيات .. المقاله الأصلية موجودة على الرابط : http://www.arabteam2000-forum.com/ind ... 15&view=findpost&p=269326

-------------------

كتاب Software Craftsmanship, The New Imperative هو كتاب تم وضعه من فترة في المنتدى لكني لم أجد الرابط له

الكتاب اكثر من رائع و عندما بدأت في قراءته وجدته مسلي جداً بالرغم انه ليس موجه للمبرمجين و لكن للمدراء و صناع القرار في شركات البرمجة و يكفي اني قرأت منه 6 فصول في جلستين..
لكي احصل على اقصى افادة منه قررت البدء في تلخيصه فوراً..

الكتاب يتناول نظرة مختلفة للبرمجة هي software craftsmanship او صنعة(حرفة) البرمجيات في مقابل الsoftware engineering او هندسة البرمجيات.

الكتاب يهاجم بضراوة هندسة البرمجيات ويرى انها غير مناسبة لمعظم المشاريع الحالية و يراها مناسبة فقط للمشاريع العملاقة جداً للاسباب التالية:
1. هندسة البرمجيات تعتمد على عمل مشابهات مع العمليات الصناعية في الهندسة الميكانيكية و المدنية و غيرها و هو يرى ان ذلك غير مناسب لصناعة رأسمالها فكري بالكامل.
توضيح: العمليات الصناعية لها مدخلات و مخرجات معروفة و قوانين و معادلات تحكم علاقة المدخلات بالمخرجات.. يعني احضر لمصنع سيارات مكونات السيارة و خلال وقت ثابت ومحدد سلفاً ستحصل على السيارة. اما البرمجة فالمدخلات هي متطلبات النظام و المخرجات هي المشروع النهائي اما عملية التحويل من المدخلات و المخرجات فلا يمكن قياسها اوادراكها فلو لديك مبرمج شاطر واحد يمكنه ان يحل مشكلة يعجز عنها جيش من المبرمجين المتوسطين.
مثال: اذا كان شخصين يمكنهم حفر حفرة ما في يومين .. فكم شخص يلزم لحفر الحفرة في يوم واحد؟
حسابياً: 4 اشخاص .. لكن الحقيقة فان العملية يدخل فيها الكثير من الاعتبارات الاخرى فعلى سبيل المثال قد لا يمكن لاكثر من شخصين الحفر في نفس الوقت و بالتالي فزيادة العدد لن تؤثر ..

2. هندسة البرمجيات لا تدخل في حسبانها مسألة مدى احترافية المبرمج .. بل تعتمد ان كل مبرمج له دور يؤديه بدون النظر لامكانياته بل أن آخر شئ تحتاجه هندسة البرمجيات هي مبرمج يقوم بالتعديل على تصاميم الdesigners. بينما في الحقيقة فان المبرمج المميز هو اهم مصدر لاي مشروع.
فمثلاً: في احصائية ان اكثر من ثلث المشاريع يتم انقاذها بواسطة مبرمج فذ في فريق العمل .. دور هذا المبرمج الفذ غير مذكور اطلاقا في هندسة البرمجيات رغم كونه سبب نجاح المشروع.

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

4. هندسة البرمجيات تقوم بالفصل بين الادوار المختلفة في عملية التطوير يعني هناك محللي النظام analysts و المصممين logic designers و المكودين programmers و حتى المكودين هناك الاختبار testing و الصيانة maintenance و غيرها.. ستجد ان من يحلل النظام ليس هو من يكتب الكود و ان من يكتب الكود ليس هو من يقوم بعملية الصيانة. هندسة البرمجيات تفسر ذلك باهمية التخصص و ان شخصاً واحداً لا يمكنه تغطية نظام باكمله.
اما صنعة البرمجيات فتعتمد على التداخل و كلنا نعلم ان افضل من يقوم بعملية الصيانة هو من كتب الكود في البداية مهما كانت جودة التوثيق و وضوح الكود. و تعارض هندسة البرمجيات بأن صنعة البرمجيات تصر على ان مبرمج واحد يمكنه استيعاب و فهم نظام بأكمله و في ذلك توفير وقت و مجهود رهيبين كانوا يضيعون في هندسة البرمجيات لنقل المعلومة عبر الاوراق و المستندات من مهندس لاخر.
فمثلاً مشاريع المصدر المفتوح او open source تجدون ان بداية المشروع تكون دائماً مجموعة صغيرة تقوم بجميع الادوار و الناتج النهائي لهذه المجموعة الصغيرة يكون مشروعاً مميزاً يجذب الكثير من المتطوعين اليه.. لكن تظل دائماً عملية الصيانة لقلب المشروع هي مهمة هذه المجموعة الصغيرة و بالتالي فان الصيانة هنا هي شهادة بجودة المبرمج اما في هندسة البرمجيات فتجد من الشائع ان يقوم بالصيانة اجدد المنضمين..
لذلك فصنعة البرمجيات اقل تأثراً بمراحل في حالة رحيل احد المطورين مهما كانت اهميته لان النظام اولاً و اخيراً معروف من الجميع.
سيناريو آخر هو تعديل متطلب من متطلبات النظام.. هذا التعديل رغم كونه شائع جداً في السوق لكنه يعتبر كابوس في هندسة البرمجيات.. لأن عملية التعديل تتطلب التعديل في مئات المستندات و الأوراق من محللي النظام ثم تمرير هذه المستندات إلى المصممين الذين يقومون بدورهم بالبحث عن التغييرات الواجبة في تصاميمهم و إعادة صياغة مستنداتهم و تمريرها إلى المكودين.. و حتى في هذا المرحلة ففرق الاختبار ستبذل مجهود مضاعف لمعرفة ما هي المناطق في البرنامج الذي لم يشاركوا في كتابته التي ستسبب أخطاء بسبب الكود الجديد الذي لم يشاركوا في كتابته أيضاً. و بالتالي تميل هندسة البرمجيات الى تجميد المتطلبات بمجرد الموافقة عليها.
أما في صنعة البرمجيات فعملية تغيير المتطلبات أسهل بكثير لأن جميع اعضاء الفريق يلمون بالنظام تماماً و ليس هناك الحاجة لاعادة كتابة و تعديل مئات المستندات الورقية قبل البدء في العمل.. بل على العكس فإن صنعة البرمجيات تعتمد تماماً على إعادة تحديد المتطلبات بصورة دائمة حسب ما يراه المستخدمون .. ثم عند الحاجة لتعديل شئ ما فالمستخدم يشير الى البرنامج الذي لديه و يحدد التغييرات التي يريدها.

5. تعتمد هندسة البرمجيات على خرافة : "مقاس واحد يناسب الجميع" و تصل للمثالية اذا استطعت ان تطور كل برامجك فقط بالتوصيل بين مكونات تم تطويرها لديك من قبل. لكن عملية إعادة الاستخدام نفسها صعبة للغاية الا اذا كنت تحصل على بعض هذه المكونات من شركات اخرى كنظام قواعد بيانات من اوراكل و نظام لتنصيب برامجك من Setup factory و هكذا..
أحد المشاكل التي تواجه اعادة الاستخدام هي ان الهاردوير نفسه يتطوّر سريعاً جداً و بمعدل الضعف كل 18 شهر و بالتالي المكون الذي استخدمته من 5 سنوات على جهاز 300 ميجاهرتز و ويندوز 98 لن يكون مناسباً على الاطلاق لجهاز 2 جيجا هرتز و ويندوز xp .
مثال: سبب فشل رحلة الفضاء آريان 5 كان اعادة استخدام نظام آريان 4 الناجح جداً.. هل تعرفون ماذا كانت المشكلة؟ المشكلة هي ان متغير جديد تمت اضافته للنظام من نوع Number 64 bits سبب خطأ overflow عند تحويله الى متغير من نوع Number 16 bits و الذي كان مناسباً للهاردوير الخاص بآريان 4 .

أرسلت بتاريخ: 2005/3/14 7:03
خيارات المشاركة وتحويلها إلى تطبيقات أخرى خيارات


أمن اللغة Language Safe :
مدير الموقع
مشترك منذ:
2005/2/13 16:07
من Syria
الردود: 1197
غير متصل الآن
لا أقصد أي من مفاهيم الأمن المتعلقة بالاختراق أو حماية البرامج.
ما أقصده هنا هو تساهل اللغة مع أخطاء المستخدم والسماح له بإنتاج تطبيقات غير مستقرة . اللغة الآمنة تبعد المستخدم عن الخطر قدر المستطاع, وتوجههُ إلى إتباع الطرق الآمنة أكثر في الحل, وتعطيه أدوية ذات أعراض جانبيه قليلة قدر المستطاع.
لاحظ مثلا الجافا .
جافا جيده جدا من هذه الناحية, تسمح لك بتنفيذ الأشياء من وجهه النظر الآمنة فهي تجبرك مثلا على التعامل مع الأغراض في بنيتها غرضية التوجه الصرفة حتى في برامجك الصغيرة , مما يخدمك في المستقبل في حال توسيع برنامجك . حيث تكون قد بنيت قاعدة سليمة وفق قوانين البرمجة الغرضية التي تسهل إعادة استخدام الشفرة وتوسيعها مما يجعلك تزيد حجوم برامجك بثبات وإستقرارية بعيدا عن الأخطاء التي كان من الممكن أن تقع بها لولا أن أجبرتك بالعمل على الأصول من البداية والتي ربما كلفتك إنتاج برامج غير مستقرة .. ,
كما أنها مثلا تحميك من الوقوع في أخطاء المؤشرات الحسابية ولاتسمح لك باستخدامها أو تعريفها مع أنها تعتمد عليها داخليا وتستفيد من ميزاتها .
نعم تعتبر المؤشرات أدوات فائقة القوه ورائعة للتحكم والسرعة, ولكن حديثا تم اعتبار المؤشرات أنماط غير آمنه,وهذا ما يفسر التخوف الحالي من دعم المؤشرات .
مثلا في بيئة .NET لا يوجد دعم كامل للمؤشرات كما كان في Win32 حتى الآن الدعم يتم بطريقة غير مباشره وبحالات خاصة في معظم الأحيان . (ربما C++/CLI هي اللغة الوحيدة التي ستبقى مع المؤشرات , مع أني لم أستطع جمع معلومات كافية عنها بعد , لكن يقول أصحابها بتأكيد اخبار الدعم الجيد للمؤشرات فيها ) .
كل من VB.Net و C# و Delphi .NET لا يدعم المؤشرات , ولكن توجد التفافات برمجيّة تسمح لك بالقيام بأعمال المؤشرات بطرق آمنه أكثر , بشكل عام باستخدام الأغراض , أو مثلا بالعمل تحت نمط Unsafe الذي يتيح استخدام المؤشرات . ولكن نادرا ما يستخدم إلا إذا أردنا معالجه شفرة قديمة وتستخدم بدل ذلك المراجع reference وهي مشابهه لما هي موجود في الـ C++ لكن مع تخطي بعض القصور .

مع أن المؤشرات قويه جدا وسريعة جدا ومهمة جدا , قامت لغة عريقة مثل Java بالاستغناء عنها , لصالح مبرمج الجافا

كما أن جافا تسمح بالتمرير_بواسطة_القيمة فقط (pass-by-value) . وبالتالي تجعل جافا شفرتك أقل عمومية وأكثر أمانا فهي لا تسمح بالتمرير بواسطة المرجع (pass-by-reference).
اللغة C القديمة تشاركها هذه الخاصة , لكن كل من ++ C و باسكال يختلفان معها.

- حتى الإدارة الآلية للذاكرة ومجمع النفايات المتقدم في جافا تعتبر مزايا مهمة من ناحية أمن اللغة , فهي تحمي المستخدم من الوقوع في أخطاء إدارة الذاكرة . بلا شك لها سلبياتها هي أيضا, فهي تفقد اللغة بعض مزايا القوه والتحكم وقد تسبب لها بطىء إضافي في التنفيذ, ولكن النتيجة أن تطبيقات مبرمجي جافا خالية من أخطاء المستخدم في إدارة الذاكرة إلى مدى بعيد مقارنه بمبرمجي C أو C++.

دلفي تملك نظره مشابهه ولكنها مختلفة عمليا عن جافا. فهي تعتمد مبدأ تغليف احتياجاتك من نظام التشغيل بأدوات خاصة – (تذكر الكميه الكبيرة من الأدوات الموجودة في شريط أدوات دلفي ) – وهذا يجعلك تحل المسألة من وجهه نظر دلفي نفسها وبطريقتها الخاصة,مما يزيد من أمن برنامجك ضد الأخطاء التي قد ترتكبها , أو ضد نقص في معالجتك لكامل الحالات البرمجيّة .
كما أن دلفي استفادت من النحو الدقيق للغة ObjectPascal
لاحظ مثلا القيود الصارمة التي تفرضها على نسب وقلب المعاملات . الحالة الإفتراضية أنك ستبرمج على دلفي بالطريقة التي تجعلك هي تبرمج بها , آخذه بيدك بعيدا عن العديد من المخاطر , مالم تقم أنت بطلب دخول أكثر تعمقا ,
إنها ليست كالجافا تماما , فهي تسمح لك بالدخول في نهاية المطاف ولكنها تجعل الحلول الآمنة هي الحلول الإفتراضية . وعندما تقرر أن لا تعمل وفق هذه الحلول عليك أن تتحمل مسؤولية شفرتك.

C# قفزت قفزه مهمة في هذا المجال إذا ما قارناها بC++ القديمة فهي تولد شفرة آمنه أكثر منها , لن تستطيع في C# إنجاز تحويل غير آمن مثل تحويل قيمه رقميه ( Double ) إلى قيمه منطقيه (Boolean ) , كل الأنماط ذات القيم ( Value Types) يتم تهيئتها إلى صفر وكل الأنماط ذات المرجع يتم تهيئتها إلى Null أوتوماتيكيا من المترجم .
ملاحظه: على كل حال لاتزال .NET مشوبة بكثير من الأخطاء والثغرات الأمنية , ونحن عند وعد مايكروسوفت بحل كل ذلك .

VB.Net شبيهة بإختها C# إيضا ولكنها حسب إعتقادي أكثر أمنا منها ,
السبب هو طبيعة VB.Net ذات الوضوح العالي , وهذا يضاعف ميزة الأمن بشكل أسي , فلا تتوقع خروقات أمنية كبيرة في ظل عملك في بيئة مثل Visual Basic .

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

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

.. النتيجة ستكون كارثية مالم يكن المبرمج على قدر المسؤولية .

انطباعي عن لغة C++ أنها لغة الخبراء , ولا أستطيع تخيل تطبيقات مستخدمي C++ لازالوا في بداية الطريق من دون أخطاء . فإذا أخذنا أن متوسط مستخدمي C++ لن يكون من الخبراء عندها سأصف C++ أنها لغة غير آمنة .

لغة Perl لغة جميلة وجيدة, ولكنها ببساطه تسمح لك أن تكتب شفرة بغاية السوء بنفس البساطة التي تكتب بها شفرة أنيقة, وهي مثل C++ يمكن أن تتساهل مع أخطاء المستخدم ويمكن أن تسمح له بإنتاج شفرة غير آمنه.
يقول (Larry Wall) منتج Perl: "The very fact that it's possible to write messy programs in Perl is also what makes it possible to write programs that are cleaner in Perl than they could ever be in a language that attempts to enforce cleanliness ".

Python : لغة متساهلة كثيراً مع أخطاء المبرمج . لدرجه أنها لن تظهر لك أي تنبيه في حال لم يتم تعريف التابع أو الحقل أو المتحول , أو عند تمرير بارامتر غير صحيح للتابع أو أي شيء آخر وبذلك فإنه لا سبيل لاكتشاف الخطأ إلا بالوقوع به عند الأمر بتنفيذ البرنامج .
مع العلم أن بايثون يؤمن معالجة جيدة جداً للاستثناءات وذلك في زمن التنفيذ.

Lisp لا تتسامح أبداً مع أخطاء المبرمج وسوف يظهر لنا تنبيه لجميع الأخطاء النحوية على خلاف بايثون وذلك في زمني التصميم والتنفيذ .

أرسلت بتاريخ: 2005/3/13 3:51
خيارات المشاركة وتحويلها إلى تطبيقات أخرى خيارات



« 1 ... 97 98 99 (100) 101 102 103 ... 111 »






عروة عيسى
2005-2007

Powered by XOOPS