أصدرة البرمجيات

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

غالبًا يتم تتبع برمجيات الحاسب الحديثة باستخدام استراتيجيتين مختلفين لأصدرة البرمجيات وهما رقم الإصدار الداخلي الذي من الممكن أن يزداد في اليوم الواحد عدة مرات –مثل رقم تعديل التغيير- والإصدار الذي يتم إطلاقه والذي يتغير بشكل أقل بكثير مثل الأصدرة الدلالية أو اسم رمز المشروع.[1]

الاستراتيجياتعدل

أُنشئت العديد من استراتيجيات ترقيم الإصدارات من أجل الإصدارات المختلفة لجزء من برنامج. أدى انتشار الحواسيب إلى استخدام هذه الاستراتيجيات في سياقات خارج استعمالها في الحواسيب.

المُعرّفات المعتمدة على التسلسلعدل

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

أهمية التغييرعدل

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

يمكن أن تُقيّم الأهمية اعتمادًا على الاستراتيجية من خلال ماهية أسطر الكود (التعليمات البرمجية) التي تغيرت أو النقاط الوظيفية التي أُضيفت أو حُذفت أو التأثير المُحتمل على العملاء فيما يتعلق بالعمل المطلوب لتبني إصدار جديد، أو مخاطر حدوث أخطاء أو تغييرات غير مُصرح عنها أو بعض التغييرات الهامة في شكل التنسيق المرئي أو مجموعة من السمات الجديدة أو تقريبًا أي شيء يعتبره مطوّري أو مسوقي البرنامج مهمًا بما فيه الرغبة بالتسويق لإظهار «الجودة النسبية» في الإصدار الجديد.

تستخدم الأصدرة الدلالية «المعروفة باسم SemVer)[1] –أفضل وأشهر استراتيجية ترقيم مُعتمدة في هذه الفئة- تسلسلًا من ثلاثة أرقام (Major.Minor.Patch) أو (رئيسي.ثانوي.رقعة)، وعلامة اختيارية قبل الإصدار وعلامة تعريف اختيارية للإصدار. يعتبر مجال الخطأ والفعالية في هذه الاستراتيجية مقياسًا للأهمية. يُشار إلى التغييرات الجذرية من خلال زيادة الرقم الأساسي (خطورة عالية)، وإضافة ميزات غير جذرية تزيد الرقم الثانوي (خطورة متوسطة) وإضافة جميع التغيرات الأخرى تزيد رقم الرقعة (خطورة منخفضة). وجود علامة ما قبل الإصدار (-ألفا، -بيتا) يشير إلى خطر جوهري مثلما يشير وضع الرقم صفر في موقع الأساسي (0.y.z) الذي يُستخدم ليشير إلى أن هناك عمل جاري يمكن أن يتضمن أي مستوى مُحتمل من التغييرات الجذرية (الخطورة الأعلى).

يمكن للمطورين أن يختاروا الانتقال عدة إصدارات ثانوية في مرحلة ما ليشيروا إلى إضافة ميزات مهمة، لكنها لا تكفي لتُجيز زيادة الرقم الأساسي للإصدار، على سبيل المثال انتقال متصفح إنترنت إكسبلورر 5 من 5.1 إلى 5.5، أو انتقال أدوبي فوتوشوب من 5 إلى 5.5. يمكن أن يتم ذلك ليوضح أهمية التحديث بالنسبة لمستخدم البرنامج، أو -مثل حالة برنامج أدوب- لتمثيل إصدار جزئي بين الإصدارات الأساسية رغم أن الأصدرة المستندة إلى التسلسل لا تقتصر على رقم واحد، كما في الإصدار 2.79 لبرنامج بلندر).

يوجد طريقة مختلفة لاستخدام الأرقام الأساسية والثانوية إلى جانب سلسلة أبجدية رقمية تدل على نوع الإصدار، مثال: «ألفا (أ)»، أو «بيتا (ب)»، أو «إصدار مرشح (آر سي)». يمكن أن يبدو استخدام تسلسل إطلاق برنامج لهذه المقاربة على الشكل التالي 0.5، 0.6، 0.7، 0.8، 0.9       b11.0، b21.0(إضافة بعض الإصلاحات)، b31.0(إضافة إصلاحات أخرى)        rc11.0 (إذا استقرت بما يكفي)، rc21.0 (إذا وُجد فيها أخطاء أخرى)        1.0. أحد الممارسات الشائعة في هذه الاستراتيجية هي إيقاف الميزات الجديدة والتغييرات الجذرية خلال إطلاق الإصدار المرشح وبالنسبة لبعض مجموعات العمل فإن بيتا أيضًا تُقفل إذ يُسمح بتصحيح الأخطاء فقط، وذلك لضمان الاقتراب من الوصول الإصدار المُستهدف.

