Это архивная статья. Блог закрыт.

← на главную

Нумерация версий ПО

Статья написана очень давно — 09.02.2010

Большинство пользователей рано или поздно задаются вопросом «А как нумеруются версии программ?». С этим же вопросом сталкиваются и начинающие (а порой даже и опытные) программисты. Здесь я постараюсь кратко рассказать о том, как же нумеруются программные продукты

Вообще, нет строгих правил в обозначении нумераций версий, но всё же существуют некие стандрты де-факто, о которых я поведаю.
Итак, классическая версия может содежать от двух до четырёх чисел: Example A.B.C.D. Что же значат цифры в обозначении версий?
А — это старшая (major) версия
B — это младшая (minor) версия
C — это этап (который, к слову, может отсутствовать - тогда на его место становится сборка)
D — это сборка

Теперь о каждом подробней.
Итак, старшая версия изменяется только при кардинальных изменениях.
Младшая версия изменяется при значительных изменениях функциональности, при изменениях интерфейса
Этап - о нём сказано немного ниже
Сборка изменяется при любом, даже незначительном изменении программного обеспечения.

Этап (стадия)

С числами более-менее разобрались, теперь разберёмся что же означает этап? Этап (или стадия) — это всего-навсего описание степени готовности программного продукта:
Альфа версия — это стадия тестирования приложения штатными тестерами (т.е. это тестирование внутри организации, которая разрабатывает данный продукт). Соответствует числу 0 или символу a
Бета версия — это стадия публичного тестирования приложения, когда приложение тестируется либо будущими пользователями, либо ограниченым кругом бета-тестеров. Соответствует числу 1 или символу b
RC (Release candidate) — релиз-кандидат — это стадия-кандидат на то, чтобы стать стабильной версией. Грубо говоря, это «чистовое» тестирование программы (два вида - альфа и бета - тестирования уже пройдены, все баги найдены и пофикшены, но всё же есть вероятность наткнуться на баг). Соответствует числу 2 или символам rc
RTM (Release To Manufacturing) — релиз — стабильная версия приложения, готовая к применению. Кстати, это именно тот этап, который в народе именуют «ушёл на золото». Соответствует числу 3 или символам rtm
GA (General availability) — общедоступный релиз. Грубо говоря, между RTM и этим этапом может пройти несколько недель, а разница заключается только в менеджменте: этот релиз распространяется по всему рынку, если это необходимо, переводится на другие языки и т.д.
Вдаваясь в дебри, обнаружим также, что финальные версии (RTM, GA) разделяют на Box copy (коробочную версию) и Release To Web (релиз, доступный для скачивания из Сети)

Другие системы

Также, существует трёхзначная система нумерации, где отсутствует этап, но на его месте находится сборка (ревизия).
Кроме того, существует некий стандарт нумерации, где числа после первого «склеены». Пример: 1.325 — первая версия, третья подверсия, релиз-кандидат 5. Либо же, вместо этапа-цифры указывается символ: 1.35-rc

Теперь, нам ясно, что 1.3.2.5 означает первую версию, третью подверсию, релиз-кандидат 5. Однако существуют и другие варианты написания, например, 1.3.15.4. Что значит здесь 15? Явно не этап, это другая система нуцмерации: A.B.C.D, где:
А — версия
B — старшая версия ревизии
C — младшая версия ревизии
D — сборка
Как видно, никаких этапов здесь нет, зато разделяются понятия версия (A) и версия ревизии (B и C). Для примера возьмём ядро Линукса[wiki]: номер версии изменялся всего два раза за историю (первая версия в 1994 году и вторая - в 1996), изменяется только при внесении кардинальных изменений в код или концепцию ядра; старшая версия ревизии - также при внесении значительных (но не кардинальных) изменений, также показывает стабильность. Младшая же версия ревизии изменяется при внесении новых драйверов или каких-либо улучшений, а сборка - при незначительных изменениях

Отдельно нужно сказать об т.н. стабильных и нестабильных версиях. Принято, что стабильные версии обозначаются чётными подверсиями, а нестабильные (так называемые, «девелоперские») - нечётными. Например, всё то же ядро Линукса: второе число версии означает стабильность ревизии. Это широкая практика в Open Source-проектах. Сделано это для того, чтобы разграничивать доступ для широкого круга пользователей (чётные, стабильные) и для разработчиков (нечётные, нестабильные).

Ещё существует множество экстравагантных систем нумерации, которые придумываются для конкретного программного продукта:

Коммерческое название

Дабы не отставать от конкурентов, некоторые разработчики дают коммерческий номер своему продукту, при этом реальный остаётся ниже. Пример: Opera 10, которая на самом деле имеет версию 9.80. Или, того хуже, перепрыгивает через версии, как было сказано выше об Apple.

Коммерческое название - это не только забегание вперёд. Иногда очередной версии дают красивое имя, так называемое «кодовое имя», например MacOS X 10.2 имеет имя «Jaguar», а Mac OS X 10.6 — «Snow Leopard»

Заключение

Теперь нам ясно, как же нумеруются программы. Есть 2 основные системы нумерации, каждая из них, в свою очередь, может иметь разную запись. К примеру записи 1.2.1.3, 1.213, 1.2, 1.2-beta3 обозначют одно и то же: бета, первая версия, вторая подверсия, третий релиз
Совет разработчику по нумерации (как делаю я): достигая требуемого функционала, ставлю версию 1.0-a (1.0.0.x). Провожу альфа-тестирование, ставлю версию 1.0-b (1.0.1.x). При каждом внесении исправлений на момент тестирования увеличиваю последее число (сборку), но для каждого этапа (альфа, бета, релиз-кандидат) начинаю с нуля. После окончания бета-тестирования устанавливаю версию 1.0-rc (1.0.2.x). Ну и после окончания финального тестирования ставлю версию 1.0-rtm (1.0.3.0) - продукт готов. Теперь, если потребуется новый виток разработки, увеличиваю младшую версию и начинаю с начала: 1.1-a и т.д... Старшую же версию увеличиваю только при почти полном переписывании, изменении архитектуры и т.п.
Дерзайте!

Комментарии удалены

© koz1024 2010, 2019