Версия программы в которой все ошибки исправлены и добавляются новые функции называется
У многих начинающих разработчиков возникает вопрос: как назначать версию своей программы?
Поделюсь своим опытом.
Не буду вдаваться в теорию, тем более, что жестких рамок в данном вопросе нет. В своей практике я встречал много различных вариантов назначения версий программ.
Приведу несколько примеров написания версии:
Разберем каждое значение.
Ревизия (Revision)
Номер ревизии (revision) в системе управления версиями (Version Control System, VCS или Revision Control System). Благодаря ему, можно легко получить исходный код конкретной версии, выгрузив его из хранилища. Как правило, данное значение начинается с 1 с последующим увеличением соответственно номеру ревизии и никогда не обнуляется. В силу того, что значение важно только для разработки, в нумерации программы его часто опускают.
Билд (build)
Иными словами, номер сборки программы. После изменения в коде программы, как правило, проводят сборку программы, т.е. полную компиляцию всех файлов проекта. Как правило, данное значение начинается с 1 с последующим увеличением соответственно номеру сборки. Обнуление сборки либо не проводят никогда, либо при смене мажорной (major) версии. В силу того, что это значение важно только для разработки, в нумерации программы его часто опускают.
Патч или заплатка (patch)
Значение изначально устанавливается в 0 и увеличивается по мере внесения незначительных изменений в программу, например исправление какой-либо ошибки. Обнуляется при смене мажорной или минорной версий.
Минорная версия (minor)
Значение изначально устанавливается в 0 и увеличивается по мере внесения существенных изменений в программу, например, добавления нового функционала в программу. Значение также может повышаться при накоплении мелких изменений (патчей). Обнуляется при смене мажорной версии.
Мажорная версия (major)
Собственно говоря, это и есть версия программы. Значение мажорной версии устанавливается равной 1. Увеличивается данное значение с выходом новой версии, когда происходят значительные переходы в функциональности, например, добавлены новые функции, существенно меняющие возможности программы, изменен интерфейс, переписаны основные алгоритмы и т.п. Значение также может повышаться при накоплении серьезных (минорных) изменений.
Для пред-релизных версий используют значение равное 0, получая номер вида 0.9.*.*
Год.Месяц.День (year.month.day)
Такое назначение версии указывает на дату выхода программы, что удобно для конечного пользователя. Исходя из такой нумерации пользователь может судить о том, как давно вышла конкретная версия программы, и не пора ли проверить обновление. К сожалению, подобная версионность не всегда удобна для разработчиков, особенно когда над проектом работает не один человек.
Кроме указанных позиций, разработчики часто используют буквенные обозначения в номере версии:
Какую схему наименования версий использовать решать прежде всего разработчикам, главное, чтобы нумерация была удобна в разработке и понятна конечному пользователю. И это один из тех вопросов, о которых необходимо договариваться в самом начале разработки любого проекта.
Версия программы может быть целым числом (Corel Draw 11), дробным числом (Windows 3.11), последовательностью чисел (JDK 1.0.3), годом (Windows 2000) или текстом (Embarcadero Delphi XE). В любом случае, система версионирования выбирается по нескольким критериям:
Содержание
Схемы нумерации
Для отслеживания изменений программного обеспечения было создано большое количество схем присвоения номеров версиям программного обеспечения.
Иногда присутствие человеческого фактора в создании номеров версий приводит к ошибкам в изменении версий. Например, разработчики могут изменить последовательность между версиями, даже если ни одна строчка кода не была переписана, лишь для того чтобы создать ложное впечатление, что были внесены значительные изменения.
Другие схемы передают значение на отдельных последовательностях:
major.minor[.build[.revision]]
major.minor[.maintenance[.build]]
Опять же, в этих примерах отличия «существенных» от «незначительных» изменений, даются произвольно и по усмотрению автора, как то, что означает «build» или как «revision» отличается от «minor change». Аналогичные проблемы относительной значимости изменений и номенклатуры версий существуют в сфере книгоиздания, где номер издания или название может быть выбрано на основе различных критериев.
В большинстве проприетарного программного обеспечения, первая официальная версия программного продукта имеет версию 1.
Последовательные номера
В схемах управления версиями, основанных на последовательной нумерации, каждому выпуску программы присваивается уникальный идентификатор, который состоит из одной или нескольких последовательностей чисел или букв. В общем случае это так, однако, схемы широко варьируются в количестве последовательностей, в смысле отдельных последовательностей, в способах увеличения значений.
Десятичная дробь
Последовательность чисел
Этот способ принят, например, в Windows API. Версия состоит из нескольких (как правило, трёх) чисел, разделённых точкой. При увеличении одного из чисел все идущие после него сбрасываются до нуля: 1.0.0, 1.0.1, 1.0.2, 1.1.0, 1.2.0, 1.2.1, 2.0.0… Числа сравниваются целиком: 1.1.0 < 1.1.2 < 1.10.0 < 1.11.0 < 1.20.0. Последний ноль может опускаться.
Буква в качестве младшей версии
Указание стадии разработки
Если разработчику приходится полагаться на внештатных тестеров, в версии может указываться уровень зрелости программы: альфа-версия, бета-версия, релиз-кандидат, окончательный выпуск, исправление ошибок ( service release ).
Например, 2.0 alpha1 < 2.0 alpha2 < 2.0 beta < 2.0 rc1 < 2.0 < 2.0 sr1.
Существуют разные схемы обозначения стадий разработки. Например, третье число может означать:
- 1.2.0.1 вместо 1.2-a
- 1.2.1.2 вместо 1.2-b2 (бета с несколькими исправленными ошибками)
- 1.2.2.3 вместо 1.2-rc3 (релиз-кандидат)
- 1.2.3.0 вместо 1.2-r (для коммерческого распространения)
- 1.2.3.5 вместо 1.2-r5 (для коммерческого распространения со многими исправленными ошибками)
Такая же система «чёт-нечет» используется некоторыми другими продуктами с длинным циклом разработки, такими как GNOME.
Алфавитно-цифровое название
Чаще всего применяется ПО с долгой историей и редко выходящими версиями. Например: Adobe Photoshop CS2, Windows Vista.
Иногда в дополнение к обычной версии используется алфавитно-цифровое подназвание: Ubuntu 9.04 Jaunty Jackalope.
Год выпуска применяется чаще всего в ПО с редко выходящими версиями, например: Windows Server 2003.
Разработчики проекта Wine также сначала использовали даты при нумерации версий, они указывали год, месяц и день релиза: «Wine 20040505». Сейчас Wine использует «стандартную» нумерацию релизов, последняя версия 2010 года имеет номер 1.2. Компания Ubuntu Linux использует похожую схему нумерации, например релиз октября 2010 года пронумерован как Ubuntu 10.10. Здесь следует отметить, что при использовании дат в нумерации версий необходимо использовать схему ISO, то есть сначала указывается год, затем месяц, а потом день (YYYY-MM-DD), причем дефис можно опускать.
Внутренние версии
Экзотические схемы
Avid Media Composer — Media Composer 4.0, запущенный на Mac OS X. Тип Видеоредактор Раз … Википедия
Бета-тестирование — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете … Википедия
Ядро Linux — Эта статья о ядре для операционных систем. О группе операционных систем, которые используют это ядро, называемых «Linux», см. в статье Linux Ядро Linux Тип … Википедия
Linux (ядро) — Эта статья о ядре для операционных систем. О группе операционных систем, которые используют это ядро, называемых «Linux», см. в статье Linux Ядро Linux Тип Ядро ОС Разработчик … Википедия
Линукс (ядро) — Эта статья о ядре для операционных систем. Об операционной системе, которая использует это ядро и библиотеки Linux Ядро Linux Тасманский дьявол Tuz, временный символ ядра Linux версии 2.6.29 Пингвин Тип Ядро ОС Разработчик … Википедия
Ядро Линукс — Эта статья о ядре для операционных систем. Об операционной системе, которая использует это ядро и библиотеки Linux Ядро Linux Тасманский дьявол Tuz, временный символ ядра Linux версии 2.6.29 Пингвин Тип Ядро ОС Разработчик … Википедия
Каждая программа перед тем, как попасть к пользователю, проходит несколько этапов тестирования. Но иногда пользователям могут быть доступны даже те версии, которые не протестированы до конца — и многие этому даже рады. Давайте разберёмся, как это работает.
Стадии тестирования и разработки софта
Если не углубляться в нюансы разработки и тестирования, то обычно говорят о пяти состояниях, в которых находится программа:
- Преальфа (Pre-alpha) — самая начальная стадия разработки.
- Альфа-версия — вроде всё сделали, протестировали самое основное.
- Бета-версия — оттестировали большую часть, ловим тараканов при поддержке небольшого круга доверенных людей.
- Релиз-кандидат — почти готовая к выпуску программа.
- Релиз — готовая программа.
Преальфа
Преальфа — это сырой продукт, не предназначенный для использования. На нём чаще всего тестируют гипотезы и убеждаются, что софт в принципе может работать.
Эта версия позволяет оценить выбранную архитектуру и подход к программированию, сравнить с планируемой нагрузкой и понять, идёт ли всё по плану или впереди будет гораздо сложнее. В преальфе много ошибок, заглушек и не предусмотренных тестами ситуаций.
Иногда преальфа нужна для того, чтобы показать клиентам или инвесторам, как вообще идут дела в компании. Например, в игровой индустрии ролики из преальфа-версии позволяют заранее прикинуть возможности графики в игре или понять, стоит вкладывать деньги в эту идею или она провалится в прокате.
Альфа
Когда программа доходит до стадии «альфа», то считается, что в ней реализованы все возможности, предусмотренные этой версией, и теперь нужно найти все ошибки.
Случается такое, что во время тестирования в программу добавляются или в ней сокращаются некоторые модули, чтобы снизить сложность или количество ошибок. Альфа-версия считается уже как бы рабочей, но очень сырой версией программы. По идее, ей уже можно пользоваться, но с поправкой на общую глючность.
Бывает такое, что программа в стадии альфа-версии может находиться годами: разработчики никуда не спешат и делают софт для себя. Или у них внезапно закончились деньги, а забрасывать программу жалко. Тогда они могут открыть эту версию для всех, но с оговоркой, что это альфа и что пользуемся на свой страх и риск.
Бета-версия — это уже серьёзно. Чаще всего это означает, что в ней исправлены почти все большие ошибки, но может остаться много мелких, которые ещё не нашли тестировщики.
Ещё одна причина выпуска бета-версий в свет — желание компании уйти от ответственности за ошибки. Идея такая: компания говорит, мол, что это ещё не окончательная версия, поэтому в ней могут быть баги, которые ещё не отловили. Но на самом деле эту версию никто не будет дорабатывать до финала — в лучшем случае поправят пару заметных ошибок.
Релиз-кандидат
После бета-тестирования и исправления почти всех найденных ошибок, программа переходит в стадию релиз-кандидата. Это значит, что ей можно пользоваться как полноценной программой, но не факт, что тестировщики нашли все ошибки.
Если через 1–3 месяца полноценного использования и тестирования программы в ней не найдут никаких ошибок, программа переходит в стадию релиза.
Релиз-кандидат — это почти всегда та же самая программа, что и в релизе, просто разработчикам нужно убедиться, что она работает стабильно и без сбоёв.
Релиз
Релиз — это готовая версия программы, доступная для всех пользователей.
Релизом может быть и крупное обновление, например, новая версия Windows, а может быть и обновление с версии 1.5.234 на версию 1.5.235. Про то, что означают эти цифры и как они меняются, мы поговорим как-нибудь отдельно.
Жизненный цикл любой программы - будь то десктопное или веб-приложение может быть продолжительным. Если проект активно развивается то в нем постоянно что-то меняется: добавляются новые функции или исправляются ошибки. Как правило, название проекта при этом никуда не девается, а меняется версия проекта.
Вариант 1. Нумерация целым числом
Обычно программы нумеруются целыми числами 1,2,3,4,5,6,7 и т.д. когда новая версия программы сложна, долго пишется и появляется только раз в год или несколько лет. После того, как такая программа будет протестирована, она помечается целым номером и выпускается для использования. Какие-либо мелкие изменения, добавляемые в процессе обслуживания программы, не учитываются в нумерации. Например, целым числом нумеруется Corel Draw (Corel Draw 10, Corel Draw 11)
Вариант 2. Десятичная дробь
Другой способ, который позволяет указать в версии программы серьезные и не большие изменения - это нумерация десятичной дробью. Например, как правило первая версия программы получает номер 1.0. При небольшом изменении увеличивается вторая цифра - 1.1. А при добавлении новой функции, изменяется вновь первая цифра, а вторая, следующая за ней, обнуляется - 2.0.
Вариант 3. Последовательные числа
Нумерация версий программы последовательными числами выглядит следующим образом.Версия программы состоит из трех или четырех чисел, разделенных точкой: например, 2.7.5.
- Первое число - старшая версия (major), изменяется при кардинальных изменениях программы
- Второе число - младшая версия (minor), изменяется при значительных изменениях функциональности
- Третье число (или буква) - стадия разработки
- Альфа версия - стадия тестирования приложения, число 0 или символ a
- Бета версия - стадия публичного тестирования приложения, число 1 или символ b
- RC (Release candidate) - релиз-кандидат - стадия-кандидат на то, чтобы стать стабильной версией, число 2 или символы rc
- RTM (Release To Manufacturing) - релиз - стабильная версия приложения, число 3 или символы rtm
- GA (General availability) - общедоступный релиз
Он может отсутствовать, и тогда вместо него ставится следующее число.
- Четвертое число - небольшие изменения (micro, maintenance), изменяется при любом, даже незначительной правке программы
Когда одно из чисел увеличивается, то все следующие за ним сбрасываются до нуля: 1.0.0, 1.0.1, 1.0.2, 1.1.0 и т.д. Часто, последний ноль может отбрасываться из версии, например: 1.0.0 = 1.0
Например, последовательные числа используют в Adobe Photoshop (Adobe Photoshop 7.0)
Вариант 4. Нумерация годом
Обычно, год используют в качестве нумерации для программных продуктов, которые долго разрабатываются и новые версии которых выходят не очень часто. Например, продукты того же Microsof, взять хотя бы их операционную систему или пакеты офисных утилит Word, Excel, PowerPoint и т.п.
Вариант 5. Нумерация текстом
Кроме чисел, в нумерации программы могут участвовать и различные буквы. Например, как это сделано в интегрированной среде разработки Delphi (Delphi XE)
Выбор, как именно нумеровать программу, выбирается по следующим причинам:
- в зависимости от использования системы контроля версии или иных инструментов разработки
- частота изменений в программе
- в маркетинговых целях, когда чтобы не отставать от конкурентов, разработчики проекта перескакивают на новый номер версии
Какой именно тип нумерации версий используете вы?
Автор
Программист с образованием в области IT и опытом разработки на разных языках. Автор статей по программированию. Общий опыт работы в сфере IT и интернета более 5 лет.
Читайте также: