Die Entwicklung der Software ist grundsätzlich in 3 verschiedene Abschnitte zu gliedern. Als erstes mussten das genaue Umfeld definiert und die Anforderungen analysiert werden. Der zweite Schritt umfaßt die eigentliche Implementierung. Und der letzte Teil beschäftigt sich mit den Tests der Software, sowie einigen Nachbetrachtungen. Natürlich konnten alle Teile nicht als selbstständige Abschnitte, unabhängig voneinander, bearbeitet werden, sondern es gab auch vielfache Überschneidungen. Sei es, dass bei der Implementierung der Software noch Kleinigkeiten entdeckt wurden, die wichtig für die Anforderungen bzw. die spätere Arbeit des Programmes waren, oder dass die neu entwickelten Programmteile sofort getestet wurden. Aber letzten Endes ergab gerade dieses Ineinandergreifen der Entwicklungsschritte ein sehr problemorientiertes und erfolgreiches Ergebnis.
Dieser Abschnitt behandelt grundlegende Sachen, wie die Festlegung der Programme, mit denen eine Implementierung bzw. Ausführung erfolgen sollte. Weiterhin mussten die Schnittstellen zu bzw. von dem Programm geklärt werden.
Die Grundidee des geplanten Systems war, dass die verschiedenen Meßdaten möglichst automatisch eingelesen, verarbeitet, aufbereitet und zum Schluss in den Kalibrierreport übertragen werden sollten. Vor allem für das Programm zum Einlesen und Verarbeiten der Daten gab es mehrere Möglichkeiten, da ein konkretes Werkzeug hierfür nicht vorgegeben war. In der engeren Auswahl standen letzten Endes die Programme „Visual Basic“ und „Agilent VEE“, wobei dieses letztere Tool eine Produkt von Agilent ist (auch extern erhältlich). Für beide Optionen wäre eine Einarbeitung zum Kennenlernen und Verstehen notwendig gewesen, jedoch handelt es sich bei Agilent VEE um eine graphische Programmiersprache und daher schien die Aneignung des benötigten Wissens einfacher und schneller realisierbar zu sein. Es gab weitere Vorteile, die für diese Alternative sprachen. Es existierten einige Bestandteile der Programmiersprache, die für die Aufbereitung der Daten ideal waren, wie z.B. vorgefertigte Diagramme zur Visualisierung von Informationen. Die Erfahrung der Personen, die später mit dem entwickelten Programm arbeiten würden, waren bei dieser Sprache wesentlich stärker vorhanden. Desweiteren gab es bereits ähnliche Programme, die eine schnelle Einarbeitung zusätzlich begünstigen konnten. Und zumal Agilent VEE auch die Standardlösung im Metrologie-Labor ist, fiel am Ende dieser Betrachtungen die Wahl eindeutig auf Agilent VEE, welches in einem späteren Abschnitt nochmals vorgestellt werden soll.
Nun lag der Fokus auf einer möglichst guten Aufbereitung und Übertragung von Daten für einen endgültigen Meßreport. Dafür wurden gar keine Optionen erstellt, denn eine offensichtliche Lösung stach sofort ins Auge, nämlich eine Automation über das sogenannte „ActiveX“. Dabei handelt es sich nicht um eine Programmiersprache, sondern um eine Reihe von Regeln zur Verbindung von Anwendungen in vernetzten Systemen. Damit ist es beispielsweise möglich von einem außenstehenden Programm Daten und Kommandos in verschiedenen Microsoft-Office Anwendungen zu transferieren. Und genau dieser Fakt machte dieses Tool ideal für das gesamte Projekt. Außerdem war eine Kompatibilität zu Agilent VEE vollständig gegeben. Auch ActiveX soll in einem der folgenden Abschnitte noch etwas in seiner Funktionsweise erläutert werden.
Für die graphische und tabellarische Aufbereitung der Daten wurde das traditionelle Microsoft Excel (Version 2000) gewählt. Weiterhin schien für die Darstellung in den Kalibrierzertifikaten Microsoft Word (Version 2000) am besten geeignet zu sein. Diese beiden Programme waren besonders qualifiziert für das Projekt, weil sie genau wie auch ActiveX von Microsoft entwickelt wurden und somit die Chancen für eine gute Interaktion durchaus gegeben waren. Sie sollen jedoch nicht weiter erläutert werden, da die Arbeitsweise weitgehend bekannt sein sollte. Lediglich bei der Beschreibung der genutzten Templates werden beide Programme nochmals aufgegriffen.
Wie oben bereits erwähnt, handelt es sich bei diesem Werkzeug um eine firmeneigene, graphische Programmiersprache. Durch viele optische Hilfestellungen und intuitive Programmiermethoden ist sie einfach zu erlernen und kann die nötige Zeit für einen Programmentwurf drastisch reduzieren. Für diese Diplomarbeit wurde Agilent VEE Pro 6.0 gewählt, da dies die momentan verfügbare Version war. Während dem Verlauf des Projektes wurde noch die Version 7.0 veröffentlicht, aber ein Umstieg auf diese Version erschien nicht sinnvoll, da sie keine notwendigen Neuerungen enthielt.
Im Folgenden sollen nun einige wichtige Elemente dieser Sprache vorgestellt werden, um deren Einfachheit und Anschaulichkeit zu verdeutlichen [3].
Abbildung 6.1: Elemente von VEE (Teil 1)
Sowohl in Abbildung 6.1 als auch 6.2 sind elementare Bestandteile dieser Sprache zu sehen. Man kann sehr gut den, einem Blockdiagramm ähnlichen, Verlauf erkennen. Trotzdem können die gleichen Abläufe wie bei einer textuellen Sprache, wie beispielsweise Visual Basic, realisiert werden.
In Bild 6.1 sieht man eine einfache Schleife, die nacheinander 10 Zufallszahlen erzeugt, diese sammelt und nach Beendigung der 10 Durchläufe auf einem Display darstellt. Der Verlauf beginnt bei der Zählschleife, der hier ein beliebiger Wert zugewiesen wurde. Dieses ist nur eine Möglichkeit zur Schleifenbildung, denn es gibt unter anderem auch noch bedingte Schleifen. Die Ablauflinie am Ausgang der Schleife weist darauf hin, dass nach einem Zählvorgang, d.h. nach einem Inkrementieren, der Inhalt der Funktion ausgeführt wird. Solche Funktionen sind der Hauptbestandteil für jegliche Art von Berechnungen. Ihre Anwendungsgebiete reichen von mathematischen-, über logische- bis hin zu Filterfunktionen. Die obige Zufallsfunktion ist nur ein Beispiel für die vielfältigen Einsatzmöglichkeiten. Sie erzeugt eine Zahl in den Grenzen von Null bis Eins. Diese wird übergeben an den sogenannten Kollektor, welcher Informationen sammelt, bis er eine Anweisung zur Weitergabe der Daten an seinem unteren Eingangspin erhält. Eine Freigabe erfolgt durch die Ablauflinie vom Pin an der Unterseite der Schleife, nach deren Beendigung der 10 Zählvorgänge. Nun können die Daten aus dem Kollektor an das Display übergeben werden, welches diese lediglich darstellt. Auch bei den Displays gibt es eine Vielzahl von Möglichkeiten, wie z.B. Diagramme zur Anzeige von Kurvenverläufen, Spektren und Wellenformen.
Abbildung 6.2: Elemente von VEE (Teil 2)
Bild 6.2 zeigt weitere essentielle Bestandteile von VEE. Zum einen kommen nun die neuen Begriffe der Konstanten und Variablen hinzu und zum anderen die bedingten Programmverläufe. Das kurze Programm beginnt mit der Festlegung eines beliebigen Integers. Dabei handelt es sich nur um eine von vielen Optionen zur Definition von Konstanten, denn es gibt weiterhin z.B. Text- oder auch Real-Konstanten. Mit dieser oben gesetzten Integer-Konstanten wird nun eine beliebige Variable namens „globalA“ belegt. Sie wird daraufhin sofort wieder ausgelesen und der Funktion zur Bedingungsabfrage übergeben. Der Sinn dieser Variablenbehandlung in diesem Fall sei dahin gestellt, da der Verlauf nur die Möglichkeiten darlegen soll. Die Funktion prüft, ob die erhaltene Information, also der Inhalt der Variablen, größer bzw. gleich Null und zusätzlich kleiner als Zehn ist. Wenn diese Bedingung erfüllt ist, dann wird die Textkonstante „Bedingung erfüllt“ übergeben, ansonsten wird der andere Text weitergeleitet. Die Ausgänge der Konstanten führen auf eine sogenannte Verzweigung, die nur eine momentan aktuelle Information passieren läßt. Da nur eine Bedingung in der Funktion erfüllt sein kann, wird auch nur ein Wert an dieser Verzweigung anliegen, denn die jeweils andere Textkonstante wird im Programmverlauf nicht weiter berücksichtigt. Zum Schluss werden die übergebenen Daten wieder auf dem Display dargestellt.
Einige wichtige Elemente der Programmiersprache sollen an dieser Stelle, der Vollständigkeit halber, noch erwähnt werden. Da wären die bedeutenden Begriffe der Benutzerobjekte und der Benutzerfunktionen. Ein Benutzerobjekt ist eine Art Verzweigung bzw. Unterroutine im Programmverlauf. Es kann Daten verarbeiten oder auch weitere Objekte mit, in sich geschlossenen, Programmteilen enthalten. Somit stellt es eine Art eigene, kleine Entwicklungsumgebung dar. Diese hierarchische Struktur kann im Prinzip beliebig fortgeführt werden, trägt jedoch bei übertriebener Benutzung zur Unübersichtlichkeit bei. Eine Benutzerfunktion hingegen erfüllt die klassische Aufgabe einer Funktion, d.h. man kann in ihr einen Programmteil ablegen, welcher dann an einer beliebigen Stelle des Programmverlaufes aufgerufen und abgearbeitet wird. Bei richtigem Einsatz vermag eine solche Funktion sehr viel Arbeit und auch Speicherplatz für das Programm zu ersparen. Softwareelemente, um Dateien zu laden oder auch zu speichern sind ebenfalls vorhanden, sollen aber nicht weiter erklärt werden.
...