Entwicklungsschritte

Anforderungsanalyse

Ziel der Anforderungsanalyse ist es zu ermitteln, was das zu erstellende Produkt können soll oder muss. Die Anforderungsanalyse wird durch den Requirements-Engineer durchgeführt. Dieser gilt als Mittler zwischen den Welten, denn er benötigt


Das Problem:

Das Datenmanagement der DB Netz AG ist funktional gegliedert, wobei ein Kundenauftrag im Bestellprozess durch alle Unterabteilungen gelangen muss. „Oft haben die Mitarbeiter auch keine Vorstellung davon, was ein Prozess ist, sie identifizieren sich mit ‚ihrer‘ Aufgabe. […] An den Übergängen zwischen den an einem Prozess beteiligten Einheiten der Organisation entstehen daher Schnittstellen, bei denen der Prozess durch die Weitergabe von Objektinformationen (z. B. Auftragsdaten) ständig unterbrochen wird [vgl. Abbildung 9]. Zudem besteht die Gefahr von Medienbrüchen [,] wenn bereits vorhandene Daten neu erfasst oder transformiert werden. Letztlich fehlt die Steuerung des Prozesses über die Organisationseinheiten hinweg, da jede Einheit nur für ihren ‚Prozessabschnitt‘ verantwortlich ist.“ (Gadatsch, 2017, S. 29)


Die Lösung:

Mithilfe einer Datenbankanwendung kann es gelingen, dass die Aufträge an zentraler Stelle gespeichert werden. Die Mitarbeiter könnten, in Rollen und Benutzergruppen unterteilt, fach- und sachspezifische Informationen abrufen. Dies sollte von den beiden typischen IT-Systemen der DB Netz AG und über eine einfache, benutzerfreundliche GUI möglich sein. Da der DB-Konzern stark Microsoft Windows zentriert arbeitet, bietet sich die Nutzung des .NET-Frameworks und die Programmiersprache C# in der Version 7 an.
Die MitarbeiterInnen, die zur Zeit mit der Auftragserfassung betraut sind, erhalten eine Schaltfläche über die sie neue Aufträge manuell erfassen oder automatisiert aufnehmen lassen können. Die relevanten SachbearbeiterInnen erhalten eine Information, bearbeiten ihren Aufgabenteil und melden der Anwendung, dass sie die Bearbeitung abgeschlossen haben. Sind alle Aufgabenteile bearbeitet meldet die Anwnedung dem Auftragserfasser, dass die Daten nun zur Verfügung stehen oder das System sendet diese gleich automatisch an den Besteller.


Der Lösungsweg:

Um an die Informationen der Sachbearbeiter zu gelangen wurden zunächst Dokumente, Dateien und die Altsysteme betrachtet. Den Mitarbeitern wurde anhand der gewonnen Informationen ein Fragebogen zugestellt. Sie antwortet freiwillig auf persönliche Fragen (Alter, gelernter Beruf), auf organisatorische Fragen (Erreichbarkeit, Arbeits-/Betriebsmittel) und auf fachliche Fragen (Nutzung spezieller Dateien, Fehler bei bestimmten Vorgängen). Die gewonnenen Informationen dienten der Vorbereitung von Interviews mit den einzelnen späteren Nutzern. Im Gespräch konnten fachliche Fragen durch Zeigen und Vorführen effektiver beantwortet werden. Den Benutzern wurde kurz nach dem Gespräch ein Protokoll zur Gegenzeichnung zugestellt. Darin fanden sich die Aussagen des Gesprächs fixiert, um daraus die Anforderungen und Testfälle zu ermitteln. Die Anforderungen wurden in der Open-Source-Software Testlink erfasst und mit mindestens je zwei Testfällen gespeichert. Testlink ermöglicht den Export einer Anforderungsspezifikation und die Ausgabe von Diagrammen und Statistiken zu den Testergebnissen und Problemen.

Seitenanfang

Software-Entwurf

Entworfen wurde ein IT-System mit der 3-Schichten-Architektur. In der ersten Schicht (Frontend) sieht der/die AnwenderIn die Windows-Forms-Benutzeroberfläche (GUI) mit ihren Textfeldern, Tabellen, Symbolen und Schaltflächen. In der dritten Schicht befindet sich die Datenhaltung (Backend). Dabei handelt es sich um eine PostgreSQL-Datenbank in der Version 10.3. Sie wird mit pgAdmin4 verwaltet und administriert. Die mittlere Schicht mit der Nummer zwei beinhaltet den fachlichen Kern (Core). Das ist der Teil, der die Schaltflächen des Frontends mit Funktionen füllt, den Zugriff auf die Daten und deren Präsentation ermöglicht. Dabei ist zu beachten, dass eine Geschlossene Architektur zum Einsatz kommt. Das heißt die dritte Schicht kann nicht auf die zweite und die zweite nicht auf die erste zugreifen, lediglich der umgekehrte Fall ist möglich.


~ Frontend: DB Farben

