Prinzipien unserer Softwareentwicklung

04.11.2019

Bei unserer SaaS-Lösung future legen wir großen Wert darauf, hohe Standards bei der Softwareentwicklung einzuhalten. Wir zeigen in diesem Blogbeitrag auf, wie ein modularer Aufbau, Code Reviews und Continuous Integration die langfristige Qualität unserer Software sicherstellen und die Wartung erleichtern.

In der Forecasting-Software future haben wir unsere langjährige Expertise im Forecasting gebündelt und stellen sie in Form einer SaaS-Lösung auch dir zur Verfügung, sodass du ganz einfach richtig gute Forecasts erzeugen kannst. Damit das alles zuverlässig funktioniert, ist es essenziell und für uns selbstverständlich, hohe Standards in der Softwareentwicklung zu verfolgen. Einige dieser Aspekte – wie wir das bei uns umsetzen – möchten wir in diesem Blogbeitrag näher erläutern.

Verschiedene Lösungsstadien der Softwareentwicklung

Zunächst einmal unterscheiden wir zwischen Prototypen und Enterprise-Lösungen. Prototypen variieren je nach Anforderung in ihrer Ausbaustufe. Sie reichen von einem einfachen Mockup, über den voll funktionsfähigen Prototypen bis hin zur Produktionsreife. Jedes dieser Stadien unterscheidet sich in seinen Dimensionen hinsichtlich der Funktionalität, Dokumentation oder des Testens. Beispielsweise existiert beim Mockup lediglich ein Modell mit Bezug zu dem zu lösenden Problem. Dieses kann z. B. Software-Code oder nur eine Skizze sein. Es wird noch nicht das Problem gelöst, sondern lediglich eine Grundlage für die weitere Anforderungsaufnahme gelegt. Der produktionsreife Prototyp hingegen ist voll funktionsfähig und mit einer umfangreichen Liste von Fällen getestet. Zudem ist der Code für zukünftige Erweiterungen aufbereitet und dokumentiert.

Eine Enterprise-Entwicklung, wie es beispielsweise unser future ist, steht im Vergleich zu den Prototypen für ein noch höheres Maß an Qualität und Nachhaltigkeit in der Softwareentwicklung. Neben der eigentlichen Funktionalität der entwickelten Lösung stehen diese Gütekriterien an erster Stelle.

Modularer Aufbau bringt Vorteile mit sich

Im Gegensatz zum Prototypen kann hier der Code modular getestet und wiederverwendet werden. Ein modularer Softwareaufbau bedeutet, dass die Implementierung in mehrere logische Blöcke eingeteilt wird. Mit diesem Standard können entscheidende Vorteile erzielt werden: Doppelter Quellcode wird vermieden und die mittel- und langfristige, effiziente Wartbarkeit der Anwendung sichergestellt. Zudem ist es durch die klar umrissenen Aufgaben der Module möglich, einzelne Bereiche gegebenenfalls auszutauschen, ohne dass andere Teile der Software ersetzt werden müssen.

Code Reviews und Konventionen räumen auf

Ein weiterer wichtiger Aspekt, um die Qualität unserer Programmcodes zu sichern, sind sogenannte Code Reviews. Hierbei wird der zuvor verfasste Code durch einen unabhängigen Kollegen oder eine unabhängige Kollegin oder mit Hilfe eines Tools überprüft. Bei uns setzen wir hauptsächlich auf erstere Variante, die zwar oft eine ganze Menge an Zeit einfordert, gleichzeitig aber mehrere Vorteile bietet: Einerseits werden so funktionale und stilistische Fehler im Code ausgemerzt, andererseits wird Wissen und Know-how über den aktuellen Stand der Lösung innerhalb unseres Teams geteilt. Dadurch können wir weitere Fehler vermeiden und somit die Entwicklung nachhaltig verbessern. Während des Reviews orientiert sich der Gutachter an sogenannten Konventionen, die vor allem die Verständlichkeit des Codes und so auch die zukünftige Wartbarkeit garantieren sollen. Diese verinnerlichen unsere Team-Mitglieder von Tag 1 an.

