Существует ли стандартное определение того, что представляет собой изменение версии (ревизии) - PullRequest
5 голосов
/ 09 апреля 2009

В настоящее время я нахожусь в бюрократическом аду в моей компании и должен определить, что представляет собой различные уровни изменения программного обеспечения в наших тестовых программах. У нас есть грубая практика, которой мы следуем изнутри, но я ищу стандарт (если он существует) для ссылки в нашей системе качества. Я признаю, что системы могут сильно различаться у разных разработчиков, но, в конечном итоге, я ищу руководство "передового опыта", которое представляет собой существенное изменение, незначительное изменение и т. Д. Я хотел бы сослаться на опубликованный документ в моем представлении нашей системе качества Цели ISO, если это возможно.

Чтобы уточнить, программное обеспечение, разработанное в моей компании, используется внутри для автоматизации испытаний полупроводников. Мы не продаем этот код, и управление версиями действительно только для учета. Мы используем изменения в x.y.z, чтобы повлиять на уровень подписи и утверждения, необходимые для выпуска.

Ответы [ 6 ]

10 голосов
/ 09 апреля 2009

Хорошей практикой является использование 3 номеров версий уровня:

x.y.z

х является основным у несовершеннолетний z исправления ошибок

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


Редактировать:

Вот несколько ссылок на используемые схемы номеров ревизий:

2 голосов
/ 09 апреля 2009

Я бы добавил номер сборки в формате x.y.z:

x.y.z.build

x = основное изменение функции
y = незначительное изменение функции
z = только исправление ошибок
build = увеличивается каждый раз, когда код компилируется

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

1 голос
/ 09 апреля 2009

чтобы увеличить сказанное @lewap, используйте

x.y.z

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

где изменения уровня y добавляют функциональность и могут изменить интерфейс UI / API в дополнение к исправлению более серьезных ошибок, которые могут затрагивать внешние системы

где изменения уровня x включают в себя все, от полного переписывания / редизайна до простого изменения структур баз данных с изменением баз данных (т. Е. С Oracle на SQLServer) - другими словами, все, что не является изменением, требующим «порта» или процесс "конверсии"

0 голосов
/ 10 июля 2009

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

  • Версия (семантика: модификация)
  • Представление (семантика: эквивалентность, деривация)
  • Иерархия (семантика: состоит из)
  • Статус (семантика: утверждение, доступность)
  • Вариант (семантика: варианты продукта)

Peter van den Hamer и Kees Lepoeter (1996) Управление данными проектирования: пять измерений платформ CAD, управление конфигурацией и управление данными о продуктах, Материалы IEEE, Vol. 84, № 1, январь 1996 года

0 голосов
/ 09 апреля 2009

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

Первое, что я хотел бы сказать, это то, что нотация Major.minor для выпусков является сравнительно недавним изобретением. Например, большинство выпусков UNIX на самом деле имели имена (которые иногда включали бессмысленные числа), а не номера версий.

Но при условии, что вы хотите использовать major.minor, нумерацию, тогда старшее число указывает версию, которая в основном несовместима с тем, что было раньше. Рассмотрим изменение с Windows 2,0 на 3.0 - большинство 2,0 приложений просто не вписываются в новые перекрывающиеся окна в Windows 3,0. Для менее всеобъемлющих приложений радикальное изменение форматов файлов (например) может быть причиной существенного изменения версии - графические приложения WP & n часто работают таким образом.

Другая причина изменения номера основной версии заключается в том, что пользователь замечает разницу. Еще раз это было верно для перехода с Windows 2.0 на 3.0 и было причиной успеха. Если ваше приложение выглядит совсем иначе, это серьезное изменение.

A для младшего номера версии, это обычно используется для обозначения изменения, которое на самом деле довольно большое, но которое не будет заметно пользователю. Например, внутренние различия между Win 3.0 и Win 3.1 были довольно значительными, но интерфейс остался прежним.

Что касается третьего номера версии, мало кто знает, что это действительно означает, и меньше заботится. Например, в своей повседневной работе я использую компилятор GNU C ++ версии 3.4.5 - как это отличается от 3.4.4 - я понятия не имею!

0 голосов
/ 09 апреля 2009

Я думаю, что это может отличаться, если вы работаете над внутренним программным обеспечением против внешнего программного обеспечения (продукта).

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

В нашей компании x.y в схеме нумерации x.y.z определяется маркетинговыми мальчиками и девочками. Z и внутренний номер сборки определяются отделом R & D и отслеживаются в нашей системе контроля версий и связаны со спринтом, в котором он был создан (спринт - это термин Scrum для итерации).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...