هذه المقالة ستبين كيف يمكن أن تستخدم ال Interface في جعل الكود قابل للتطوير بسهولة Extensibility، وسوف نأخذ مثال على ال Repository Pattern. في هذه السلسلة سوف نوضح ما يلي: الفرق بين ال Abstract Class وال Interface دور ال Interface في قابلية الصيانة Maintainbility عمل...
واحدة من أهم الأسباب في استخدام ال Interface هو أنه يساعد في جعل الكود أكثر قابلية للصيانة Maintainability، أي الكود المرن في التغيير وليس الذي يحتاج تغييره كاملاً بسبب تغيير بسيط، وبالتالي يضمن هذا الأمر أن الكود يعمل للمستقبل Future Proof Code. فالتطبيقات دائماً...
استخدام ال Interface وال Abstract Class يضيفان طبقة من ال Abstraction في الكود، والفروقات التي بينهم هي التي تحدد أي Abstraction سوف تفضلها للمشكلة التي تريد حلها. في هذه السلسلة سوف نوضح ما يلي: الفرق بين ال Abstract Class وال Interface (المقالة الحالية) دور ال...
كل البرمجيات لديها بيانات يتم جلبها من قاعدة البيانات، هنالك بيانات يتم جلبها بإستمرار، في البرمجيات الضخمة لابد أن تكون سرعة الإستجابة لجلب هذه البيانات كبيرة ، فالثواني قد تفرق في حال برمجيات المبيعات التي تتعامل بصورة مباشرة من الزبون مثل أمازون أو غيرها من...
شهد التطور الكبير في مجال الانترنت والاجهزة الذكية واللوحية طفرة كبيرة خلال السنين العشر الاخيرة , ادى ذلك لدخول الكثير من المستفيدين لهذه الخدمات لعالم الانترنت ومحاولة نقل اعمالهم الي المنصات , ولم يكتفو فقط بنقل الاعمال بل حتى المتعة entertainment والتواصل...
في هذه المقالة سوف نتحدث عن بوابة وواجهة العبور الى ال Backends، ففي التطبيقات الضخمة التقليدية Monolithic يكون هناك رابط واحد Endpoint يمثل بوابة الدخول الى ذلك النظام. بينما في ال Microservices فكل خدمة مصغرة لديها ال Endpoints الخاصة بها، وسوف نتحدث تأثير هذا الأمر...
انتشرت في الآونة الأخيرة مفهوم ال Microservices بشكل كبير، عشرات المقالات والدروس التي تتحدث عنها، العديد من المحاضرات والمؤتمرات حولها وفوائدها وعيوبها. وانقسم مجتمع المطورين لفريقين، فريق يرى أنها ليست شيئاً جديداً وأنها مجرد إعادة تسمية Rebranding لمفهوم ال SOA....
مفهوم ال Single Responsibility Principle واختصاراً SRP هو من أهم المفاهيم في أساسيات تصميم البرمجيات SOLID، وبنى هذا المفهوم اعتماداً على مفاهيم ال Coupling وال Cohesion وال Separation of Concerns والتي سبق أن تحدثنا عنها سابقاً هنا ماذا تعرف عن ال Coupling وال...
ما هو مفهوم ال SOLID ال SOLID هو اختصار لمجموعه من العادات والتي إن قمت باتباعها سوف تحصل على كود أكثر قابلية للصيانة وأسهل في التغيير والتكيف مع متطلبات المشروع المتغيرة Adaptive Code. وليس كما قد يدل الاسم SOLID على أنه شيء يجعل الكود جامد بل بالعكس تماماً، فهذه...
ماذا نعني بال Coupling وال Cohesion كثيراً ما نسمع عن هذا المصطلحان وأنه يجب أن تسعى الى أن يكون الكود قليل التداخل Low Coupling وأكثر تجانساً High Cohesion بدون توضيح مناسب لمعناها، في هذه المقالة سوف نوضح هذه المصطلحات والفرق بينهم بشكل مبسط ونوضح طرق مختلفة لتحقيق...
مقدمة موضوع ال Scalability يعتبر من أهم المواضيع بالنسبة لمطورين الويب خصوصاً هذه الأيام مع تزايد عدد البيانات والمستخدمين سواء في التخزين أو المعالجة أو حتى في الارسال، والطلب على مطورين الويب الذي لديهم خبرة في ال Scalability أصبح اعلى بكثير من مبرمجي الويب بدون أي...
من المعروف والمسَلَم به في عالم البرمجيات القاعده “المتطلبات دائماً تتغير” ” Software Requirement Always change “، هذه القاعده تنص على أن متطلبات البرنامج سواء كانت General Software موجه للعامه أو Custom Software موجه لزبون معين سوف تتغير بمرور...
عالم البرمجه له كثير من الأوجه أو الأقسام programming paradigm منها البرمجه الإجرائيه procedural programming مثل لغه السي والباسكال (البعض يطلق عليهم imperative language)، نوع أخر وهي الFunctional programming وهي تختلف عن الإجرائيه مثل لغه ليسب فالبرمجه هنا تستخدم...
كون أن لغه UML لها مقياس Standard وهناك جهه (ال ISO) تتولى الاهتمام بذلك، الا أن هذا لا يعارض وجود أكثر من استخدام لها أثناء فترة تطوير المشروع، وهذا الاختلاف بين طرق الاستخدام قد يدخلك في صراع أو نقاشات مطوله خصوصاً لو عملت مع شخص يستخدمها بطريقة ما ولا يدري الطرق...
التخطيط في ال Agile هل تستطيع تقدير وقت المشروع بشكل جيد ؟ هل تريد أن تعرف حالة المشروع بشكل دائم وتعرف مدى تأثير أي حدث على المشروع مثلاً خروج أحد المطورين؟ هل تعرف ماذا تفعل عندما يكون المشروع في نهايته وقد قارب وقت التسليم وما زال هناك الكثير من المهام ؟ هل مشاريعك...
اليوم الأول في مشروعك الجديد في هذه المقالة سوف نتحدث عن الخطوة الأولى في بدايه أي مشروع، وهو موضوع مهم حيث كثير من المشاريع تموت من قبل أن تبدأ حتى، وذلك بسبب وقوعها في أحد الأخطاء القاتلة (وهي انهم لم يستطيعوا سؤال الأسئلة المناسبة وقت بدايه المشروع، أو انهم تغاضوا...
فريق ال Agile ليس كباقي الفرق في منهجيات التطوير التقليدية، حيث لا يوجد اهتمام كثيراً بالألقاب ولا بالأدوار الثابته، اي شخص يستطيع القيام بأكثر من دور ، قد تظن ان هذه عشوائية بسبب عدم وجود الرسميات والمناصب بين اعضاء الفريق Hierarchy ولكن في الحقيقة فريق ال Agile بهذا...
حيث لا مكان للاختباء – تلخيص بتصرف من الكتاب The Agile Samurai لتنسى أنك مطور (لدقائق معدودة) وتخيل أنك صاحب مشروع كبير ولديك المال المناسب لهذا المشروع وقد وظفت عدة مبرمجين ليقوموا بالتطوير في هذا المشروع، السؤال المهم الأن: ما هو الشيء الذي يجعلك تثق في أن...