Neben den Standards und Normen, die die Bedienbarkeit und Benützungsmöglichkeiten von GUIs regeln, müssen weitere Rahmenbedingungen beachtet werden. Im konkreten Fall soll die Benutzeroberfläche dem Corporate Design der Deutschen Bahn entsprechen. Insbesondere die Farben DB Rot, DB Weiß und DB Grau sowie die Bahnschriftart sollen bei der Gestaltung verwendet werden.


~ Core:

In der Objekt-Orientierten Microsoft-Programmiersprache C# können die normalerweise vom Betriebssystem gesteuerten Threads und Core-Prozesse manipuliert werden. Durch Systemklassen wie der Backgroundworker-Komponente lassen sich Hintergrundaktivitäten auf andere Prozessor-Kerne auslagern. Möglich wird das durch das .NET-Framework und seine Integration auf Betriebssystemebene, dadurch erhält die Datenbankanwendung, wie sie hier entstehen soll, einen großen Performance-Vorteil gegenüber anderen Programmiersprachen. Auf Grundlage eines UML-Klassendiagramms kann später die Implementierung erfolgen. Um die Dokumentation der Funktionen und Methoden zu vereinfachen, bietet C# die automatische Erstellung einer Entwicklerdokumentation. Die Funktionen werden durch Kommentare mit führenden "///" versehen. Durch Steuertags wie summary, param oder returns lassen sich alle notwendigen Informationen klassifizieren. Die erstellte Dokumentation kann als XML-Datei exportiert und als API in der Entwicklungsumgebung geladen werden.


~ Backend:

Die Datenhaltung ist zweiteilig zu betrachten: auf der einen Seite steht eine Festplatte, auf der die bereitgestellten Dateien zur Verfügung gestellt und die Zurückgelieferten zwischengespeichert werden sollen. Auf der anderen Seite befindet sich die PostgreSQL-Datenbank deren Tabellen und Informationen persistent vorgehalten werden müssen.

Seitenanfang

Implementierung

Quellcode 1

Für die Implementierung von C#-Anwendungen bietet sich die Benutzung von Visual Studio an. Für einzelne Entwickler ist die Benutzung kostenfrei. Um von C# und .NET auf PostgreSQL zuzugreifen empfielt sich die Benutzung von Npgsql: Die Bibliothek ermöglicht die Verbindung und den Zugriff auf die PostgreSQL-Datenbank.

Eine Besonderheit von C# ist die Zuweisung von Eventhandlern, um mit einer Schaltfläche der GUI eine Funktion aufzurufen: ("this.button.click =+ new System.EventHandler(this.machwasfunktion);"

Die Implementierung erfolgt testgetrieben, das heißt bevor der Quellcode entsteht werden Unit-Tests definiert. Diese Test-Art ist fester Bestandteil von Visual Studio; durch die Verwendung lassen sich viele Tests automatisch durchführen, was gerade im Hinblick auf Agilität und sich ändernde Funktionen bzw. Funktionsaufrufe einen großen Mehrwert liefert.

Seitenanfang

Software-Test und Inbetriebnahme

Testenschema

Wie die Überschrift bereits erahnen lässt, ist die Grenze zwischen Test und Inbetriebnahme weicher geworden. Das Testen einer Software ist der wichtigste Teil der Qualitätssicherung im Entwicklungsprozess, denn wenn die Software bestimmte Anforderungen nicht oder falsch erfüllt hat sie einen Fehler, der schwerwiegende Folgen haben kann. Die Abbildung zeigt eine allgemeingültige Matrix, wobei die Tests auf der linken Seite erfolgreich und vor dem Release abgeschlossen sein müssen. Je nach Definition of Done kann es produktiver und effizienter sein, die Software durch die Benutzer testen zu lassen. Bestimmte Fehler treten erst auf, wenn der Benutzer versucht mit realen Daten zu arbeiten und nicht mit den Testdaten. Last- und Performance-Tests lässt sich am besten im Produktivsystem überprüfen, beispielsweise im Statusmonitor der Datenbank.

Hat ein Benutzer einen Fehler detektiert, muss er diesen an den Entwickler übermitteln. Da eine exakte Beschreibung seitens der Nutzer meist schwer möglich ist, wird die Anwendung Log-Dateien schreiben und die Benutzungsschritte in einer externen Textdatei dokumentieren. Beschreibt der Nutzer den Fehler per Mail, kann er die Log-Datei anhängen und spart damit Zeit.

Seitenanfang

Software-Wartung und Weiterentwicklung

Auch die Software-Wartung und die Weiterentwicklung lassen sich in einem Punkt zusammenfassen. Durch agiles Vorgehen und die damit verbundene iterative Veröffentlichung neuer Softwareversionen ist es möglich, Anpassungen der Hardware und Veränderte Anforderungen permanent einzuarbeiten. Da die Erstellung der Software nicht abgeschlossen wird, sondern immer im Kreislauf weiter verfolgt wird, entfallen Wartung und Weiterentwicklung als eigenständiger Punkt. Jedoch muss bedacht werden, dass alle Änderungen ebenfalls dokumentiert, der Quellcode und die Testfälle angepasst werden müssen. Das wiederrum erfordert die Zeit der Entwickler, wodurch sie für die Neuentwicklung fehlen könnte.