Viele der bei der Softwareentwicklung gängigsten Vorgehensweisen und Werkzeuge spielen mittlerweile auch bei der Entwicklung von Testanwendungen eine tragende Rolle.

20325.jpg

National Instruments

Um sicherzustellen, dass die Applikation qualitativ hochwertig, zuverlässig und rechtzeitig fertig gestellt wird, sollten bei der Entwicklung von Prüfsystemsoftware folgende fünf Grundpraktiken beachtet werden:

1. Arbeiten Sie ohne Quellcodeverwaltung, gehen Sie ein hohes Risiko ein

Die Quellcodeverwaltung ist ein elementares Werkzeug für jeden, der Software entwickelt – egal, ob es sich dabei um ein Team aus hundert Personen oder um einen Einmannbetrieb handelt. Ohne sie gestalten sich einfache Aufgaben wie Code-Austausch oder die Verwaltung verschiedener Code-Versionen schwierig. Außerdem birgt die Vorgehensweise ohne Quellcodeverwaltung gewisse Risiken, die zu Projektverzögerungen und verloren gegangener Programmierarbeit führen können. Es gibt eine Vielzahl verschiedener Lösungen unterschiedlicher Softwarehersteller, angefangen bei Microsoft Team Foundation Server, über Perforce bis hin zu kostenlosen Open-Source-Werkzeugen wie Subversion, die allesamt mit in NI LabVIEW entwickeltem grafischen Code eingesetzt werden können.

Bild 1: Mithilfe dieser im LabVIEW Professional Development verfügbaren Funktion lässt sich der grafische Vergleich von Quellcodeverwaltungs-Clients automatisch aufrufen.

Bild 1: Mithilfe dieser im LabVIEW Professional Development verfügbaren Funktion lässt sich der grafische Vergleich von Quellcodeverwaltungs-Clients automatisch aufrufen.National Instruments

Ein Vorteil von Quellcodeverwaltungssystemen ist die Möglichkeit, mittels Funktionen zum Vergleichen und Zusammenführen die im Laufe der Zeit entstandenen Änderungen in einer Anwendung nachvollziehen, verwalten und überarbeiten zu können. Das LabVIEW Professional Development System erlaubt es, Operationen zum grafischen Vergleich und Zusammenführen in Quellcodeverwaltungs-Clients zu integrieren. Einmal eingerichtet, zeigt diese Funktion in der Quellcodeverwaltung automatisch ein Dialogfeld in LabVIEW an, das den Anwender Schritt für Schritt durch die Code-Änderungen führt, erkennt, wenn etwas verändert wurde und welche Abschnitte genau davon betroffen sind.

2. Softwareentwicklung ohne vorheriges Einholen von Anforderungen ist Prototyping

Prototypen sind ein wichtiger Teil des Entwicklungsprozesses, da sie dazu verwendet werden, eine grobe Vorstellung zu vermitteln oder den Nutzen eines bestimmten Konzepts für eine neue Technologie zu beweisen. Die für Prototypen eingesetzte Software wird jedoch häufig zusammengestückelt, ohne dass dabei exakt geplant oder im Detail auf die Architektur geachtet wird. Daher ist es wichtig, zwischen der Prototypen- und der Entwicklungsphase des Softwareentwickungszyklus genau zu unterscheiden.

Pflichtenhefte sind eine bewährte Methode, die Erwartungen des Kunden mit den Anforderungen an die Entwickler abzugleichen, große Teams zu koordinieren, den Status eines Projekts zu dokumentieren und sicherzustellen, dass der Code gründlich getestet wird. Beliebte Werkzeuge für die Speicherung und Verwaltung solcher Dokumente sind Microsoft Word, Microsoft Excel, Adobe Acrobat, Telelogic DOORS und RequisitePro. National Instruments bietet die Möglichkeit, die Integration dieser Produkte mit einer Schnittstellensoftware zu automatisieren. Somit lässt sich automatisch nachvollziehen, ob die Anforderungen an die entwickelte Software erfüllt wurden. Ebenso können automatisch Berichte erstellt werden, was wiederum Rückverfolgbarkeit und Vorabanalysen bezüglich der Anforderungserfüllung möglich macht.

3. Die Prüfbarkeit und Qualität von Programmcode ist messbar

Bei der statischen Codeanalyse kommen Werkzeuge und Verfahren zum Einsatz, die Quellcode anhand festgelegter Kriterien bezüglich Entwicklungsstil, -organisation und -technik überprüfen. Zudem gestattet es die statische Code-Analyse, eine geringe Codequalität zu demonstrieren und Problembereiche aufzudecken. Mit Messgrößen zur Analyse der Codekomplexität wie z. B. Modularität und McCabe-Komplexität (zyklomatische Komplexität) lässt sich die Größe und Prüfbarkeit eines Projekts bestimmen. Dies ist besonders dann nützlich, wenn man von anderen Anwendern entwickelten Programmcode übernimmt und Fehler beheben oder neue Funktionen hinzufügen muss.

