روش ورژن بندی، نسخه بندی نرم افزار – Software Versioning

ورژن بندی نرم افزار چیست؟

ورژن بندی یا نسخه بندی نرم افزار فرآیندی است که در آن یک نام ورژن (نام نسخه) منحصر بفرد یا یک شماره ورژن (شماره نسخه) منحصر بفرد به مرحله ی (فاز) مشخصی از نرم افزار کامپیوتری داده می شود.

پس هر شماره نسخه نشان دهنده تغییرات مشخصی در محصول نرم افزاری می باشد. همینطور که توسعه دهندگان محصول خود را بروزرسانی و بهبود می دهند، اغلب ورژن های مختلفی از نرم افزار در اختیار کاربران نهایی قرار می گیرد.

در حداقل ترین حالت ممکن، توسعه دهندگان دو ورژن از نرم افزار خود را می سازند:

  • نسخه ثابت (Stable Version): نسخه ای که تمامی کاربران نهایی به آن دسترسی دارند.
  • نسخه در حال کار (Working Version): نسحه ای که تیم توسعه دهنده نرم افزار روزانه با آن کار می کنند تا محصول را بهبود دهند.

شماره نسخه ها نه تنها نشان می دهد که نرم افزار در مواردی تغییر کرده و بهبود یافته است، بلکه برای ارتباطات بعدی نیز این شماره نسخه ها کاربردی هستند و اطلاعات مهمی را به ما می دهند.

برای مثال زمانی که یکی از کاربران باگی را گزارش می دهد، خیلی مهم هست که شماره نسخه ای که کاربر از آن استفاده می کند را بدانیم (این مورد بخصوص در حالتی که چندین نسخه از نرم افزار در حال استفاده باشد اهمیت بیشتری پیدا می کند).

ترتیب انتشار (Order of Release):

به طور معمول ورژن بندی نرم افزار قصد دارد ترتیب انتشار نرم افزار را به روشی نشان دهد. اگر شما تمام نسخه های نرم افزار از نسخه اولیه تا نسخه های اخیر را در کنار هم خط کنید، شما خواهید توانست که بگید تریتب شماره نسخه ها به چه ترتیب می باشد.

درجه تغییر (Degree of Change)

بسیاری از کنوانسیون های نرم افزار درجه ای از نرم افزار که تغییر کرده است را در ورژن بندی نشان می دهند. این نسخه ها به کاربر کمک می کند تا متوجه شود نسخه جدید تغییراتش به چه اندازه بوده است. تغییر نسبت به نسخه قبلی کوچک بوده یا کلی تغییر بزرگ رخ داده است.

تاریخ انتشار (Date of Release)

در بعضی موارد با نگاه به نسخه می توانید تاریخ عرضه نسخه مور نظر را نیز رمزگشایی کنید. این برای فهمیدن اینکه کدام نسخه جدید تر و کدام نسخه قدیمی تر است کاربردی می باشد.

انواع مختلف ورژن بندی نرم افزار

تعداد بسیار زیادی از روش های فکری و ورژن بندی برای نرم افزار وجود دارد. در کل اینکه شما کدام روش نسخه بندی را انتخاب کنید خیلی فرقی نمی کند، فقط باید دو جنبه ی زیر حتما در نظر گرفته شده باشد:

  • شناسه نسخه باید منحصر بفرد باشد، نباید از یک شناسه یکسان استفاده مجدد کنید.
  • شناسه ای را انتخاب کنید که دنباله ی منطقی در آن باشد، برای مثال حروف الفبا، اعداد و … . به این روش کاربران شما به راحتی می توانند متوجه شوند که نسخه ۲ بعد از نسخه ۱ آمده است.

از جمله کنوانسیون های نسخه بندی نرم افزار می توان به موارد زیر اشاره کرد:

  • نسخه بندی معنایی – Semantic Numbering
  • تاریخ انتشار- Date-of-Release
  • کدهای الفبایی – Alphanumeric Codes
  • شماره گذاری ترتیبی(متوالی) – Sequential Numbering
  • شماره گذاری یکانی – Unary Numbering
