Die Umsetzung eines Vorhabens kann auf der Grundlage unterschiedlicher Software- und System-Engineering-Methodiken realisiert werden. Die anzuwendende Methodik ist abhängig von verschiedenen Faktoren und wird in Absprache mit dem Unternehmen individuell auf das jeweilige Vorhaben abgestimmt. Es werden sowohl klassische Methoden unterstützt, die die Nutzung bzw. auch Erarbeitung von Pflichtenhefte beinhalten kann, als auch agile Methoden wie bspw. nach dem Scrum- oder Kanban-Verfahren. Innerhalb der Vorhabensumsetzung wird die Design- und die Implementierungsphase unterschieden, wobei die konkrete Bearbeitung der beiden Bereiche von der gewählten Methode abhängig ist und auch partiell parallel abgearbeitet werden kann.
Design
Bevor eine Applikation, ein System aus Hard- und Software oder auch eine ganze Plattform implementiert werden kann, müssen wichtige Designentscheidungen erarbeitet werden. Diese beinhalten Architekturentwicklungen, die auf der einen Seite die zu erreichenden funktionalen und nicht funktionalen Ziele berücksichtigen. Auf der anderen Seite stehen die verwendbaren Technologien, um unter Beachtung von vorhabensspezifischen Randbedingungen tragfähige Lösungen zu entwerfen. Für die Akzeptanz leistungsfähiger Systemlösungen sind auch Aspekte der User Experience zu berücksichtigen, die unter Nutzung modernster Frontend-Technologien adressiert werden.
Auf der Grundlage einer Anforderungsanalyse, die im Bereich der Vorhabensplanung angesiedelt ist, erfolgt die Entwicklung einer entsprechenden, technischen Architektur. Diese kann sowohl Hardware-, Kommunikations- und Softwareaspekte beinhalten.
Zu den wesentlichen zu berücksichtigenden Fragestellungen hinsichtlich Randbedingungen und Anforderungen gehören:
- Handelt es sich um eine Neuentwicklung oder um die Erweiterung einer bestehenden Lösung?
- Gibt es technologische Vorgaben durch den Kunden (z. B. Einsatz von Technologien wie Java Enterprise)?
- Sind Alt-/Bestandssysteme im größeren Umfang zu integrieren?
- Art der Applikations- oder Plattformentwicklung:
- Interne Geschäftsapplikation oder B2B-Applikation?
- Automatisierungsprojekt/Produktionsüberwachung und Optimierung/Predictive Maintenance
- IIoT-Plattformentwicklung inkl. Edge-Computing- und Cloud-Technologie
- Innovative Microservice-orientierte Plattformentwicklung
- Edge-Computing-Lösung inkl. KI und Machine Learning
- Welche Datenmengen müssen in welchen Zeiträumen verarbeitet werden?
- Welche Nutzer besitzt das spätere System?
- Über welche Kanäle (Web, Mobile) und Protokolle soll auf das System zugegriffen werden?
- Welche Komplexität besitzt das System und welche Anforderungen werden an die Weiterentwicklung und Wartbarkeit gestellt?
- Wie ausfallsicher muss das System sein?
Architekturentwicklungen werden unter Nutzung der vereinheitlichten Modellierungssprache UML durchgeführt und dokumentiert. Weiterhin werden sowohl gut bekannte und bewährte Architekturmuster (Architectural Pattern) verwendet als auch neue Ansätze, die es beim Einsatz von Cloud-Technologien oder Microservices zu beachten gilt.
UML ist eine eingetragene Marke von Object Management Group, Inc.
Je nach Anwendungsgebiet werden maßgeschneiderte, ergonomische Frontend-Systeme entworfen, deren konkrete Gestaltung unter Beachtung von Aspekten der User Experience erfolgt. User Interfaces werden in Form von
- modernen, dynamischen HTML5-Web-Applikationen,
- mobilen Applikationen mit Multi-Plattform-Unterstützung und
- modernen Augmented-Reality- und Virtual-Reality-Applikationen
entwickelt und umgesetzt. Neben der Gestaltung klassischer User Interfaces sind wir in der Lage, sehr anspruchsvolle Datenvisualisierungen in das Applikationsdesign zu integrieren, bei der sich diese auch auf sich dynamisch verändernde Datenbestände beziehen können. Dies schließt auch die Integration von Audio, Video und 3D-Darstellungen mit ein.
Der Entwurf von Backend-Systemen ist eine komplexe Aufgabenstellung. In Abhängigkeit der geplanten Funktionalitäten müssen verschiedene Anforderungen berücksichtigt werden. Dies betrifft unter anderem
- die Zielplattform,
- den Funktionsumfang und die Komplexität der geplanten Anwendung,
- den Stellenwert von Erweiterbarkeit, Flexibilität und Wartbarkeit,
- die Performance und Skalierbarkeit sowie
- die Integration mit anderen Systemen.
Wir entwerfen Backend-Systeme für verschiedene Zielplattformen. Angefangen von Arm-basierten Embedded Systemen über normale x86-basierte Bare-Metal-Server bis hin zu komplexen Multi-Server- und Private-/Edge-Cloud-Systemen.
Neben des Entwurfs von Backend-Systemen für Applikationen mit einem kleinen, mittleren oder größeren Funktionsumfang und einer geringen bis moderaten Komplexität entwickeln wir auch Systeme zur Realisierung sehr hoher Funktionsumfänge, die eine entsprechend hohe Komplexität besitzen.
Sollen derartige Systeme langfristig erweiterbar und wartbar sein, entwerfen wir sie auf der Grundlage einer Microservice-Architektur.
Performance und Skalierbarkeit spielen bei unseren Entwurfsarbeiten stets eine wichtige Rolle. Entsprechend der Anforderungen werden unterschiedliche Datenbanktechnologien und Persistenzstrategien, performante Protokolle sowie effiziente Algorithmen und Hardwarearchitekturen verwendet. Dies schließt auch die Einbeziehung moderner Hardware mit ein, die im Kontext von Machine Learning und Künstlicher Intelligenz herangezogen werden kann, um die Performance der Applikation deutlich zu erhöhen.
Die von uns angebotenen Design- und Entwurfsarbeiten beinhalten auch komplexes Systemdesign. Dieses kann eine Reihe von Technologien und Subsystemen beinhalten und sich nicht nur auf ein Softwaredesign beziehen.
Als Bespiel sei hier der Entwurf einer Edge-Computing-Lösung angegeben. Auf Grundlage der Anforderungen zur Überwachung einer Maschine oder einer Anlage wird ermittelt,
- welche physikalischen Größen gemessen werden müssen,
- welche Wertebereiche abgebildet werden müssen und
- mit welcher zeitlichen Auflösung gearbeitet werden muss.
In detaillierter Abstimmung mit dem Auftraggeber werden entsprechend dieser Faktoren geeignete Sensoren selektiert. Neben den physikalischen Messgrößen müssen auch konstruktionsseitige Aspekte berücksichtigt werden. Weiterhin wird je nach Anforderung entschieden, welche Schnittstelle verwendet wird (z. B. IO-Link als unterstützter Standard oder eine Stromschleifenschnittstelle). Zusätzlich kann es wie im Falle einer Stromschleifenschnittstelle notwendig sein, ein Embedded System mit ADC (Analog-to-Digital-Conversion) einzubeziehen. Wenn hohe Abtastraten verwendet werden, muss ebenfalls die Softwarekomponente zur Übernahme der Sensorwerte so entworfen werden, dass eine störungsfreie und performante Datenübernahme gewährleistet wird. Dies kann auch die Einbeziehung von asynchronen, parallelen Algorithmen mit Backpressure-Unterstützung beinhalten.
Als Bestandteil einer technischen Applikations-, System- oder Plattformarchitektur ist auch die Ablaufumgebung zu entwerfen. Dabei können verschiedene Designs von Ablaufumgebungen entsprechend der Anforderungen entwickelt werden.
- Bare-Metal-Ablaufumgebung
Diese Ablaufumgebungsvariante ist sinnvoll, wenn die Software auf einer Hardwareplattform deployt werden soll, die nur begrenzte Ressourcen (CPU und Hauptspeicher) besitzt (z. B. bei Embedded Systemen oder IoT Gateways). Ein weiterer Anwendungsfall von Bare-Metal-Deployments ist der Einsatz spezieller Hardware (GPU oder KI-Hardware) und die Notwendigkeit, ein Maximum an Performance zu erreichen. - Ablaufumgebung auf der Grundlage von Docker, welche auf Container-Technologie basiert
Diese Ablaufumgebung bietet sich an, wenn verschiedene Stages mit minimalem Aufwand implementiert werden sollen. Besonders gut geeignet ist diese Variante für Applikationen, die noch traditionell ausgerichtet sind, bei denen aber bspw. Entwicklungs- und Integrationsumgebungen aufgebaut werden sollen. - Ablaufumgebung auf der Grundlage eines Kubernetes Clusters, welche auf Cloud-Technologie basiert
Diese Ablaufumgebung bietet sich an, wenn es um komplexe, moderne Applikationen geht (z. B. Applikationen oder Plattformen, die auf eine Microservice-Architektur ausgerichtet sind). Weiterhin ist diese Ablaufumgebungsvariante besonders gut geeignet, wenn die Applikation oder Plattform ausfallsicher und hochskalierbar gestaltet werden soll.
Kubernetes ist eine eingetragene Marke von The Linux Foundation in den USA und/oder anderen Ländern.
Neben der Entwicklung von Applikationen besitzen wir auch umfangreiche Erfahrungen im Design, in der Implementierung und im Betrieb ganzer Plattformen.
Als Beispiel einer Plattformentwicklung kann eine IIoT-Plattform genannt werden. Diese kann für Maschinen- oder Anlagenbetreiber implementiert werden, um weltweit eingesetzte Maschinensysteme zentral für Wartungszwecke zu überwachen. Damit die verschiedenen Maschinensysteme die zu überwachenden Signale auf eine möglichst standardisierte Art übertragen, können Services entworfen werden, die die Signale über eine entsprechend designte API (Application Programming Interface) entgegennehmen. Diese APIs werden auf der Anwenderseite (z. B. über IoT Gateways) verwendet, um die Signale an die zentrale Plattform zu senden.
Implementierung
Auf der Grundlage vorher durchgeführter Anforderungsanalysen und anderer Aktivitäten im Bereich der Vorhabensplanung sowie der anschließenden Architektur- und Designentwicklung erfolgt die konkrete Erstellung der Applikation oder Plattform in der Implementierungsphase. Als wichtige Bestandteile unserer Implementierungsstrategie setzen wir Continuous-Delivery- und Continuous-Deployment-Verfahren ein, um bereits zu einem möglichst frühen Zeitpunkt schnell Zwischenergebnisse erzeugen zu können. Diese werden gemeinsam mit dem Auftraggeber bewertet, so dass damit auch agile Softwareentwicklungsmethoden umsetzbar sind.
Eine benutzerfreundliche und leistungsfähige Umsetzung des User Interfaces einer Applikation trägt zu dessen Akzeptanz bei. Das User Interface entscheidet maßgeblich darüber, ob die entwickelte Applikation ihren vorgesehenen Zweck erfüllt und damit zur Verbesserung der Geschäftsprozesse beiträgt. Wir sind in der Lage, drei Typen von Frontend-Applikationen zu implementieren: HTML5-basierte Frontends, mobile Applikationen sowie AR-/VR-Applikationen. Letztere spielen vor allem im Bereich unserer innovativen Produktentwicklung eine Rolle und werden in Dienstleistungen sehr selten angefordert. Um ein ansprechendes User Interface zu entwickeln und zu implementieren, legen wir viel Wert darauf, dass unsere Frontend-Applikationen benutzerfreundlich, ansprechend, responsive und performant sind.
HTML5-basierte Applikationen
HTML5-basierte Applikationen werden auf der Grundlage der Programmiersprachen und Standards wie JavaScript, TypeScript, CSS3 sowie Less oder Sass entwickelt. Ebenso werden Frameworks wie Angular, Ember, Vue.js, Material Design oder Bootstrap eingesetzt.
Erweiterte HTML5-basierte Applikationen
Neben der Umsetzung von Standardfunktionen moderner Frontends sind wir in der Lage, diese zusätzlich mit echtzeitfähigen, grafischen bzw. multimedialen Informationen anzureichern. Dies betrifft u. a. die Integration von dynamischen Signalvisualisierungen (z. B. von Sensordaten), die Integration von Live-Audio- und Live-Videosignalen sowie die Umsetzung von dynamischen 3D-Visualisierungen. In diesem Zusammenhang verwenden wir Technologien bzw. Standards wie Web Sockets, Canvas, SVG, WebRTC oder WebGL.
Mobile Applikationen
Mobile Applikationen können für Smartphones und Tablets entwickelt werden, wobei eine Multiplattformstrategie mit einer Unterstützung von iOS und Android auf der Grundlage nativer Applikationen umgesetzt werden kann. Damit die Entwicklung einer Applikation für zwei Plattformen zu einem guten Preis-/Leistungsverhältnis angeboten werden kann, implementieren wir die mobilen Applikationen auf der Grundlage des modernen Frameworks Flutter.
Ember ist eine eingetragene Marke von Tilde Inc. in den USA und/oder anderen Ländern.
Flutter und das entsprechende Logo sind Marken von Google LLC. Wir werden nicht unterstützt von oder sind verbunden mit Google LLC.
HTML5 Logo ist lizensiert unter Creative Commons Attribution 3.0. HTML5 Logo von World Wide Web Consortium.
IOS ist eine Marke oder eingetragene Marke von Cisco Systems, Inc. in den USA und anderen Ländern und wird von Apple unter Lizenz genutzt.
JavaScript ist eine eingetragene Marke von Oracle Inc. und/oder dessen verbundenen Unternehmen.
TypeScript ist eine Marke von Microsoft Corporation.
Vue.js ist eine eingetragene Marke von Evan You in den USA und/oder anderen Ländern.
WebGL ist eine Marke von Khronos Group Inc.
Die Backend-Implementierung von Applikationen oder ganzen Plattformen kann mit unterschiedlichen Strategien und Technologien umgesetzt werden.
Enterprise-Applikationen auf Basis von Java
Im Bereich der Entwicklung von Enterprise-Applikationen sind wir in der Lage, komplexe Anwendungen auf der Basis des Enterprise Java Stacks zu implementieren. Auf diesem Gebiet verfügen wir Erfahrungen aus über 15 Jahren, die in einer Fülle von Enterprise-Projekten gewonnen wurden. Darüber hinaus sind wir auch mit der alternativen Technologie Spring vertraut und können mittels Spring Boot moderne Cloud-Applikationen auf Basis der CLOUD FOUNDRY Plattform umsetzen.
Microservicebasierte Backend-Lösungen
Im Zusammenhang mit der Implementierung sehr umfangreicher Applikationen bzw. Plattformen, die über einen längeren Zeitraum betrieben und stetig weiterentwickelt werden sollen, sind wir in der Lage, microservicebasierte Backend-Systeme zu entwickeln, die typischerweise auf ein Kubernetes Cluster deployt werden. In diesem Bereich nutzen wir auch die Programmiersprache Go, auf deren Grundlage sich eine microserviceorientierte Architektur besonders gut umsetzen lässt, da für die Microservices keine zusätzlichen Runtime-Umgebungen benötigt werden.
Enterprise-Applikation-Integration
Bei der Implementierung von Backend-Systemen spielen Integrationen mit anderen, bereits beim Auftraggeber vorhandene Applikationen eine sehr wichtige Rolle. Die Umsetzung solcher Integrationsaufgabenstellungen erfolgt unter Nutzung typischer Technologien und Middleware (z. B. die Nutzung von Messaging-Systemen und darauf aufbauende, eventgesteuerte Kommunikationsstrukturen, die eine lose Kopplung zwischen den zu integrierenden Systemen und der neuen Applikation sicherstellen).
Backend-Lösungen mit zusätzlichen Anforderungen
Ein sehr wichtiger Bestandteil der meisten Applikationen sind die Daten, die in dessen Kontext erfasst, verarbeitet und gespeichert werden. Neben typischen relationalen Datenbanken wie MySQL, PostgreSQL oder Oracle verwenden wir für bestimmte Aufgabenstellungen auch hochspezialisierte NoSQL-Datenbanken wie InfluxDB, Dgraph oder MongoDB.
So sind wir bspw. in der Lage, die Open-Source-Datenbank InfluxDB einsetzen, wenn es darum geht, große, zeitbezogenen Datenmengen (z. B. Sensorsignale oder Zustandssignale von Maschinen oder Anlagen) in Echtzeit zu erfassen, um sie detaillierten Analysen (z. B. Predictive Maintenance oder Predictive Quality) zuzuführen. Mittels der Graphdatenbank Dgraph können wir hochkomplexe Datenbestände im Kontext der strukturierten Erfassung von Maintenance-Aktivitäten an Maschinen und Anlagen sehr gut abbilden, so dass eine sehr detaillierte Erfassung von durchgeführten Reparaturen, aufgetretenen Fehlern an bestimmten Baugruppen und verwendeten Ersatzteilen möglich wird, die darüber hinaus auch sehr gut im Kontext eines Lifecycle Managements auswertbar sind.
Dgraph ist eine Marke von Dgraph Labs, Inc.
InfluxDB ist eine Marke von InfluxData, welche nicht mit unseren Leistungen verbunden ist oder diese unterstützt.
Kubernetes ist eine eingetragene Marke von The Linux Foundation in den USA und/oder anderen Ländern.
MongoDB ist eine eingetragene Marke von MongoDB, Inc.
Oracle, Java und MySQL sind eingetragene Marken von Oracle Inc. und/oder dessen verbundenen Unternehmen.
PostgreSQL ist eine eingetragene Marke von PostgreSQL Community Association of Canada.
Spring und Spring Boot sind eingetragene Marken von Pivotal Software, Inc. in den USA und/oder anderen Ländern.
Im Industriebereich bieten wir ebenfalls die Implementierung ganzer Systeme an. Diese bestehen nicht nur aus Softwarekomponenten, sondern auch aus Sensoren, Embedded Systemen, IoT Gateways, Komponenten der KI-Hardware, industriefähigen Serversystemen und optimierten Private-Cloud- oder Edge-Computing-Lösungen. Unsere Dienstleistungen beinhalten:
- Automatisierungsaufgaben inkl. intelligenter Objekterkennung im Kontext intralogistischer Aufgabenstellungen
- OEE-gestützte Produktions- und Prozessüberwachung
- Umsetzung von sensorgestützten Langzeitmesskampagnen, die auch über Wochen und Monate Milliarden von Datensätze beinhalten inklusive der Bereitstellung von Datenvisualisierungen und Analysen für für Datenbestände mit Big-Data-Zahlenreihen
- Implementierung von Sensordatenerfassung und Predictive Maintenance sowie Pedictive Quality auf Grundlage eines modernen Edge-Computing-Ansatzes in Kombination mit Private-Cloud-Implementierungen auf der Basis von Kubernetes
- Sensoren für verschiedenste physikalische Größen mit unterstütztem Interfacestandard wie IO-Link oder Stromschleifenschnittstelle
- Embedded Systeme auf der Grundlage von Arm Prozessoren: Arm Cortex M3 und M4 sowie Arm Cortex A7, A8 und A9
- Eingesetzte Programmiersprachen im Bereich von Embedded Systemen: C, C++ und Rust
- Eingesetzte Programmiersprachen im Bereich des Edge Computings: C++ und Go
- Unterstützte Kommunikationstandards:
- TCP/IP, HTTP und HTTP/2
- OPC Unified Architecture
- IO-Link als unterstützter Standard
- MQTT
- REST, JavaScript Object Notation (JSON)
- Protocol Buffers und gRPC
- Verwendung spezieller KI-Hardware und GPU-beschleunigte Lösungen wie bspw.: Jetson Nano, Jetson AGX Xavier und Kendryte K210
- Implementierung von KI- und Machine-Learning-Algorithmen:
- OpenCL und CUDA im Zusammenhang mit GPU-beschleunigten Algorithmen
- C++ und TensorRT
- C++/Python und TensorFlow
Arm und Cortex sind eingetragene Marken von Arm Limited (oder ihrer Tochtergesellschaften) in den USA und/oder anderen Ländern.
gRPC ist eine eingetragene Marke von The Linux Foundation in den USA und/oder anderen Ländern.
JavaScript ist eine eingetragene Marke von Oracle Inc. und/oder dessen verbundenen Unternehmen.
Kubernetes ist eine eingetragene Marke von The Linux Foundation in den USA und/oder anderen Ländern.
OPC ist eine eingetragene Marke von OPC Foundation.
OpenCL ist eine eingetragene Marke von Apple Inc.
Python ist eine Marke oder eingetragene Marke von Python Software Foundation.
Rust ist eine Marke von Mozilla Foundation in den USA und anderen Ländern.
TensorFlow ist eine eingetragene Marke von Google Inc.
Wir bieten weiterhin die Erstellung einer eigenen Private-Cloud-Instanz auf Basis von Kubernetes an. Der Aufbau einer eigenen Private Cloud kann für ein Unternehmen durchaus deutliche Vorteile gegenüber der Nutzung von Public-Cloud-Anbietern bringen. Eine eigene Private Cloud bietet ein erhebliches Plus seitens der IT-Sicherheit (insbesondere Datensicherheit). Als weiterer Vorteil sind die geringeren Betriebskosten zu sehen. Dies gilt speziell dann, wenn die Cloud dazu dient, dauerhaft bestimmte, komplexe Applikationen mit konstantem Workload zu betreiben.
Die Nutzung von Dienstleistungen zum Aufbau einer Private Cloud stellt für den Auftraggeber auch einen sicheren Weg dar, um die eigene IT-Infrastruktur an neue Anforderungen anzupassen und leistungsfähiger zu gestalten. Zudem kann die konkrete Gestaltung sehr gut an die spezifischen Gegebenheiten angepasst werden. Darüber hinaus kann bei Bedarf auch eine Unterstützung zum Betrieb der Private Cloud oder beim Aufbau von Technologie-Know-how geleistet werden.