Softwarekonfigurationsmanagement und LabVIEW

Überblick

Mit Softwarekonfigurationsmanagement sind die Werkzeuge und Verfahren gemeint, mit denen der Quellcode und die abhängigen Komponenten einer Anwendung verwaltet und gesteuert werden. Die Versionsverwaltung reicht von der Speicherung und Verwaltung von Ordnern und Dateien auf der Festplatte bis hin zu ausgeklügelten Werkzeugen für die Revisions- und Ressourcenverwaltung in einem großen Team. Unzureichende Disziplin und der Mangel an geeigneten Werkzeugen führt häufig zu Verzögerungen und Problemen bei der Anwendungsentwicklung, da ein Projekt dadurch Risiken ausgesetzt wird, die im Zusammenhang mit der manuellen Verwaltung und Verteilung von Projektabhängigkeiten stehen. In diesem Dokument wird auf bewährte Methoden und Werkzeuge für das Softwarekonfigurationsmanagement bei der Anwendungsentwicklung in LabVIEW eingegangen.

Inhalt

Die Ziele des Konfigurationsmanagement

Viele Entwickler haben bereits frustrierende Erfahrungen mit nicht verwalteten Umgebungen gemacht, in denen Änderungen von Mitarbeitern gegenseitig überschrieben werden oder Mitarbeiter nicht in der Lage sind, den Revisionsverlauf einzusehen. Die Verwaltung einer Vielzahl von Dateien oder mehrerer Entwickler stellt in jeder Umgebung eine Herausforderung dar; daher ist man bei großen Entwicklungsprojekten auf Werkzeuge zur Konfigurationsverwaltung angewiesen, um die folgenden Ziele zu erreichen:

  1. Zugriff auf ein zentralisiertes Versionsverwaltungssystem bereitstellen
  2. Verwaltung und Versionsverlauf für mehrere Versionen derselben Anwendungen
  3. Verwalten mehrerer Entwickler
  4. Zeitpunkt und Auswirkungen von Änderungen erkennen
  5. Erkennen und Lösung widersprüchlicher Änderungen
  6. Verteilung und Bereitstellung der neuesten Codeversionen
  7. Sicherung und Beibehaltung des Zugriffs auf ältere Codeversionen
  8. Verwalten und Verteilen von Bibliotheken zur Wiederverwendung

Die Auswahl der Werkzeuge und Methoden hängt größtenteils davon ab, welche Bedeutung die oben genannten Ziele für ein bestimmtes Projekt oder Team haben und inwieweit diese erreicht werden müssen.  Die Grundlage für ein effektives Konfigurationsmanagement ist eine gut organisierte Anwendungshierarchie.  Weitere Informationen zur Organisation von Dateien und Ordnern in einer LabVIEW-Anwendung finden Sie unter Bewährte Methoden zur Verwaltung von NI-LabVIEW-Anwendungen mit dem Projekt-Explorer.

Es ist wichtig zu verstehen, dass selbst einfache Anwendungsentwicklungen mit einem kleinen Entwicklungsteam von anspruchsvolleren Tools für die Dateiverwaltung und die Revisionsverwaltung profitieren können.  Aus diesem Grund wird die Versionsverwaltung bei fast allen Entwicklungsprojekten empfohlen.

Versionsverwaltung – Überblick

Die Versionsverwaltung ist unabhängig von der Komplexität oder der Teamgröße für jedes Projekt wichtig. Es gibt eine Reihe von Werkzeugen zur Versionsverwaltung von verschiedenen Herstellern, die alle für die Versionsverwaltung, Speicherung und Verwaltung von LabVIEW-Dateien verwendet werden können. Die verfügbaren Tools reichen von kostenlosen und benutzerfreundlichen Lösungen wie Subversion bis hin zu unternehmensweiten Lifecycle-Management-Lösungen wie Perforce und Microsoft Team Foundation Server.

LabVIEW und die Versionsverwaltung lassen sich auf verschiedene Weise miteinander verknüpfen. Trotz des binären Dateiformats eines VI können und sollten für VIs und andere LabVIEW-Dateitypen die gleichen Methoden eingesetzt werden, die auch in anderen Umgebungen zur Anwendung kommen. Dies setzt jedoch möglicherweise eine benutzerdefinierte Konfiguration Ihres Clients für die Versionsverwaltung voraus.

