Individuelle Softwareentwicklung
für industrielle Anwendungen
Mit der hohen Entwicklungsgeschwindigkeit auf allen technologischen Ebenen ändern sich die Anforderungen in der Industrie, aber auch die Bedürfnisse der Kunden steigen ständig. Daraus ergeben sich komplexe Aufgaben, die mit Standardsoftware selten ausreichend gelöst werden können. Daher muss Software meist individuell für den jeweiligen Anwendungsfall entwickelt werden. Nur so können Unternehmen alle Potenziale zum strategischen Vorteil nutzen, die sich durch die neuen Möglichkeiten bieten. Genau hierauf zielt unser Angebot der individuellen Softwareentwicklung.

„Vor zwanzig Jahren habe ich unser Unternehmen gegründet, um anspruchsvolle, individuelle Software und durchdachte Architektur für komplexe, variantenreiche Maschinen und Anlagen zu entwickeln. Das ist auch heute noch unser Spezialgebiet. Und jetzt stehen uns phantastische Technologien zur Umsetzung noch intelligenterer Lösungen zur Verfügung: Edge- und Cloud Computing, Machine Learning und Künstliche Intelligenz, Simulation und Augmented Reality. Damit können wir nicht nur die Effizienz Ihrer Anlagen und Systeme nochmals nachhaltig steigern, sondern in Ihrem Business die Grundlagen für völlig neue Geschäftsmodelle erschaffen.
Mit den wachsenden Möglichkeiten werden natürlich auch die Anforderungen an die Softwareentwicklung immer unübersichtlicher und herausfordernder. Außerdem gewinnen alle Aspekte des Life-Cycle-Managements und die Beherrschung der Variantenvielfalt auch für Software an zentraler Bedeutung.
Deshalb ist das professionelle methodische Vorgehen noch wichtiger als bisher schon: flexible Softwarearchitekturen, nicht-funktionale Qualitätskriterien, Clean Code, Design Thinking und DevOps sind nur einige Stichpunkte. Wir nutzen die modernsten Werkzeuge und wenden die erfolgreichsten Methoden an, mit dem einen Ziel, für unsere Kunden die intelligentesten und nachhaltigsten Softwarelösungen zu entwickeln.
Ganz gleich aus welcher Branche Sie kommen, welche Aufgabenstellung Sie haben oder wie flexibel die Zusammenarbeit mit Ihrem eigenen Entwicklungsbereich gestaltet sein soll: Wir entwickeln individuelle, anspruchsvolle Softwarelösungen für innovative Unternehmen.
Die Zukunft wird programmiert und mit Software zur Realität.“
Wolfram Schäfer
Die Digitalisierung im industriellen Umfeld ist nicht
aufzuhalten
Digitale Technologien, wie IoT-Kommunikationstechnologien, Edge & Cloud Computing oder Machine Learning sind Möglichmacher (Enabler) der digitalen Transformation der Industrie hin zu einer Produktion im Sinne von Industrie 4.0. Diese eröffnet Potenziale für weitere Effizienzsteigerungen, intelligentere Prozesse und neue Geschäftsmodelle. Kennzeichnend für den digitalen Wandel ist die rasante Weiterentwicklung dieser Technologien.
Technologien als Enabler für die digitale Transformation:
- Vernetzung & Digitalisierung im Sinne von Industrie 4.0
- Edge/ Cloud Computing
- Machine Learning & Künstliche Intelligenz
- IIoT – Industrial Internet of Things
- Digitaler Zwilling & Simulationsmodelle
- Virtual & Augmented Reality (VR, virtuelle Realität und AR, erweiterte Realität)
Software hat DIE zentrale Bedeutung für die Zukunftsfähigkeit der Investitionsgüterindustrie
Der Schlüssel, um den technologischen Wandel im industriellen Umfeld zu meistern und aktiv zu gestalten, liegt in der individuellen Softwareentwicklung. Nur durch den Einsatz intelligenter Softwarelösungen gelingen die notwendigen Innovationen, um weiterhin wettbewerbsfähig zu bleiben und Vorteile durch Differenzierung zu erzielen.
Die Anforderungen an Softwareentwicklung verändern sich grundlegend und rasant
Früher

Heute

Zukünftig

