أهمية الاختبارات في مجال تطوير البرمجيات وأنواعها

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

شرح مبادئ SOLID - المبدأ الخامس والأخير Dependency Inversion Principle

0

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

شرح مبادئ SOLID - المبدأ الرابع Interface Segregation Principle

0

هذا المبدأ من أسهل مبادئ SOLID وهو ينص على أن العميل Client والمقصود به في هذا السياق الكود الذي سيطبق واجهة Interface معينة، ليس ملزما بأن يقوم بتعريف كافة الوظائف المذكورة فيها، وإنما ينبغي أن يطبق فقط ما يحتاجه، وذلك لتفادي الوقوع في انتهاك لمبدأ Liskov Substitution Principle.

شرح مبادئ SOLID - المبدأ الثالث Liskov Substitution Principle

0

قبل أن نقوم بشرح مبدأ الاستبدال Liskov Substitution Principle سنجري بعض التعديلات على برنامجنا لكي يكون شرح هذا المبدأ واضحا بشكل كبير.
في الأول قد تلاحظ معي أن الوظيفة Convert الموجودة في الكلاس NumberConverter تحتوي على العديد من الأوامر البرمجية التي يمكن إجراء Refactoring عليها، وإلا فإن شكل الوظيفة سيسوء مع ظهور متطلبات جديدة، ولك أن تتخيل إذا طلب منا العميل إقحام أنواع أخرى جديدة للتحويل إليها وكم من case ستصبح في Switch statement.

شرح مبادئ SOLID - المبدأ الثاني Open-Closed Principle

1

ينص هذا المبدأ على أن الوحدات Modules مثل الكلاسات ينبغي أن تكون مفتوحة على التوسيع Open for extension ومغلقة في وجه التعديل Closed for modification.
هذا الكلام باختصار يعني لو عندك كلاس ستحتاج إلى إضافة بعض الأمور إليها، فإنه من الجيد أن تستطيع القيام بعملية الإضافة عبر توسيع الفئة من خلال آلية الوراثة Inheritance مثلا، وليس عبر التعديل المباشر في السورس كود.

شرح مبادئ SOLID - المبدأ الأول Single Responsibility Principle

0

أول مبدأ من مبادئ SOLID هو مبدأ Single Responsibility الذي يقول لنا بأن كل وحدة Module عليها أن تقوم فقط بمسؤولية Responsibilty واحدة لاغير.

مصطلحات ستعيش معها في مجال تصميم البرمجيات Software Design

1

في قاموس مجال تصميم البرمجيات ستجد عدة مصطلحات منتشرة بكثرة، مثل مصطلح Coupling، ومصطلح Responsibility، ومصطلح Abstraction وغيرها، هذه المصطلحات تلعب دورا جوهريا في فهم آليات التصميم، حيث سنجدها تدخل في تعريفات بعض المبادئ والنماذج، لذلك يعد الإلمام بها مدخلا أساسيا لتذليل صعوبات هذا المجال وفهم تفاصيله.

مدخل إلى مبادئ ونماذج تصميم البرمجيات Software Design Principles and Patterns

0

مقدمة

تتأثر جودة البرمجيات بمستوى التصميم Design الذي تم اعتماده من قبل الفريق الذي يسهر على تطويرها، حيث يلعب تصميم البرمجيات دورا كبيرا في جعلها قابلة للصيانة والتحديث Maintainable، ومفتوحة على الزيادة والتوسيع Extensible، وقادرة على الخضوع للاختبارات Testable التي من شأنها التحقق من سلامة اشتغال مختلف أجزاء البرنامج وأدائها للمطلوب منها بالشكل المتوقع. لذلك ينبغي أن يولي كل مشتغل في مجال صناعة البرمجيات أهمية كبيرة لعملية التصميم نظرا لتأثيرها المباشر على جودة المنتوج المقدم.

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

6


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

من هو المهندس حسام؟

من العرب القلائل الذين حازوا جائزة Microsoft MVP منذ عام 2013، ويعد مستشارا في Xamarin، Xamarin Consultant، يقوم بتنظيم دورات تكوينية في تقنيات الدوت نيت، وينشر مقالات تقنية على مدونة Microsoft MSDN و CodeProject، كما يقدم محاضرات و ورشات لتأطير المبرمجين.

ما الذي يوجد في قناة المهندس حسام؟


توجد دورات عديدة يتناول من خلالها المواضيع التالية:
·       Kubernetes with Azure and Azure DevOps
·       DevOps for Database
·       Unit & UI Tests
·       Cross Platform Apps with Xamarin Forms
·       ASP.NET with Visual Studio
·       Azure Cognitive Services
بالإضافة إلى دروس أخرى متنوعة ستجدونها على قناته، وهذا رابطها:


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

