تتسم صناعة البرمجات بسرعة التغير والتعقيد، مما يحتم على فرق التطوير التعاون الفعال في جميع مراحل حياة البرنامج والمتابعة والتوثيق الجيد لجميع الخطوات، كل ذلك لضمان سلامة واستقرار المنتج.
إن عملية تبادل ملفات المشروع بين أعضاء فريق التطوير باستمرار عن طريق البريد الإلكتروني أو مواقع رفع الملفات، تعد طريقة مملة ومحبطة وتتخللها الكثير من المشاكل الناجمة عن التضاربات بين النسخ المختلفة.
لذلك فقد تم اختراع أنظمة التحكم في الإصدار (Version Control Systems/VCS) لتجاوز هذه المشاكل ومتابعة وتوثيق المنتجات البرمجية على أكمل وجه.
ما هي أنظمة التحكم في الإصدار؟
أنظمة التحكم في الإصدار هي أدوات برمجية تساعد المطورين على إدارة وتتبع التغيرات التي تُجرى على المنتجات البرمجية طيلة فترة التطوير، مع توثيق من قام بالتغيير ومتى، مما ينتج قاعدة بيانات تحتوي سجلا كاملا لنشاطات أعضاء فريق التطوير بشكل واضح ومفصل، ومدى مساهمة كل منهم في عملية التطوير، كما أن معرفة تاريخ هذه التعديلات والتغييرات والإضافات يجعل من السهل رصد المراحل التي مر بها المشروع، وتتبع المشكلات التي يمكن أن تحدث ومعرفة أسبابها وطرق إصلاحها، وإمكانية استرداد أي إصدار من البرنامج في أي وقت.
يمكن لأنظمة التحكم في الإصدار تقديم الخدمات التالية:
- القدرة على استرداد نسخة احتياطية من المشروع واستعادة الملفات كما كانت قبل إجراء التغيير أو حدوث المشاكل ولأي وقت سابق.
- القدرة على التزامن، بحيث تنعكس التغييرات التي يقوم بها أي فرد من أفراد الفريق، ويحدث المشروع عند كل فريق التطوير، مما يقلل من مشكل الازدواجية والتكرار.
- القدرة على توثيق وتعقب التغييرات أولا بأول، وإمكانية كتابة الملاحظات حول التغييرات التي حدثت، وبذلك يستطيع كل مبرمج رؤية عمله وإضافات زملائه، ويفهم كيف ينمو المشروع مع مرور الوقت، ويرصد التغييرات التي حدثت وتاريخ حدوثها وأسبابه.
اقرأ أيضا: أجايل – طور مشاريعك برشاقة
أنواع أنظمة التحكم في الإصدار:
هناك نوعان رئيسيان من أنظمة التحكم في الإصدار، هما الأنظمة المركزية والأنظمة الموزعة، حيث تعد هذه الأخيرة هي الأكثر حداثة وتعمل بشكل أسرع وأقل عرضة للأخطاء، كما أنها تحتوي على ميزات أكثر ولكنها في المقابل أكثر تعقيدًا إلى حد ما في فهمها والعمل عليها.
الأنظمة المركزية للتحكم في الإصدار (CVCS):
يعتمد هذا النوع من أنظمة التحكم في الإصدار على فكرة وجود نسخة مركزية واحدة من المشروع على الخادم (Server) المركزي، ويقوم المطورون بإرسال تغييراتهم (Commit) إلى هذه النسخة المركزية كلما قاموا بأحد التغييرات على المشروع.
إرسال التغيير (Commit) يعني ببساطة تسجيل التغير في قاعدة البيانات الرئيسية للنظام، بحيث يمكن للمبرمجين الآخرين رؤية هذه التغييرات، كما يمكنهم أيضا سحب هذا التغيير (Update) الى حواسيبهم المحلية، وستقوم أداة التحكم في الإصدار تلقائيا بتحديث محتويات أي ملفات تم تغييرها.
من أشهر الأنظمة المركزية للتحكم في الإصدار، والتي قد تكون سمعت عنها هي (Subversion/SVN) و (Perforce).
المميزات الرئيسية للأنظمة المركزية:
- أسهل في الفهم والاستخدام.
- يمكن منح أذونات الوصول على مستوى الدليل (Directory Level).
- يعمل بشكل أفضل مع الملفات الثنائية (Binary Files)
الأنظمة الموزعة للتحكم في الإصدار (DVCS):
في الأنظمة الموزعة للتحكم في الإصدار، يقوم المطور باستنساخ (Clone) نسخة كاملة من المشروع الموجود على مستودع الخادم (Server Repository) بما في ذلك جميع البيانات الوصفية، ليتكون لديه مستودع محلي (Local Repository) يحتوي هذه النسخة.
قد تبدو هذه الطريقة لأول وهلة مضيعة للوقت، وملء للقرص الصلب المحلي بملفات ونسخ غير ضرورية، ولكنها في الواقع ليست مشكلة، لأن معظم المشاريع البرمجية تتكون في الغالب من ملفات نصية عادية (وربما بعض الصور القليلة) ، ومساحات التخزين اليوم على القرص رخيصة جدًا بحيث لا يؤدي تخزين العديد من نسخ المشروع إلى إحداث استهلاك كبير للمساحة الخالية على محرك الأقراص الثابتة، كما تقوم الأنظمة الحديثة أيضًا بضغط الملفات لاستخدام مساحة أقل.
عادةً ما يُطلق على الحصول على تغييرات جديدة من مستودع الخادم اسم السحب (Pull) ، بينما يُطلق على عملية نقل التغييرات الخاصة بك إلى أحد مستودعات الخادم اسم الدفع (Push).
بينما يطلق على إرسال التغييرات إلى المستودع المحلي (Commit)، وعملية سحب هذه التغيرات من المستودع المحلي (Update)، كما رأينا في نموذج النظام المركزي للتحكم في الإصدار.
يخطئ البعض في ظنه أن الأنظمة الموزعة للتحكم في الاصدرا لا يوجد بها مستودع مركزي، وهذا غير صحيح، لأن المستودع على الخادم هو مستودع مركزي وعادة ما يكون على خادم موثوق ومؤمن بشكل جيد، بينما توجد نسخ كاملة من هذا المستودع المركزي في المستودعات المحلية.
من أشهر الأنظمة الموزعة للتحكم في الإصدار (Mercurial) و (Git) وهو أكثرها شهرة وكفاءة.
المميزات الرئيسية للأنظمة الموزعة:
- تتمتع الأنظمة الموزعة بكفاءة أكبر من الأنظمة المركزية.
- التفريع (Branching) والدمج (Merging) أسهل بكثير.
- باستخدام الأنظمة الموزعة، لا نحتاج إلى أن نكون على اتصال دائم بالشبكة طوال الوقت، حيث يمكن التعامل مع المستودع المحلي وعندما يتم الاتصال بالإنترنت تتم المزامنة مع المستودع الرئيسي.
تعتمد لمة على أنظمة التحكم في الإصدار لتوثيق ومتابعة مشاريعها البرمجية
مما يضفي على عملها الكثير من الدقة والكفاءة.
0 تعليق