Software wird vor allem dort eingesetzt, wo unbedingt notwendig
Bei Produkten wird Software als zentrale Komponente zur Funktionserfüllung eingesetzt
In der Produktion dienen Softwarelösungen zur Visualisierung und Prozesssteuerung
Software wird als strategisches Schlüsselelement bei Produkten, Dienstleistungen und Geschäftsmodellen eingesetzt
Software bewirkt „echte“ Wertschöpfung durch Technologien wie Machine Learning & Künstliche Intelligenz
Softwareentwicklung im industriellen Umfeld wird eher „stiefmütterlich“ betrieben
Unternehmen haben meist eigene Kompetenzen in der Softwareentwicklung
Unterstützung durch Dienstleister mit breitem Kompetenzspektrum oder „Inselexpertise“
Unternehmen erkennen die Software(-kompetenz) als strategisches Schlüsselelement für den Unternehmenserfolg
Integrierte Zusammenarbeit mit spezialisierten Partnern
Entwicklung orientiert sich an den vorhandenen Kompetenzen
Herausforderung, mit den Entwicklungen Schritt zu halten und den Überblick zu bewahren
Eigene Kompetenzen werden nach den Bedarfen der Anwendung geschult/ gesucht
Herausforderung, interne & externe Teams in einer agilen & vertraulichen Zusammenarbeit zu führen
Technologien & Kompetenzen sind Innovationstreiber für Produkte, Dienstleistungen und Geschäftsmodelle vom Unternehmen bis zum Kunden, über den gesamten Produktlebenszyklus und der Kundenbeziehung
Früher

Software wird vor allem dort eingesetzt, wo unbedingt notwendig
Softwareentwicklung im industriellen Umfeld wird eher „stiefmütterlich“ betrieben
Entwicklung orientiert sich an den vorhandenen Kompetenzen
Heute

Bei Produkten wird Software als zentrale Komponente zur Funktionserfüllung eingesetzt
In der Produktion dienen Softwarelösungen zur Visualisierung und Prozesssteuerung
Unternehmen haben meist eigene Kompetenzen in der Softwareentwicklung
Unterstützung durch Dienstleister mit breitem Kompetenzspektrum oder „Inselexpertise“
Herausforderung, mit den Entwicklungen Schritt zu halten und den Überblick zu bewahren
Eigene Kompetenzen werden nach den Bedarfen der Anwendung geschult/ gesucht
Zukünftig