دام لكم البشر والفرح !

عموميات حول البروتوكول HTTP للدخول إلى مجال RESTful API

3



لأن اتجاه صناعة البرمجيات في الآونة الأخيرة بدأ يتجه نحو نمط REST الذي يسمح بالوصول إلى خدمات الويب من خلال بروتوكول HTTP، بحيث يصير من السهل استعمال هذه الخدمات في مختلف الأنظمة والأجهزة لأن هذا البروتوكول متعارف عليه من قبل الجميع (أشخاص وأنظمة).
فإنني أنصح جميع الإخوة والأخوات أن يتجهوا نحو هذا المجال لأنه في نظري ركيزة الحاضر والمستقبل إن شاء الله.
ولمن لم يسبق له أن سمع بمصطلح REST أو RESTful API أو HTTP-based services فهذه المقالة قد توضح له بشكل عام هذا النمط، والمبادئ التي يقوم عليها.
لكن من أجل الغوص أكثر في هذا المجال، لابد لنا من الاطلاع على الحد الأدنى من المعلومات الخاصة بكيفية اشتغال بروتوكول HTTP وهو ما سنتعرف عليه في هذه المقالة إن شاء الله.

يسمح لنا بروتوكول HTTP بالقيام بعدة مهام على الويب، استعراض صفحات المواقع، إرسال البيانات إلى السيرفر، وتتم هذه العمليات عبر آليات يقدمها هذا البروتوكول وتسمى بالأفعال Verbs أو وظائف Methods، ولعلنا نعرف مسبقا أنه من ضمن هذه الأفعال نجد GET وPOST ، كل من هذين الفعلين يشتغل في ظرفية معينة، حينما نأتي على سبيل المثال وندخل إلى الرابط التالي:


فإن المتصفح الذي نستعمله يعرف من مقدمة الرابط أعلاه أن العملية عبارة عن طلب من نوع Http أو ما يعرف ب http Request، فيقوم بفتح صفحة الموقع.
ويمكن لطلبات http أن تكون من نوع GET أو من نوع POST، نستعمل GET حينما نريد جلب Resource معينة، كاستعراض صفحة، تحميل صورة، وما إلى ذلك، ونستعمل POST verb حينما نريد أن نرسل البيانات إلى الخادم، مثلا الاشتراك في موقع، كتابة تعليق، وما إلى ذلك من عمليات تستلزم إرسال البيانات إلى الخادم.
يعتبر فعل GET فعلا آمنا safe verb، لأنه لا يؤثر على Resource بل يقوم فقط باستعراضها، بينما يعد الفعل POST فعلا غير آمن unsafe verb لأنه يقوم بإرسال بيانات إلى السيرفر، لذلك إذا قمت بعمل تحديث للصفحة في وضع GET سيتم جلب آخر حالة لل Resource بينما إذا قمت بتحديث الصفحة في وضع POST فإن المتصفح سيسألك عبر رسالة تأكيدية.
توجد بعض الأفعال الأخرى التي يقدمها Http، نذكر بعضها في هذا الجدول:

الفعل
مثال على الرابط
الوصف
GET
http://localhost/courses
جلب جميع الدورات
GET
http://localhost/courses/1
جلب الدورة التي معرفها 1
POST
http://localhost/courses
إنشاء دورة جديدة
DELETE
http://localhost/courses/1
حذف الدورة التي معرفها 1
PUT
http://localhost/courses/1
تحديث الدورة التي معرفها 1
PATCH
http://localhost/courses/1
التحديث الجزئي للدورة التي معرفها 1
OPTIONS
http://localhost/courses/1
جلب العمليات المتوفرة على Resource
HEAD
http://localhost/courses/1
جلب http header فقط

تسمح لنا هذه الأفعال بتحديد طبيعة المهمة التي على URI القيام بها، إذ يكفي أن نحدد الفعل المرتبط بال URI ليتم تنفيذه.
يمكننا باستعمال بعض الأفعال السابقة أن نقوم بالعمليات الأساسية على البيانات فقط من خلال تحديد URI والفعل المناسب له، ونتحدث هنا عن عمليات CRUD والتي ترمز ل Create, Read, Update and Delete. وهو العمل الذي تقوم به تطبيقات REST حيث تستفيد من هذه الأفعال من أجل القيام بعمليات على الموارد Resources.
نكتفي بهذا القدر، دام لكم البشر والفرح!