ARC
پنج شنبه 22 مهر 1389, 12:42 عصر
سلام
نمی دونم جایی که این مطلب رو زدم درسته یا نه آخه هرچی گشتم فکر کنم از این قسمت بهتر نبود اگه اشتباه مدیران لطف کنن انتقال بدن.
- یکی از مواردی که شما تاکنون هزاران بار با آن برخورد داشتهاید، نسخه (Version)های مختلف نرمافزارها است. سوالی که وجود دارد این است که این نسخهگذاری (Versioning) نرمافزارها بر چه اساس است و به چه دردی میخورد؟
دانستن مفاهیم پیرامون نسخهگذاری برای دو دسته از افراد مهم است. دسته اول کاربران معمولی نرمافزار هستند. این افراد با دیدن نسخه نرمافزار از وضعیت توسعه آن باخبر میشوند. یعنی اطلاعاتی بیشتر از دانستن اینکه فلان نسخه از آن نسخه جدیدتر است، خواهند فهمید. اما دسته دوم برنامهنویسان یا همان توسعهدهندگان نرمافزار هستند. دانستن نسخهگذاری برای آنها مسالهای حیاتی است؛ آنها باید بدانند که نسخه جدید نرمافزار خود را چگونه شمارهگذاری کنند.
متاسفانه با وجود اینکه برنامهنویسان بسیاری در ایران هستند، اما تعداد کمی از آنها با نسخهگذاری آشنا هستند!
در ادامه چند نمونه نسخهگذاری برای نرمافزارهای مختلف را میبینید:
Internet Explorer 6.50.4522.1800
Klient 1.00.20
Java 1.6.0 ("Java 6")
Quake III Arena 1.27f
Microsoft Outlook 2002 (10.2627.2725)
Microsoft Windows 7 build 7200
با وجود اینکه نسخه اصلی اینترنت اکسپلورر 6.50.4522.1800 است، ولی وقتی که آن را نصب میکنید، چیزی بیشتر از عدد 6.5 را نخواهید دید. سالیان درازی است که مایکروسافت اینگونه عمل میکند. زیرا برای کاربران بسیار راحتتر است که متوجه نسخه برنامه شوند، جزییات برای آنها خیلی مهم نیست.
در مورد جاوا، شکل دیگری از نسخهگذاری را شاهد هستیم. نسخه 1.6 از زبان جاوا به Java 6 معروف است! یا برای نمونه دیگر شما در نسخه Quake حرف f را میبینید. این حرف نشاندهنده این است که این نسخه، ناپایدار است.
نسخهگذاری برنامهها روشهای مختلفی دارد؛ ولی برخی از آنها بیشتر از بقیه مورد استفاده قرار میگیرد و عمومیتر هستند. تفاوتی جزیی بین روشهای مختلف وجود دارد. من در این مقاله نیز شکل کلی آن را بیان میکنم.
شناسهگذاری سلسله مراتبی
در این نوع نسخهگذاریها به هر نسخه انتشار داده شده از نرمافزار یک شناسه منحصر به فرد تعلق میگیرد که میتواند شامل اعداد و حروف باشد که مفاهیم خاص خودشان را دارند.
در شناسهگذاری سلسله مراتبی هر توالی از شناسه معنای خاص دارد و هر تغییر در هر جزء آن نشاندهنده تغییرات است. برای مثال شناسه 3.14.0.5 یک شناسه سلسله مراتبی با چهار توالی است. اگر کد برنامه دوباره بازنویسی شده باشد، عدد 3 که به شمـاره اصلی(Major Number) معروف است، افزایش پیدا میکند. اما اگر تغییر در رابط کاربری باشد یا قابلیتی جدیدی اضافه شده باشد، تغییر در توالی بعدی که با نام شماره فرعی(Minor Number) شناخته میشود، صورت میگیرد؛ یعنی عدد 5 درشناسه مثال زده شده در بالا.
همانطور که گفتم این اعداد بر اساس تغییرات افزایش پیدا میکنند و هیچ الزامی نیست که اعداد دقیقا یکی یکی افزایش یابند. برای نمونه اگر در برنامه یا شناسه3.0 تغییرات زیادی صورت بگیرد اما این تغییرات آن قدر کافی نباشند که شماره اصلی افزایش یابد، میتوان برنامه را به جای شناسه 4.0 با شناسه 3.5 منتشر کرد. به احتمال زیاد شما با اینگونه جهش در نسخههای مختلف نرمافزارها روبهرو شدهاید. یک نمونه بارز مرورگر محبوب فایرفاکس است که بعد از نسخه 3.0 نسخه 3.5 منتشر شد و سپس نسخه 3.6.
یکی دیگر از کارهای رایج در نسخهگذاری برنامهها، استفاده از حروفی مانند Alpha، Beta و Release Candidate (RC) است. این حروف نشانگر این هستند که برنامه همچنان نسخه آزمایشی است و باید بازسازیهای در کد آنها صورت بگیرد تا بدون اشکال نرمافزاری(Bug) باشند. وقتی شناسه یک برنامه با کلمه Alpha منتشر میشود، بدین معنی است که این نسخه اولین نسخه آزمایشی بوده و حاوی بسیاری از مشکلات احتمالی است. در انتشارهای بعدی از بتا(Beta) استفاده میشود که استفاده از آن میتواند دارای چند نسخه متفاوت باشد؛ مثلا 4.0 b1، 4.0 b2 و... . معنای استفاده از Beta این موضوع است که باگهای شناسایی شده در نسخه آزمایشی قبلی رفع شدهاند. با مثالی این موضوع را شرح میدهم. فرض کنید شما نسخه 4.0 beta 1 از مرورگر فایرفاکس را دریافت کردهاید.
در این نسخه کاربران با مشکل عدم پایداری فایرفاکس در سیستم عامل ویندوز روبه رو شدهاند. چند روز بعد که تیم توسعه این مشکل و چند مشکل پیدا شده دیگر را رفع کردند، نسخه آزمایشی جدید با شناسه 4.0 beta 2 منتشر و کاربران میتوانند آن را دریافت کنند.
هنگامی از RC استفاده میشود که برنامه منتشر شده به اندازه کافی پایدار شده باشد. نکته خیلی مهم درباره جابهجایی بین Alpha ، Beta و RC وجود دارد و آن این است که اولین نسخه یک سطح بالا باید همان آخرین نسخه سطح پایین باشد. احتمال میدهم متوجه جمله اخیر نشدهاید. پس با یک مثال ساده آن را توضیح میدهم. فرض کنید که آخرین نسخه آزمایشی انتشار داده شده از یک نرمافزار Beta 3 است. این نسخه به اندازه کافی پایدار است که تیم توسعه به نسخه RC بروند. اما در این جابهجایی نباید هیچ تغییر یا قابلیتی را به نرمافزار خود اعمال کنند و RC 1 باید همان Beta 3 باشد.
به عبارت زیر دقت کنید. این عبارت که با نقطه جداسازی شده است، شناسه 4 توالی بوده که عددی که در سمت چپ باشد اهمیت آن از عدد سمت راست بیشتر است.
major . minor [. build [.reversion]]
همانطور که در بالا نیز اشاره کردم، اگر کل کد نرمافزاری تغییر کند، عدد Major افزایش مییابد. اگر تغییرات عمده باشند(مثلا در رابط کاربری) عدد Minor عوض میشود. به همین ترتیب Build و Reversion عوض میشوند. اگر دقت کرده باشید، Build و Reversion را داخل براکت قرار دادهام. این براکت بدین معنی است که هنگامی که شناسهای برای نرمافزار ارایه میشود، اگر مقدار آنها صفر باشد، لازم نیست آنها را ذکر کرد. مانند نوشتن 2.1 به جای 2.1.0.0. البته برخی افراد به جای این عبارات از اعداد معادل استفاده میکنند:
عدد صفر به جای Alpha
عدد 1 به جای Beta
عدد 2 به جای RC
عدد 3 به جای نسخه نهایی
این عدد را در توالی سوم میگذارند. با یک مثال بهتر متوجه این جاگذاری میشوید:
1.2.0 به جای 1.2 Alpha
1.2.1 به جای 1.2 Beta
1.2.3 به جای 1.2 RC
1.2.3 به جای 1.2
باز هم به این نکته اشاره میکنم که یک روش برای نسخهگذاری وجود ندارد و حتی برخی روشهای گوناگونی را استفاده میکنند. چند مثال آن را در زیر نام میبرم.
استفاده از نام رمز: برخی توسعهدهندگان نرمافزار دوست دارند که اولین نسخه آزمایشی نرمافزار خود را با نامی دیگر منتشر میکنند. یک نمونه بارز آن مرورگر فایرفاکس است که اولین نسخه آزمایشی فایرفاکس 3 را با نام و لوگو دیگری در اینترنت قرار داد تا فقط کسانی که علاقهمند هستند آن را دریافت کنند. زیرا این نسخه بسیار ناپایدار بود.
استفاده از زمان: در این نوع شناسهگذاری، زمان را به گونهای خاص در نسخه نرمافزار استفاده میکنند. مثلا نسخه 10 سیستمعامل Ubuntu در سال 2010 انتشار پیدا کرد یا نسخه 10.10 آن قرار است در 10/10/2010 منتشر شود.
استفاده از سال انتشار: در برخی نرمافزارها دیده میشود که برای شناسهگذاری نسخهها از سال انتشار آن نرمافزار استفاده میشود که این حالت نیز نوعی استفاده از زمان است. مهمترین نرمافزاری که این کار در مورد آنها صورت میگیرد، مجموعه Office شرکت Microsoft است؛ Office 2003، اOffice 2007 و Office 2010. البته این نام و نشانه در کنار نسخه اصلی آن است. برای نمونه Office 2003 نسخه سیزدهم از مجموعه آفیس بود.
استفاده از کدهای الفبایی: این کار چند سالی است که بین توسعهدهندگان نرمافزارهای بزرگ محبوب شده است. بهترین نمونه آن محصولات شرکت ادوبی(Adobe) است که از کدهای الفبایی CS استفاده میکنند. آخرین مجموعه نرمافزارهای ادوبی با نام CS5 ارایه شده است.
شماره نسخههای داخلی: ممکن است توسعهدهندگان نرمافزارها از یک عدد نسخه داخلی استفاده کنند که با عدد شناسه مندرج در نام نرمافزار منتشر شده، تفاوت دارد. برای مثال ویندوز NT4، همان ویندوز NT 4.0 است یا ویندوز 2000، ویندوز NT 5.0 است.
ویندوز XP، ویندوز NT 5.1، ویندوز سرور 2003، ویندوز NT 5.2 و ویندوز ویستا، ویندوز NT 6.0 هستند. در نهایت ویندوز
منبع: هفته نامه عصر ارتباط (http://www.asreertebat.com/1389/7/17/AsreErtebat_weekly/377/Page/31/)
نمی دونم جایی که این مطلب رو زدم درسته یا نه آخه هرچی گشتم فکر کنم از این قسمت بهتر نبود اگه اشتباه مدیران لطف کنن انتقال بدن.
- یکی از مواردی که شما تاکنون هزاران بار با آن برخورد داشتهاید، نسخه (Version)های مختلف نرمافزارها است. سوالی که وجود دارد این است که این نسخهگذاری (Versioning) نرمافزارها بر چه اساس است و به چه دردی میخورد؟
دانستن مفاهیم پیرامون نسخهگذاری برای دو دسته از افراد مهم است. دسته اول کاربران معمولی نرمافزار هستند. این افراد با دیدن نسخه نرمافزار از وضعیت توسعه آن باخبر میشوند. یعنی اطلاعاتی بیشتر از دانستن اینکه فلان نسخه از آن نسخه جدیدتر است، خواهند فهمید. اما دسته دوم برنامهنویسان یا همان توسعهدهندگان نرمافزار هستند. دانستن نسخهگذاری برای آنها مسالهای حیاتی است؛ آنها باید بدانند که نسخه جدید نرمافزار خود را چگونه شمارهگذاری کنند.
متاسفانه با وجود اینکه برنامهنویسان بسیاری در ایران هستند، اما تعداد کمی از آنها با نسخهگذاری آشنا هستند!
در ادامه چند نمونه نسخهگذاری برای نرمافزارهای مختلف را میبینید:
Internet Explorer 6.50.4522.1800
Klient 1.00.20
Java 1.6.0 ("Java 6")
Quake III Arena 1.27f
Microsoft Outlook 2002 (10.2627.2725)
Microsoft Windows 7 build 7200
با وجود اینکه نسخه اصلی اینترنت اکسپلورر 6.50.4522.1800 است، ولی وقتی که آن را نصب میکنید، چیزی بیشتر از عدد 6.5 را نخواهید دید. سالیان درازی است که مایکروسافت اینگونه عمل میکند. زیرا برای کاربران بسیار راحتتر است که متوجه نسخه برنامه شوند، جزییات برای آنها خیلی مهم نیست.
در مورد جاوا، شکل دیگری از نسخهگذاری را شاهد هستیم. نسخه 1.6 از زبان جاوا به Java 6 معروف است! یا برای نمونه دیگر شما در نسخه Quake حرف f را میبینید. این حرف نشاندهنده این است که این نسخه، ناپایدار است.
نسخهگذاری برنامهها روشهای مختلفی دارد؛ ولی برخی از آنها بیشتر از بقیه مورد استفاده قرار میگیرد و عمومیتر هستند. تفاوتی جزیی بین روشهای مختلف وجود دارد. من در این مقاله نیز شکل کلی آن را بیان میکنم.
شناسهگذاری سلسله مراتبی
در این نوع نسخهگذاریها به هر نسخه انتشار داده شده از نرمافزار یک شناسه منحصر به فرد تعلق میگیرد که میتواند شامل اعداد و حروف باشد که مفاهیم خاص خودشان را دارند.
در شناسهگذاری سلسله مراتبی هر توالی از شناسه معنای خاص دارد و هر تغییر در هر جزء آن نشاندهنده تغییرات است. برای مثال شناسه 3.14.0.5 یک شناسه سلسله مراتبی با چهار توالی است. اگر کد برنامه دوباره بازنویسی شده باشد، عدد 3 که به شمـاره اصلی(Major Number) معروف است، افزایش پیدا میکند. اما اگر تغییر در رابط کاربری باشد یا قابلیتی جدیدی اضافه شده باشد، تغییر در توالی بعدی که با نام شماره فرعی(Minor Number) شناخته میشود، صورت میگیرد؛ یعنی عدد 5 درشناسه مثال زده شده در بالا.
همانطور که گفتم این اعداد بر اساس تغییرات افزایش پیدا میکنند و هیچ الزامی نیست که اعداد دقیقا یکی یکی افزایش یابند. برای نمونه اگر در برنامه یا شناسه3.0 تغییرات زیادی صورت بگیرد اما این تغییرات آن قدر کافی نباشند که شماره اصلی افزایش یابد، میتوان برنامه را به جای شناسه 4.0 با شناسه 3.5 منتشر کرد. به احتمال زیاد شما با اینگونه جهش در نسخههای مختلف نرمافزارها روبهرو شدهاید. یک نمونه بارز مرورگر محبوب فایرفاکس است که بعد از نسخه 3.0 نسخه 3.5 منتشر شد و سپس نسخه 3.6.
یکی دیگر از کارهای رایج در نسخهگذاری برنامهها، استفاده از حروفی مانند Alpha، Beta و Release Candidate (RC) است. این حروف نشانگر این هستند که برنامه همچنان نسخه آزمایشی است و باید بازسازیهای در کد آنها صورت بگیرد تا بدون اشکال نرمافزاری(Bug) باشند. وقتی شناسه یک برنامه با کلمه Alpha منتشر میشود، بدین معنی است که این نسخه اولین نسخه آزمایشی بوده و حاوی بسیاری از مشکلات احتمالی است. در انتشارهای بعدی از بتا(Beta) استفاده میشود که استفاده از آن میتواند دارای چند نسخه متفاوت باشد؛ مثلا 4.0 b1، 4.0 b2 و... . معنای استفاده از Beta این موضوع است که باگهای شناسایی شده در نسخه آزمایشی قبلی رفع شدهاند. با مثالی این موضوع را شرح میدهم. فرض کنید شما نسخه 4.0 beta 1 از مرورگر فایرفاکس را دریافت کردهاید.
در این نسخه کاربران با مشکل عدم پایداری فایرفاکس در سیستم عامل ویندوز روبه رو شدهاند. چند روز بعد که تیم توسعه این مشکل و چند مشکل پیدا شده دیگر را رفع کردند، نسخه آزمایشی جدید با شناسه 4.0 beta 2 منتشر و کاربران میتوانند آن را دریافت کنند.
هنگامی از RC استفاده میشود که برنامه منتشر شده به اندازه کافی پایدار شده باشد. نکته خیلی مهم درباره جابهجایی بین Alpha ، Beta و RC وجود دارد و آن این است که اولین نسخه یک سطح بالا باید همان آخرین نسخه سطح پایین باشد. احتمال میدهم متوجه جمله اخیر نشدهاید. پس با یک مثال ساده آن را توضیح میدهم. فرض کنید که آخرین نسخه آزمایشی انتشار داده شده از یک نرمافزار Beta 3 است. این نسخه به اندازه کافی پایدار است که تیم توسعه به نسخه RC بروند. اما در این جابهجایی نباید هیچ تغییر یا قابلیتی را به نرمافزار خود اعمال کنند و RC 1 باید همان Beta 3 باشد.
به عبارت زیر دقت کنید. این عبارت که با نقطه جداسازی شده است، شناسه 4 توالی بوده که عددی که در سمت چپ باشد اهمیت آن از عدد سمت راست بیشتر است.
major . minor [. build [.reversion]]
همانطور که در بالا نیز اشاره کردم، اگر کل کد نرمافزاری تغییر کند، عدد Major افزایش مییابد. اگر تغییرات عمده باشند(مثلا در رابط کاربری) عدد Minor عوض میشود. به همین ترتیب Build و Reversion عوض میشوند. اگر دقت کرده باشید، Build و Reversion را داخل براکت قرار دادهام. این براکت بدین معنی است که هنگامی که شناسهای برای نرمافزار ارایه میشود، اگر مقدار آنها صفر باشد، لازم نیست آنها را ذکر کرد. مانند نوشتن 2.1 به جای 2.1.0.0. البته برخی افراد به جای این عبارات از اعداد معادل استفاده میکنند:
عدد صفر به جای Alpha
عدد 1 به جای Beta
عدد 2 به جای RC
عدد 3 به جای نسخه نهایی
این عدد را در توالی سوم میگذارند. با یک مثال بهتر متوجه این جاگذاری میشوید:
1.2.0 به جای 1.2 Alpha
1.2.1 به جای 1.2 Beta
1.2.3 به جای 1.2 RC
1.2.3 به جای 1.2
باز هم به این نکته اشاره میکنم که یک روش برای نسخهگذاری وجود ندارد و حتی برخی روشهای گوناگونی را استفاده میکنند. چند مثال آن را در زیر نام میبرم.
استفاده از نام رمز: برخی توسعهدهندگان نرمافزار دوست دارند که اولین نسخه آزمایشی نرمافزار خود را با نامی دیگر منتشر میکنند. یک نمونه بارز آن مرورگر فایرفاکس است که اولین نسخه آزمایشی فایرفاکس 3 را با نام و لوگو دیگری در اینترنت قرار داد تا فقط کسانی که علاقهمند هستند آن را دریافت کنند. زیرا این نسخه بسیار ناپایدار بود.
استفاده از زمان: در این نوع شناسهگذاری، زمان را به گونهای خاص در نسخه نرمافزار استفاده میکنند. مثلا نسخه 10 سیستمعامل Ubuntu در سال 2010 انتشار پیدا کرد یا نسخه 10.10 آن قرار است در 10/10/2010 منتشر شود.
استفاده از سال انتشار: در برخی نرمافزارها دیده میشود که برای شناسهگذاری نسخهها از سال انتشار آن نرمافزار استفاده میشود که این حالت نیز نوعی استفاده از زمان است. مهمترین نرمافزاری که این کار در مورد آنها صورت میگیرد، مجموعه Office شرکت Microsoft است؛ Office 2003، اOffice 2007 و Office 2010. البته این نام و نشانه در کنار نسخه اصلی آن است. برای نمونه Office 2003 نسخه سیزدهم از مجموعه آفیس بود.
استفاده از کدهای الفبایی: این کار چند سالی است که بین توسعهدهندگان نرمافزارهای بزرگ محبوب شده است. بهترین نمونه آن محصولات شرکت ادوبی(Adobe) است که از کدهای الفبایی CS استفاده میکنند. آخرین مجموعه نرمافزارهای ادوبی با نام CS5 ارایه شده است.
شماره نسخههای داخلی: ممکن است توسعهدهندگان نرمافزارها از یک عدد نسخه داخلی استفاده کنند که با عدد شناسه مندرج در نام نرمافزار منتشر شده، تفاوت دارد. برای مثال ویندوز NT4، همان ویندوز NT 4.0 است یا ویندوز 2000، ویندوز NT 5.0 است.
ویندوز XP، ویندوز NT 5.1، ویندوز سرور 2003، ویندوز NT 5.2 و ویندوز ویستا، ویندوز NT 6.0 هستند. در نهایت ویندوز
منبع: هفته نامه عصر ارتباط (http://www.asreertebat.com/1389/7/17/AsreErtebat_weekly/377/Page/31/)