Einschätzung der Codekomplexität in LabVIEW

Überblick

Dieser Artikel ist Teil einer Serie über Software-Engineering-Praktiken und -Tools für die Entwicklung großer Anwendungen in LabVIEW.

Klicken Sie hier, um die Liste anderer Artikel anzuzeigen



In diesem Dokument werden Metriken zur Codekomplexität für die grafische Entwicklungsumgebung in NI LabVIEW beschrieben. Metriken zur Codekomplexität helfen dabei, den Umfang eines Softwareentwicklungsprojekts abzuschätzen. Die Themen umfassen eine empfohlene LabVIEW-Metrik zur Codekomplexität, Informationen darüber, wie diese Metrik in eine traditionellere Metrik zur Codekomplexität übersetzt werden kann, die bei befehlsorientierten Sprachen verwendet wird, und Informationen darüber, wie NI seine Empfehlungen hergeleitet hat.

Inhalt

Übersicht

Eine der Hauptaufgaben der Projektplanung besteht darin, abzuschätzen, wie lange ein Projekt dauert, wie viele Entwickler erforderlich sind und wie viel Geld das Projekt kosten wird. Eine genaue Schätzung verringert die Wahrscheinlichkeit, dass das Projekt hinter dem Zeitplan zurückbleibt, das Budget überschreitet und die vom Endnutzer festgelegten Anforderungen nicht erfüllt. Genaue Schätzungen sind oft schwierig aufgrund der Unsicherheit, die zu Beginn eines Projekts besteht. Für eine genauere Schätzung werden häufig Softwaremetriken verwendet, die als Metriken zur Codekomplexität bezeichnet werden, um die Größe des Projekts auszudrücken und zu berechnen, wie lange dessen Fertigstellung dauert.

Wenn Sie eine Metrik zur Codekomplexität nur benötigen, um Ihre Fähigkeit zu verbessern, Ihre LabVIEW-Projekte termingerecht und innerhalb des Budgets liefern zu können, können Sie die LabVIEW-Knotenanzahl als Softwaremetrik nutzen. Weitere Informationen zur Knotenanzahl und wie sie zur Schätzung der Codekomplexität verwendet werden kann, finden Sie in den Abschnitten Metriken zur Codekomplexität in LabVIEW und Genauere Schätzungen für LabVIEW.

Wenn Sie versuchen, die LabVIEW-Entwicklung in eine Projektschätzung zu integrieren, die eine traditionellere Metrik zur Codekomplexität erfordert, hat NI eine Beziehung von etwa 1:1 zwischen LabVIEW-Knoten und Quellcodezeilen (SLOC) ermittelt. Weitere Informationen zu SLOC und wie NI diesen Zusammenhang herleitet, finden Sie in den Abschnitten Traditionelle, größenbasierte Metriken zur Codekomplexität und Umwandlung von LabVIEW-Knoten in SLOC.

Metriken zur Codekomplexität in LabVIEW


Das im LabVIEW Professional Development System (PDS) enthaltene Tool VI-Metrik bietet Messungen für LabVIEW-Code. Das VI-Metrik-Tool kann die Anzahl der LabVIEW-Knoten zählen, die in VIs oder VI-Hierarchien verwendet werden. Ein Knoten ist beinahe jedes Objekt im Blockdiagramm, einschließlich Funktionen, VIs und Strukturen, wie z. B. Schleifen und Sequenzen, mit Ausnahme von Beschriftungen und Grafiken. Knoten entsprechen Anweisungen, Operatoren, Funktionen und Unterprogrammen in befehlsorientierten Programmiersprachen. Wie viele traditionelle Softwaremetriken, die auf befehlsorientierte Programmiersprachen angewendet werden, ist die Knotenanzahl eine größenbasierte Metrik, mit deren Hilfe die Komplexität der Software abgeschätzt werden kann.

In LabVIEW PDS kann das VI-Metrik-Tool über Tools » Für Fortgeschrittene » VI-Metrik... gestartet werden. Das VI-Metrik-Tool liefert auch andere Informationen, wie die Anzahl der globalen und lokalen Lese- und Schreibvorgänge sowie die Anzahl an Diagrammen. Abbildung 1 zeigt ein VI-Metrik-Fenster für ein VI mit dem Namen „Memory Monitor“. In diesem Beispiel zeigt VI-Metrik die Gesamtanzahl der Knoten in der gesamten VI-Hierarchie sowie die Anzahl der Knoten in jedem einzelnen VI an.


