DEV Community

Mustafa_A
Mustafa_A

Posted on

Ein Vorschlag zur Nutzung von PassWEK (SemVer), JahrWEK (CalVer) und BezWEK (NameVer).

Bezeichnung von Weiterentwicklungen

Die Abkürzungen SemVer, CalVer und NameVer sind geläufiger für die drei Muster zur Bezeichnung von Weiterentwicklungen ( Versionen ). Es geht hier im Wesentlichen darum eine Entscheidungshilfe anzubieten, die einem hilft ein passendes Bezeichnungsmuster zu wählen, abhängig von der Rolle, welche das Software-Erzeugnis in einem Gesamt-System hat.

Software-Erzeugnisse

Folgendes soll eine Tafel sein. Ich weiß jedoch nicht wie man hier eine erstellt…
Daher hier der HTML-Code, damit könnt ihr euch ein Bild davon machen :-)

<table>
<tr>
  <th>Erzeugnis</th>
  <th>Begriffsklärung</th>
</tr>
<tr>
  <td>Bestandteil</td>
  <td>Teil einer ( natürlichen ) Einheit.<br />
Wichtig: Hat eine <i>interne</i> Schnittstelle.</td>
</tr>
<tr>
  <td>Bauteil</td>
  <td>Als ( komplexe ) Einheit, Modul zur Konstruktion eines technischen Gerätes, einer Maschine, eines Apparates o. Ä. gehöriges Teil.<br />
Wichtig: Hat eine <i>öffentliche</i> Schnittstelle.</td>
</tr>
<tr>
  <td>Einheit</td>
  <td>Das zu einem Ganzen Verbundene, Unteilbare
Wichtig: Es werden in diesem Sinne, <i>Bauteile</i> und <i>Bestandteile</i> verbunden. Anders gesagt eine Einheit besteht aus <i>Bauteilen</i> und <i>Bestandteilen</i>.</td>
</tr>
<tr>
  <td>System</td>
  <td>Herkunft := aus Einzelteilen zusammengefügtes und gegliedertes Ganzes.<br />
Wichtig: Für uns seien diese Einzelteile <i>Bestandteile</i>, <i>Bauteile</i> und <i>Einheiten</i>. Ein System bildet auch immer eine Einheit.</td>
</tr>
<tr>
  <td>Grundbau<br />
( Plattform )</td>
  <td>Grundbau := Teil eines Bauwerks, der in den Boden eingelassen ist oder ihm unmittelbar aufsitzt.
Plattform :=  Hardware oder Software, die den Rahmen für verschiedene Anwendungsprogramme o. Ä. Bildet.<br />
Wichtig: Besteht häufig u.a. aus <i>Einheiten</i>, sind also für gewöhnlich <i>Systeme</i>.</td>
</tr>
<tr>
  <td>Erweiterung</td>
  <td>( Rein sprachlich ) := Eine Sache die etw. in seinem Umfang, seiner Ausdehnung vergrößert, weiter macht.<br />
Wichtig: Hier wäre es für gewöhnlich der Leistungsumfang ( features ).</td>
</tr>
<tr>
  <td>Entwicklungszweig</td>
  <td>Kein Erzeugnis im eigentlichen Sinne…<br />
:= Von einem Entwicklungsstand aus gesehen, eine eigenständige Weiterentwicklung innerhalb eines Vorhabens.</td>
</tr>
</table>
Enter fullscreen mode Exit fullscreen mode

Kurzübersicht

<table>
<tr>
  <th>Bezeichnungsmuster</th>
  <th>Eignung</th>
</tr>
<tr>
  <td>PassWEK  ( SemVer )</td>
  <td>Bestandteile, Bauteile</td>
</tr>
<tr>
  <td>JahrWEK  ( CalVer )</td>
  <td>Systeme, Grundbauten</td>
</tr>
<tr>
  <td>BezWEK  ( NameVer )</td>
  <td>Einheiten,<br />
Erweiterungen,<br />
Entwicklungszweige</td>
</tr>
</table>
Enter fullscreen mode Exit fullscreen mode

