13
تشکر

آشنایی با نسخه بندی معنایی (SemVer)

Semantic Versioning

Semantic Versioning

همه کسانی که با دنیای کامپیوتر و نرم افزار به هر شکلی در ارتباط هستند کم و بیش با تغییرات نسخه های مختلف یک نرم افزار آشنایی دارند. برای مثال همه میدانند که بسته Office 2010 از Office 2007 جدیدتر است و قابلیت های بیشتری دارد یا نسخه گوگل کروم 35 از نسخه 34 آن بهتر و جدیدتر است. اما این نسخه بندی ها به چه شکلی انجام میشود. بعضی از نسخه بندی ها مانند مثال Office از نسخه بندی سال انتشار استفاده میکنند و در هر سالی که آن نرم افزار انتشار یابد، شماره نسخه نیز برابر شماره همان سال خواهد شد.

اما نسخه بندی دیگری نیز با نام نسخه بندی معنایی (Semantic Versioning) یا به اختصار SemVer نیز وجود دارد که امروزه بیشتر برنامه ها و کتابخانه ها از این نسخه بندی استفاده میکنند.

در ادامه مطلب همراه ما باشید…

نسخه بندی SemVer یا نسخه بندی معنایی از سه قسمت اصلی تشکیل شده است که فرمت آن به شکل x.y.z است:

  • x که مشخص کننده نسخه اصلی نرم افزار است (Major Version)
  • y که مشخص کننده تغییرات و ویژگی های جزئی اضافه شده به نسخه اصلی است (Minor Version)
  • و z که مشخص کننده باگ ها و خطاهای رفع شده از نسخه اصلی و تغییرات اضافه شده است (Patch)

بنابراین x.y.z را میتوان Major.Minor.Patch نیز دانست.

اما این اعداد چگونه اضافه میشوند؟

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

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

اما اگر تغییرات و ویژگی های اضافه شده به نرم افزار با APIهای نسخه قبلی سازگار نباشند یک عدد به x اضافه خواهد شد.

چرا نسخه بندی معنایی؟

اما چرا باید از این نسخه بندی استفاده کرد؟ چرا نباید خودمان اعداد را به دلخواه تعیین کنیم؟

برای مثال وضعیتی را در نظر بگیرید که برنامه شما وابستگی به یک کتابخانه دارد، به عنوان نمونه من یک برنامه نوشته ام که با نسخه jQuery 1.8.3 به خوبی کار میکند و این برنامه را به دیگران میدهم تا از آن استفاده کنند اما از کجا میتوانم مطمئن شوم که برنامه من با نسخه های بعدی jQuery نیز سازگار باشد برای مثال نسخه jQuery 1.9؟

در این موارد اگر jQuery از نسخه بندی معنایی استفاده کرده باشد تا زمانی که APIهای این کتابخانه در نسخه جدید تغییری نکند هیچ زمانی شماره Major یا x را افزایش نمیدهد بنابراین من میتوانم مطمئن باشم که برنامه من با تمام نسخه های jQuery 1  سازگار است چه اولین نسخه آن و چه آخرین نسخه آن. اما برای نسخه jQuery 2 باید بازنگری در برنامه ایجاد شود.

به این صورت شما  میتوانید به راحتی به کاربران و همچنین خودتان اطمینان خاطر بدهید که برنامه شما با تمام نسخه های jQuery 1 سازگار است.

حالا اگر برنامه شما به چندین کتابخانه وابستگی داشته باشد،  نسخه بندی معنایی واقعا یک منجی برای شماست.

توجه کنید که اولین شماره در نسخه بندی معنایی از 0.1.0 شروع خواهد شد و زمانی که اطمینان یافتید برنامه آماده انتشار است به نسخه 1.0.0 میروید و تا زمانی که به نسخه 1.0.0 نرسیدید برنامه شما در حالت توسعه قرار دارد.

نسخه های قبل از انتشار

معمولا قبل از انتشار نسخه های Major، تست های نرم افزار انجام میشود که معمولا با نام هایی از قبیل alpha, beta و rc مشخص میشوند. برای مشخص کردن نسخه های تست Major از خط تیره استفاده میشود. برای مثال:

1.0.0-alpha.1
1.0.0-alpha.2
  • معین امیدی می‌گه:

    روش خوبیه ولی کسی استفاده نمیکنه
    همه این کار رو میکنن 1.1 و 1.2 و 1.3 اگر خطایی برطرف بشه
    ولی جالب بود واقعا

  • علی جوان می‌گه:

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

  • الهام می‌گه:

    سلام. میشه روی (یا داخل) یک عکس کدی گذاشت تا بعدها وقتی که توی اینترنت عکسی رو دیدی که مشکوک به این باشه که از سایت تو استفاده شده یا نه؟ با گشتن دنبال اون کد یا رمز پی به این مسئله برد.
    یک چیزی شبیه واترمارک. چون واترمارک رو میشه از روی عکس پاک کرد. یا مثلا جایی که نوشته داره رو حذف کرد.
    البته هر کاری که میشه جلوی نقص قانون کپی رایت رو بگیره، معرفی کنید خیلی خوب میشه.

  • علیرضا می‌گه:

    خیلی نکته ناب و مفیدی بود
    ممنون

  • سی صد می‌گه:

    به نظر من نسخه بندی xyz کار بیخودیه
    فک نکنم زیاد بهش توجه کنن
    اکثرا هم از روش سال استفاده میکنن
    یا مثلا نسخه 1 یا 2 یا 3 الا آخر

  • امیرحسین جعفری می‌گه:

    سلام
    واقعا از مطالب خوبتون لذت میبرم
    موفق و پیروز باشید

  • علی می‌گه:

    سلام. مثل همیشه نوشته ها کاربردی هستند. تشکر.


  • نظرات این مطلب بسته است.