In Abbildung 1 zeigt ein Modell zum Ein- und Auschecken für die Versionsverwaltung.

Abbildung 1 veranschaulicht, wie die Versionsverwaltung den Entwicklungsprozess bei teambasierten Projekten verbessert.  Anstatt Programmcode einfach nur zu kopieren, nutzen Entwickler jetzt die Versionsverwaltung, um diesen zu überprüfen.  Dadurch erhält der Entwickler die Möglichkeit, den SCC-Provider über eine beabsichtigte Quellcodeänderung zu informieren. Dadurch können andere Entwickler leichter erkennen, wann Dateien aktualisiert wurden und leicht die neueste Codeversion aus dem Versionsverwaltungssystem abrufen.

Das Verhalten und die Einschränkungen der SCC-Schnittstelle liegen im Ermessen des jeweiligen Administrators.  Einige entscheiden sich zum Beispiel dafür, den Programmcode zu sperren, wenn jemand angegeben hat, dass er ihn ändern möchte.  Andere könnten wiederum mehreren Benutzern ein gleichzeitiges Auschecken gestatten. Wenn Änderungen, die von Entwicklern am gleichen Codefragment vorgenommen wurden, miteinander kombiniert werden müssen, kann SCC beim Zusammenführen helfen, indem beide Dateikopien im Versionsverwaltungssystem verfügbar bleiben.  Werkzeuge zur automatisierten Zusammenführung können auch zur Lösung dieser Art von Konflikten bei VIs herangezogen werden.

Integrierte Versionsverwaltung mit LabVIEW

Das LabVIEW Professional Development System ist eine SCC-fähige Umgebung von Microsoft, mit der die Integration mit den gängigsten Versionsverwaltungswerkzeugen über eine Standard-API möglich ist. Hier erhalten Sie eine vollständige Liste der unterstützten Drittprovidern zur Versionsverwaltung

Von all den mit LabVIEW getesteten Drittanbieterprodukten empfiehlt NI für die Arbeit mit Versionsverwaltungssystemen Perforce oder Subversion. 

Perforce unterstützt die Microsoft-API und kann auch über einen benutzerdefinierten Kommandozeilenprovider, der in der Professional-Version von LabVIEW enthalten ist, aus LabVIEW heraus integriert werden.  Die Integration von Perforce aus LabVIEW heraus bietet im Vergleich zur Standard-API mehrere Vorteile, da sie die Nutzung erweiterter Funktionen ermöglicht. 

Subversion ist eine beliebte Open-Source-Lösung, die standardmäßig keine Unterstützung für die Microsoft SCC-API bietet.  Diese kann jedoch über den Tortoise-Client so konfiguriert werden, dass die LabVIEW-Umgebung verwendet wird, um Werkzeuge zur grafischen Unterscheidung und Zusammenführung aufzurufen, wofür einige grundlegende Einstellungen erforderlich sind. Darüber hinaus stehen auch eine Reihe von Drittanbieterprodukten zur Verfügung, die bei dieser Integration helfen:

Für die Integration von LabVIEW und einem Werkzeug zur Versionsverwaltung gibt es grundsätzlich zwei Ansätze: Entweder kann die SCC-Funktion mit LabVIEW aus der Umgebung heraus aufgerufen oder das SCC-Werkzeug für Operationen wie der Unterscheidung und Zusammenführung in LabVIEW aufgerufen werden. 

Konfiguration von LabVIEW für den Aufruf der Microsoft SCC-API

Sobald ihr bevorzugter Versionsverwaltungsprovider installiert ist, können Sie LabVIEW so konfigurieren, dass Versionsverwaltungsfunktionen für Entwickler aus der Entwicklungsumgebung heraus genutzt werden können, sofern diese die Microsoft-API unterstützt. Mit dieser Integration sollen Entwickler allgemeine Aufgaben wie das Ein- und Auschecken von Dateien durchführen und den aktuellen Dateistatus anzeigen können, ohne einen separaten Client starten oder die LabVIEW-Entwicklungsumgebung verlassen zu müssen. 

Einige Versionsverwaltungsprovider bieten möglicherweise proprietäre oder erweiterte Funktionen an, für deren Nutzung Entwickler weiterhin in den Client gehen müssen; in den meisten Fällen sollten sie jedoch in der Lage sein, diese Vorgänge von LabVIEW aus durchzuführen.