Abbildung 1: Im Fenster VI-Metrik werden verschiedene Statistiken angezeigt, z. B. die Verwendung von Knoten.

Genauere Schätzungen für LabVIEW

Wenn Sie die Genauigkeit und Zuverlässigkeit Ihrer Schätzungen der Länge und Anforderungen für Ihre LabVIEW-Projekte verbessern, Ihre komplexen Metriken dazu aber nicht in ein befehlsorientiertes Äquivalent umwandeln möchten, können Sie einfach eine repräsentative LabVIEW-Metrik wählen. Der LabVIEW-Knoten ist die von NI empfohlene Softwaremetrik.

Die Wahl einer LabVIEW-Metrik ist jedoch nur der erste Schritt zur Verbesserung der Abschätzung von LabVIEW-Projekten. Damit diese Herangehensweise funktioniert, müssen Sie ein Repository mit Informationen zu aktuellen und früheren Projekten erstellen. Anhand dieser historischen Informationen können Sie berechnen, wie lange die Entwicklung einzelner Komponenten Ihrer vorhandenen Systeme gedauert hat, und diese Informationen mit der Anzahl der Knoten in diesen Komponenten in Verbindung bringen. Bevor Sie jedoch die Anzahl der für ein neues Projekt benötigten Knoten abschätzen können, sollten Sie zunächst einige Dinge erledigen.

  1. Teilen Sie ein neues Projekt in Unterprojekte auf, die Sie mit Aufgaben, die Sie in der Vergangenheit bearbeitet haben, vergleichen können. Sobald Sie das Projekt auf Unterprojekte reduziert haben, ist es einfacher, die Zeit für jedes Unterprojekt abzuschätzen.
  2. Fügen Sie Angaben zum Erfahrungsstand der Programmierer hinzu, wenn Sie abschätzen, wie lange die Fertigstellung eines Unterprojekts dauern wird. Obwohl LabVIEW ein sehr produktives Entwicklungstool ist, beeinflusst das Erfahrungsniveau die Produktivität und Effizienz des Programmcodes.
  3. Setzen Sie eine Richtlinie für einheitlichen Stil für Ihren LabVIEW-Code durch, wann immer möglich. Die Anwendung einer größenbasierten Komplexitätsmetrik wie der Knotenanzahl kann problematisch werden, wenn verschiedene Entwickler oder Gruppen unterschiedliche Entwicklungsansätze verwenden.
  4. Überprüfen Sie Ihren Programmcode, um die Effizienz zu optimieren und ein robustes Design zu fördern. Nicht jeder Code wird mit der gleichen Qualität erstellt und oft können zwei VIs dieselbe Aufgabe ausführen, auch wenn eines viel weniger Knoten enthält als das andere.

Traditionelle, größenbasierte Metriken zur Codekomplexität

Bei befehlsorientierten Programmiersprachen ist eine beliebte Metrik zur Codekomplexität die Anzahl der Quellcodezeilen (SLOC). SLOC wird verwendet, um die Größe des Programmcodes zu beschreiben. Damit lassen sich die Fertigstellung und Kosten des Projekts berechnen sowie die Produktivität nach Fertigstellung der Software messen. Ein Grund für die Beliebtheit von SLOC ist, dass sie relativ einfach zu berechnen ist. In C wird SLOC in der Regel als jede Codezeile definiert, die mit einem Semikolon endet (d. h. eine vom Menschen geschriebene Codezeile, die kein Kommentar und keine Leerzeile ist). Viele Anbieter verkaufen Tools, die SLOC für eine beliebige Quelldatei berechnen. Da Programmierpraktiken in der Regel innerhalb eines Unternehmens standardisiert sind, erstellen Unternehmen, die SLOC verwenden, in der Regel eine Datenbank mit Informationen zu Projekten, um ihre Schätzungen zu verbessern.

Umwandlung von LabVIEW-Knoten in SLOC


Die grafische Programmierung stellt natürlich für alle, die mit SLOC vertraut sind, eine Herausforderung bei der Projektabschätzung dar. Eine vergleichbare LabVIEW-Metrik zur Codekomplexität, wie z. B. die Anzahl der Knoten, muss in SLOC übersetzt werden, damit die LabVIEW-Entwicklung in die Projektabschätzung vieler Unternehmen integriert werden kann.