PassWEK / BedWEK

BedWEK steht für bedeutungstragende Weiterentwicklungskennung. Die aus dem Englischen stammende Bezeichnung SemVer für semantic versioning ist geläufiger. Ein Beispiel wäre: bibbeispiel 1.12.4 ( libexample 1.12.4 ).

BedWEKen eignen sich um Aussagen über die Passbarkeit ( Kompatibilität ) von Bestandteilen, Bauteilen und ähnlichem zu treffen. Wichtig ist, dass das Software-Erzeugnis eine Schnittstelle anbietet welche regelmäßig von anderer Software oder von einem bestimmten Nutzerkreis verwendet wird.

Benennungsvorschlag

Als zusätzliche Bezeichnung, aufgrund der Funktionsweise, schlage ich Passbarkeitskennung bzw. Passbarkeitskennungsmuster vor – kurz PassWEK.

Wie PassWEK / BedWEK funktioniert

Die erste Stelle gibt eine Weiterentwicklungskennung für Schnittstellen an, die unpassbar ( inkompatibel ) zu anderen Weiterentwicklungen sind deren Kennungen sich an der ersten Stelle von einander unterscheiden. Die Weiterentwicklungen 1.x.y und 2.a.b sind also unpassbar zu einander. Die erste Stelle wird Hauptkennung genannt ( major version number ).

Die zweite Stelle kennzeichnet abwärtspassbare Weiterentwicklungen, sofern die erste Stelle gleich ist. Die Weiterentwicklung 1.2.x ist also abwärtspassbar zu 1.1.y. Die zweite Stelle wird Nebenkennung genannt ( minor version number ).

An der dritten Stelle werden Fehlerbehebungen festgehalten. Es gilt, dass die Abwärtspassbarkeit erhalten bleibt. Die dritte Stelle wird auch Berichtigungskennung genannt ( patch version number ).

Es kann noch Anhängsel an geben: 1.2.3-debug oder 1.3.5-nox.

Eine Sonderrolle hat hier die Hauptkennung „0“. Diese besagt, dass die öffentliche Schnittstelle sich in Entwicklung befindet und daher jegliche Veränderung an zweiter Stelle unpassbare Änderungen zu vorherigen Entwicklungen mit sich bringen kann.

JahrWEK

JahrWEK steht für jahresweiser-gegründete (1) Weiterentwicklungskennung. Die aus dem Englischen stammende Bezeichnung CalVer für calender versioning ist geläufiger. Ein Beispiel wäre: Ubuntu 23.04.

JahrWEKen eignen sich um Weiterentwicklungen von Software-Systemen zu Kennzeichnen, insbesondere wenn vorgesehen ist, dass nach einem bekannten Zeitplan eine Weiterentwicklung veröffentlicht wird.

Es ist dabei darauf zu achten, dass klar ist welcher Jahresweiser genutzt wird und wie die Kennung zusammengesetzt wird. Beispiel: Ubuntu 23.04 besteht aus den letzten zwei Stellen des Jahres des gregorianischen Jahresweisers und dem zugehörigen Monat – stets zweistellig angegeben.

BezWEK

BezWEK steht für bezeichnungs-gegründete Weiterentwicklungskennung. Die aus dem Englischen stammende Bezeichnung NameVer für name versioning ist geläufiger. Ein Beispiel wäre: Debian Sid.

BezWEKen eignen sich um Weiterentwicklungen von Einheiten eines Systems zu Kennzeichnen die keine oder öffentliche Schnittstelle haben, eine die gleichbleibend ist oder eine deren Veränderung nicht als wichtig eingestuft wird. Ein Beispiel für letzteres können Anwendungen für Endanwender mit graphischer Benutzeroberfläche sein, wobei dies auch nicht unbedingt ratsam ist. Zusätzlich lassen sich Entwicklungszweige kennzeichnen.

Abschließender Vergleich

<table>
<tr>
  <th></th>
  <th>PassWEK</th>
  <th>JahrWEK</th>
  <th>BezWEK</th>