Code-Reviews sind ein wichtiges Werkzeug, denn die Fehlerquote von Quellcode, welcher durch mindestens einen weiteren Entwickler oder eine weitere Entwicklerin überprüft wurde, ist spürbar niedriger als wenn nur eine Person daran arbeitet.

Beständigkeit durch Continuous Integration

Ein weiterer Gesichtspunkt der Qualitätssicherung ist die Continuous Integration. Dabei wird jeder Stand der Entwicklung vollautomatisiert kompiliert, umfangreich dokumentiert, getestet und paketiert. Die Funktionstests reichen hierbei von schlanken Unit Tests über umfangreiche Integration Tests bis hin zu Tests in unterschiedlichen Laufzeitumgebungen. Zur Einordnung: Eine Unit ist in future meistens eine einzelne Funktion oder Methode, bei einem Integration Test werden hingegen mehrere Units miteinander getestet. Zum Beispiel wird das ganze System mit einer Vielzahl an Beispielzeitreihen aufgerufen. Integrationsprobleme können so rechtzeitig erkannt und behoben werden. Die Funktion der Anwendung ist durch die Continuous Integration zu jeder Zeit zuverlässig sichergestellt und neue Anpassungen sind möglich ohne die bisherige Funktionalität zu beeinflussen. Darüber hinaus wird in diesem Prozess auch die Einhaltung der Konventionen in Form von sogenannten Style Checks automatisiert überprüft.

Continuous Integration Pipeline mit Style Checks, Unit und Integration Tests und Continuous Delivery

Continuous Integration Pipeline mit Style Checks, Unit und Integration Tests und Continuous Delivery

Bei der Continuous Delivery gehen wir sogar noch einen Schritt weiter und sorgen dafür, dass die Software nach der Integration automatisiert auf die Entwicklungs-, Test-, Integrations- und Produktivumgebung geladen wird. Auf diese Weise können wir die Auslieferung von Patches und Updates erheblich beschleunigen.

Anfänglicher Aufwand trägt später Früchte

Ohne Frage nehmen die Tests und Code Reviews in der Durchführung viel Zeit und Aufwand in Anspruch. Letztendlich führen diese Maßnahmen jedoch zu einer höheren Qualität der Software, die sich in frühzeitiger Fehlererkennung, niedrigen Fehlerraten im Betrieb und kleineren Aufwänden bei Anpassungen zeigt. Auch bei der Softwareentwicklung ist es wie so oft im Leben: Qualität und Präzision zahlen sich auf lange Sicht immer aus.


Interesse, einen Blick auf future zu werfen und direkt mit Forecasts loszulegen?


Zuletzt aktualisiert: 04.11.2019
Sie sind dabei, unsere Webseite über einen externen Link zu verlassen. Bitte beachten Sie, dass der Inhalt der verlinkten Seite außerhalb unserer Kontrolle liegt.

Cookies und andere (Dritt-)Dienste

Diese Website speichert Cookies auf Ihrem Computer nur, wenn Sie dem ausdrücklich zustimmen. Bei Zustimmung werden insbesondere auch Dritt-Dienste eingebunden, die zusätzliche Funktionalitäten, wie beispielsweise die Buchung von Terminen, bereitstellen. Diese Cookies und Dienste werden verwendet, um Informationen darüber zu sammeln, wie Sie mit unserer Website interagieren, und um Ihre Browser-Erfahrung zu verbessern und anzupassen. Zudem nutzen wir diese Informationen für Analysen und Messungen zu unseren Besuchern auf dieser Website und anderen Medien. Weitere Informationen zu den von uns verwendeten Cookies und Dritt-Diensten finden Sie in unseren Datenschutzbestimmungen.