Zwei aktuelle Softwareentwicklungsprojekte von NI haben die Entwicklung gleichwertiger Software in LabVIEW und C erfordert. Das erste Projekt war die Entwicklung der NI-DAQmx-APIs für LabVIEW und LabWindows/CVI, der ANSI-C-Entwicklungsumgebung von NI. Im zweiten Projekt hat NI die Bedienoberflächen von LabVIEW und LabWindows/CVI für die Testmanagementsoftware NI TestStand überarbeitet. Nach Abschluss der beiden Projekte hat NI die Anzahl der verwendeten LabVIEW-Knoten mit der entsprechenden SLOC in C verglichen und festgestellt, dass ungefähr eine 1:1-Beziehung zwischen LabVIEW-Knoten und SLOC bestand.

Beachten Sie jedoch, dass jede Umwandlung einer LabVIEW-Metrik in SLOC ungenau ist, da größenbasierte Metriken zur Codekomplexität von der verwendeten Programmiersprache abhängig sind. So können z. B. Anweisungen in einer höheren Programmiersprache wie C mehr Funktionen bieten als Anweisungen in einer niedrigeren Programmiersprache wie einer Assembler-Sprache. Die LabVIEW-Entwickler verfügen außerdem über unterschiedliche Erfahrungsstufen und Programmierstile, die sich auf die Entwicklung einer Anwendung auswirken können. LabVIEW ist in der Regel produktiver als andere Entwicklungsumgebungen, wodurch jede Korrelation zwischen LabVIEW-Knoten und SLOC nur eine Annäherung darstellt.

Alternative SLOC-Konvertierung


Wenn Sie Bedenken haben, dass die für die Projektabschätzung Verantwortlichen in Ihrem Unternehmen das Konzept von LabVIEW-Knoten nicht verstehen, gibt es eine andere Methode, die von einigen LabVIEW-Entwicklern verwendet wird, um die LabVIEW-Metrik zur Codekomplexität in die entsprechende SLOC zu übersetzen. Bei dieser alternativen Vorgehensweise vergleichen die Entwickler die Größe des LabVIEW-Codes auf dem Datenträger mit dem Footprint einer entsprechenden C-Objektdatei. Wenn Sie die SLOC kennen, mit der die C-Objektdatei erstellt wurde, können Sie LabVIEW-Code in SLOC umwandeln. In LabVIEW können Sie die Speicherauslastung eines VIs über Datei » VI-Einstellungen » Speicherauslastung anzeigen (siehe Abbildung 2).


Abbildung 2: Die Kategorie „Speicherauslastung“ der VI-Eigenschaften zeigt die Größe dieses Programmcodes auf dem Datenträger an (10,0 K).


Hinweis: Die Speicherauslastung zeigt nicht nur die Größe des LabVIEW-Codes auf dem Datenträger an, sondern auch den von den Frontpanel- und Blockdiagrammobjekten belegten Speicher und die im VI gespeicherten Daten. Wenn Sie mit dieser Methode die Komplexität von LabVIEW in die äquivalente SLOC umwandeln, fügen Sie nur den zum Programmcode gehörigen Speicher hinzu.

Hinweis: NI hat diese SLOC-Umwandlungsmethode während der Softwareentwicklung nicht verwendet und kann derzeit keine Hinweise zu einem Umwandlungsfaktor der LabVIEW-Code-Größe in die äquivalente SLOC geben.

Zusammenfassung


Obwohl LabVIEW eine grafische Entwicklungsumgebung ist, können Sie mit Hilfe von Metriken zur Codekomplexität wie der Anzahl der LabVIEW-Knoten den Zeit- und Arbeitsaufwand für die Fertigstellung vergangener Projekte bewerten und dies für Ihre künftigen Entwicklungen nutzen. Und auch wenn die Beziehung zwischen einem einzelnen LabVIEW-Knoten und einer befehlsorientierten Codezeile nicht perfekt korreliert ist, hat NI das Verhältnis von einem LabVIEW-Knoten zu einer SLOC durch interne Studien von Projekten mit gleichwertigem LabVIEW- und C-Code ermittelt. Um die Ergebnisse Ihrer Projektschätzung zu verbessern, sollten Sie Ihre LabVIEW-Metrik über mehrere Projekte hinweg verfolgen. Dabei sollten Sie diese Projekte in kleinere Komponenten aufteilen und wichtige Faktoren wie individuelle Programmiererfahrung und die Art des Programmcodes in die Entwicklung einbeziehen.