19

التعامل مع المشاريع البرمجية الكبيرة : تجربتي

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

الواجهة الخلفية

و هي عبارة عن طبقتين طبقة ال Persistence لجميع جداول قاعدة البيانات (37 جدول) و طبقة تعطي الدخول الى قاعدة البيانات عن طريق HTTP و هي Full Restful..

الواجهة الأمامية

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

تطبيق الجهاز اللوحي

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

دخل هذا المشروع حيز الاستغلال يوم 1 أغسطس (منذ شهر) و تكلفته الجملية حوالي 7000 دولار أمريكي و بما أنه أول مشروع أشارك فيه بهذا الحجم (50 مستعمل يدخلون يوميا و يشتغلون بطريقة مكثفة) فقد أردت نشر تجربتي و ماذا تعلمت و تتلخص في النقاط التالية :

  • يجب أن تكون هناك صداقة بين الفريق لتجاوز الضغط و الصعوبات المختلفة.

  • يجب أن تولى لل Tests الأولية المطلقة و بجميع أنواعها و طرقها و حالاتها (unit tests, Integration tests, Non regression Tests) و الحمد لله منذ التسليم النهائي لم يحصل أي خلل تقني أو وظيفي.

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

  • GIT وسيلة رائعة و لكن يجب العمل بال Branches و التنسيق المطلق بين أعضاء الفريق في pull و merge وcommit و push.

  • ابقاء السورس في مستودع مركزي موحد و التصرف الجيد فيه كي لا يخرج عن السيطرة (بين ما كتبناه و المكتبات المستعملة مشروعنا يتجاوز المليون سطر).

  • تصورنا نظرياََ أن بعض الجداول في قاعدة البيانات مع مرور السنوات قد تتجاوز ال 15 مليون سطر و بالتالي فان العمل بالطرق العادية في الاستعلام و البحث (For loops, ArrayLists, Array) هو نوع من العبث و بالتالي لجأنا الى ال Hashtables و Hashmaps بنينا عليها جزءََا كبيراََ من المشروع (تخفض في complexity من n الى 1 ) .

هذه تجربتي البسيطة التي عشتها لمدة 5 أشهر مع العلم بأني مطور برمجيات في شركة فرنسية و أعمل بدوام كامل و أصحابي أيضاََ (يعني لا نتفرغ للمشروع الا في المساء و في نهاية الأسبوع), و أتمنى أن أطلع على تجارب الاخوة في التعامل مع المشاريع البرمجية الكبيرة نسبياََ..

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

تجربة مثيرة ,

هل يمكن ان تحدثنا قليلا عن ال Hashtables ... شرح نظرى كلامى عن كيف تعمل والاختلاف بينها والطريقة التقليدية .

هذا شرح مفصل للمزايا و طرق الاستعمال في لغة جافا التي استعملناها في الواجهة الخلفية

ياسين المفتوحي أضف ردا

السلام عليكم،

شكرا على مشاركتكم لهذه التجربة.

هل يمكنك اعطائي معلومات عن الخادم الذي تستعملونه، أقصد الخصائص التقنية.

الواجهة الخلفية مصممة بلغة جافا (JPA, JERSEY FRAMEWORK) بالكامل على خادم REDHAT JBOSS و الاستضافة Redhat openshift أما الواجهة الأمامية فاستضافة عادية للمواقع و هي مصممة ب Angular JS ..

ما هي قاعدة البيانات المستخدمة؟

-1

في php ال array مبنيه على ال hashtable اصلاا ، لاداعي للتفكير كثيرا فقط برمج ما تريد

انها العملاقه php