Die Integration kann über das Menü Werkzeuge > Versionsverwaltung konfiguriert werden. Diese Funktion steht nur im LabVIEW Professional Development System zur Verfügung. Jeder auf Ihrem Computer installierter und von LabVIEW unterstützter Versionsverwaltungsprovider füllt das Optionsdialogfeld automatisch aus.

In Abbildung 2 ist dargestellt, an welcher Stelle Benutzer die Integration der Versionsverwaltung von LabVIEW aus aktivieren können.

Die Versionsverwaltung kann zur Verwaltung aller Ressourcen in Ihrem Projekt-Explorer verwendet werden, die eine entsprechende Datei auf der Festplatte enthalten. Dazu gehören VIs, Dokumentation, Bilder und die Projektdatei. Spezifikationen werden häufig in der Versionsverwaltung gespeichert, sodass Entwickler Änderungen an der Dokumentation nachverfolgen und die Revisionshistorie einsehen können. Dies kann insbesondere für zertifizierte Entwicklungsmethoden wichtig sein, bei denen Entwickler oft nachweisen müssen, dass Änderungen an den Spezifikationen durch den Programmcode Rechnung getragen wurde. Mehr über bewährte Methoden des Anforderungsmanagements erfahren.

Wenn die Versionsverwaltung in einem bestehenden LabVIEW-Projekt konfiguriert ist, wird der Benutzer beim Hinzufügen eines zuvor gespeicherten VI zum Projekt aufgefordert, die neue Datei zur Versionsverwaltung hinzuzufügen. Diese Aufforderung wird nur bei vorhandenen Dateien angezeigt. Neue VIs verfügen bis zu ihrer Speicherung über keine entsprechende Datei auf der Festplatte; sie können daher nicht in die Versionsverwaltung aufgenommen werden. Durch das Hinzufügen von Dateien zu einem Projekt während der Entwicklung werden neue Verknüpfungen eingefügt und Änderungen an der Projektdatei vorgenommen, die sorgfältig verwaltet werden müssen. Darauf wird im nächsten Abschnitt genauer eingegangen.

Verwaltung der Projektdatei in der Versionsverwaltung (Source Code Control)

Es wird empfohlen, die Projektdatei oder * .lvproj-Datei einer Anwendung im Versionsverwaltungssystem zu speichern. Diese Datei enthält Links zu den physikalischen Ressourcen im Projekt-Explorer mit relativen Pfaden zum Speicherort der Dateien, zu den projektspezifischen Einstellungen und zu virtuellen Elementen wie z. B. den Bauvorschriften. Es ist wichtig, dass allen Entwicklern die neueste Codeversion der *.lvproj-Datei zur Verfügung steht, um sicherzustellen, dass sie die neuesten Abhängigkeiten und Ressourcen nutzen.

Durch Hinzufügen oder Umbenennen von Dateien in einem Projekt wird der Inhalt der * .lvproj-Datei geändert. Dazu muss sie ausgecheckt und eine neue Revision an den SCC-Provider gesendet werden. Da diese Änderungen alle Entwickler betreffen, die die *.lvproj-Datei verwenden, wird von Änderungen während der Entwicklung abgeraten. Falls Änderungen vorgenommen werden müssen, sollten diese jeweils nur von einem Benutzer vorgenommen werden, und alle anderen Entwickler sollten die letzte Revision dieser Datei erhalten, sobald die Änderungen vollständig durchgeführt wurden. Wenn dies nicht möglich ist, stehen jedoch Alternativen zur Verfügung.

Im Idealfall wird das Framework für die Anwendung vor der Anwendungsentwicklung festgelegt und es sind bereits Platzhalter für den gesamten zukünftigen Programmcode und die Funktionen vorhanden. Manchmal sind jedoch Änderungen notwendig, die Änderungen am Framework und damit am Inhalt der *.lvproj-Datei erfordern. Diese Änderungen können sich unter Umständen auf die Verknüpfungen in der gesamten Anwendung auswirken und sollten nicht auf die leichte Schulter genommen werden. Die bewährte Methode besteht darin, diese Änderungen offline und außerhalb der Entwicklung vorzunehmen – alle Dateien sollten im Depot eingecheckt und gesperrt werden, um ein Auschecken zu verhindern. Zudem ist es wichtig, sicherzustellen, dass neuer Programmcode durch Spezifikationen abgedeckt ist, in denen die Gründe für das Hinzufügen der Dateien angegeben sind.

