Software-Entwicklung
denn wer Digitalisierung sagt, meint letztendlich "Prozesse in Software abbilden"!
Von der Idee über die Programmierung bis zum Produkt!
Oft wird Software-Entwicklung mit Programmierung gleichgesetzt. Sie beginnt aber viel früher - bei der Anforderungsaufnahme - und geht mit der Erstellung von Anwenderdokumentation und Schulungskonzepten auf der einen, und Herstellererklärungen und Zertifizierungen auf der anderen Seite auch deutlich weiter. Darüber hinaus dürfen auch Aspekte wie Support, Gewährleistung sowie Qualitätssicherung, Pflege und Weiterentwicklung nicht übersehen werden.
Anforderungsmanagement
Für die Durchführung einer Software-Entwicklung ist ein klares Verständnis und eine saubere Dokumentation der Anforderungen essentiell! Dabei müssen die Vorstellungen und Erwartungen des Unternehmers und des Anwenders mit definierten Qualitätskriterien zu funktionalen und nicht-funktionalen Anforderungen konsolidiert werden, um daraus eine Beschreibung einer kleinstmöglichen Umsetzung und der erforderlichen Weiterentwicklungsschritte zu erstellen.
Unter dem Deckmantel eines modernen agilen Vorgehensmodels wird diese Aufgabenstellung oft als unnötig und veraltet dargestellt. In der Realität stellt man aber fest, dass sehr viel Zeit darauf verwendet wird, Missverständnisse und daraus resultierende Fehlentwicklungen zu beseitigen.
Vorgehen
Ich halte ein agiles, iteratives Vorgehen für besonders kundenfreundlich und für alle Beteiligten risikoarm. Agil bedeutet dabei, dass nicht jedes Detail zunächst spezifiziert wird, sondern mit der Programmierung anhand einer Beschreibung des gewünschten Ergebnisses begonnen wird. Die Wahrscheinlichkeit, dass diese Umsetzung die Erwartungen zu 100% trifft ist eher gering. Daher erfolgt nach einem Feedback eine Nachbesserung. Dieser Kreislauf stellt dann die Iteration des Vorgehensmodells dar.
Mit dieser Methodik wird zunächst die kleinstmögliche aber dennoch vollständige und abgeschlossene Umsetzung realisiert. Hierbei spricht man vom "minimal viable product" oder MVP, welches im Folgenden im Feldtest erprobt und stabilisiert wird und als Ausgangsbasis für die Weiterentwicklung und Anwenderdokumentation dient.
Die Weiterentwicklung erfolgt in kleinen Einheiten, die dem Produkt eine abgeschlossene Funktionalität hinzufügen. Mehrere dieser Einheiten werden dann zu einer neuen Version zusammengefasst und wiederum erprobt und stabilisiert.
Webanwendungen
Verteilte Systeme und ihre Anwender können aus technischen Gründen nicht direkt miteinander in Kontakt treten. Daher sind Knotenpunkte erforderlich, die den Informationsfluss kontrollieren sowie Daten verarbeiten und persistieren. Wir erstellen diese Knotenpunkte mit moderner, verteilbarer Hochleistungstechnologie NodeJS oder kostenoptimiert als Run-anywhere-PHP-Anwendung, die nur geringe Ansprüche an ihre Laufzeitumgebung stellt.
Webanwendung heißt nicht zwingend, dass die Software im Internet laufen muss! Da Webanwendungen den großen Vorteil haben, dass sie mit vielen Arbeitsplatzsystemen funktionieren und auf dieser Seite keine Pflegeaufwände generieren, kann es in vielen Fällen sinnvoll sein, eine Lösung als Webanwendung, die lokal in Ihrem Netzwerk läuft, zu realisieren.
Smartphoneanwendungen
Das Smartphone ist heute die universelle Benutzerschnittstelle, die fast jeder in der Tasche hat. Durch den vorhandenen Internetzugang ist der Anwender nicht von vorhandener Infrastruktur oder räumlicher Nähe zum bedienten System abhängig. Das macht Smartphoneanwendungen sehr beliebt und je nach Zielgruppe schon fast unverzichtbar.
Der Aufwand für die Erstellung und Pflege von Anwendungen multipliziert sich mit der Anzahl der unterstützen Umgebungen. Durch den Einsatz der Framework-Technologie Apache-Cordova minimieren wir den Aufwand, indem eine Entwicklung die automatische Generierung von Anwendungen für alle unterschiedlichen Smartphones erlaubt. Durch die Nutzung von Software, die bereits für Ihre Webanwendungen erstellt wurde, optimieren wir darüber hinaus den Aufwand, das Look-and-Feel und die Software-Wartung.
Da viele Fernseher und Streaming-Systeme auf der gleichen Technologie aufsetzen wie Smartphones, lassen sich die Vorteile auch für die Erstellung von Präsentationssystemen nutzen.
Desktopanwendungen
Die Realisierung von Webanwendungen stellt eine moderne und schnelle Art der Software-Entwicklung dar. Sie stößt jedoch an ihre Grenzen, wenn mit Hardware oder lokalen Systemen am Arbeitsplatz des Anwenders interagiert werden soll. Wir schließen diese Lücke mit der Entwicklung von Anwendungen, die auf der gleichen Technologie aufbauen wie Webanwendungen und daher so betriebssystemunabhängig sind wie das Internet selbst.
Thingworx
Thingworx ist eine kommerzielle IoT-Plattform von PTC , die alle Aspekte der modernen Vernetzung in einem Produkt abdeckt. Durch die enge Verzahnung von Geräte-Verbindung, Daten, Business-Logic und Benutzerschnittstelle ist eine extrem schnelle Umsetzung von digitalen Geschäftsmodellen möglich.
Mit mehreren Jahren Erfahrung in der Entwicklung von Thingworx-Anwendungen und als Trainer für In-House-Entwicklung auf Thingworx-Basis unterstütze ich Sie beim Einsatz dieses innovativen Produkts.