Во время общения программистов с заказчиками и коллегами нередко возникает недопонимание, ведь не все знают, как разрабатывается программное обеспечение и что именно подразумевается под альфа- и бета-версиями. Клиенты ждут от альфы полнофункциональный прототип с некоторыми недостатками, а получают полусырую демонстрацию, в которой каждый шаг в сторону заканчивается фатальными ошибками и потерей данных.

Большинство программистов и так отлично знают, что такое альфа- и бета-версия программы, свою же статью я пишу в первую очередь для всех остальных, так что объяснять отличия версий постараюсь языком, понятным обычным пользователям.

Период разработки

Итак, клиенты с разработчиками все обсудили, все договора и технические задания подписаны, концепция готова, за работу принимаются программисты. Процесс разработки программы напоминает постройку здания: большую часть времени дом совершенно непригоден для жилья. В самую первую очередь разрабатывается архитектура и инфраструктура приложения — фундамент всего проекта. На этом этапе проектируется база данных, определяется набор сторонних программных библиотек, которые будут использованы в проекте, и прочая ерунда. В конце этого этапа программа в лучшем случае способна поприветствовать мир.

В наше время многие разработчики прибегают к использованию фреймворков (от англ. framework — основа, каркас) — готовой архитектуры приложения. Какой бы ни была структура и назначение самого приложения, в большинстве случаев архитектура системы одинаковая. Фреймворк можно сравнить с шаблоном документа в Word — какой бы документ вы ни писали, он всегда будет оформлен в фирменном стиле компании. Однако некоторые проекты имеют особые требования, удовлетворить которые не может практически ни один фреймворк.

После того как архитектура и инфраструктура приложения готовы, начинается разработка функционала самого приложения. Это называют бизнес-логикой приложения.

Все версии приложения на первых двух этапах называются пре-альфа (также часто называемые дэв версиями, от англ. development — разработка). Часто необходимый функционал приложений разбивают на группы. Версия приложения, в которой реализован функционал одной из таких групп, называется майлстоун (от англ. milestone — этап, веха). На практике, майлстоун версии бывают и на последующих этапах.

Следующий этап разработки — альфа-версия. Альфа-версия — версия, предназначенная для внутреннего тестирования. На данном этапе части приложения могут не работать либо отсутствовать вовсе. Все выявленные в ходе тестирования ошибки отправляются обратно разработчикам, те вносят в программу правки и возвращают новую альфа-версию обратно тестировщикам. Этот цикл повторяется до тех пор, пока все ошибки не будут устранены и весь функционал не будет готов.

Когда бизнес-логика приложения разработана и альфа тестирование закончено, на свет появляется бета-версия. Бета версия предназначена для внешнего тестирования. Обычно бета-версия — первая версия программы, доступная пользователям вне команды разработчиков. Различают закрытое и открытое бета-тестирование. Версия программы для закрытого бета-тестирования доступна ограниченному количеству людей по специальным приглашениям. Версия для открытого тестирования обычно доступна всем заинтересованным.

Все ошибки, найденные в ходе бета-тестирования, отправляются разработчикам, которые их исправляют и выпускают следующую бета-версию программы.

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

Релиз

В зависимости от назначения программы, может возникнуть необходимость выпустить ее RTM версию (от англ. release to manufacturing — промышленное издание). Эта версия предназначена для тиражирования и передачи другим компаниям, которые включают ее в свои продукты. Хорошим примером такой версии является версия операционной системы Windows, передаваемая производителям компьютеров до того, как она станет общедоступной, чтобы на момент ее публичного релиза на рынке уже были компьютеры под управлением этой операционной системы.

Ну и заключает цикл разработки программного обеспечения публичный релиз, называемый общедоступной версией программы. На этом этапе часто уже начата работа над следующей версией программы, однако, в зависимости от типа программы, к такой версии еще могут выпускать патчи (от англ. patch — заплатка) — небольшие пакеты обновлений и исправлений ошибок, по каким-то причинам не найденных на этапах тестирования.

Жизненный цикл ПО наглядно
Жизненный цикл ПО наглядно

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

В ходе разработки, тестирования и эксплуатации программы выпускаются сотни версий. Различия между ними могут быть совсем незначительными — пара строчек кода с исправлением мелкой ошибки — или столь существенными, что логика и структура программы меняются полностью. Для того чтобы разобраться во всем этом изобилии, каждой версии программы присваивают номер. Чаще всего публично афишируется лишь часть номера версии (либо он не афишируется вовсе), а полный номер доступен где-нибудь в укромном месте программы (например, в окошке «О программе»).

Наиболее распространена схема, состоящая из трех или четырех чисел, разделенных точками. К сожалению, никакой четкой стандартизации значений каждого числового блока не существует, но со значениями первых двух блоков разногласий почти не возникает. Первое число — старший (major) номер версии. Оно увеличивается, когда происходят значительные изменения в программе, чаще всего между двумя полноценными циклами разработки. Второе число — младший (minor) номер версии. Оно растет с каждым обновлением и дополнением уже существующей программы. Например, версии 9.3 и 9.4 программы Adobe Acrobat Reader отличаются всего несколькими новыми функциями и исправлениями, в то время как версия 10.0 от них отличается даже оформлением.

Многие компании-разработчики, в попытке внести ясность в бесконечные номера версий, дают версиям своих программ названия, подобно моделям автомобилей. Ярким примером такого подхода может послужить операционная система Android: версия 2.1 называлась Eclair, версия 2.2 называлась Froyo и так далее. Другие разработчики и вовсе отказываются от номера версии в названии программы, оставляя только название. Этим увлекается, например, компания Microsoft: Windows 7 — это на самом деле версия 6.1, а Microsoft Word (из пакета Microsoft Office 2010) — версия 14.0.

Заключение

Прежде чем попасть к своему пользователю, любая программа проходит нелегкий путь. И каждое преодоленное препятствие на этом пути — еще одна единичка в номере версии. Надеюсь, после прочтения этой статьи разработчики и заказчики смогут лучше понимать друг друга. Конечно, я опустил множество мелких нюансов, о них вы можете прочесть в соответствующих статьях на википедии: здесь и здесь. А свои вопросы по теме можете оставлять в комментариях или присылать мне на почту.