Kategorie
Web development

Jak wersjonować semantycznie kolejne wydania oprogramowania?

Na pewno masz swój własny sposób na oznaczanie kolejnych wydań softu, nad którym pracujesz. Problem w tym, że… każdy developer ma taki sposób. Aby ułatwić pracę sobie i innym, warto przyjąć jeden, jak najprostszy i jak najbardziej intuicyjny system wersjonowania – na przykład wersjonowanie semantyczne.

Wersjonowanie semantyczne oprogramowania – na czym polega?

Wersjonowanie semantyczne, zwane też SemVer, to sposób na numerowanie kolejnych wydań oprogramowania. Poszczególne wersje oznacza się 3-cyfrowym kodem w formacie X.Y.Z, gdzie:

  • X (major) określa update, dużą zmianę oprogramowania, która nie jest kompatybilna wstecz.
  • Y (minor) oznacza mniejszą poprawkę wprowadzającą nową funkcjonalność, która musi być zgodna z poprzednimi wersjami.
  • Z (patch) to naprawa znalezionego błędu, aktualizacja zabezpieczeń czy drobna poprawa wydajności – tzw. łatka. Ta wersja oprogramowania również musi być kompatybilna z poprzednimi wydaniami.

Przykład: mamy wydanie oprogramowania 1.5.2. Developer naprawia w nim błąd i wydaje nową wersję, którą oznacza jako 1.5.3. Nie ma przy tym znaczenia, ile poprawek wprowadził – numer Z (patch) zawsze oznacza liczbę kolejnych wydań, a nie liczbę naniesionych w kodzie zmian.

Jeśli do wersji 1.5.2 dodana zostanie nowa funkcjonalność, należy „upgrade’ować” element Y (minor). Z (patch) resetuje się wówczas do 0, ponieważ w momencie wydania nowej funkcjonalności nie zostały w niej jeszcze znalezione błędy. Format wersjonowania będzie więc wyglądał tak: 1.6.0. Każda z wersji może przyjmować liczbę większą niż 10, czyli może to być np. 1.12.7.

Gdy oprogramowanie przechodzi dużą aktualizację, znacząco się zmieniając, w oznaczeniu nowego wydania wzrasta liczba X (major), a liczby Y (minor) i Z (patch) resetują się do 0: 2.0.0.

Zasady poprawnego wersjonowania semantycznego

  1. Jeśli developerzy chcą używać wersjonowania semantycznego, oprogramowanie, nad którym pracują, musi mieć jasno i precyzyjnie zdefiniowane API. Można je oznaczyć w kodzie lub w dokumentacji.
  2. Kod X.Y.Z składa się z nieujemnych liczb całkowitych i nie zawiera zer wiodących, a każdy jego składnik rośnie numerycznie.
  3. Po wydaniu nowej wersji oprogramowania nie można wprowadzać w nim żadnych zmian bez odnotowania tego w wersji. Każda poprawka, łatka czy naprawa błędu musi być oznaczona jako nowe wydanie.
  4. W początkowej fazie rozwoju projektu, gdy oprogramowanie nie jest jeszcze udostępnione użytkownikom, w oznaczeniach kolejnych wersji liczba X (major) zawsze będzie równa 0 (0.1.0). Kiedy soft zostanie oficjalnie oddany do użytku, jego pierwsza wersja jest oznaczona jako 1.0.0.
  5. Po numerze Z w wersji patch może pojawić się dywiz oraz zbiór identyfikatorów rozdzielonych kropkami. To oznaczenie wydania przedpremierowego, które z definicji charakteryzuje się mniejszą stabilnością. Identyfikatory składają się ze znaków alfanumerycznych ASCII oraz myślników.
  6. Za numerem Z lub symbolem wersji przedpremierowej może się znaleźć jeszcze oznaczenie meta danych buildu. Tworzy się je przez dodanie znaku + oraz zbioru oddzielonych kropkami identyfikatorów w formie znaków alfanumerycznych ASCII i myślników.

Wersjonowanie semantyczne jest proste, intuicyjne i łatwe do wdrożenia. Właśnie z tego sposobu oznaczania kolejnych wydań oprogramowania korzystamy w Ageno. Być może i Ty masz z nim do czynienia, w tej czy innej formie. Warto poznać porządkujące go zasady, aby w codziennej pracy już nigdy nie zastanawiać się, które z wydań powstającego oprogramowania jest aktualne.