تضمن باقي الاستراتيجيات المعنى في السلسلة الفردية:

major.minor[.build[.revision] ]  (مثال: 1.2.12.102)

أو

major.minor[.maintenance[.build]]    (مثال: 1.4.3.5249)

مجددًا في هذه الأمثلة تعريف ما يمثله تغير الرقم «الأساسي» المختلف عن الرقم «الثانوي» هو شخصي ويعود للكاتب، والأمر ذاته بالنسبة لما يعرف «البناء-build» أو كيف يختلف «التنقيح-revision» عن «الثانوي».

قد تستخدم المكاتب المشتركة بين سولاريس ولينوكس[2] الصيغة current.revision.age وفيها:[3]

Current: أحدث رقم لواجهة الاستخدام تحققه المكتبه.

Revision: رقم تحقيق واجهة الاستخدام الحالية.

Age: الفرق بين أحدث وأقدم واجهة استخدام تحققها المكتبة.

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

في معظم البرامج الاحتكارية يكون الإصدار الأول من منتج البرنامج هو الإصدار1 (version 1).

درجة التوافقيةعدل

تستخدم بعض المشاريع رقم الإصدار الأساسي للإشارة إلى الإصدارات غير المتوافقة. مثالان على ذلك هما مكاتب Apache Portable Runtime (APR) ونظام إدارة المحتوى FarCry.[4][5]

الأصدرة الدلالية[1] هي اصطلاح رسمي من أجل تحديد التوافقية باستخدام رقم الإصدار ذو الأجزاء الثلاثة. الإصدار الرئيسي والإصدار الثانوي والرقعة(باتش). يزداد رقم الباتش عند إضافة تغيرات ثانوية وإصلاح الأخطاء التي لا تغير من واجهة التطبيقات البرمجية للبرنامج (API). يزداد رقم الإصدار الثانوي في الإصدارات التي تضيف ميزات جديدة لواجهة التطبيقات البرمجية لكن متوافقة مع الإصدارات السابقة، ويزداد رقم الإصدار الأساسي عند إضافة التغييرات في واجهة التطبيقات البرمجية التي لا تكون متوافقة مع الإصدارات السابقة. على سبيل المثال، البرنامج الذي يعتمد على الإصدار 2.1.5 لواجهة برمجة التطبيقات متوافق مع الإصدار 2.2.3 لكن ليس بالضرورة مع 3.2.4.

يكتب المبرمجون عادة برامج جديدة متوافقة مع الإصدارات السابقة، بعبارة أخرى فإن البرنامج الجديد يُصمّم لكي يتعامل بشكل صحيح مع الإصدارات القديمة للبرنامج (باستخدام بروتوكولات قديمة وصيغ الملفات) ومع أحدث نسخة (باستخدام أحدث البروتوكولات وصيغ الملفات). على سبيل المثال، نظام تشغيل z/OS لشركة آي بي إم مصمم ليعمل بشكل مناسب مع ثلاثة نسخ أساسية لنظام التشغيل الذي يعمل معه في العنقود ذاته من أجهزة الحواسيب الكبيرة أو (sysplex). يمكن للأشخاص الذين يشغلون عنقود حواسيب ذو جاهزية عالية أن يُبقوا معظم الحواسيب في وضع التشغيل بينما يتم إيقاف جهاز واحد في كل مرة ويٌحدّث ويُعاد إلى الخدمة.[2]

تتضمن عناوين الترويسات وصيغ الملفات عادةً رقم إصدار يكون في بعض الأحيان هو ذاته رقم إصدار البرنامج الذي كُتبت فيه، أو أحيانًا «رقم إصدار البروتوكول» المستقل عن رقم إصدار البرنامج. يعتبر الكود (التعليمات البرمجية) المسؤول عن التعامل مع البروتوكولات القديمة المهجورة وصيغ الملفات غير مهم غالبًا. 

مراجععدل

  1. أ ب ت Preston-Werner, Tom (2013). Semantic Versioning 2.0.0. Creative Commons. Retrieved from http://semver.org/spec/v2.0.0.html. نسخة محفوظة 4 ديسمبر 2019 على موقع واي باك مشين.
  2. أ ب "Library Interface Versioning in Solaris and Linux". مؤرشف من الأصل في 4 مايو 2019. 
  3. ^ "Versioning". مؤرشف من الأصل في 27 سبتمبر 2019. 
  4. ^ "Versioning Numbering Concepts - The Apache Portable Runtime Project". مؤرشف من الأصل في 4 يونيو 2019. اطلع عليه بتاريخ 11 أبريل 2009. 
  5. ^ "Daemonite: The science of version numbering". 2004-09-14. مؤرشف من الأصل في 12 مارس 2017. اطلع عليه بتاريخ 11 أبريل 2009.