Software Engineering

Passgenaue Lösungen für Ihre individuelle Herausforderung

Wir sind spezialisiert auf die Entwicklung individueller Software-Lösungen für komplexe Herausforderungen. Wann immer sich ein Unternehmen für eine solche maßgeschneiderte Lösung entscheidet, bestehen höchste Ansprüche an Qualität, Erweiterbarkeit und einen reibungslosen Betrieb. Dadurch erreichen wir dauerhaft hohe Qualität und verhindern Regression.

Das Projekt-Know-how ist in einem DevOps-Team verteilt, welches auch über die Implementierung hinaus weiter besteht. So ist sichergestellt, dass auch nach längeren Entwicklungspausen jederzeit neue Features und Aktualisierungen integriert werden können – erfolgreicher Betrieb und Support garantiert.

Wir entwickeln in stabilen, multidisziplinären Teams.

Wir erarbeiten nachhaltige Software-Architekturen und dokumentieren diese sorgfältig.

Wir analysieren und überprüfen jede Zeile Code mit mindestens vier Augen.

Wir garantieren ein Höchstmaß an automatischer Test-Abdeckung.

Wir haben bei der Entwicklung stets den Betrieb im Blick.

Gemeinsam Technologien beherrschen

Nur im Team bleibt die ständig wachsende Technologie-Dichte beherrschbar. Wir verfügen über langjährige Erfahrung und zertifizierte Experten für Entwicklung und Betrieb von On-Premises- sowie Cloud-Lösungen (z.B. AWS, Azure). Die dazu passenden Backend Frameworks (z.B. ASP.NET Core, Django oder Laravel) und Programmiersprachen (z.B. C#, Java, Python, PHP) gehören zum Standardrepertoire unserer Entwickler.

Ebenso wie verschiedene Datenbanksysteme (SQL oder No-SQL) und Containerisierungslösungen (z.B. Docker, Kubernetes). Anbindungen an Maschinen und Anlagen (z.B. SPS-basierte Steuerungen) mittels Frameworks und Protokollen wie OPC-UA, CAN-Bus oder MQTT werden dabei projektspezifisch umgesetzt.

Frontend
Backend
Data Analytics
IoT & Shopfloor

Für Benutzer-Frontends werden je nach Anforderung Frameworks für die Entwicklung von Desktop-Anwendungen (z.B .NET WPF, Qt unter Windows, Linux, macOS), mobilen Anwendungen (z.B. Xamarin für Android und iOS) oder Web-basierter Anwendungen (z.B. Angular, React, JavaScript oder TypeScript) eingesetzt.

Die Verbindung zum Backend wird üblicherweise mit den nativen Mitteln des jeweiligen Frameworks oder z.B. durch REST- oder GraphQL-basierte Schnittstellen hergestellt. Der Einsatz von Web-Technologien erzeugt in vielen Projekten Synergieeffekte bei der Entwicklung von Frontends, die auf verschiedenen Zielplattformen eingesetzt werden sollen (z.B. auch über App-Container wie Electron oder Cordova).

We build it, we run it

Unsere DevOps-Teams übernehmen die Gesamtverantwortung von der Planung, Konzeption über die Erstellung der Software bis hin zum Betrieb und Wartung. Nur durch dieses Zusammenspiel kann erreicht werden, dass die Software den gewünschten Anforderungen an Qualitätskriterien wie Robustheit, Fehlertoleranz und Skalierbarkeit entspricht.

Diesen Kriterien entspricht unser Entwicklungsfluss:

  • Automatisierte Release-Pipeline
    Insbesondere für cloudbasierte Anwendungen nach Continuous-Delivery-Prinzip. Um jederzeit in der Lage zu sein, den aktuellen Entwicklungsstand zu veröffentlichen.
  • Infrastructure as Code
    Reproduzierbare und nachvollziehbare automatische Deployments durch Versionierung der Betriebs-Infrastruktur, wie Cloud-Ressourcen, Build- und Deploymentpipeline.
  • Feature Toggles
    Um im Rahmen von Continuous Integration schnell auf neue Anforderungen und Probleme reagieren zu können. Außerdem kann so frühzeitig (Anwender-)Feedback eingeholt werden und in den Entwicklungsprozess einfließen.

Qualität und Erweiterbarkeit

Unser agiles Vorgehensmodell zielt darauf ab, kontinuierlich hohe Software-Qualität zu liefern. Code Analysen, Code- und Architektur-Reviews und automatisierte Tests sind dabei zentrale Elemente zur Bildung eines gemeinsamen Qualitätsverständnisses im Team und zur Qualitätssicherung.

Damit erreichen wir außerdem, dass Wissen über die neuesten Implementierungen im Team verteilt wird. Ein einheitlicher Architektur- und Codestil erhöht zudem die Verständlichkeit, Erweiterbarkeit und Wartbarkeit der Software.

Automatisierte Tests sind ein zentraler Bestandteil eines jeden XITASO Software-Projektes. Sie stellen sicher, dass Features im Moment der Implementierung auch im Falle späterer Änderungen entsprechend der Anforderungen funktionieren. Damit erhöht eine gute Test-Abdeckung nicht nur die Entwicklungsgeschwindigkeit bei neuen Features, sondern erleichtert auch Veränderungen bestehender Software-Teile.