Warum ein Tool entwickeln?
Tools sind Hilfsprogramme, welche den uns bei bestimmten Aufgaben oder Teilaufgaben unterstützen oder diese vollständig abnehmen können. Mit C# können auch Tools für spezifische Aufgaben erstellt werden. Hier bei MEDtech Ingenieur haben wir schon mehrere Tools, etwa für das Testen oder Steuern von Geräten entwickelt, um solche Arbeiten effizienter durchführen zu können. In diesem Blockeintrag wird erläutert, warum die Programmiersprache C# eine gute Wahl für die Toolentwicklung ist und wie ein Standardvorgehen bei der Toolentwicklung aussehen könnte.
Warum C#?
-
- C# ist eine moderne und weitverbreitete Programmiersprache, welche ständig von Microsoft weiterentwickelt wird. Es gibt bereits viele Packages und Libraries welche das Programmieren mit C# erleichtern.
-
- Für die meisten Tools ist die klassische Kommandozeile nicht ausreichend. Für C# lassen sich ohne Probleme Graphische Benutzeroberfläche mit WPF, Windows Forms oder UWP erstellen, welche alle nötigen Graphischen Funktionalitäten, wie Buttons, Slider, Textfelder etc. bereitstellen.
-
- Um die Funktionalität eines Tools zu sichern, können mit Unittests die einzelnen Komponenten eines Programms getestet werden. Dies ist gerade bei Anwendungen mit vielen Spezialfällen hilfreich. Für C# gibt es einige Erweiterungen und Tools um ein ausführliches Testen zu ermögliche.
- Anstatt am Ende das Tool ständig als Executable oder als einen Ordner mit allen notwendigen Dateien an den Benutzer weiterzureichen, kann man in MS Visual Studio in C# mit dem SetUpWizard Package in nur wenigen Klicks einen Installer für das Projekt erstellen. Der erzeugte Installer installiert Ihr Tool für Ihre Nutzer und erstellt z.B. direkt eine Verknüpfung auf deren Desktop.
Wie erstellt man ein Tool in C#?
Unsere Vorgehensweise
Im Folgenden werden die Grundschritte für das erfolgreiche Programmieren eines Tools aufgelistet und erläutert. Die Schritte können dabei auch überlappen oder mehrfach durchlaufen werden.
Es ist z.B. selten, dass der erste Entwurf für die Benutzeroberfläche nicht mehr verändert werden muss oder dass keine weiteren Requirements während der Entwicklung aufkommen.
Problemstellung und Requirements definieren
Zunächst müssen einige Fragen beantwortet werden, welche die Grundbausteine für den restlichen Verlauf und den Aufbau des Tools maßgeblich beeinflussen:
-
- Wofür ist das Tool?
-
- Wer ist der Endnutzer
-
- Welche Kenntnisse hat der Endnutzer?
-
- Was für ein User Interface soll das Tool haben? Ist eine Kommandozeile ausreichend oder wird ein Graphical User Interface benötigt?
- Was soll das Tool alles können?
– Was soll der User eingeben können?
– Was soll dem User zurückgegeben/angezeigt werden?
– Gibt es weitere Schnittstellen zu anderen Anwendungen oder Geräten?
Aufstellen der Architektur
Bevor Sie sich in Programmierung stürzen, macht es Sinn sich vorher eine Architektur für das Projekt zu überlegen. Diese bildet später den Leitfaden für das Programmieren des Tools.
-
- Die Architektur legt kleinere Funktionseinheiten ihres Projektes und deren Beziehungen zueinander fest.
-
- Des Weiteren definiert sie die Aufgabenbereiche der Funktionseinheiten.
-
- Die Architektur basiert auf dem Wissen aus den Requirements und sorgt dafür, dass das Tool später alle geforderten Aufgaben erfüllen kann.
- Die Schnittstellen zu anderen Funktionseinheiten wie z.B. andere Anwendungen und Geräten müssen in der Architektur berücksichtigt und definiert werden
Erstellen eines ersten Entwurfes einer Benutzeroberfläche
-
- Das Erstellen einer Benutzeroberfläche gibt einen ersten Eindruck, ob die Problemstellung wirklich verstanden wurde. Durch Rücksprache mit der Zielgruppe können fehlende Funktionen oder unübersichtliche oder falsche Programmabläufe früh vermieden werden.
- Um eine gute User Experience zu erreichen, empfiehlt es sich, nach der Implementierung von Features, diese zusammen mit den späteren Usern zu testen.
Programmieren des Tools
-
- Programmieren der Funktionseinheiten, welche in der Architektur festgelegt wurden
- Verbinden der Logik mit der Benutzeroberfläche
Unittesten
-
- Unittests sichern die Funktionalität einzelner Funktionseinheiten (Klassen und Methoden)
- Die Architektur sollte darauf ausgelegt sein, dass die Funktionseinheiten immer alleinstehend und vollständig getestet werden können. Dies erleichtert spätere Änderungen und die Austauschbarkeit der einzelnen Programmabschnitte bzw. gibt Sicherheit, dass durch eine Änderung andere Funktionen nicht „kaputt gehen“.
Erstellen einer Setup.exe
- Ein Installer ist für die meisten User angenehmer als ein Ordner mit einer Executable. Mithilfe des SetupWizard Packages für C# erstellen Sie in wenigen Klicks einen Installer, mit dem Ihre Nutzer das Tool bequem installieren können.
Hilfreiche Tipps:
-
- Regelmäßige Rücksprache mit dem Endnutzer sorgt dafür das Missverständnisse frühzeitig aus dem Raum geschafft werden und dass die Benutzeroberfläche verständlich und benutzerfreundlich gestaltet ist. Beispielsweise sind Slider oder Dropdown-Menüs für den Nutzer manchmal angenehmer als Textfelder und sparen später bei der Nutzung des Tools Zeit.
- Dokumentation und Kommentieren von Code
Ist von vornherein klar, dass das Tool lange benutzt wird und später eventuell angepasst werden muss lohnt es sich eine Dokumentation zu erstellen. Dadurch findet man sich selbst auch nach langer Zeit leichter im Code zurecht und andere Programmieren können sich ebenfalls schneller in den Code einarbeiten. Fehler in der Architektur oder Programmierung können ebenfalls beim Dokumentieren auffallen.