نسخه بندی متفاوت ویندوز و آفون
نسخه بندی متفاوت ویندوز و آفون

ورژن بندی معنایی (سِمَنتیک) – Semantic Versioning

یکی از پر استفاده ترین نقشه های نسخه بندی، نسخه بندی معنایی می باشد. بر اساس وب سایت Semver این نسخه بندی به شکل زیر می باشد:

شماره نسخه به حالت MAJOR.MINOR.PATCH و به صورت افزایشی، داده می شود:

بروزرسانی شماره Major :

زمانی که توسعه دهندگان تغییرات مهمی را در یک API از محصول نرم اافزاری انجام می دهند، شماره اصلی (Major) را تغییر می دهند. این تغییر به این معنی است که تغییرات بزرگ بوده است، تا جایی که این نسخه را با نسخه های قبلی ناسازگار می کند. نرم افزار در این مرحله به شدت تکامل یافته است و بعید است با نسخه های قبلی کار کند. مثلا نسخه ۲.۱.۴ ممکن است با نسخه ۲.۲.۱ سازگار باشد ولی ممکن است دیگر با نسخه های ۳.۰.۰ به بالا سازگار نباشد.

بروزرسانی شماره Minor:

این شماره زمانی افزایش پیدا می کند که توسعه دهندگان ویژگی جدیدی را به نرم افزار اضافه می کنند که ورژن جدید همچنان با نسخه های قبلی با شماره Major یکسان سازگار می باشد. وقتی نسخه جدید به صورت minor ارائه می شود، آنها همچنان کاربرانی که بروزرسانی را انجام ندهند، پشتیبانی خواهند کرد. تغییرات در این نوع بروزرسانی ها برای کاربران ریسک پایینی دارد.

شماره patch:

برای تغییراتی که کارایی فعلی نرم افزار را تغییر نمی دهند، این شماره افزایش پیدا می کند. معمولا این شماره بعد از برطرف کردن باگ افزایش داده می شود.

سینتکس شماره نسخه
سینتکس شماره نسخه

توصیف کننده – QUALIFIER :

اگر انتشار نسخه ها خیلی روان و سلیس می باشد و به یک یا چند توصیف کننده مانند پیش-انتشار نیاز دارید، می توانید از qualifier در انتهای شماره انتشار استفاده کنید.

یه تعداد برچسب (لیبل – Label) رایج نیز وجود داره، برای مثال :

alpha (a), beta (b), release candidate (rc), release (r)

سیمبول های مورد استفاده در Version Range (محدوده نسخه) از قرار زیر می باشد ((چون اعداد و حروف در فارسی به هم می ریزند، مثال ها را به صورت انگلیسی نوشتم)):

محدوده ورژن با استفاده از خط تیره (-):

مجموعه ای از نسخه ها را فرا می گیرد. برای مثال ۱.۰-۲.۰ برابر است با بزرگتر مساوی ۱.۰ و کوچکتر از ۲.۰

 1.0 - 2.0 is equivalent to >=1.0.0 <2.1 as the 2.0 becomes 2.0.*. On the other hand 1.0.0 - 2.1.0 is equivalent to >=1.0.0 <=2.1.0

محدوده نسخه (Wildcard) (.*):

برای مثال نسخه ۱..۰.* برابر است با نسخه های بزرگتر مساوی از ۱.۰ و کوچکتر از ۱.۱

1.0.* is the equivalent of >=1.0 <1.1

محدوده نسخه Tilde (~):

عملگر ~ با مثال بخواهیم توضیحش دهیم می شود :

 ~1.2 is equivalent to >=1.2 <2.0.0, while ~1.2.3 is equivalent to >=1.2.3 <1.3.0

نسخه بندی با استفاده از نام:

برای مثال به نسحه های اندروید نگاه بیاندازید، آبنبات جوبی، نان خامه ای و … ، البته اندروید در کنار نام نسخه عددی هم در نظر گرفته است.

منابع استفاده شده :

برای ورژن بندی پایتون هم یه سری به اینجا بزنید (PEP440)