Software wird als strategiches Schlüsselelement bei Produkten, Dienstleistungen und Geschäftsmodellen eingesetzt
Software bewirkt echte Wertschöpfung durch Technologien wie Machine Learning und Künstliche Intelligenz
Unternehmen erkennen die Software(-kompetenz) als strategisches Schlüsselelement für den Unternehmenserfolg
Integrierte Zusammenarbeit mit spezialisierten Partnern
Herausforderung, interne & externe Teams in einer agilen & vertraulichen Zusammenarbeit zu führen
Technologien & Kompetenzen sind Innovationstreiber für Produkte, Dienstleistungen und Geschäftsmodelle vom Unternehmen bis zum Kunden, über den gesamten Produktlebenszyklus und der Kundenbeziehung
Herausforderungen für individuelle Softwareentwicklung in der Investitionsgüterindustrie
Hohe Varianz der Maschinen, Anlagen & Produkte
Aufgrund sich immer schneller ändernden Anforderungen in der produzierenden Industrie existieren meist mehrere Varianten bzw. Generationen verschiedener Baureihen „nebeneinander“. Dementsprechend müssen parallel ältere und bereits weiterentwickelte Maschinen mit prinzipiell den gleichen Funktionen (Softwareapplikationen) betrieben werden.
→ Softwarelösungen und Updates müssen diesen Spagat der Modularität und Aufwärts-/ Abwärtskompatibilität bewältigen!
Lange Produktlebenszyklen
Maschinen, Anlagen und Komponenten haben i. d. R. eine sehr hohe Lebensdauer. Sie werden zudem im Laufe der Zeit erweitert, umgebaut und modernisiert. Das muss eine „gute“ Software im Zusammenspiel der verschiedenen Elemente zulassen bzw. anpassungsfähig sein.
→ Die Softwarelösungen müssen updatefähig und über viele Releases kompatibel sein und bleiben!
Vergleichsweise geringe Anzahl an Nutzern
In der Investitionsgüterindustrie ist die Nutzerzahl im Vergleich zu anderen Industrien eher gering. Deshalb gilt hier für die Softwareentwicklung die besondere Maßgabe der Wirtschaftlichkeit bei gleichzeitig sehr hohem Qualitätsanspruch.
→ Die Softwarearchitektur und die Methodik in der Entwicklung müssen den Ansprüchen an Effizienz, Nachhaltigkeit und Güte gerecht werden!
Installationen verschiedener Konfiguration & Generation sind parallel in Betrieb
Infolge der hohen Varianz und Produktlebensdauer sind zeitgleich Maschinen, Anlagen und Komponenten mit unterschiedlichem Funktionsumfang und Versionierung in Betrieb. Für Hersteller und Betreiber ist das eine Herausforderung. Für Softwarelösungen resultiert dadurch immer ein gewisser Pflegeaufwand.
→ Bei der Softwareentwicklung (Stichworte: Wartbarkeit, Verfügbarkeit der eingesetzten Technologie) und in der Entwicklungsorganisation (Kapazität, Know-how) muss das bedacht werden!
Veränderungen bieten Chancen, neue Potenziale zu nutzen
Dadurch, dass gute Individualsoftware allen beschriebenen Kriterien gerecht werden soll, bietet sich stets die Chance, den Veränderungsdruck strategisch für Neues zu nutzen. Zusammen mit der laufenden Weiterentwicklung innovativer Technologien, können z. B. neue, lukrative Geschäftsmodelle entwickelt und angeboten werden.
Laufzeit-/ nutzungsabhängige Vergütungsmodelle
- nach der Nutzungsdauer von Maschinen (Zeit, „Pay-per-Use“)
- nach den produzierten Stückzahlen (Ergebnis, „Performance-based Contracting“)
- nach der verwendeten Belastung (Leistung)
- nach der Anzahl der Nutzung (Lizenzmodelle)
- Freischaltung spezieller Funktionen, evtl. kostenlos für einen Testzeitraum („Rent instead of Buy“)
Weiterentwicklung der Software
- während des Betriebs können Softwarefunktionalitäten weiter- oder neuentwickelt werden („Aftersales“)
- anbieten neuer Funktionalitäten/ Features für bereits ausgelieferte Maschinen („Upgrade“)
Mit zunehmender Bedeutung von Software wachsen auch die Anforderungen daran
- Usability: Ziel, die Nutzung einfach zu machen, fehlerfrei zu gestalten unter Beachtung des Nutzungskontextes und stets orientiert am Nutzer
- User Experience: Schaffung eines positiven Benutzererlebnisses (Stichwort „Gamification“)
- Einfaches Deployment auf unterschiedliche Zielsysteme
- Plattformunabhängigkeit
- kontinuierliche Erweiterung bei laufenden Betrieb der Software
- Nutzung auf unterschiedlichsten Endgeräten, wie z. B. Laptop, Tablet und Smartphone (Stichwort „Responsive Design“
- ortsunabhängige Nutzung der Software
- Geschwindigkeit bei der Entwicklung
- Berücksichtigung funktionaler Qualitätsaspekte
- Berücksichtigung nicht-funktionaler Qualitätsaspekte (Wartbarkeit, Erweiterbarkeit, Wiederverwendbarkeit)
Unsere Erfolgsfaktoren
Um diesen hohen Ansprüchen und Trends gerecht zu werden, flexibel für die Nutzung neuer Chancen zu bleiben und aus unserer über 20-jährigen Erfahrung sind dies die entscheidenden Erfolgsfaktoren in der individuellen Softwareentwicklung:
Flexible Softwarearchitekturen
Einsatz von On-Premise bzw. Cloud-Lösungen
Bei einer On-Premise Lösung wird die Software auf einem Server im Netzwerk des eigenen Unternehmens installiert und betrieben. Vorteile: Maximale Kontrolle über die Daten (auch Datenschutz), uneingeschränkter Zugriff und hohe Verfügbarkeit. Deshalb setzen wir häufig sog. Edge-Cloud-Lösungen ein.
Bei Cloud-Anwendungen läuft die Software bei einem Cloud-Anbieter. Vorteile: Maximale Skalierbarkeit, überschaubare Kosten (keine eigene Wartung) und Zugriff von jedem Ort.
Meist bietet sich als Lösung eine optimale Kombination aus Edge-Cloud und Cloud-Lösungen an, um die Vorteile von beiden Technologien zu kombinieren.
Berücksichtigung verschiedener Schnittstellen
Für Edge-Cloud und Cloud-Lösungen, bei diversen Anbietern
- Plattformen
- Technologien
Moderne, offene und zukunftsfähige Softwareentwicklungswerkzeuge
Wir verfolgen immer die Strategie, für die jeweilige Problemstellung das richtige Lösungskonzept aus Softwarearchitektur, Programmiersprachen und dem Zusammenspiel von Tools zu erarbeiten. Wir arbeiten plattformunabhängig und sind offen für alle Programmiersprachen. Deshalb legen wir großen Wert auf die stetige Weiterentwicklung unserer eigenen Experten. Dabei ziehen wir in Projekten auch in Betracht, ob absehbar in Zukunft Softwareentwickler mit den entsprechenden Fähigkeiten und Kompetenzen verfügbar sind.
Microsoft.NET
C# / C++
WPF / ASP.NET
Qt
JavaScript / HTML
Java
Entity Framework
SQl / MySQL / PostgreSQL
Influx / Mongo
Windows
Linux
Android
Azure
aws
Strukturiertes und Tool-gestütztes Vorgehen bei der Softwareentwicklung: Continuous Integration, Continuous Delivery und Continuous Deployment
In einem professionellen Entwicklungsprozess werden bestehende Funktionalitäten/ Module bereits während der Programmierung mittels automatisiert durchgeführter Tests abgesichert.
Absicherung der Qualität über den gesamten Entwicklungsprozess
Änderungswünsche können noch flexibler berücksichtigt werden
Hierfür setzen wir entsprechende Systeme ein und implementieren sie in unseren Entwicklungsprozess des Continuous Development, der aus den folgenden Phasen besteht:
Continuous Integration (CI)
Automatisierter Testprozess, bei dem neu geschriebener Code sofort getestet und Softwarekomponenten zu einer Anwendung zusammengeführt werden.
Continuous Delivery (CD)
Automatisierter Releaseprozess, bei dem Änderungen und Erweiterungen am Code automatisiert und sofort an den Endnutzer ausgeliefert werden; Fehler und Ursachen können aufgrund der kleinen Entwicklungsschritte schnell identifiziert werden.
Continuous Deployment (CD)
Sind die automatisierten Tests erfolgreich, werden erfolgte Änderung am Code automatisiert in die aktuelle Version der Software implementiert, ohne weitere Freigaben.
- Ständige Verfügbarkeit eines ausführbaren Systems
- Frühzeitiges Erkennen von Problemen bei der Integration
- Steigerung der Effizienz bei der Softwareentwicklung
- Durchführung von automatisierten Tests (Unit-/ Regressions-Tests)
Weitere qualitätssichernde Maßnahmen
Code-Review ist die effizienteste Methode, um die Softwarequalität nachhaltig zu steigern. Die ständige Analyse des Source-Codes ermöglicht dem Entwickler eine iterative Optimierung. Z. B. Gitlab ist eine Sammlung von Web-Applikationen, welche die Entwickler unterstützt über den Source-Code und dessen Änderungen zu kommunizieren.
Review des Source-Codes nach dem „Vier-Augen-Prinzip“ durch andere Entwickler
Berücksichtigung & Steigerung nicht-funktionaler Qualitätsmerkmale
Effiziente Möglichkeit zur Einbindung von Kompetenzen anderer Entwickler
Erzielung einer wartbaren und erweiterbaren Software
Effektive Unterstützung einer verteilten, dezentralen Arbeitsweise Unabhängiges Arbeiten an gleicher Software-Version möglich
Software-Entwicklung und ‑Anpassung auch an externen Standorten (z. B. vor Ort beim Kunden)
Spätere Versionierung der Änderungen und Tool-gestützte Zusammenführung im zentralen Repository
Kontinuierliche Überarbeitung einer Software (meist) unter Beibehaltung des Funktionsumfangs, mit dem Ziel der Verbesserung der Architektur, Optimierung des Codes und Beseitigung von Code-Smells (z. B. Code-Duplikate)
Refactoring: Strukturverbesserung von Quelltexten unter Beibehaltung des bisherigen Programmverhaltens
Restrukturierung: Anpassung der Software bzw. von Modulen an neue Technologien Steigerung der Performance einer Software
Erleichterung der Weiterentwicklung einer Software
Dieses Prinzip besagt, dass eine Funktion entweder eine Aktion durchführt (Command) oder Werte abfragt, also Daten an den Aufrufer zurückgibt und niemals beides in einer Funktion tun sollte. Dadurch entsteht „sauberer“ Quellcode, der intuitiv verständlich ist. Stabilere und effizient wartbarere Programme
Kürzere Entwicklungszeiten bei Funktionserweiterung und Fehlerbehebungen
Automatisierte Softwaretests lohnen sich insbesondere bei agilen Projekten, da so einfach und regelmäßig Integrations- und Regressionstests durchgeführt werden können. Dafür müssen bereits am Beginn der Entwicklung die entsprechenden Voraussetzungen geschaffen und während der Entwicklungsphase berücksichtigt werden: Testbarkeit ermöglichen, Testarchitektur für Komponenten- oder Unittests festlegen, Konventionen und Standards für fremden Sourcecode definieren, aussagekräftige Reportings.
Nicht-funktionale Anforderungen an Individualsoftware
Die Erfüllung funktionaler Qualitätskriterien in der individuellen Softwareentwicklung ist wichtig, aber für uns selbstverständlich. Wir legen außerdem einen besonderen Fokus auf nicht-funktionale Anforderungen:
Wartbarkeit
Möglichkeit der leichten Anpassung der Software ohne großen Aufwand an geänderte Spezifikationen. Wartbare Software kann leicht modifiziert werden, d. h. Änderungen (z. B. Fehlerbehebungen) sind ohne großen Aufwand und Risiko möglich.
Erweiterbarkeit
Möglichkeit der Erweiterung der Software um neue Anforderungen (z. B. Funktionen, Maschinen-/ Steuerungsumgebung). Erweiterbare Software kann einfacher z. B. an neue Maschinenvarianten angepasst werden oder ist ohne großen Aufwand skalierbar.
Wiederverwendbarkeit
Verwendung von Softwarebausteinen ganz oder teilweise für mehrere Maschinen/ Baureihen, Anlagen bzw. Projekte.
Werden diese Kriterien bei der Konzeption und Programmierung beachtet, schafft man nachhaltige Softwarelösungen, die auf lange Produktlebenszyklen ausgelegt sind. Dies ist insbesondere im Investitionsgüterbereich bei Laufzeiten von 15–20 Jahren ein wichtiger Faktor.
Agile Softwareentwicklung mit Methodik
Das methodische Vorgehen ist die Schlüsselkompetenz in der agilen Entwicklung von Software für mechatronische Systeme. Wir wenden effiziente und erprobte Methoden generell in allen Softwareentwicklungsprojekten an, sowohl im Hochsprachenbereich, als auch im Bereich der SPS-Softwareentwicklung.
Design Thinking
SCRUM
Kanban
DevOps
Jira
Confluence
TFS
Enterprise Architect
GitLab
Jenkins
Nexus
Rancher OS
Docker
Design Thinking
Beim Ansatz des Design Thinking wird das Ziel verfolgt, Innnovationen zu entwickeln, die sich am Nutzer und dessen Bedürfnissen orientieren. Dabei stehen weniger die „harten“ technischen Anforderungen im Vordergrund, sondern vor allem die „weicheren“ Wünsche aus Sicht der Anwender. Während der Entwicklung wird stets versucht, mit möglichst geringem Aufwand einen ersten Lösungsansatz darzustellen („Minimum Viable Product“, MVP) und dieses abzustimmen.

Anwendung des agilen Vorgehensmodells SCRUM
- Sehr effiziente Arbeitsweise im interdisziplinären Team
- Regelmäßig funktionsfähige Softwarestände und termingerechte Umsetzung
- Verbesserte Motivation und Einbindung der Mitarbeiter
- Schnellere Reaktion auf geänderte Anforderungen
- Höhere Kundenorientierung

Optimierung der Durchlaufzeit mit Kanban
Kanban ist ein nützliches Framework in der agilen Softwareentwicklung. Dazu werden Kapazitäten in Echtzeit kommuniziert und alle Aufgaben völlig transparent dargestellt. Die einzelnen Aufgabenelemente werden auf einem Kanban Board visuell dargestellt, sodass sich die Teammitglieder jederzeit einen Überblick über den Status der Arbeitsschritte verschaffen können.
- Kürzere Durchlaufzeiten
- Weniger Engpässe
- Visuelle Darstellung von Softwaremetriken
- Continuous Delivery

DevOps
Der Begriff setzt sich aus „Dev“ (Development, Entwicklung) und „Ops“ (Operations, Vorgänge) zusammen. Dabei werden die eigentlich grundverschiedenen Bereiche der Softwareentwicklung und der IT-Betrieb zusammengeführt.
- Verbesserung der Zusammenarbeit von Teams
- Steigerung der Produktivität
- Erhöhung der Entwicklungsgeschwindigkeit
- Verbesserung der Software

Unser Verständnis von Exzellenz in der
Softwareentwicklung
Wir sind davon überzeugt, dass die digitale Transformation in der Industrie der Schlüssel zu neuen Potenzialen und die unbedingte Voraussetzung für weiteren Erfolg in der Zukunft ist. Das bedeutet für uns:
- Tiefe Überzeugung, dass die Softwareentwicklung eine sehr verantwortungsvolle Aufgabe ist, das Ergebnis am Nutzen und Mehrwert orientiert sein muss und den unternehmerischen Erfolg nachhaltig beeinflusst.
- Offenheit für neueste Trends, Technologien und Methoden und dauerhafte Lernbereitschaft.
- Agile Arbeitsweise in interdisziplinären und flexiblen Kompetenz-Teams mit tool-gestützten Methoden und dem Fokus auf Time-to-Market (TTM).
- Große Erfahrung und Praxisnähe mit hohem Verständnis für die Branchen der Kunden und die Funktionsweisen von Maschinen und Anlagen.
- Blick über Grenzen hinweg mit Verständnis für Anforderungen und Chancen in der Zukunft.
- Enge Zusammenarbeit mit Hochschulen, spezialisierten Partnern, Innovatoren und Fachverbänden.
Es gibt keine Patentrezepte!
Die Anforderungen für unterschiedliche Applikationen in den verschiedenen Branchen sind sehr vielfältig und individuell. Deshalb gibt es meist keine passenden Standardlösungen bzw. ist Individualsoftware meist ungeeignet. Als Strategie gilt immer nur, dass für die jeweilige Problemstellung das richtige Lösungskonzept aus Softwarearchitektur, Programmiersprachen und dem Zusammenspiel von Tools erarbeitet werden muss. Dabei gilt es die verschiedensten Erfordernisse, die manchmal gegensätzliche Ansätze erfordern können, gegeneinander abzuwägen, um eine für alle Belange optimale Lösung zu finden.
Ein nicht zu unterschätzender Faktor ist dabei auch die Verfügbarkeit an Softwareentwicklern mit den erforderlichen Fähigkeiten und Kompetenzen, heute und in der Zukunft. Deshalb legen wir großen Wert auf die stetige Weiterentwicklung unserer eigenen Experten. Unter diesem Aspekt berücksichtigen wir bei der Projektplanung auch stets die internen Möglichkeiten bei unserem Kunden, falls Systeme später hausintern gepflegt werden sollen.
Wir verfolgen immer das Ziel, für Sie flexible und zukunftsfähige Softwarelösungen zu entwickeln, an denen Sie funktionell und wirtschaftlich lange Freude haben.
Unser Angebot
Unsere Kernkompetenz als Dienstleister liegt in der Entwicklung anspruchsvoller, individueller Softwarelösungen im industriellen Umfeld. Dabei erstellen wir für Sie neue, maßgeschneiderte Anwendungen oder nehmen notwendige Anpassungen an Ihrer bestehenden Infrastruktur vor. Dafür bieten wir Ihnen Know-how, Kapazität und Erfahrungen aus unterschiedlichsten Projekten und Branchen. Wir verstehen uns als Ihr verlässlicher Entwicklungspartner und Impulsgeber: Von der Beratung und Konzeption, über die Programmierung, Implementierung und Qualitätstest bis zur kontinuierlichen Weiterentwicklung der Software, decken wir alle Phasen von individuellen Softwareprojekten ab.