Das Erstellen von Richtlinien zum Speichern und Verwalten von Dateien setzt voraus, dass bekannt ist, wie die Anwendung strukturiert sein wird, wie die Funktionalität aufgeteilt wird und welche Dateien zusätzlich zum Quellcode verwaltet werden sollen. Deshalb sollte man sich genug Zeit für die Strukturierung der Anwendung nehmen. Auch die Abstimmung mit den einzelnen Entwicklern ist wichtig, um Speicherorte für den Quellcode und zusätzliche Dateien oder Ressourcen festzulegen.
Die Organisation von Dateien auf der Festplatte sollte keinesfalls erst nachträglich bedacht werden. Mangelhafte Planung großer Anwendungen führt dazu, dass Zeit damit vertan wird, Dateien während der Entwicklung zu verschieben und umzubenennen. Wenn eine große Zahl von Dateien im Spiel ist, können solche Operationen zudem die Integrität von Links innerhalb von LabVIEW-Anwendungen gefährden und so auch das Verhalten der ganzen Anwendung beeinträchtigen. Werden also entsprechende Vorgehensweisen so früh wie möglich festgelegt, kann das Risiko, das das Verschieben großer Datensätze zu einem späteren Zeitpunkt mit sich bringt, minimiert werden. Außerdem wird damit sichergestellt, dass Entwickler bestimmte Dateien leicht finden und stets wissen, wo neue Dateien abzulegen sind.
Viele Softwareentwickler wenden bereits solche Methoden und Systeme an, um die Datenablage effizient zu gestalten. Dafür kommen verschiedene Möglichkeiten in Frage. Die folgenden Praktiken werden häufig genutzt und haben sich auch für große Anwendungen bewährt. Die Ablage von Dateien in einem einzigen Stammverzeichnis garantiert, dass sie alle leicht zugänglich sind. Durch eine standardisierte Vergabe von Dateinamen wissen Anwender, wo sie bestehende Dateien finden und neue ablegen können. Oft werden auf der Festplatte Ordner genutzt, um Dateien zu gruppieren oder zu kategorisieren, so dass SubVIs von aufrufenden VIs getrennt werden. Umgekehrt erschweren allzu flache Verzeichnisstrukturen das Auffinden von Dateien oder Top-Level-VIs und sind bereits bei einer kleineren Anzahl von VIs nicht empfehlenswert. Die Kriterien, die meist für die Gruppierung solcher Dateien verwendet werden, sind eine Kombination aus Dateifunktionalität, Typ und hierarchischer Ebene in der Anwendung. Die Organisation auf der Festplatte sollte die Beziehung von Dateien und Programmcode in der Anwendung widerspiegeln.
Abbildung 1: Dieser Screenshot zeigt eine Beispielanwendung, die ohne den Projekt-Explorer aus LabVIEW auf der Festplatte angelegt wurde |
Abbildung 1 zeigt Konzepte, wie die Organisation aller Dateien in einem Stammverzeichnis und die Trennung von Top-Level- und SubVIs erfolgt und verschiedene Kriterien, nach denen Dateien einzelnen Ordnern zugeordnet werden.
Dynamisch geladene Dateien stellen eine zusätzliche Herausforderung dar. Da auf diese Dateien nicht statisch von aufrufenden VIs in der Anwendung verlinkt wird, können sie leicht vergessen werden, wenn der Speicherort gewechselt oder Pfade zu Dateien in irgendeiner Weise verändert werden. Dies fällt dann unter Umständen erst sehr viel später, nämlich bei der Ausführung der Anwendung auf.
Um die Schwierigkeiten zu minimieren, die entstehen, wenn man sicherstellen möchte, dass alle dynamischen Dateien stets am richtigen Ort liegen, können sie in einen separaten Ordner gruppiert und dann mit relativen Pfaden verlinkt werden. Muss die Anwendung verschoben oder verteilt werden, sind die Dateien dann auf jeden Fall vorhanden.
Teilen sich große Anwendungen Programmcode, muss beachtet werden, wo diese Dateien gespeichert sind und dass Änderungen andere aufrufende VIs irrtümlich beeinflussen könnten. Programmcode wird häufig wiederverwendet. Dies ist sinnvoll, weil man dadurch von bereits vollendeter Arbeit profitiert und die Entwicklung beschleunigt wird. So erfordern ähnliche Anwendungen unter Umständen die gleiche Funktionalität, oder verschiedene Zweige von Code beziehen sich auf denselben Satz gängiger VIs. Der Bezug auf den gleichen Programmcode erfordert oftmals, dass diese Dateien außerhalb des Stammverzeichnisses mindestens einer Anwendung abgelegt sind. Sollen allerdings Veränderungen an diesen gängigen VIs vorgenommen werden, ist es ratsam, für den Test und die spätere Integration lokale Kopien zu erstellen.
Darüber hinaus können Programme zur Quellcodeverwaltung genutzt werden, um mehrere Versionen von Software zu verfolgen und die Änderungen zu identifizieren, die zwischen mehreren Ausführungen erfolgen. Weitere Informationen über dieses Thema bietet das Whitepaper „Einsatz von LabVIEW mit Programmen zur Quellcodeverwaltung“.
Die richtige Organisation von Anwendungen auf der Festplatte ist von großer Bedeutung, denn nur so kann gewährleistet werden, dass eine Entwicklung mit zunehmender Größe und VI-Anzahl skaliert werden kann. Dies ist allerdings nur der erste Schritt in einem Softwareentwicklungsprozess. Darüber hinaus gibt es immer noch viele Herausforderungen, denen mit anspruchsvolleren Methoden und Werkzeugen, wie etwa dem LabVIEW-Projekt-Explorer, begegnet werden kann.
Der Projekt-Explorer wurde mit LabVIEW 8.0 erstmals eingeführt, um Entwicklern eine Ansicht der Dateien, die sie für eine Anwendung brauchen, auf Systemebene zu ermöglichen. Das Ziel des Projekt-Explorers besteht darin, Entwickler beim Auffinden und Organisieren von Dateien aus der Entwicklungsumgebung zu unterstützen und sie mit zusätzlicher Funktionalität auszustatten, welche die Verwaltung und Entwicklung großer LabVIEW-Anwendungen erleichtern. Seit der Veröffentlichung des Projekt-Explorers hat National Instruments diverse neue Funktionen integriert und so auch auf Kundenfeedback reagiert.
Abbildung 2: Dieses Projekt zeigt, wie die Anwendung aus Abbildung 1 im LabVIEW-Projekt-Explorer organisiert werden kann.
Mithilfe von LabVIEW-Projekten können LabVIEW- und andere Dateien in Gruppen geordnet, Build-Spezifikationen erstellt, Dateien heruntergeladen und auf andere Systeme übertragen werden. Beim Speichern eines LabVIEW-Projekts wird eine Projektdatei erstellt (.lvproj), die Referenzen auf Dateien auf der Festplatte, Variablen, Hyperlinks, Konfigurations-, Build- und Distributionsinformationen usw. enthält.
Der LabVIEW-Projekt-Explorer vervielfältigt oder kopiert Dateien nicht an neue Speicherorte auf der Festplatte. Stattdessen bietet er eine neue Methode für die Anzeige von Dateien auf Festplatte und stellt Shortcuts zu den Speicherorten der Dateien auf der Festplatte bereit. Der LabVIEW-Projekt-Explorer ermöglicht:
1Diese Themen werden in diesem Artikel nicht behandelt.
Hinweis: Einige Funktionen, die in diesem Artikle beschrieben werden, sind nur mit LabVIEW 8.5 oder einer höheren Version verfügbar. Eine Liste der neuen LabVIEW-Funktionen erhalten Sie in den LabVIEW Upgrade Notes oder auf unserer Webseite ni.com/labview/d/upgrade.
Im LabVIEW-Projekt gibt es zwei Registerkarten für die Ansicht von Dateien: die Objekt- und die Dateiansicht.
Abbildung 3: Die Registerkarte Dateien zeigt eine gefilterte Ansicht aller Objekte im Projekt, so wie sie auf der Festplatte abgelegt sind. Anwender können so Aktionen von Dateien wie etwa Kopieren und Umbenennen durchführen.
Die Standardansicht ist jedoch die Registerkarte Objekte, die eine Baumstruktur von Objekten zeigt, die zum LabVIEW-Projekt hinzugefügt wurden. Diese werden nach Hardwarezielsystem gruppiert. In dieser Ansicht lassen sich Ordner anlegen, um entweder die Organisation der Dateien anzupassen oder sie mit einem speziellen Ablageort auf der Festplatte zu synchronisieren. Unter der Registerkarte Objekte können Dateien nicht von der Festplatte gelöscht werden – so kann Programmcode auch nicht versehentlich gelöscht werden. Unter der Registerkarte Dateien können Objekte nur durch einen Klick mit der rechten Maustaste und der Auswahl von „Von Festplatte löschen“ entfernt werden.
Auf der Registerkarte Dateien ist zu sehen, wo sich die im Projekt verwendeten Dateien physikalisch auf der Festplatte befinden. Mit dieser Ansicht können dieselben Dateioperationen vorgenommen werden, die man normalerweise aus dem Systemdatei-Browser (z. B. Windows Explorer) durchführt, etwa Verschieben, Kopieren oder Löschen. Da LabVIEW Veränderungen erkennt, können aufrufende Dateien aktualisiert und Links beibehalten werden.
Die Hierarchie der Dateien im LabVIEW-Projekt-Explorer lässt sich benutzerdefiniert anpassen, ohne dass das Layout der Dateien auf der Festplatte beeinträchtigt wird. Jedoch ist im LabVIEW-Projekt eine Organisation empfehlenswert, welche die auf der Festplatte erstellte Hierarchie so genau wie möglich reflektiert.
Die Inhalte eines LabVIEW-Projekts können mit zwei Arten von Ordnern organisiert werden: virtuelle Ordner und Ordner mit Autofüllfunktion. Bei virtuellen Ordnern lässt sich die Organisation der Projektobjekte anpassen, ohne dass Veränderungen auf der Festplatte vorgenommen werden müssen.
Abbildung 4: Bei der Organisation von Dateien im LabVIEW-Projekt-Explorer können sich Anwender zwischen Ordnern mit Autofüllfunktion oder virtuellen Ordnern entscheiden.
Virtuelle Ordner sind ideal für Szenarien, in denen die Organisation von Dateien in LabVIEW verändert werden soll, ohne dass der Speicherort auf der Festplatte angetastet wird. Fügt man dem LabVIEW-Projekt-Explorer einen Ordner als virtuellen Ordner hinzu, wird er zum Zeitpunkt der Ergänzung von einer Momentaufnahme dargestellt. Wird danach etwas verändert oder werden neue Dateien hinzugefügt, erscheinen diese nicht im LabVIEW-Projekt. Jedoch kann man auch manuell Änderungen vornehmen, indem man neue Dateien ins LabVIEW-Projekt zieht oder den virtuellen vorübergehend in einen Ordner mit Autofüllfunktion umwandelt.
In virtuellen Ordnern lassen sich Dateien von zwei oder mehr unterschiedlichen Orten auf der Festplatte im LabVIEW-Projekt-Explorer gruppieren. Sie sind auch nützlich zum Filtern der im LabVIEW-Projekt-Explorer angezeigten Informationen, um festzustellen, ob Dateien mit anderen Objekten gruppiert sind, die gar nicht benötigt werden.
NI hat Ordner mit Autofüllfunktion mit LabVIEW 8.5 eingeführt, um die Inhalte von Ordnern auf Dateien automatisch anzuzeigen. Ordner mit Autofüllfunktion werden mit einem physisch vorhandenen Ordner synchronisiert, so dass sie Änderungen an diesem Speicherort außerhalb der LabVIEW-Entwicklungsumgebung jederzeit anzeigen. Um die im LabVIEW-Projekt-Explorer bestehende Hierarchie der Festplatte aufrecht zu erhalten, sollten, wann immer möglich, Ordner mit Autofüllfunktion verwendet werden. Diese sind allerdings nicht für die Verwaltung von Projektbibliotheken oder LabVIEW-Klassen bzw. zur Behebung zahlreicher Querverbindungen zu empfehlen.
Ordner mit Autofüllfunktion und virtuelle Ordner werden zum Verdeutlichen der Organisation und Struktur von Anwendungsdateien im LabVIEW-Projekt-Explorer verwendet. Ordner mit Autofüllfunktion sind hervorragend geeignet, um die Struktur auf der Festplatte zu bewahren, doch es gibt auch Situationen, für die sie sich nicht eignen oder für die sie erst angepasst werden müssen. In diesen Fällen kommen virtuelle Ordner zum Einsatz, um die Organisation von Dateien im LabVIEW-Projekt-Explorer individuell anzupassen.
LabVIEW lädt automatisch alle statisch verbundenen SubVIs in den Speicher, wenn das aufrufende VI geöffnet wird. Der Ordner Abhängigkeiten beinhaltet SubVIs, die von der Anwendung benötigt werden, aber nicht im Projekt vorhanden sind. Es werden nur Dateien aufgelistet, die vom Anwender selbst erstellt wurden. Dateien, die beispielsweise aus der National-Instruments-Bibliothek vi.lib stammen, werden nicht aufgeführt.
Das Hinzufügen von Dateien zu einem LabVIEW-Projekt informiert LabVIEW darüber, welche Dateien und Ressourcen für eine Anwendung zum Einsatz kommen sollen. Deshalb sollte man den Abschnitt Abhängigkeiten überprüfen, um sicherzugehen, dass alles, was nötig ist, zum LabVIEW-Projekt hinzugefügt wurde. Ist das nicht geschehen, werden übrige Dateien in diesem Abschnitt angezeigt.
Unter bestimmten Voraussetzungen kommt es vor, dass ein VI in einem LabVIEW-Projekt mit einem falschen SubVI verbunden ist oder mehrere VIs mit gleichem Namen in einem Projekt vorhanden sind und somit keine eindeutige Verbindung hergestellt werden kann. Man spricht in diesem Fall von Querverbindungen.
LabVIEW öffnet SubVIs mittels relativer Pfade, die im aufrufenden VI gespeichert sind. Findet LabVIEW ein SubVI nicht am erwarteten Ort, sucht es dieses anhand des Namens. Dann lädt LabVIEW das erste SubVI, das es mit dem gesuchten Namen findet, in den Speicher und informiert den Anwender über die modifizierten Links. Wenn aber mehrere VIs mit unterschiedlicher Funktionalität denselben Namen tragen (etwa initialize.vi), oder zwei Versionen desselben VIs an verschiedenen Orten liegen, kann es passieren, dass LabVIEW auf das falsche VI verlinkt.
Abbildung 5: High-Level-Darstellung von Querverbindungen
Querverbindungen treten besonders dann auf, wenn große Sätze von Dateien verschoben oder kopiert werden, um eine Codehierarchie an einem neuen Ort auf der Festplatte zu speichern. Ändern sich relative Pfade, treten falsche Links auf und die Anwendung verlinkt unter Umständen auf einen falschen Satz von Dateien.
LabVIEW kann nicht zwei verschiedene VIs mit demselben Namen in den Speicher laden. Das Öffnen von zwei Anwendungen, die auf verschiedene SubVIs mit demselben Namen verweisen bedeutet, dass eine Anwendung die falsche Abhängigkeit ausführt.
Mit verschiedenen Maßnahmen lassen sich Querverbindungen vermeiden.
Die Gewährleistung korrekter Verbindungen ist in allen Programmiersprachen eine Herausforderung. Ein sorgfältiges Vorgehen kann Querverbindungen weitgehend vermeiden. Das LabVIEW-Projekt bietet mehrere Funktionen, die Entwickler beim Auffinden und Beheben von Querverbindungen unterstützen.
Abbildung 6: LabVIEW warnt Anwender automatisch vor Konflikten.
Die vielleicht nützlichste Funktion im Zusammenhang mit Querverbindungen ist die, dass das LabVIEW-Projekt es merkt, wenn ein VI ein SubVI mit demselben Namen wie eine zum LabVIEW-Projekt hinzugefügte Datei aufruft. LabVIEW weist den Anwender mit einem gelben Warnschild auf dem Symbol der Datei auf einen Konflikt hin. Dann gibt es mehrere Methoden, weitere Informationen über die Dateien zu erhalten, um zu bestimmen, welche Version der Datei die korrekte ist.
Nachdem Querverbindungen identifiziert wurden, und bekannt ist, wie die richtigen Verbindungen wieder hergestellt werden, kann man Korrekturen manuell vornehmen oder sich von Werkzeugen im LabVIEW-Projekt-Explorer durch diesen Prozess leiten lassen.
Es gibt mehrere Methoden zum Beheben von Konflikten, nachdem sie von LabVIEW erkannt wurden.
Diese Empfehlungen können mit dem Dialogfeld „Konflikte beheben“ auch automatisiert werden. Dazu wählt man im Fenster des LabVIEW-Projekt-Explorers Projekt » Konflikte beheben. Alternativ öffnet auch ein Klick auf die Schaltfläche „Konflikte beheben“ oder ein Klick mit der rechten Maustaste auf ein Objekt mit Konflikt und die Auswahl von „Konflikte beheben“ aus dem Kontextmenü dieses Dialogfeld.
Abbildung 7: Das Dialogfeld „Konflikte beheben“ fordert den Anwender auf, das richtige SubVI auszuwählen.
Dieses Dialogfeld enthält folgende Komponenten:
Dieses Dialogfeld wird verwendet, um Konflikte zu beheben, indem die zueinander in Konflikt stehenden Objekte neu verbunden werden, so dass sie entsprechend Objekte mit dem korrekten Pfad aufrufen.
Folgt man den hier genannten Empfehlungen, können Richtlinien zur Entwicklung und Verwaltung von Anwendungen erstellt werden, welche die Erweiterung auf komplexe Anwendungen ermöglichen. Besonders wichtig ist es, die Organisation von Dateien auf der Festplatte sorgfältig zu planen und Kriterien für das Ordnen von Dateien festzulegen. Der LabVIEW-Projekt-Explorer bietet eine Ansicht der Anwendung auf Systemebene, so dass Dateien einfach zugänglich und navigierbar sind und Werkzeuge zum Erkennen von Querverbindungen optimal ausgenutzt werden.