Evolve-Climber
Source & Configuration
Management (SCM)
Ebenfalls als Rich Client Anwendung in die Smart Service Collaboration Platform (SSCP) integriert, werden mit dieser Applikation grundsätzlich alle klassischen Funktionen einer professionellen Versionshaltung also die Versionierung von binären und textuellen Dateien in verzeichnisstrukturierten Repositories bereitgestellt. Dabei folgt die SSCP grundsätzlich der Arbeitsweise einer verteilten Versionsverwaltung. Aber auch eine zentrale Versionshaltung mit nur einem Server ist konfigurierbar. Es wird dennoch die modernere verteilte Versionsverwaltung empfohlen, weil damit für die Nutzer eine performantere Arbeitsweise mit höherer Flexibilität und Verfügbarkeit ermöglicht wird. Man ist zudem unabhängig von nur einem einzigen zentralen Repository Server, da jeder Anwender immer eine lokale Replik des relevanten Repository inklusive der Historie herunterladen kann.
Neben der einfachen Versionierung in einem einzigen Project Repository können alle Artefakte auch in weiteren Untergruppen wie Team Repositories oder Build Repositories strukturiert werden. Dazu stellt die SSCP entsprechende Folder Repository, Package Repository, Branch Repository oder Reuse Repository Datenbankelemente zur Verfügung. Dies erlaubt teamrelevante, architekturorientierte und zeitlich bestimmende Projekt-strukturen abzubilden.
Zur Bearbeitung bekommt der Benutzer durch die Applikation von der SSCP eine lokale Arbeitskopie des notwendigen Teilrepositories zur Verfügung gestellt. In dieser kann er dann einzelne Artefakte nach belieben auschecken, ändern und wiederholt einchecken, ohne das die Quellen für andere Nutzer blockiert sind. Das steigert natürlich erheblich die Anwendungsperformance. Weiterhin kann durch eine geschickte Benutzerrechte-verwaltung sehr sicher innerhalb von Enterprise-Solutions gearbeitet werden.
Die SSCP bietet in Zusammenarbeit mit der SCM-Applikation ein neues und innovatives Versionierungssystem, welches natürlich kompatibel mit dem Publishing System der Elicit-Diver Applikation ist. Zur Versionierung erhält grundsätzlich jedes Artefakt eingebettet eine vierstufige Versionsnummer, einen Zeitstempel und einen eindeutigen nicht veränderbaren globalen Identifier. Wird ein Artefakt aus einem Repository ausgecheckt verändert und wieder eingecheckt, wird nach entsprechend konfigurierbaren Regeln eine neue höhere Versionsnummer generiert. Diese kann sich von Repository zu Repository durchaus unterscheiden. Der Identifier ändert sich aber nicht. Des weiteren wird ein interner „Fingerprint“ des versionierten Artefakts berechnet. Da die Berechnung immer gleich ist, sind Änderungen (z.B. Quelltextänderungen) in jedem Repository, unabhängig von der Versionsnummer, immer eindeutig identifizierbar. Treffen nun 2 unterschiedliche Artefakte beim Merge wieder aufeinander findet dieser nur statt, wenn der Identifier beider Artefakte gleich ist. Die neue Versionsnummer ergibt sich dann durch Versionsregeln konfigurierbar, ist aber immer höher als beide Versionen. Das Versionierungsprinzip und die mehrstufigen Repositories erlauben sehr komplexe Branches und dennoch wieder einen sicheren Merge. Der Merge unterschiedlicher Versionen erfolgt weitgehend automatisch. Eventuelle Konflikte können durch im Produkt enthaltene graphisch unterstützende Diff-Tools aufgelöst werden.
Das Herzstück der Anwendung bildet aber die Erweiterung der herausragenden objekt-basierten Versionierung, welche über die Grenze des abspeichernden Artefakts, der Datei, hinausgeht. Es werden nun Strukturen, Klassen oder Funktionen nicht mehr als Source-Text in einer Datei sondern direkt als Object Artifacts im Repository versioniert abgelegt. Dies erlaubt jetzt zum Beispiel das Sperren von Interfaceschnittstellen durch den Architekten, aber eine Freigabe der internen Implementierung von Klassen. Vor dem eigentlichen Kompilierungsprozess werden dynamisch die entsprechenden Artefakte zu Quelldateien konvertiert und dann dem Compiler übergeben.
Dieser Ansatz eröffnet ganz neue Möglichkeiten wie hohe Granularität der versionierten Objekte, genaueste Änderungshistorie und Reflektion der Softwarearchitektur im Objektbaum des Repositories. Es vereinfacht damit auch die oft schwierige Doppelsicht auf Dateien und Klassenstrukturen. Die Applikation unterstützt mit der objektorientierten Versionierung darüberhinaus das direkte Arbeiten mit domänenspezifischen syntaktischen Strukturen verschiedener Programmiersprachen. Für kundenspezifische Erweiterungen werden mit der Applikation eine API bzw. ein SDK zur Verfügung gestellt.
Alleinstellungsmerkmale von Evolve-SCM:
- Moderne und performante Rich Client Anwendung
als Ribbon GUI, realisiert mit der WPF - Interoperabilität zu Systemen wie
TFS, CVS, Git und Subversion (SVN) - Hohe Verfügbarkeit und Performance
durch verteilte Repositories - Graphisch unterstützte Objektmodellierung und
objektorientierte Versionierung für C#, C, C++ - Intelligentes Version Clustering und
Library Management durch die SSCP - Automatische Server-Server und Server-Client
Repository-Replikation konfigurierbar - Einsetzbar als Workdesk Applikation oder
Visual Studio Plugin - Einfache Erstellung von Konfigurationen durch
baumstrukturierte Versionierung - Definierbare Versionsnummernvergaberegeln mit
nur einer 4-stelligen Versionsnummer - Konsistentes Configuration Management im
Verbund mit Elicit-Diver und Emend-Jumper - Build-Variant Versionierung wird unterstützt