الخوارزميات وبنى المعطيات في بايثون: الدرس الأول تحليل الخوارزميات

الخوارزميات وبنى المعطيات في بايثون: الدرس الأول تحليل الخوارزميات

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

أكمل قراءة المقالة

تطبيق منهجية اجايل في المشاريع البرمجية


المنهجية الرشيقة
Agile Methodology

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

فظهرت عدة منهجيات وكانت الأهم هي المنهجية الرشيقة (Agile) والتي خلقت ثورة في إدارة المشاريع البرمجية .

تعريفاً : آجايل هي منهجية متبعة في تطوير البرمجيات تعتمد على التطوير المستمر للبرمجيات والاختبارات المتزامنة مع التطوير , أي بعكس المنهجيات القديمة كنموذج الشلال (waterfall) .

من أهم ما تميزت به هذه المنهجية هو (رشاقتها) حيث برزت عدة ميزات منها :

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

تعزيز التفاعلات الفردية والجماعية للفريق سواء على مستوى العمليات أو الأدوات :
وهنا يظهر الاهتمام بالفريق ومعنوياته وخبراته أكثر من الاهتمام بالأدوات المستخدمة كما تتم المشاركة بالمعارف والأدوات المتوفرة لإنجاز المشروع

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

ورغم اتجاه نسبة كبيرة من مهندسي البرمجيات نحو منهجية ال Agile  في تطوير المشاريع إلا أنه لا بد من وجود بعض التفاصيل التي لا يزال يتفوق بها نموذج الشلال مثلا :

الفرق بين المنهجية الرشيقة (Agile) ونموذج الشلال (Waterfall Method) :


عموما هناك طرق عديدة لتطبيق المنهجية الرشيقة وهي :

– SCRUM

يعتبر Scrum من طرق Agile التي تهتم خصوصا بكيفية إدارة المهام وبيئة العمل التي سيعمل ضمنها فريق التطوير وبشكل أساسي تم استخلاص فكرة Scrum  من رياضة الركبي الأميركية (Rugby)
حيث تقوم Scrum  على فكرة تطوير روح الفريق والتعاون بين أعضاءه بحيث لا يتجاوز عدد أفراد الفريق المسؤول عن تطوير خدمة معينة اكثر من (7-9) أشخاص .

وبشكل أساسي هناك ثلاث وظائف رئيسية في كل فريق هي :
Scrum master
Product owner
Scrum Team

حيث تكون مهمة كل منهم كالآتي :

– Scrum Master

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

– Product Owner

من الغريب أن تدرك أن مالك المشروع (الزبون فعليا) يعتبر عنصر أساسي من فريق العمل ولكن كيف !؟ 

بكل بساطة مالك المشروع هو من يقوم بتحديد متطلبات المشروع (Product Backlog), و أولوية هذه المتطلبات ويتحمل مسؤولية اختبار الفعالية لكل مرحلة من مراحل التطوير 

– scrum team

الفريق هو من يدير عمله ليكمل كل (sprint ) من كل دورة تطوير وهو فريق المطورين جميعا بحيث يكون الجميع سواسية في الفريق 

– Product Backlog

ويمكننا تشبيه ال Product Backlog لمستودع خاص بالمشروع حيث تخزن ضمنه المتطلبات التي يجب تحقيقها والمطروحة من قبل ال Product owner  بشكل قصص وهي ما يسمى (user stories) كما يتم تخزين مجريات تطوير المشروع وأولوية المتطلبات بعضها على بعض ويتم توزيعها على أعضاء الفريق , كما يمكن لأعضاء الفريق وضع متطلباتهم واحتياجاتهم ليتم تلبيتها من مالك المشروع .

أما عن طريقة تنفيذ منهجية Scrum  او ما يعرف بـ Scrum practices فهي تضمن لنا تقديم منتج أصغري أو جزيئة (قابلة للعمل ) من المشروع الكلي

– SCRUM Practices

  1. كل جزئية من الـ Scrum  تدعى Sprint
  2. Product Backlog هو قائمة من التفاصيل المحددة للوصول إلى المنتج النهائي 
  3. خلال كل sprint يتم اختيار أحد متطلبات العميل (الزبون) لإضافتها إلى الـBacklog الخاص بالـ Sprint  الحالي 
  4. يقوم الفريق بالكامل بالعمل على المهمة المحددة 
  5. هناك اجتماع يومي بين أعضاء الفريق لمناقشة كافة التطورات والمشاكل التي تواجه الفريق
  6. في نهاية كل sprint يقوم الفريق بتسليم منتج مصغَر للزبون 

 
المراجع :
 
https://www.guru99.com/agile-scrum-extreme-testing.html
– https://bit.ly/2RJEqle

تحليل البيانات: مفاهيم ومنهجيات

تحليل البيانات: مفاهيم ومنهجيات كتبت بواسطة Murad Daryousse

أدى التقدم الحاصل في تكنولوجيا معالحة البيانات، وتخزينها، ونقلها، جنباً إلى جنب مع البرمجيات المتطورة والذكية التي تتعامل مع هذه البيانات، إلى انخفاض الكلف وازدياد السعات (من حيث تخزين ومعالجة البيانات). نتج عن ذلك ازدياد متسارع في حجوم وتنوع البيانات المولّدة بصيغ رقمية يوماً عن يوم، والذي أطلق عليه البعض “انفجار البيانات”.

أكمل قراءة المقالة

توثيق أكواد لغة بايثون باستخدام نمط غوغل للتوثيق

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

man filling in form on parer at table
Photo by Ryutaro Tsukata on Pexels.com
أكمل قراءة المقالة