سلام دوستان
برنامه نویسان عزیز احتمالا پس از نوشتن نرم افزارتون شاید بخواید نسخه بندی کنید
این مطلی رو می ذارم شاید به درد بخوره:
----------------------------------------------------------------------------------------------
اگر به سیر نرم*افزارهایی که تا به حال استفاده کرده*اید نگاهی
بیاندازید متوجه یک توالی مشخص میان نسخه*های قدیمی و نسخه*های جدید
می*شوید. برای مثال در سیر تکامل نرم*افزار مایکروسافت آفیس چنین توالی را مشاهده خواهید کرد:
کد:
کد:
Microsoft Office 3.0, Microsoft Office 4.0, Microsoft Office
4.3, Microsoft Office 95, Microsoft Office 97, Microsoft Office 2000,
Microsoft Office XP (a.k.a 2002), Microsoft Office 2003, Microsoft
Office 2007, Microsoft Office 2010, Microsoft Office 2013
برای ویرایشگر متن*باز ویم چنین سیری را داشته ایم:
کد:
کد:
Vesrions: 1.0, 1.14, 1.22, 3.0, 4.0, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 6.0, 6.1, 6.2, 6.3, 6.4, 7.0, 7.1, 7.2
و همچنین برای سیستم*عامل اوبونتو:
کد:
کد:
Ubuntu 4.10 (Warty Warthog), Ubuntu 5.04 (Hoary Hedgehog),
Ubuntu 5.10 (Breezy Badger), Ubuntu 6.06 LTS (Dapper Drake), Ubuntu 6.10
(Edgy Eft), Ubuntu 7.04 (Feisty Fawn), Ubuntu 7.10 (Gutsy
Gibbon),Ubuntu 8.04 LTS (Hardy Heron), Ubuntu 8.10 (Intrepid Ibex),,
Ubuntu 9.04 (Jaunty Jackalope), Ubuntu 9.10 (Karmic Koala)
در بالا سه روش از روش*های نسخه*بندی نرم*افزار را با ذکر مثال آوردم.
در مثال اول ماکروسافت ابتدا بر اساس روش اهمیت تغییر فعالیت می*کرده سپس
بر اساس روش نام سال، در روش دوم، ویم از روش اهمیت تغییر استفاده کرده و
در روش سوم اوبونتو از روش نام شمارهٔ ماه سال و همچنین از نام رمز بهره
برده است.
به فرایند تخصیص اسم*ها و شماره*های منحصر به فرد به نرم*افزارهای
کامپیوتری، نسخه*بندی نرم*افزار گفته می*شود. عموما در یک رده شمارهٔ نگارش
معین (اصلی-جزئی) شماره*های نرم*افزار به ترتیب افزایشی، متناسب با پیشرفت
در توسعهٔ نرم*افزار تخصیص داده می*شوند. در سطح*های پایین تر، کنترل
تجدید نظر برای پیگیری تفاوت نسخه*های مختلف اطلاعات دیجیتالی استفاده
می*شود. خواه این اطلاعات دیجیتالی، نرم*افزار باشند یا یک سند اطلاعاتی .
محتویات
روش*های نسخه*بندی نرم*افزار
روش*های گوناگونی برای پیگیری نسخه*های گوناگون یک قعطهٔ نرم*افزاری به
وجود آمده*اند. حضور همه جانبهٔ کامپیوترها باعث شده است که این روش*های
نسخه*بندی در غیر از رشتهٔ کامپیوتر نیز مورد استفاده قرار گیرد.
شناساگرهای وابسته به توالی
در برنامه*های نسخه*بندی نرم*افزاری وابسته به توالی، به هر انتشار
نرم*افزار شناسه*ای منحصر به فرد تخصیص داده می*شود که از یک یا چند توالی
یا مجموعه*ای از اعداد یا حروف تشکیل شده است. روش*های نسخه*بندی نرم*افزار
در قسمت*هایی مثل اندازهٔ توالی*ها، اختصاص مفهوم به توالی*های مجزا، و
همچنین وسیله و روش افزایش توالی*ها با یکدیگر متفاوتند.
اهمیت تغییر
در برخی روش*ها، از شناسه*های وابسته به توالی برای رساندن اهمیت
تغییرات بین انتشارهای یک نرم*افزار استفاده می*شود. تغییرات بین دو
انتشار، توسط سطح اهمیت طبقه*بندی می*شوند و تصمیم در مورد اینکه کدام
توالی در بین دو انتشار نرم*افزار تغییر کند به اهمیت تغییرات از انتشار
قبلی بستگی دارد؛ بنابراین اولین توالی هنگامی تغییر می*کند که مهمترین و
بیشترین تغییرات در بین دو انتشار رخ داده باشد و تغییرات بعدی توالی*ها
نشانگر تغییرات کم اهمیت بین دو انتشار هستند.
برای مثال، در روشی که از شناسه*ای با چهار توالی استفاده می*کند، اولین
توالی وقتی افزایش می*یابد که کد به طور کامل بازنویسی شده باشد، در حالی
که اگر در رابط کاربری یا در مستندات برنامه تغییر کوچکی انجام شده باشد
شناسهٔ چهارم تغییر می*کند.
این روش به کاربران اجازه می*دهد تا میزان پیشرفت پروژه و همچنین میزان
آزمایش*هایی را که روی پروژه انجام شده است را ارزیابی کنند. اگر تغییرات
در قسمت میانی صورت گیرد، برای مثال، اگر سیر انتشار 1.3 انتشاری به صورت
1.3rc4 داشته باشیم، این انتشار نشان*دهندهٔ آزمایشی بودن این انتشار است و
در حقیقت دارای تغییراتی است که لزوما در دنیای واقعی آزمایش نشده اند.این
روش به طور معمول «سطح سوم از شماره بندی» (تغییر) را میسر می کند:
1.3.1, 1.3.2, 1.3.3, 1.3.4... 1.4b1, ...
در اصل در انتشارهای بعدی، عدد بزرگتر (major number) وقتی افزایش
می*یابد که پرش یا جهش*های بارزتری وجود داشته باشد، عدد کوچکتر (Minor
Number) وقتی افزایش می*یابد که تنها مشخصات کوچکی افزوده شده باشند و یا
رفع باگ مهمی انجام شود، و رقم تجدید نظر (Revision Number) وقتی افزایش
می*یابد که نواقص و باگ*های کوچکی رفع شوند. برای مثال یک محصول می*تواند
دارای چنینن سیری از انتشارات باشد:
0.9.1, 0.9.2, 0.9.3, 1.0, 1.0.1, 1.0.2, 1.1, 1.1.1, 2.0, 2.0.1, 2.0.2, 2.1, 2.1.1, 2.1.2, 2.2, ...
ممکن است توسعه دهنگان از نسخهٔ ۵.۰ با نسخهٔ ۵.۵ جهش کنند تا نشان دهند
که ویژگی*های مهمی افزوده شده است، اما این ویزگی*ها در حد کافی نبوده است
که عدد بزرگتر (Major Number) را تغییر دهند.
روش متفاوت دیگر، آن است که در کنار اعداد برزگتر و کوچکتر، از حروف
الفبا برای تفکیک کردن انواع انتشار -یعنی آلفا، بتا، "کاندیدای انتشار"-
استفاده شود. یک روند انتشار که از این روش استفاده می*کند می*تواند شبیه
به موارد زیر باشد:
0.5, 0.6, 0.7, 0.8, 0.9 == 1.0b1, 1.0b2 (با کمی بهبود), 1.0b3 (با بهبودهای بیشتر) == 1.0rc1(به اندازهٔ کافی پایدار است) == 1.0
اگر مشخص شود که 1.0rc1 نیاز به رفع باگ دارد، در اینصورت به نسخهٔ
1.0rc2 (بخوانید دومین نسخهٔ کاندیدای انتشار از نسخهٔ اول نرم*افزار)
تبدیل می*شود و همین طور ادامه می*یابد. مهمترین ویژگی این روش آن است که
اولین نسخهٔ یک سطح مشخص (بتا، RC، تولید) باید با آخرین نسخهٔ زیر انتشار
آن برابر باشد: یعنی شما نمی*توانید از آخرین نسخهٔ بتا به اولین نسخهٔ RC
تغییرات جدید به نرم*افزار اضافه کنید و همچنین از آخرین RC به انتشار
نهایی نرم*افزار. در صورت انجام چنین کاری باید یک انتشار دیگر در سطح
پایینی توالی*ها ایجاد کنید.
با این حال چون نسخه*بندی شماره*ها ساختهٔ دست انسان هستند می*توان
تغییرات دلخواهی را ایجاد کرد که از این اصول تخلف می*کنند: برای مثال
اولین توالی می*تواند بین نسخه*هایی افزایش یابد که تنها یک خط از کد آنها
با یکدیگر متفاوت است تا این حالت (کاذب) را به وجود آورند که تغییرات
بسیار مهمی روی داده است. دیگر روش*ها به توالی*های مجزا معنا می*بخشد:
major.minor[.build[.reversion]]
یا
major.minor[.maintenance[.build]]
دوباره، در این مثال*ها، تغییرات هر توالی از سمت چپ، نشاندهندهٔ اهمیت
بیشتر و بارز بودن تغییرات در پروژه است و تعریف تمایز این توالی*ها توسط
نویسنده به طور اختیاری انجام می*شود.
در اکثر برنامه*های تجاری اولین شمارهٔ انتشار یک محصول از نسحهٔ شمارهٔ یک شروع می*شود.
طراحی مرحلهٔ توسعه
بعضی از روش*ها در اولین توالی از صفر شروع می*کنند تا برای انتشارهایی
که به اندازهٔ کافی برای توسعهٔ کلی و عملی پایدار نبوده*اند و تنها برای
آزمایش یا استفادهٔ داخلی منظور گردیده*اند، وضعیت آلفا با بتایی را مشخص
کنند.
جدا کردن توالی*ها
توالی*ها باید پس از پرینت شدن به*وسیلهٔ کاراکترهایی جدا شوند. بسته به
انتخاب «روش نسخه*بندی نرم*افزار» نوع کاراکترها و کاربرد آن*ها نیز
متفاوت است. لیست زیر، نمونه*هایی فرضی از برنامه*های جداسازی برای یک
انتشار را مشخص می*کند («سیزدهمین نسخهٔ درجه سه» از «چهارمین نسخهٔ درجه
دو» از «دومین نسخهٔ درجه یک»):
[ul][li]یک روش نسخه*بندی نرم*افزار، ممکن است بین همهٔ توالی*ها از یک کاراکتر استفاده کند: ۲.۴.۱۳، ۲/۴/۱۳، ۲-۴-۱۳[/li][li]ممکن است یک برنامه با روش*های ناهمگونی جداسازی را انجام دهد، و برخی از توالی*ها را جدا کرده و برخی دیگر را جدا نسازد: ۲.۴۱۳[/li][li]در یک توالی از کاراکترهای متفاوتی برای جداسازی استفاده شود: ۲.۴-۳[/li][/ul]
وقتی برای جداسازی توالی*ها از نقطه استفاده شود، این نقطه نشان*دهنده
یک نقطه اعشاری نیست و توالی دارای اهمیت موقعیتی نمی*باشد. برای مثال
شناسهٔ ۲.۵ به معنای "دو و نیم" یا "یک دوم مانده به نسخهٔ سوم" نیست بلکه
به معنای " پنجمین ویرایش درجه دوم از دومین ویرایش درجه یک" می*باشد و
هرگز درست و مناسب نخواهد بود مگر اینکه نسخه*های ۲.۱، ۲.۲، ۲.۳ و ۲.۴ هم
وجود داشته باشند.
تعداد توالی*ها
گاهی یک عدد چهارم، ضمنی هم وجود دارد که به ساخت نرم*افزار مربوط
می*شود. همچنین برخی از شرکت*ها تاریخ ساخت را نیز وارد می*کنند. شماره
نسخه*ها می توانند حروف و دیگر عبارات را نیز استفاده کنند، برای مثال
Lotus 1-2-3 Release 1a.
توالی صعودی
دربارهٔ نحوهٔ افزایش اعداد ویراستی عددی یا رقمی دو مکتب فکر وجود
دارد. آزادترین پکیج*های نرم*افزاری اعداد را نوعی جریانات پیوسته
می*دانند، بنابراین یک نرم*افزار آزاد یا محصول متن*باز دارای اعداد
ویراستی مانند 1.7.0, 1.8.0, 1.8.1, 1.9.0, 1.10.0, 1.11.0, 1.11.1, 1.11.2
می*باشند. نمونه*ای از این نوع بستهٔ نرم*افزاری mediawiki است، با این
حال برخی از برنامه*ها به شیوه دیگری با اعداد ویراستی رفتار می*کنند و
ممکن است اعداد ویراستی مثل 1.8, 1.9, 1.91, 1.92 داشته باشد. در بسته*های
نرم*افزاری که از این روش استفاده می*کنند، نسخهٔ ۱.۹۱ ویرایش کوچک بعد از
۱.۹ می*باشد. عرضه*های تعمیری (یعنی تنها رفع خطاها) را 1.91a, 1.91b و به
همین روال می*نامند.
قالب استاندارد شماره گذاری GNU به صورت major.minor.reversion می*باشد
اما emacs به طور مشهود از قالب دیگری استفاده می*کند که در آن عدد اصلی
(«۱») خذف شده و یک اصطلاح «مکان کاربر» که همیشه صفر است به بسته*های
اولیه emacs افزود می*شود ما توسط توزیع کننده*ها افزایش می*یابد.
استفاده از اعداد منفی
برخی از پروژه*ها از اعداد منفی استفاده می*کنند. یک مثال کامپایلر
smalleiffel است که از ۱.۰- آغاز شده و به ۰.۰ می*رسد و معمولاً در ۰.۷۵-
قرار دارد.
درجه سازگاری
برخی از پروژه*ها برای اشاره به انتشارهای ناسازگار ار عدد ویراستی بزرگ
استفاده می*کنند، Apache APR و FarCry CMS از این دسته هستند.
زمان
پروژهٔ Wine از یک قالب ویرایش زمانی استفاده می*کند که از سال، ماه،
روز انتشار استفاذه می*کند. برای مثال Wine 20040505. اکنون Wine از یک
روند استاندارد استفاده می*کند. جدیدترین ویراست آن در تاریخ ۶ ژوئن ۲۰۰۸،
1.0-rc4 می*باشد. لینوکس اوبونتو از یک برنامهٔ ویرایشی مشابه استفاده
می*کند، برای مثال Ubuntu 8.04 در آپریل ۲۰۰۸ صادر شد.
وقتی از از زمان برای نسخه*بندی استفاده می*کنیم برای مثال استفاده از
زمان در نام*های فایل*ها، متداول است که از یک قالب ISO استفاده کنیم:
YYYY-MM-DD
چون از لحاط رشتهٔ حروف به صورت افزایشی/کاهشی ذخیره می*شود. علامت*های "-" معمولاً حذف می*شوند.
شماره گذاری نرم*افزاری Microsoft Office نیز یک شماره گذاری بر حسب زمان می*باشد.
سال انتشار
نمونه*های دیگر نسخه*ها را به وسیلهٔ سال شناسایی می*کنند (Adobe
Illustrator 88 و WordPerfect Office 2003). با این حال وقتی تاریخی
استفاده می*شود تا به ویرایش اشاره کند این کار تنها به خاطر اهداف
بازاریابی صورت می*گیرد و یک عدد ویرایشی واقعی صادر می*شود. برای مثال
Microsoft Windows 2000 Server به صورت داخلی به عنوان Windows NT 5.0
ویرایش شده است.
کدهای الفبایی
مثال*ها
[ul][li]Macromedia Flash MX[/li][li]Adobe Photoshop CS2[/li][/ul]
تک
تک یک روش خاصی برای نسخه*بندی نرم*افزار دارد. از زمان ویرایش ۳ تا
کنون، به روزرسانی*ها با افزودن یک رقم اضافی به انتهای شماره*های نسخ صورت
گرفته است. بنابراین عدد ویرایش به سمت π میل می*کند. ویرایش فعلی
3.1415926 می*باشد.این امر انعکاسی از این حقیقت است که تک اکنون بسیار با
ثبات است و تنها به روزرسانی*های ناچیزی صورت گرفته است. توسعه دهنده تک
دونالد نوث عقیده دارد که آخرین تغییر که پس از مرگش روی می*دهد، باید برای
تغییر عدد ویرایش به π صورت گیرد، این تغییر باید در جائی صورت گیرد که
همهٔ باگهای باقیمانده به یک ویژگی ثابت تبدیل خواهند شد.
به شیوهٔ مشابه، نسخه*بندی نرم*افزار METAFONT به عدد e میل می*کند.
قالب*های دیگر
برخی تولید کنندگان نرم*افزار برای اشاره به انتشار نرم*افزارهایشان از
قالب*های مختلف استفاده می*کنند. برای مثال، سیستم*عامل Microsoft Windows
در ابتدا با ارقام استاندارد و ویراست رقمی (ویندوز ۱.۰ و ویندوز ۳.۰)، سپس
به وسیله سال (ویندوز ۹۵، ویندوز ۹۸، ویندوز ۲۰۰۰)، سپس استفاده از کدهای
الفبایی عددی (ویندوز ME، ویندوز XP) و اکنون استفاده از اسامی ویژه
(ویندوز ویستا).
پروژهٔ Debian برای انتشار سیستم*عامل خود از قالب ویرایشی اصلی/فرعی
استفاده می*کند، اما اسامی رمزی را (اسم رمز) از فیلم داستان Toy Story
گرفته است تا در طول توسعهٔ سیستم*عامل خود بتواند با این اسم رمزها به
انتشارهای پایدار و ناپایدار اشاره کند.
اعداد ویرایشی داخلی
ممکن است نرم*افزارها از یک عدد ویراشی داخلی استفاده کنند که از عدد
ویرایشی مندرج در نام محصول متفاوت است. برای مثال J2SE5 5.0 دارای عدد
ویرایشی داخلی ۱.۵.۰ می*باشد. ویندوز NT 4، ویندوز ۴.۰ NT است، ویندوز
۲۰۰۰، ویندوز NT ۵.۰ است. ویندوز XP، ویندوز NT ۵.۱، ویندوز سرور 2003،
ویندوز NT ۵.۲ می*باشد. ویندوز ویستا، ویندوز NT ۶.۰ می*باشد و ویندوز 7،
ویندوز NT ۶.۱ می*باشد.
نسخه*های قبل از انتشار
در کنار قالب*های نسخه*بندی متعددی که در بالا ذکر شدند، همانطور که
برنامه راه خویش را از میان مراحل چرخهٔ عمر انتشار نرم*افزار باز می*کند،
سیستمی برای اشاره به نسخه*های قبل از انتشار استفاده می*شود. برنامه*هایی
که در مرحلهٔ اولیه هستند اغلب «آلفا»، اولین حرف در الفبای یونانی نامیده
می*شوند. پس از تکمیل و زمانی که هنوز برای صدور آماده نیستند آنها را
نرم*افزار «بتا»، دومین حرف از الفبای یونانی می*نامند. در کل نرم*افزار
آلفا تنها توسط توسعه*دهندگان آزمایش می*شود در حالی*که نرم*افزار بتا برای
آزمایش کلی توزیع می*شود. نرم*افزار نسخهٔ آلفا و بتا اغلب نسخه*های عددی
کم*تر از ۱ دارند (مثل 0.9) تا نشان دهند که روند آنها در جهت یک انتشار
1.0 عمومی قرار دارد. با این حال اگر نسخهٔ قبل از انتشار یک بستهٔ
نرم*افزاری مانند ویرایش 2.5 باشد یک ”a” یا "alpha" به رقم ویرایش افزوده
می*شود بنابراین ویرایش آلفا از انتشار 2.5 را می*توان با 2.5a یا 2.5.a
شناسایی کرد. بسته*های نرم*افزاری که به تازگی به عنوان یک ویرایش ویژه
صادر شده*اند می*توانند برچسب ویرایش داشته باشند که با "RC-#" دنبال
می*شوند و بع عدد کاندیدای انتشار اشاره دارند. وقتی نسخه یا ویرایش واقعا
صادر شود، برچسب rc ناپدید می*شود.
با این حال این امر می*تواند برای برخی از مدیران بسته مشکلی آفرین باشد.
برای مثال، بستهٔ اتوماسیون رادیویی Rivendell قصد دارد اولین بستهٔ انتشار
تولیدی کامل خود به نام v1.0.1 را منتشر کند چون اگر آنها آن را v1.0.0
بنامند مدیر بستهٔ RPM نصب آن را رد می*کند چون تصور می*کند که این نسخه
قدیمی*تر از 1.0.0rc2 می*باشد.
اصلاحاتی در سیستم عددی
ویراست*های اعداد فرد برای توسعهٔ انتشار
تا زمان سری*های 2.6.x، هستهٔ لینوکس برای اشاره به انتشارهای توسعه*ای
از اعداد ویراستی کوجک فرد و برای اشاره به انتشارهای پایدار از اعداد
ویراستی کوچک زوج استفاده می*کرد. برای مثال، لینوکس ۲.۳ یک خانواده
پیشرفته از دومین طرح اصلی هسته لینوکس است و لینوکس ۲.۴ خانواده اصلی
انتشار بود. پس از عدد ویرایشی فرعی در هستهٔ لینوکس، عدد انتشار به ترتیب
افزایشی قرار دارد، برای مثال لینوکس ۲.۴.۰ تا لینوکس ۲.۴.۲۲، به علاوه یک
رقم ویراستی ناچیز به ۲.۶۸ اضافه شد و ۲.۶.۸.۱ را می*ساز که یه تغییر خیلی
جزئی اشاره می*کند، رقم چهارم پس از ۲.۶.۱۱.۱ استاندارد شد.
منبع : ویکی پدیا
علاقه مندي ها (Bookmarks)