Alternativ könnten sich viele Entwickler dafür entscheiden, eine eigene Kopie der .lvproj-Datei beizubehalten.  Dies ist im allgemeinen nur dann zu empfehlen, wenn die Anwendung in separate, in sich geschlossene Abschnitte unterteilt werden kann. Projektbibliotheken (.lvlib) können auch verwendet werden, um eine Anwendung im Rahmen von getrennten Komponenten zu organisieren.

Werkzeuge zur grafische Unterscheidung und Zusammenführung

Aufgrund des binären Charakters des Quellcodes von VIs müssen spezielle Werkzeuge zum Vergleichen und Zusammenführen verwendet werden.  Diese Werkzeuge können aus der Entwicklungsumgebung heraus oder aus der Kommandozeile heraus aufgerufen werden, d. h., sie können automatisch aus den Dienstprogrammen der Versionsverwaltung heraus aufgerufen werden. 

In Abbildung 3 ist das Werkzeug zum grafischen Vergleichen dargestellt, mit dem Entwickler alle Änderungen, die zwischen zwei beliebigen Doppelkopien einer Datei vorgenommen wurden, einsehen können.

Wenn die Integration innerhalb der Umgebung aktiviert ist, kann „Unterschiede anzeigen“ aus dem Kontextmenü im Projekt-Explorer ausgewählt werden. Viele möchten diese Funktion jedoch eventuell lieber über den Client der Versionsverwaltung aufrufen.

Weitere Informationen

Konfigurieren der Versionsverwaltung für die Kommandozeilenintegration mit LVCompare.exe

Konfigurieren der Versionsverwaltung für die Kommandozeilenintegration mit LVMerge.exe

Konfigurieren der grafischen Unterscheidung für die Verwendung mit TortoiseSVN

Verwalten von Bibliotheken zu Wiederverwendung

Die Wiederverwendung von Programmcode in mehreren Projekten und in verschiedenen Codeversionen einer Anwendung kann durch Methoden unterstützt werden, mit denen die unabhängigen Entwicklungszyklen der Bibliotheken zur Wiederverwendung verwaltet werden können sowie die Zyklen der Anwendungen, in denen sie eingesetzt werden. Es ist von Vorteil, diese Bibliotheken von den Projekten, in denen sie eingesetzt werden, abkoppeln zu können, sodass sie leicht unabhängig verwaltet und entwickelt werden können.  Es kann ebenfalls wichtig sein, sicherzustellen, dass Upgrade- und Downgrade-Möglichkeiten für diese Bibliotheken bestehen, wenn mehrere Codeversionen einer Anwendung gepflegt werden.  Dies kommt besonders dann zum Tragen, wenn Änderungen an diesen Bibliotheken auf mehrere Kopien einer Anwendung angewendet werden müssen.

LabVIEW-Projektbibliotheken

Durch LabVIEW-Projektbibliotheken ist es möglich, große Teile einer Anwendung einzukapseln.  Eine Projektbibliotheksdatei (.lvlib) enthält Verweise auf eine Reihe von Dateien, bietet dadurch einen Namensraum und kann den Zugriffsbereich definieren.  Über den Namensraum wird der Name der Dateien durch den Namen der Projektbibliothek gekennzeichnet, wodurch Konflikte verhindert werden, die durch den Aufruf von gleichnamigen Abhängigkeiten entstehen (wie etwa bei mehreren Gerätetreibern, die sich alle eine Funktion namens initialize.vi teilen).  Eine Projektbibliothek kann auch verwendet werden, um den direkten Zugriff auf private Funktionen zu unterbinden und so die Verwendung der definierten API zu erzwingen.  Projektbibliotheken können in eine komprimierte Projektbibliothek (.lvlibp) integriert werden. Dabei handelt es sich um eine Einzeldatei, die alle erforderlichen Abhängigkeiten in einem nicht editierbaren, versionsspezifischen Format enthält.  

Gemeinsame Nutzung von Programmcode mit der LabVIEW-Projektbibliothek

VI Package Manager