Um den Fortschritt eines Projekts nachvollziehen und Probleme schnell erkennen zu können, ist es am besten, eine automatisierte Form mit Reports zur Codeanalyse durchzuführen und diese durch regelmäßige manuelle Überprüfung durch Kollegen zu ergänzen. Die statische Codeanalyse von LabVIEW-Code kann mit dem LabVIEW VI Analyzer Toolkit automatisiert werden. Mit diesem Toolkit lassen sich mehr als 80 Tests benutzerspezifisch anpassen, darunter auch die Analyse der Leistungsfähigkeit, Komplexität, Dokumentation und sogar eine Rechtschreibprüfung. Für die Erstellung neuer Tests mittels LabVIEW VI Scripting ist auch ein Assistent verfügbar.

Bild 2: Das LabVIEW VI Analyzer Toolkit bietet ein interaktives Dialog- und Berichterstattungswerkzeug zur Überprüfung der Qualität und Prüfbarkeit von VIs.

Bild 2: Das LabVIEW VI Analyzer Toolkit bietet ein interaktives Dialog- und Berichterstattungswerkzeug zur Überprüfung der Qualität und Prüfbarkeit von VIs.National Instruments

4. Sie glauben vielleicht, dass Ihr Code funktioniert, aber Sie müssen es auch beweisen

Sie wissen, wenn etwas defekt ist, weil es dann einfach nicht funktioniert. Was jedoch schwieriger ist, ist jemandem oder gar einer externen Behörde zu beweisen, dass etwas fehlerfrei funktioniert.

Die Überprüfung von Software und anschließende Fehlerbehebung sind ein wichtiger Bereich in der Softwareentwicklung. Für den Test komplexer Software unterstützen den Anwender jedoch automatisierte Werkzeuge wie etwa das LabVIEW Unit Test Framework Toolkit. Die Automatisierung dieser Prozesse sorgt nicht nur für eine wesentliche Zeiteinsparung, sondern ermöglicht auch umfassendere Prüfvorgänge. Dies stellt sicher, dass die entwickelte Software die höchstmögliche Qualität aufweist sowie Probleme schneller aufgedeckt und Prüfzeiten reduziert werden, was wiederum zu geringeren Kosten führt.

Prüf- und Validierungsverfahren für die Funktionalität des Codes sind ein anerkannter Teil der Softwareentwicklung und gehören zur Standardpraxis. Der Nachweis, dass die Software „funktioniert“ beinhaltet mehr, als nur zu zeigen, dass das Programm ablauffähig ist. Es erfordert eine Validierung, die dokumentiert, dass die Software so abläuft wie vorgesehen. Dies erfordert eine Dokumentation sowie Testergebnisse, mit denen nachgewiesen wird, dass sich die Applikation genau so verhält wie geplant.

5. Wiederverwendung von Programmcode ist kein Mythos, erfordert aber Planung

Die wachsende Komplexität von Prüfsystemen geht häufig einher mit kürzeren Markteinführungszeiten für Prüfeinheiten, so dass der Bedarf an wiederverwendbaren Code-Bibliotheken (Reuse Libraries) stark gestiegen ist. Unter Wiederverwendung versteht man, dass sowohl die Hard- als auch die Software in verschiedenen Prüfsystemen eingesetzt werden kann und sich leicht an neue Testdurchläufe für den Prüfling anpassen lässt. Zudem können unterschiedliche Entwicklungsteams bereits existierende Treiber und Programmierschnittstellen nutzen, was für maximale Effizienz sorgt und die Dauer der Programmierphase noch weiter verkürzt. Doch viele Programmierer tun sich schwer, geeignete Methoden zu finden, die es ermöglichen, Code erfolgreich wiederzuverwenden. Oft liegt dies einfach an schlechter Planung oder an der fehlenden Möglichkeit, den Code an sich ändernde Anforderungen anzupassen und diese Änderungen auf einfache Art und Weise einer großen Anzahl von Programmierern und Anwendungen zur Verfügung zu stellen.

Ein bewährtes Beispiel einer solchen wiederverwendbaren Code-Bibliothek ist das Instrument Driver Network – NIs Sammlung von mehr als 9000 Messgerätetreibern (Stand Januar 2011) unter ni.com/idnet. Der Erfolg dieser wiederverwendbaren Bibliotheken beruht auf den klar definierten Programmierschnittstellen für die Kommunikation mit den Messgeräten und der Kapselung von Low-Level-Funktionalität in private Bibliotheken. Der VI Package Manager bietet jedoch eine noch ausgefeiltere Lösung, diese wiederverwendbaren Bibliotheken unternehmensweit zu verteilen und Codeversionen über verschiedene Projekte hinweg zu verwalten.