Diese Webseite verwendet Cookies. Wenn Sie diese Webseite nutzen, akzeptieren Sie die Verwendung von Cookies. Zur Datenschutzerklärung
In diesem Beitrag möchte ich mich dem Thema Technologieauswahl für Softwareprojekte widmen. Als eher technisch ausgerichteter Dienstleister setzen wir bei Cap3 auf den Einsatz von modernsten Programmiersprachen, Frameworks und Bibliotheken.
Wir sind davon überzeugt, dass sich auf diese Weise am besten langlebige, wartbare und performante Software für unsere Kunden und Partner erstellen lässt. Die konkreten Entscheidungen treffen wir anhand der Projektanforderungen. Dies möchte ich am Beispiel der Entwicklung des Sicherheitssystems für die Alleinarbeit „Selene“ kurz aufzeigen.
Das System Selene besteht aus einer Android-App und einer Webapplikation. Der Datenaustausch erfolgt über das serverseitige Backend mit Datenbank. Die Android-App soll Personen während der Alleinarbeit schützen und im Ernstfall Leben retten. Dazu verfügt die App über umfassende Alarmfunktionen. Das Monitoring erfolgt über die Webapplikation in einer rund um die Uhr besetzten professionellen Notfallzentrale. Das System muss selbstverständlich absolut zuverlässig arbeiten und somit vorab umfassend auf Funktionssicherheit und -treue getestet werden. Ein wesentliches Ziel war es daher, dass die Testung möglichst automatisiert erfolgen kann.
Die Android-App beinhaltet – bedingt durch kontinuierliche Auswertungen der Sensordaten, zeitgesteuerte Ereignisse und asynchrone Netzwerk-Anfragen – ein hohes Maß an Komplexität. Dieser Herausforderung sind wir mit dem Einsatz von RxJava begegnet. RxJava ist eine Bibliothek, die eine „reaktive Programmierung” ermöglicht, wodurch sich nebenläufige Vorgänge sehr gut beherrschen lassen. Nahezu die gesamte Anwendungslogik konnte funktional programmiert werden, wodurch die Codebasis übersichtlich, lesbar und sehr gut testbar ist. Dieser Ansatz ermöglicht uns auch eine umfangreiche automatisierte Testung der App.
Die Webapplikation wurde mit der Sprache TypeScript umgesetzt. TypeScript ergänzt das verbreitete JavaScript um ein statisches Typsystem. Dadurch sind statische Codeanalysen möglich, die die Entwicklung beschleunigen und viele Fehler finden, bevor der Code ausgeführt wird. Für die Umsetzung wurde React verwendet und mit dem Architekturmuster Redux kombiniert. Dadurch konnten wir in der Webapplikation ebenfalls auf funktionale Programmierung mit den genannten Vorteilen setzen.
Für das Backend haben wir das Play-Framework und die Programmiersprache Scala gewählt. Das Play-Framework ist verlässlich und performant, Scala bietet neben objekt-orientierten Konzepten auch viele funktionale Aspekte. Für die serverseitige Behandlung der zeitgesteuerten Ereignisse haben wir das Akka-Framework verwendet – Akka bietet mit seinem hohen Abstraktionsniveau für die Handhabung von nebenläufigen Vorgängen den Gegenpart zur Android-App. Zuletzt verwenden wir mit PostgreSQL ein vielfach erprobtes, performantes und verlässliches Datenbanksystem.
Nach Aussage unseres Projektpartners haben wir die Software auf diese Weise „in Rekordzeit“ fertigstellen können. Das System befindet sich aktuell in der finalen Testung und wird in den kommenden Wochen live gehen.
* Pflichtfeld