Für die Verteilung und den Einsatz von Bibliotheken zu Wiederverwendung in LabVIEW wird der VI Package Manager (VIPM) empfohlen.  Eine Auswahl von VIs, Tools und/oder Projektbibliotheken kann in eine einzige Datei, ein so genanntes VI-Paket, integriert werden, das dann aus der Umgebung des VI Package Managers heraus installiert, deinstalliert und in der jeweiligen Versionen verwaltet werden kann. Die Paketnutzer können leicht erkennen, welche Codeversionen der Bibliotheken installiert und in ihren installierten Kopien von LabVIEW verfügbar sind. Der Installationsprozess wird auch dank der Fähigkeit von VIPM vereinfacht, die Kompatibilität von Paketen zu erkennen und festzustellen, ob alle erforderlichen Abhängigkeiten installiert und auf dem System verfügbar sind oder nicht.  

Abbildung 4 veranschaulicht, dass ein VIPM-Paket Abhängigkeiten für eine API einkapseln und einfach Paletten- und/oder Werkzeugmenüeinträge einrichten kann.

Professional- und Enterprise-Versionen von VIPM bieten erweiterte Funktionen für das Konfigurationsmanagement. VIPM Professional kann LabVIEW-Projektdateien scannen, um zu ermitteln, welche zur wiederverwendbaren Bibliotheken derzeit verwendet werden. Diese können dann in einer Konfigurationsdatei gespeichert werden, sodass die Konfiguration leicht reproduziert werden kann.  Mit der Enterprise-Version können private, interne Speicherorte für die Verteilung und den Austausch von Paketen in einem großen internen Netzwerk erstellt und verwaltet werden.

Einführung in den VI Package Manager

Integration des Capability Maturity Model in LabVIEW

Das Capability Maturity Model, bekannt als CMM oder CMMI, gibt bewährte Methoden für die Software-Entwicklung und das Softwarekonfigurationsmanagement vor. Das CMM setzt einen Rahmen für die kontinuierliche Verbesserung und Iteration von Entwicklungsmethoden und erkennt und identifiziert fünf Reifegrade dieser Prozesse. CMMI wird vor allem in großen Unternehmen als Metrik verwendet, um die Stringenz der Entwicklungsmethoden zu ermitteln und die Gesamtentwicklungszeit und die Anzahl der Fehler in einem Projekt zu verringern.

Mehr über CMMI und andere Standards können Sie unter Verwendung von Softwarequalitätsstandards nachlesen.

Häufig gestellte Fragen (FAQs)

1. Warum wurde die integrierte Versionsverwaltung aus LabVIEW entfernt?

NI ermöglicht die Integration mit Drittprovidern zur Versionsverwaltung, damit Entwickler bei der Konfigurationsverwaltung und Änderungskontrolle die Vorteile von Anbietern nutzen können, die dem Industriestandard entsprechen.

2. Bietet LabVIEW integrierte Werkzeuge zur Versionsverwaltung, für die keine Drittanbietersoftware erforderlich ist?

Im Gegensatz zu früheren LabVIEW-Versionen enthält LabVIEW 8.x keine integrierten Werkzeuge zur Versionsverwaltung. Es wurden jedoch zahlreiche Optionen von Drittanbietern mit LabVIEW 8.x getestet, darunter einige kostenlose Open-Source-Optionen wie Subversion und CVS.

3. Welche LabView-Version lässt sich mit Versionsverwaltungssoftware von Drittanbietern integrieren?

Das LabVIEW Professional Development System (PDS) bietet die Möglichkeit, Versionsverwaltungssoftware von Drittanbietern zu integrieren.

4. Gibt es in LabView eine „Fusions“-Funktion zur Lösung von Konflikten zwischen verschiedenen Codeversionen desselben VI?

Ja. Es gibt auch eine grafische Vergleichsmöglichkeit

5. Welche Optionen der Versionsverwaltung habe ich, wenn ich ein Linux- oder Mac OS verwende?

Wenn Sie LabVIEW unter Linux oder Mac verwenden, müssen Sie Perforce als Versionsverwaltungsprovider verwenden, um die Versionsverwaltung über die LabVIEW-Umgebung nutzen zu können. LabVIEW kann jedoch mit jedem Versionsverwaltungsprovider verwendet werden, indem die Versionsverwaltungsfunktionen einfach über den Provider selbst aufgerufen werden.