# Versionierung von Software



## Guest (28. Mai 2008)

Die Versionierung einer Software kann man ja folgendermaßen aufbauen:

<Hauptversionsnummer>.<Nebenversionsnummer>.<Revisionsnummer>.<Buildnummer>

2.3.5.0041 

bedeutet z.B., dass es sich um die 2. Version eines Programms, in der 3. Nebenversion mit der 5. Fehlerkorrektur, Build 0041 handelt.

Mir ist nun nicht so klar, was mit der vierten Stelle 0041 (dem Build) gemeint ist. Hierzu ein paar Fragen.

1.)
Wann wird das BUILD nach oben gezählt? Immer dann, wenn der Code neu compiliert wird? Streng genommen müßte ja dann bei jedem Compiliervorgang von Eclipse das BUILD nach oben gezählt werden. Wenn ich Eclipse so eingestellt habe, dass immer dann wenn gespeichert wird auch compiliert wird, dann würde das BUILD ja ständig nach oben gezählt. Ist das so korrekt? 

2.)
Mal angenommen ich füge der Version 2.3.5.0041 eine neues features hinzu. Wird die Version dann auf 2.4.0.0 oder auf 2.4.0.0041 gesetzt. Wird der BUILD überhaupt zurückgesetzt oder wird dieser immer nur nach oben gezählt?


----------



## HLX (28. Mai 2008)

Mit dem Kompilieren des Codes hat das nichts zu tun. Du kannst deinen Code z.B. in Eclipse auch automatisch kompilieren lassen. Ein BUILD ist eine verwendbare Zusammenstellung deines Softwareproduktes, in deinem Fall mit der Version 2.3.5. Stellst du in diesem BUILD beim Testen noch Fehler fest, korrigierst du es und erstellst neues BUILD und inkrementierst die BUILD-Nummer. Auf BUILD-Ebene werden i.d.R. keine Features hinzugefügt sondern nur noch Korrekturen durchgeführt. Ein neues Feature geht bei dir in die 2.3.6.0001 oder 2.4.0.0001 (BUILD-Nummern werden nicht von der Vorgängerversion übernommen).


----------



## Guest (28. Mai 2008)

Laut wikipedia ist das aber anders. Da wird erklärt, dass das BUILD nie zurückgesetzt wird:



> * Eine Hauptversionsnummer (major release) indiziert meist äußerst signifikante Änderung am Programm – z. B. wenn   das Programm komplett neu geschrieben wurde (z. B. GIMP 1.x nach 2.x) oder sich bei Bibliotheken keine Schnittstellenkompatiblität aufrechterhalten lässt.
> 
> * Eine Nebenversionsnummer (minor release) bezeichnet meistens die funktionelle Erweiterung des Programms.
> 
> ...


----------



## tfa (28. Mai 2008)

Da steht "meist", "meistens", "in der Regel". Es gibt kein Gesetz, das die Versionierungsnummern vorschreibt. Das kann jedes Projekt halten wie es will - hauptsache es ist irgendwo beschrieben. In meinem Projekt gibt es z.B. überhaupt keine veröffentlichte Build-Nummer.


----------



## ms (28. Mai 2008)

Die Buildnummer hängt nicht direkt mit der Versionsnummer zusammen. Sie beschreibt den Buildvorgang selbst.
Die Versionsnummer dagegen beschreibt die implementierten Features oder gefixten Bugs.
Als Buildnummer kann auch ein Timestamp verwendet werden, damit man zwei Builds voneinander unterscheiden kann.
Die Versionsnummer wird eigentlich unabhängig vom Build vergeben. Zb wird festgelegt, dass in Version 2.4.0 diese und jene Features implementiert werden. Es könnte ein SVN-Branch für diese Version gezogen werden um nur dort die Features zu implementieren. Damit existiert diese Version schon bevor irgendwas compiliert wird.
Zugeordnet wird die Versionsnummer zu einem Build logischerweise nach dem Build zB. als Tag im CVS/SVN.
In meinem aktuellen Projekt gibt es auch keine Buildnummer.

ms


----------