</tr>
<tr>
  <td>Bestandteile,<br />
Bauteile</td>
  <td>Geeignet, da es im Besonderen für öffentliche Schnittstellen gedacht ist. Die Passbarkeit wird ausdrücklich vermittelt.</td>
  <td>Ungeeignet, da eine Veränderung in der Zeit keine Aussage darüber trifft, ob sich Bauteil A mit Bauteil B verwenden lässt.<br /><br />
Kann ich also bibbeispiel 23.04 mit bibmuster 1445.02. verwenden?</td>
  <td>Grundsätzlich ungeeignet, da willkürlich gewählte Namen ebenfalls keine Aussage über die Passbarkeit machen.<br /><br />
Man müsste also ein System in die Bezeichnung reinbringen, welches von der Zielgruppe verstanden würde. Warum nicht einfach PassWEK nutzen?(2)</td>
</tr>
<tr>
  <td>Systeme und<br /> Grundbauten</td>
  <td>Ungeeignet, da diese selbst keine öffentliche Schnittstelle anbieten. Dies tun die Bestandteile.(3)</td>
  <td>Geeignet, insbesondere wenn nach einem bekannten Zeitplan veröffentlicht wird.<br /><br />
Welche Weiterentwicklung ist aus dem Bauch heraus neuer?
445 oder 446<br />
23.04. oder 23.10.</td>
  <td>Teilweise geeignet. Es benötigt ein Bezeichnungsmuster um bspw. feststellen zu können, dass „Bookworm“ neuer ist als „Squeeze“.</td>
</tr>
<tr>
  <td>Einheiten und deren Erweiterungen</td>
  <td>Grundsätzlich nicht. Sollte eine Einheit Erweiterungsmöglichkeiten bieten ( „Plug-ins“ ), so bietet es sich an die Weiterentwicklungen der Schnittstelle getrennt zu Kennzeichnen  mittels PassWEK.</td>
  <td>Ähnlich wie bei Systemen. Werden diese Einheiten jedoch auch in Systemen genutzt, bzw. mit Ihnen ausgeliefert, so empfiehlt sich auch BezWEK.</td>
  <td>Geeignet insbesondere wenn Einheiten mit Systemen ausgeliefert werden und selbst eine nüchterne Bezeichnung tragen.<br /><br />
Bspw. Dateiverwaltung im Vergleich zu Dateiverwaltung Birkenholzregal. Bei Einheiten genügt es zu Wissen, dass der Name der neusten Weiterentwicklung sich unterscheidet von der eigenen.</td>
</tr>
<tr>
  <td>Entwicklungszweige</td>
  <td>Nein, da Entwicklungszweige als solche kein Produkt sind mit einer öffentlichen Schnittstelle. Klar werden in Projekten Entwicklungszweige mit PassWEKen gekennzeichnet, dies ist jedoch eher im Sinne von BezWEK zu verstehen, siehe den zugehörigen Vermerk.</td>
  <td>Sofern Entwicklungszweige jahresweiserabhängig erstellt werden ( mir fällt da gerade nichts ein ).</td>
  <td>Geeignet, weil dadurch ganz klar vermittelt werden kann wozu dieser Entwicklungszweig überhaupt erstellt wurde.</td>
</tr>
</table>
Enter fullscreen mode Exit fullscreen mode

Quellen

Begriffe

Der Zugriff auf die Begriffsquellen erfolgte am 09.09.2023.

(1) Jahresweiser ist Deutsch für Kalender.
(2) Zugegebener Maßen kann es sein, dass ein bestimmtes Bezeichnungsmuster einfach schöner klingt als PassWEK, oder eine tiefergehende Bedeutung vermitteln kann.
(3) Für Webdienste bspw. gilt, dass die serverseitige Schnittstelle eines Dienstes ein Bestandteil des Gesamtsystems ist. Der Schnittstellennutzer ( die Software ) ist ebenfalls ein Bestandteil des Systems.

Top comments (0)