Rufen Sie uns an
Telefon 0721 – 986 149 90
(Mo – Fr, 9 – 18 Uhr)
Industrielle Bussysteme
Wir alle kennen Busse aus dem Alltag: Ein Fahrzeug bringt zahlreiche Menschen von Haltestelle zu Haltestelle, indem es eine feste Route immer wieder abfährt. In der Automatisierungstechnik und der Informationstechnik bezeichnen Bussysteme ein ganz ähnliches Verfahren: Über eine Leitung werden viele Geräte miteinander verbunden und können so untereinander Daten austauschen. Im Bild des ÖPNV entsprechen die Daten also den Fahrgästen und die Geräte den Haltestellen.
Der Vorteil liegt klar auf der Hand: Die Verkabelung einer Gesamtanlage wird vereinfacht und die Software kann über ein standardisiertes Protokoll mit allen angeschlossenen Geräten interagieren. Der Datenfluß der Anlage kann an einem Punkt protokolliert und im Fehlerfall ausgewertet werden.
Auch die Hersteller der Geräte haben es leichter: Sie können sich einen bestehenden Standard zunutze machen und sind unmittelbar integrierbar. Und uns Softwareentwicklern erleichtern Bussysteme die Arbeit, weil wir auf bestehende und erprobte Module zurückgreifen können.
Wir haben bereits zahlreiche Bussysteme angesteuert: Bewährte Klassiker wie den Profibus, CAN-Bus, Modbus und den Bus, den mittlerweile jeder nutzt: USB. Der Universal Serial Bus ist das beste Beispiel für die Vorteile eines Bussystems im Alltag.
Sie haben einen Anwendungsfall für ein Bussystem? Treten Sie mit uns in Verbindung!
Sicherer Zugriff aus dem Internet auf lokale Maschinen
Um sich mit dem Smartphone oder Tablet über den Betriebsstatus oder das Produktionsvolumen einer Maschine zu informieren, braucht man eine direkte Datenübertragung zu der Maschinensteuerung oder die Daten müssen zugreifbar im Internet hinterlegt sein. Beide Ansätze haben Nachteile: Macht man die gesamte Maschinensteuerung im Internet abfragbar, exponiert man sich gleichzeitig gegenüber Angreifern aus dem Internet. Lässt man hingegen seine Maschinensteuerung die Daten in die Cloud schreiben, verliert man die Kontrolle über wichtige Betriebsdaten. Spätestens bei personenbezogenen Daten, beispielsweise dem Bedienernamen, greift die Datenschutz-Grundverordnung (DSGVO) und ordnet den Schutz dieser Daten an.
In unserer Lösung, die Daten über ein Cloud-Relais abzurufen, fungiert die Cloud nur als Verbindungsstelle: Die Maschinensteuerung verbindet sich mittels Websocket, einer Erweiterung des HTTPS-Protokolls, mit dem Verbindungsrechner. Dorthin werden keine Daten hochgeladen, sondern die Maschinensteuerung bleibt lediglich „in der Leitung“ und wartet auf Anfragen.
Damit können Sie von überall auf der Welt über das Cloud-Relais auf die Steuerung zugreifen. Vorausgesetzt natürlich, Sie haben die richtigen Zugangsdaten. Denn nur dann vermittelt das Cloud-Relais zur Maschinensteuerung weiter und macht die Daten exklusiv für Sie verfügbar – verschlüsselt und gesichert.
Gerne bringen wir auch Ihre Maschine sicher ins Internet.
Monitoring von Produktivsystemen
Jedes Softwaresystem, das längere Zeit ohne Unterbrechung im Einsatz ist, kann in einen Zustand geraten, der unweigerlich zum Ausfall führt. Um solche Zustände möglichst früh zu erkennen und gegensteuern zu können, müssen die wesentlichen Betriebswerte wie Speicherverbrauch und durchgeführte Arbeitsschritte (meist als „Operationen“ bezeichnet) dauernd in kurzen Abständen überprüft werden.
Dieses regelmäßige Überprüfen nennt man Monitoring. Meistens lässt es sich gut automatisieren, so dass praktisch keine Betriebskosten anfallen. Das Monitoring wird häufig als zweite, separate Anwendung betrieben, um bei einem Ausfall des Hauptsystems nicht auch dessen Überprüfung zu verlieren. Bei einem Vorkommnis warnt das Monitoring auf dem festgelegten Weg, beispielsweise per E-Mail, SMS, Anruf mit Sprachsynthese oder Warnlampe im Betrieb.
Zusätzlich zur Sicherstellung der Einsatzbereitschaft erhebt das Monitoring auch statistische Daten zu Anzahl und Dauer von Ausfällen oder Störungen. Auf diese Weise erhalten Sie einfach und direkt die Antwort auf die Frage, wie stabil Ihr System wirklich ist und ob es wirklich immer an Weihnachten streikt. Ein einfaches Monitoring lässt sich mit wenig Aufwand realisieren.
Basiswerkzeuge moderner Softwareentwicklung
Jedes gut funktionierende Softwareentwicklungsteam hat zahlreiche Software-Werkzeuge im Einsatz, um die tägliche Arbeit zu erleichtern. Aus unserer Sicht machen vier Werkzeuge den Unterschied:
Ihnen fehlt eines der hier beschriebenen Werkzeuge? Wir können Sie schnell und einfach damit ausstatten.
Wartung und Pflege von Software
Software selbst altert nicht – ein Programm, das nicht verändert wurde, führt heute die gleichen Abläufe durch wie vor zehn Jahren. Das ist allerdings weniger gut, als es zuerst klingt, denn alles um die Software herum ändert sich. Angefangen von der Hardware über das verwendete Betriebssystem bis zu den eingesetzten Programmbibliotheken entwickelt sich jeder Aspekt rasant weiter. Spätestens wenn die Software über das Internet erreichbar ist, muss die Betriebssicherheit kontinuierlich überprüft werden.
Bei der Wartung hat die Software konkreten Bedarf an Anpassungen, beispielsweise weil das Betriebssystem erneuert wurde. Wartungsarbeiten sind oft kurzfristig und dienen der Wiederherstellung der Einsatzbereitschaft. Pflegearbeiten an der Software haben das Ziel, die Sicherheit und Einsatzbereitschaft vorsorglich zu verbessern. Gerade bei der Sicherheit im Internet ist es wichtig, immer auf aktuellem Stand zu sein.
Unser Fokus ist bei diesen Arbeiten, die vorhandenen Funktionen der Software zu erhalten und mit geringem Aufwand an die neuen Gegebenheiten anzupassen. Damit das möglich ist, muss die Software von Anfang an mit dem Ziel der leichten Wartbarkeit entwickelt werden. Das ist vergleichbar mit modernen Smartphones, bei denen nicht einmal mehr der Akku getauscht werden kann. Bei unseren Softwaresystemen ist jedes wichtige Teil austauschbar und das System bei guter Pflege über Jahrzehnte einsatzbar.
Digitalisierung und Industrie 4.0
Die klassische „elektronische Datenverarbeitung“ (EDV) geht davon aus, dass Menschen, unterstützt durch Software, Vorgänge durchführen. Unter der Überschrift „Digitalisierung“ und im produzierenden Gewerbe auch „Industrie 4.0“ ändert sich das Bedienszenario: Der Mensch gibt nur noch den Auftrag – die Maschinen, unterstützt durch Software, teilen sich die Arbeit auf und führen sie eigenständig aus. Dann stellt eine ganze Fabrik vollständig automatisiert Produkte her, die jeweils ein Unikat sein können („Losgröße 1“).
In der Realität haben viele Betriebe einen gut funktionierenden Maschinenpark, der allerdings oft nach dem klassischen Bedienszenario der EDV mit dem Mensch als Vermittler konzipiert wurde. Ein erster Schritt in Richtung einer Industrie 4.0-konformen Ausstattung ist, dass die Maschinen (oder Programme) ihre Daten in digitaler Form und im direkten Zugriff zur Verfügung stellen. Dadurch wird der Aufbau von Maschinen-Netzwerken möglich.
Für den direkten Zugriff auf Daten in digitaler Form bietet sich das HTTP-Protokoll an, das auch Ihr Browser nutzt. Es ist übrigens im März 2019 stolze 30 Jahre alt geworden. Jede Software und jede Maschine, die über HTTP kommuniziert, ist ein Teilnehmer dieses Netzwerks. Bis zur vollständigen Industrie 4.0 ist es dann noch ein Stück, aber es ist nicht mehr unmöglich.
Wir freuen uns darauf, Ihren Programmen und Maschinen das Sprechen beibringen zu dürfen.
Upgrade und Update ohne Ausfallzeit
Kaum eine Branche ist so schnelllebig wie die IT bzw. die Softwareentwicklung. Das zeigt sich als Nachteil bei nicht enden wollenden Sicherheitsaktualisierungen, kann aber auch ein Vorteil sein: Neue Versionen mit neuen Funktionalitäten können heute bequem über das Internet bezogen werden.
Damit diese Updates (Aktualisierungen) auch wirklich Upgrades (Verbesserungen, Erweiterungen) werden, müssen einige Dinge stimmen. Bei uns bleiben Ihre Einstellungen und Konfigurationen immer genauso erhalten wie alle vorhandenen Daten, egal ob in Dateien oder einer Datenbank. Wir achten darauf, mit den vorigen Versionen kompatibel zu bleiben.
Der eigentliche Wechsel auf die neue Version ist bei uns eher unspannend: Sie entpacken eine komprimierte Datei, rufen einen Installer auf oder nutzen die Aktualisierung durch das Betriebssystem. In allen Fällen dauert der Vorgang meistens nur Sekunden. Und damit wirklich kein Nervenkitzel dabei ist, können Sie zur alten Version zurückkehren, indem Sie diesen Vorgang einfach mit der vorigen Version ausführen.
Wenn Sie schon Anwendungen in der Cloud betreiben, sind wir sogar noch schneller: Mit neuen Werkzeugen wie Docker und Kubernetes läuft das Upgrade sogar ohne Downtime.
App-Entwicklung mit React Native
Für Smartphones gibt es momentan zwei relevante Betriebssysteme, namentlich iOS und Android, die jeweils eigene Anforderungen an Apps haben. Daher war es lange üblich, eine App entweder exklusiv nur für eines dieser Betriebssysteme zu programmieren oder mit doppeltem Aufwand zwei funktional identische Apps in verschiedenen Programmiersprachen zu entwickeln.
Diese Doppelarbeit können wir mittlerweile bei vielen Apps durch neue Technologien wie React Native vermeiden, ohne dass sich die App dadurch fremd anfühlt oder anders aussieht. Bekannte Smartphone-Apps wie Instagram oder Facebook verwenden unter der Haube React Native.
Für unsere Kunden bedeutet das, dass ihre App auf allen Smartphones läuft, die Entwicklungs- und Wartungskosten aber glatt halbiert sind. Alle Anwender der App setzen den gleichen Sourcecode ein, so dass auch der bisher notwendige spezialisierte Support weniger aufwendig wird.
Unsere Erfahrungen mit React Native und ähnlichen Technologien sind positiv. Und die Einsparungen bei der Entwicklung und Wartung geben wir direkt an unsere Kunden weiter. Wenn Sie eine Idee für eine App haben, sprechen Sie uns darauf an.
Software-Modernisierung
Software altert, jedoch anders als materielle Gegenstände. Die Bits und Bytes der Software bleiben über die Jahre identisch, aber ihre Umgebung wandelt sich rasch. Oft sieht eine tolle Softwarelösung nach einigen Jahren altbacken aus oder funktioniert auf neuen Geräten wie Tablets und Smartphones nicht. Oder Sie nutzt die Möglichkeiten moderner Hardware wie Mehrkernprozessoren oder hochauflösende Bildschirme nicht aus. Manchmal entspricht auch die Benutzerführung nicht mehr den Erwartungen heutiger Nutzer.
Eine Neuentwicklung dauert üblicherweise mehrere Jahre und birgt die Gefahr von Kinderkrankheiten bei ihrer Einführung. Stattdessen kann es sich lohnen, ausgereifte Bestandsoftware behutsam zu modernisieren und fit für die Zukunft zu machen.
Wir können in einem graduellen Prozess alte Software Stück für Stück verjüngen, auf neue Plattformen bringen oder um zeitgemäße Funktionen erweitern. Moderne Web-Oberflächen für eine bestehende Anwendung sind genauso denkbar wie die Anpassung der Software an neue Betriebssysteme oder Touchscreens.
Mit gezieltem Refactoring und Reengineering ändern wir bestehenden Programm-Code ähnlich einer Gebäudesanierung. Wir fügen zum Beispiel neue Schnittstellen – vergleichbar mit einer zusätzlichen Tür – hinzu, um eine Smartphone-App ermöglichen.
Code-Review
Unter einem Code-Review versteht man die systematische Analyse von Sourcecode durch ein unbefangenes Paar Augen. Code-Reviews sind, neben automatisierten Tests das effektivste Mittel, um Softwarequalität zu sichern und zu steigern.
Aber der Teufel steckt wie immer im Detail. Ein falsch durchgeführtes Code-Review ist im besten Fall nur Zeitverschwendung. Wichtig ist sowohl die Art der Durchführung als auch das Verankern im richtigen Rahmen der Entwicklerkultur. Das formale Code-Review sollte zum Beispiel eine maximale Dauer von 45 Minuten nicht überschreiten, sonst werden die Teilnehmer unaufmerksam, und fehlerhafter Code wird fälschlicherweise abgesegnet. Bei einem konzentriert durchgeführtem Code-Review werden Fehler rechtzeitig erkannt und strukturelle Probleme, die Jahre später die Weiterentwicklung gefährden, im Keim erstickt.
Wird das Code-Review nicht richtig in die Entwicklerkultur integriert, führt das unter Umständen zu Feindseligkeiten und Missgunst unter den Entwicklern. Es ist wichtig, dass sowohl dem Entwickler, als auch dem Reviewer die jeweilige Aufgabe klar ist. Bei einem gut integrierten Review wird die Entwicklerkultur gestärkt und führt zu mehr Teamgeist und Zusammenhalt.
Hochverfügbarkeit
Jedes wichtige System der IT soll möglichst dauerhaft laufen. Das ist auch möglich, erfordert aber je nach Ziel einen hohen, dauerhaften Aufwand. Die sogenannten HRG-Klassen der Hochverfügbarkeit beschreiben die üblichen Anforderungsstufen.
In der konkreten Umsetzung kommen vor allem die folgenden drei Strategien zum Einsatz:
Für jede dieser Strategien können Sie zahlreiche Umsetzungen finden. Wichtig ist, die für Ihr Ziel wirklich wirksamen Umsetzungen zu finden und zu kombinieren. So entsteht ein IT-System, das dauerhaft zuverlässig für Sie arbeitet.
Duales Lernkonzept
Neues Wissen wird besonders gut verstanden, aufgenommen und behalten, wenn es gleich zum Einsatz kommen kann. Das ist die Grundlage unseres dualen Lernkonzepts, das jedes Thema in einem Theorieteil und einem anschließenden Praxisteil vermittelt. Eine dritte, daran anschließende Phase der Reflexion versucht, die unmittelbaren Erkenntnisse zu festigen.
Gerade in der IT bewegt sich die Welt sehr schnell. Wir müssen dauernd und viel lernen, oft auch wirklich Neues. In der IT haben wir aber auch den Vorteil, dass wir neue Technologien mit wenig Aufwand in Trainingsszenarien ausprobieren können. Bei uns ist der Theorieteil jeder Fortbildung also dazu da, das neue Wissen so darzustellen, dass die Verbindung zu bestehendem Wissen sichtbar wird und Hinweise zu geben, wie man es am besten einsetzt. Im Praxisteil der Fortbildung versuchen sich die Teilnehmer dann an einer Übungsaufgabe, um das neue Wissen gleich anzuwenden. Unser Hauptbeitrag in dieser Phase ist die Vorbereitung und Moderation einer passenden Übungsaufgabe.
Während der Bearbeitung der Übungsaufgabe sammelt jeder Teilnehmer eigene Erfahrungen. Um diese auch den anderern Teilnehmern zugänglich zu machen, führen wir am Ende der Fortbildung eine Reflexionsphase durch.
Wir sind seit über 17 Jahren in der Erwachsenenbildung tätig, als Lehrbeauftragter an der DHBW Karlsruhe und als Fortbildungspartner für Unternehmen.
DSGVO und Individualsoftware
Datenschutz ist immer ein Thema, wenn Ihre Software mit personenbezogenen Daten umgeht. Das sind beispielsweise Namen, E-Mail-Adressen, Telefonnummern oder sogar IP-Adressen, so dass praktisch jede Software betroffen ist. Nach den Vorgaben der DSGVO müssen die Anwender der Software in verständlicher Form über die Verwendung der Daten aufgeklärt werden und daraufhin nachvollziehbar einwilligen. Außerdem müssen die Daten angemessen vor unbefugtem Zugriff geschützt sein. Der dadurch entstehende Aufwand kann erheblich sein.
Es gibt einige technische Herangehensweisen, um den Aufwand zu reduzieren. Beliebt ist die Separation in zwei getrennte Datenbereiche: Ein Bereich enthält die personenbezogenen Daten und wird durch technisch-organisatorische Maßnahmen (sogenannte TOMs) geschützt. Der zweite Bereich enthält die restlichen Daten des Systems und bezieht sich nur durch randomisierte Kennungen auf die personenbezogenen Einträge im ersten Bereich. Ein anderer Ansatz anonymisiert beispielweise Telefonnummern durch Unkenntlichmachen der letzten Stellen.
Wir sind darauf bedacht, Ihre Software datenschutzkonform zu entwickeln. Wir beraten Sie gerne und konzipieren mit Ihnen die technisch günstigste Umsetzung.
Moderne Browsertechnologien
Moderne Browser stellen eine mächtige Plattform für die Anwendungsentwicklung dar und ermöglichen Anwendungen, die nativen Desktopapplikationen kaum nachstehen. Vielleicht nutzen Sie schon die Office Anwendungen von Google oder Microsofts Office 365 online?
Die Basis dafür sind die zwar immer noch HTML und JavaScript – es gesellen sich jedoch weitere Schlüsseltechnologien hinzu: WebSockets bieten eine performante Datenübertragung und geringe Latenzen die für solche verteilten Anwendungen notwendig ist. Das SVG-Bildformat ermöglicht optisch ansprechende und interaktive Grafiken, Animationen und Diagramme.
Reichen selbst diese Möglichkeiten für Ihre anspruchsvolle Anwendung nicht aus, so erlaubt WebGL eine umwerfende hardware-beschleunigte 3D-Grafikdarstellung. Mit WebAssembly lässt sich bei rechenintensiven Anwendungen die Performance weiter verbessern. Auch Spiele im Browser, die diese Technologien nutzen, beeindrucken mit Darstellungen, die noch vor wenigen Jahren im Web undenkbar waren – alles ohne zusätzliche Plugins.
Bringen auch Sie Ihre Anwendungen plattformübergreifend, ortsunabhängig und zentral administriert online.
User Experience - Die Reise des Benutzers
Die moderne Softwaretechnik ermöglicht uns eine hohe Modularität. Zentral für den Benutzer ist aber, dass er seine Arbeit optimal erledigen kann, egal wie verteilt die Anwendungsteile sind.
„Warum muss ich jetzt dem Computer schon wieder sagen welchen Zeitbereich ich sehen will? Warum muss ich so lange warten und kann nichts anderes dabei machen? Was will mir diese Meldung sagen? Jetzt will ich aber Schritt 3 vor Schritt 4 machen!“
Dies sind alles typische Gedanken eines Benutzers während seiner Arbeit mit dem Computer. Um diese Gedanken und Gemütszustände des Benutzers zu erfassen, hat sich in der User Experience (UX) die sogenannte User Journey Map etabliert. Diese Karte beschreibt die (Arbeits-)Reise des Benutzers in Bezug auf die Anwendungen.
Auf diese Art lassen sich Problemstellen, Wartezeiten oder auch nervige Schritte herausfinden. Brüche beim Wechsel von Anwendungen und der Verlust des Kontexts sind übliche Probleme einer nicht integrierenden Benutzeroberfläche. Die User Journey Map macht diese sichtbar, denn bekanntlich kann man nur das ändern, was man kennt.
Sind Sie bereit, sich auf eine spannende Reise zu zufriedenen Mitarbeitern einzulassen?
Clean Code Developer
Softwareentwicklung ist trotz aller Standardisierung eine überaus kreative Tätigkeit. Damit das nicht bedeutet, dass der entstehende Programmcode sonderbar und wild gerät, gibt es die Prinzipien und Praktiken der Clean Code Developer. Diese formulieren ein Wertesystem für Softwareentwickler, das nicht durch starre Regeln, sondern durch Annäherung an einen definierten Idealzustand die Güte des Programmcodes verbessert.
Ein Clean Code Developer nimmt unter Stress keine Abkürzungen, sondern versucht das Ergebnis seiner Arbeit sauber zu gestalten. Dadurch hält er einen Mindeststandard an Qualität immer ein, der als Basis für spätere Weiterentwicklung dient. Eine passende Checkliste für Auftraggeber haben wir auf unserem englischsprachigen Entwicklerblog veröffentlicht.
Durch Schulung und wiederholtes Training der konkreten Inhalte des Clean Code Developer können alle Entwickler die Werte verinnerlichen und in der tägliche Arbeit umsetzen. Das zeigt der Erfolg unserer Vorlesungen und Fortbildungsangebote für Unternehmen seit mehr als zehn Jahren. Und natürlich wenden wir die Inhalte des Clean Code Developer auch in unseren Projekten an.
Feste Echtzeitanforderungen
Echtzeitanforderung heisst, dass ein Program eine Aufgabe innerhalb eines bestimmten Zeitraumes erledigen muss. Sonst gibt es negative Konsequenzen. Bei weichen Echtzeitanforderungen, wie zum Beispiel bei Videotelefonie oder Computerspielen verliert man nur an Qualität – das Bild „ruckelt“ – die Grundfunktion bleibt aber bis zu einem gewissen Grad erhalten. Bei festen Echtzeitanforderungen wie bei unserem Projekt, gehen Daten verloren, wenn die Zeitlimits nicht gehalten werden können.
Solche Probleme lassen sich nur mit umfassenden Kenntnissen in allen Bereichen der Informatik adäquat behandeln. Die Grundlage ist eine angemessene Hardware. Heutzutage reicht glücklicherweise für die meisten Echtzeitaufgaben ein handelsüblicher Rechner. Aber selbst wenn die Rechner und Geräte schnell genug sind, kann ein langlaufender Algorithmus die Zeitvorgaben sprengen. Damit ein Programm solchen Anforderungen genügen kann, muss es von vornerein dafür konzipiert und konstant optimiert werden. Von der Architektur bis zu den Details – das Gesamtbild muss stimmen – weder die Teile, noch das Ganze dürfen zu lange brauchen.
Haben Sie auch Echtzeitanforderungen? Wir können Ihnen helfen.
Anwenderschulungen
Ein geschulter Umgang der Anwender mit der Software sorgt für Akzeptanz und Produktivität in der täglichen Nutzung. Nur wer keine Berührungsangst vor der Software hat und einen falschen Klick wieder rückgängig zu machen weiß kann souverän und effizient arbeiten. Anwenderschulungen können als individuelle Einzelschulungen mit persönlichem Instruktor, Gruppenschulungen in klassenzimmerähnlicher Umgebung oder im Seminarstil durchgeführt werden.
Die Erfahrung zeigt, dass unsere Mischung aus Theorie mit viel Praxis bei den Schulungsteilnehmern sehr gut ankommt. Realistische Übungsaufgaben, Wiederholungen und Varianten verstärken das Gelernte. Schulungen sind nicht nur für die Anwender lehrreich, sondern auch für unsere Softwareentwickler. Durch den direkten Kontakt mit den Endanwendern sammeln sie Eindrücke zur Usability und Anregungen für Verbesserungen der Folgeversionen der Software.
Wir bieten Ihnen gerne ein individuelles Schulungskonzept passend zugeschnitten auf Ihre Zielgruppe und deren Vorkenntnisse an.
Funktionalität als Dienst (SaaS, PaaS, FaaS, XaaS)
Haben Sie sich auch schon gefragt, wie kleine und einfache Geräte wie Amazons Echo oder Smartwatches in sekundenbruchteilen Ihre Sprache erkennen und ein Ergebnis liefern können? Alleine garnicht, in Verbindung mit Diensten in einer Cloud-Infrastruktur hingegen sehr gut.
Viele Anwendungen können Ihre tolle Funktionalitäten nur durch die Kombination mehrerer serverbasierter Dienste anbieten. Nicht immer ist es sinnvoll dafür eigene Server zu betreiben. Nicht nur Software (SaaS) sondern auch komplette Laufzeitumgebungen (PaaS) oder nur einzelne Berechnungen (FaaS) können als Dienst implementiert werden. Zusammenfassend bezeichnet man stark dienstbasierte Ansätze mit dem Begriff „Everything as a Service“ (XaaS).
Möglicherweise sehen Sie auch bei Ihrer Software Potential die Funktionalität mit Hilfe externer Dienste zu verbessern und gleichzeitig Kosten für den eigenen Serverbetrieb zu sparen.
Informationsvisualisierung
Wir leben in einer datenreichen Welt, und die Datenflut nimmt immer weiter zu. Um nicht im Datenmeer aus abstrakten Zahlenkolonnen unterzugehen, benötigen wir Aufbereitungen, die uns als Menschen die Bedeutungen der Daten leicht erkennen lassen. Ein effektives Mittel dafür ist die Informationsvisualisierung, bei der Daten durch räumliche Darstellung, Farben und Symbole intuitiv begreifbar werden. Diese lassen sich in vielfältigen Formen darstellen, sei es als Baum, Zeitstrahl, Diagramm, Netzwerk oder Karte. Eine gute Visualisierung sagt mehr als tausend Worte, klicken Sie doch mal auf die Beispiele im Bannerbild der D3.js-Webseite.
Hinter dem folgenden Bild aus einem Magazinkartierungssystem stecken beispielweise hunderte von Zustandsbewertungen:
Für den historischen Verlauf ist der Zeitstrahl hilfreich, mit dem die Zustandsbewertungen der Vergangenheit wie mit einer Zeitmaschine durchgesehen werden können.
Wenn auch Sie Ihre Daten mit Visualisierungen per Software intuitiv erfassbar machen wollen, melden Sie sich!
Portable Projekte mit C++
C++ ist seit Jahrzehnten eine der verbreitetsten Programmiersprachen der Welt und kann auf fast jedem programmierbaren Gerät benutzt werden. Außerdem ist sie ein ISO-Standard, der aktiv weiterentwickelt wird. Die bekannteste Software, wie zum Beispiel Windows, Chrome, Firefox und die Google-Suche sind in C++ geschrieben.
Portabilität ist die Eigenschaft, wie leicht sich ein Programm auf einer anderen Plattform nutzen lässt. In der schnelllebigen IT-Welt ist das eine Kerneigenschaft. Viele moderne Sprachen erreichen dies, indem sie einen großen Teil ihrer Plattform virtualisiert mitliefern, sozusagen als Mittelsmann. Den streicht C++ und setzt verstärkt auf Portabilität durch Anpassbarkeit. So kann Spezialhardware direkt angesprochen und verfügbare Rechenleistung ideal ausgenutzt werden. Denn Treiber für Spezialhardware nutzen oft selbst C++, so dass die Ansteuerung in der gleichen Sprache nahtlos vonstatten geht.
Diese Vielseitigkeit ermöglicht die schnelle und wirtschaftliche Umsetzung von Softwareprojekten.
Gute Bedienbarkeit bei langsamer Verbindung
Das Web ist heute allgegenwärtig, ob im Browser, auf dem Smartphone, in Kameras oder Thermostaten. Die Netzabdeckung ist auch groß, aber nicht immer zuverlässig. Damit eine Webanwendung trotz Verbindungsabbrüchen oder langsamen Verbindungen gut funktioniert, gibt es neben technischen Lösungen vor allem auch Ansätze in der Nutzererfahrung (UX). Damit ein Nutzer nicht immer Ladebalken und Fortschrittsanzeigen sehen muss, können sogenannte optimistische Aktionen durchgeführt werden. Die Anwendung simuliert wie das Ergebnis aussehen würde, wäre die Aktion schon durchgeführt worden und kann so zu einem beliebigen späteren Zeitpunkt dem Server die entsprechenden Daten übermitteln. Für den Benutzer der Anwendung ist das Vorhaben transparent.
Diese Verzögerung der Aktion kann auch absichtlich erfolgen: so wartet ein bekannter Dienst mit dem Senden einer E-Mail ein paar Minuten und bietet so dem Nutzer die Möglichkeit die Aktion zu widerrufen. Damit ergeben sich Möglichkeiten, die rein technisch gesehen gar nicht möglich sind. Ob absichtlich oder durch die Umgebung bestimmt: manchmal ist die Erfahrung des Nutzers besser, wenn nicht alles sofort passieren muss.
Mensch-Maschine-Dialog über Sprachsoftware
Der Dialog mit Computern findet über den Bildschirm statt, auch wenn dieser mittlerweile in die Hosentasche passt. Gesprochen wird wenig, dabei ist doch das Sprechen eine der natürlichsten Formen der zwischenmenschlichen Kommunikation. Durch Technologien wie Navigationsgeräte oder Apples Siri bietet der natürlichsprachliche Umgang mit Computern mittlerweile echten Mehrwert.
Diese Technologie eignet sich besonders für Tätigkeiten bei denen sie nicht direkt vor einem Bildschirm sitzen, sondern die nebenbei ablaufen. Wenn sie vor dem Kleiderschrank stehen und kurz Amazons Alexa nach dem Wetter fragen. Oder Sie den Verkehr im Auge behalten können und ihnen das Navigationsgerät sagt, wann sie abbiegen sollen.
Aber auch im professionellen Umfeld gibt es viele Möglichkeiten. Zum Beispiel wenn sie in einem Labor gerade mit beiden Händen eine Probe untersuchen und ihr Messsystem sie über Änderungen informiert, fast wie der „Computer“ auf dem Raumschiff Enterprise. Oder wenn sich in einer Fabrik ein Gerät selbst per Durchsage zur Wartung anmeldet, und gleich sagt was vermutlich mit welchen Werkzeugen gemacht werden muss. Lassen Sie uns über dieses Thema sprechen.
Agiles Projektmanagement
Alle Projekte, in der Softwareentwicklung genauso wie im industriellen Umfeld, beim Häuserbau und sogar im Hobbybereich brauchen mindestens zwei Zutaten, um erfolgreich zu sein: Eine gute Planung und eine gute Umsetzung.
Gerade an der Planung hapert es oft, woraufhin die Umsetzung meistens so gut sein, wie sie will – das Problem besteht trotzdem. Seit zwei Jahrzehnten hat sich in der Softwareentwicklung die Erkenntnis durchgesetzt, dass Projekte eine gewisse Agilität, also Beweglichkeit während der Umsetzung brauchen, um erfolgreich zu verlaufen.
Daher ist die umfassende Planung noch vor Beginn des Projekts einer kontinuierlichen Planung gewichen, bei der man auf unvorhergesehene Umstände mit passenden Planänderungen reagieren kann. Dieses agile Projektmanagement entspricht in etwa dem Fahren auf Sicht mit Unterstützung durch ein Navigationssystem. Das Navi behält das Ziel im Blick und berechnet ständig die passende Route, der Fahrer reagiert auf die tatsächlichen Straßenverhältnisse und folgt beispielsweise einer Umleitung, auch wenn sie nicht im Routenplan stand.
Der agile Projektmanager entspricht in dieser Metapher dem Navigationssystem. Er leitet das Projekt auf das vereinbarte Ziel zu und gleicht das Soll ständig mit dem Ist ab. Auf diese Weise wissen alle Projektteilnehmer immer, wo genau sie stehen.
Wir haben alle unsere Projekte agil durchgeführt und sind immer gut gefahren. Nutzen auch Sie diese neue Route zum Projekterfolg.
Datenmigration
Wer in eine neue, schöne und vielleicht auch größere Wohnung zieht, der möchte meist sein lieb gewonnenes Mobiliar mitnehmen, und nicht wieder bei Null anfangen. Manchmal ziehen auch zwei Personen zusammen, und wollen ihren Hausrat zusammenlegen. Bei Software ist das nicht anders.
Beim Umzug von Daten, einer sogenannten Datenmigration, bietet sich oft die Gelegenheit, Datendubletten zusammenzulegen und die Datensätze auf Konsistenz zu prüfen. Ein passender Anlass, die Spinnweben zu entfernen und zu entrümpeln. Damit ein größerer Umzug nicht im Chaos endet, sollte er gut geplant und mit professioneller Unterstützung durchgeführt werden – das gilt privat genauso wie in der IT. Typische Probleme, die bei einer Datenmigration bedacht werden müssen, sind etwa, ob und wie lange Alt- und Neusysteme parallel betrieben werden sollen und wie man den Arbeitsalltag der Anwender in der Migrationsphase möglichst gering beeinträchtigt. Mit einem soliden Konzept kommt erst gar kein Umzugsstress auf.
Vielleicht sind auch Ihre Daten auf der Suche nach einem neuen Heim?
Clean Architecture
Sie kennen es von Ihrem Smartphone – schon nach wenigen Jahren fängt es an zu kneifen. Keine Software-Updates mehr, der Akku schwächelt und zu wenig Leistung für aktuelle Apps. Die Gründe sind vielfältig, die Lösung immer gleich: ein neues muss her.
Mit unserer Software ist das nicht so! Zwar entwickeln auch wir in einer Welt mit rasch wechselnden und häufig kurzlebigen Technologien, aber unsere Software läuft viele Jahre ohne Alterserscheinungen.
Unsere nachhaltige Softwareentwicklung beschränkt sich dabei nicht nur auf die Wahl geeigneter Technologien, die mehr sind als nur eine Modeerscheinung. Entsprechendes Engineering und Techniken wie Clean Architecture erlauben es uns, den Systemkern beizubehalten und alternde oder unpassende Technologien auszutauschen, ohne weite Teile des Systems neu entwickeln zu müssen.
Das spart Zeit und Kosten, ermöglicht reibungslosen Betrieb des Systems und erlaubt es uns die steigenden Erwartungen an Softwaresysteme weiterhin zu erfüllen.
OPC UA (Open Platform Communications Unified Architecture)
Messnetze, Sensoren, Datensammler, das Internet der Dinge… das Angebot an Datenquellen wächst rasant. Damit alle Beteiligten miteinander reden und aufeinander reagieren können, haben sich in der Industrie Standards gebildet. Ein weit verbreiteter Standard zur Kommunikation ist die Unified Architecture (UA) von der Open Platform Communications (OPC). In einigen Projekten setzen wir bereits erfolgreich auf OPC UA-Lösungen, um eine Zwischenschicht zwischen Hardware und Software einzuziehen. So weiss die Software nichts von der Anzahl, der Art oder dem Ort der einzelnen Sensoren. Sie interessiert nur, welche Messwerte zur Verfügung stehen. Und umgekehrt muss die Hardware keine Kenntnis von den Verarbeitern ihrer Daten haben. Der OPC UA-Server dient als zentraler Makler ihrer komplexen Datenverarbeitung, damit sich alle Beteiligten verstehen.
Softwarebrücken
Sie wollen ihre teuren Kopfhörer mit ihrem neuen Handy verbinden, aber das unterstützt nur noch Bluetooth? Ärgerlich, aber es gibt Abhilfe: Bluetooth Kopfhöreradapter verbinden die beiden unterschiedlichen Systeme und helfen, Kabel zu entwirren, ohne dass sie einen neuen Kopfhörer kaufen müssen.
Für Software gilt das selbe: Oft ist es wirtschaftlicher, für ein Problem zwei schon existierende Lösungen zu verbinden und zusammen arbeiten zu lassen, als eine komplett neue Lösung zu erstellen. Das hat zusätzlich den Vorteil, dass die existierenden Lösungen schlank und effizient bleiben, und nicht unnützen Ballast in Form von immer mehr Funktionalität anhäufen.
Viele Programme bieten Erweiterungsmöglichkeiten an, die man mit wenig technischem Aufwand nutzen kann. Ob über Internettechnologien wie HTTP, spezielle Netzwerkprotokolle oder nachladbare Programmteile: wir finden eine gemeinsame Sprache für ihre Programme und bauen so Softwarebrücken zwischen den Programmdiensten. So sind Sie nicht länger als Mittelsmann für die Routinekommunikation verantwortlich, und können sich auf das Wesentliche konzentrieren.
Wir beraten sie gerne, wie sie ihre Programme effektiv miteinander reden lassen können!
Internationalisierung
Der heutige Markt ist international, die Anzahl von nicht-englischsprachigen Sprechern, die Software nutzen, steigt. Wir bereiten unsere Software schon bei der Entwicklung darauf vor, dass sie später leicht an andere Sprachen und kulturelle Eigenheiten angepasst werden kann.
Neben der Übersetzung in andere Sprachen umfasst Internationalisierung viele weitere Aspekte: so wird etwa hebräischer Text von rechts nach links geschrieben, in den USA kommt bei Datumsangaben der Monat vor dem Tag, und das Dezimaltrennzeichen ändert sich auch von Land zu Land. Sogar die Farbgestaltung muss möglicherweise an die jeweilige Kultur angepasst werden.
Ihre Software zu internationalisieren kann sich durchaus lohnen: Dadurch bietet sich für Sie ein Zugang zu mehr Märkten, und die Nutzer sind zufriedener, arbeiten effizienter und machen weniger Fehler, wenn sie in ihrer eigenen Sprache und entsprechend ihren Gewohnheiten arbeiten können. Für Sie bedeutet dies unter anderem weniger Supportanfragen und damit direkt geringere Kosten.
Wir freuen uns auf ein Gespräch mit Ihnen zu diesem Thema, egal in welcher Sprache.
Softwaremigration
In der digitalen Welt gibt es ungefähr alle 5 Jahre eine bahnbrechende technologische Neuerung. Haben Sie Ihre Urlaubsvideos auf VHS schon digitalisiert? Kennen Ihre Kinder CDs noch oder hören sie Musik als MP3-Dateien oder Online-Stream?
Bei Software sieht es ganz ähnlich aus, jedoch merkt man den technologischen Wandel meist zu spät, nämlich dann, wenn die favorisierte Softwarelösung plötzlich aufhört zu funktionieren. Software ist im Gegensatz zu VHS-Kassetten immateriell und deshalb an eine veränderte IT-Landschaft anpassbar. Dadurch haben Sie vorbeugend die Möglichkeit, Ihre Softwarelösungen auf einem Stand zu halten, der den reibungslosen Betrieb über Jahrzehnte hinweg erlaubt.
Eine Anwendung für Windows XP kann durch eine Softwaremigration für Windows 10 fit gemacht werden. In Zuge dessen lässt sie sich auch zu einer modernen Webanwendung transformieren. Vielleicht haben Sie schon einmal Google Docs oder Microsoft Office 365 benutzt? Beide Produkte sind das Ergebnis von Softwaremigrationen und zeigen außerdem die neuen Möglichkeiten.
Wir analysieren gerne Ihre IT-Landschaft im Hinblick auf Risiken und Möglichkeiten aktueller technischer Entwicklungen. Das ermöglicht Ihnen, Softwaremigrationen strategisch durchzuführen bevor es zu Problemen oder gar Ausfällen kommt.
Wenn Ihre Software seit mehr als 5 Jahren ohne Anpassungen läuft, dann lassen Sie uns doch frühzeitig über Ihren Bedarf an Softwaremigration sprechen.
Animationen in Geschäftsanwendungen
Animationen sind längst im Geschäftsumfeld angekommen. Wenn Inhalte geladen werden, erscheinen sie nicht einfach, sondern blenden sich Stück für Stück langsam ein. Übergänge zeigen selbst schleichende Trends in den dargestellten Daten: wie könnte die Zukunft aussehen, was hat sich geändert. Fragen nach dem Warum, die Ursachen und Zusammenhänge werden durch Bewegungen verständlicher.
Unsere Wahrnehmung ist darauf ausgelegt, Bewegungen besonders gut zu erfassen. Durch Animationen lässt sich die Aufmerksamkeit auf Veränderungen oder wichtige Informationen lenken. Auch ein räumliches Verständnis ist ohne Bewegung und Interaktionen leblos. Animationen haben eine wichtige Funktion, um Ihre Software mit Leben zu füllen.
Das Beste: Animationen sind schon mehrere Jahre in allen gängigen Webbrowsern vertreten und Teil des Standards. Wir können sie ohne Probleme in Ihren Projekten einsetzen.
Spezialanforderungen
IT-Anlagen mittem im Schwarzwald sind nur mit Geländewagen zugänglich. IT-Anlagen in radioaktiven Kontrollbereichen erreicht man nur mit mehrlagiger Schutzkleidung. IT-Anlagen in Großforschungseinrichtungen lassen sich nur mit speziellen Schulungen warten. Für uns sind solche Spezialanforderungen nichts neues. Hatten wir schon.
Immer wieder kommen Kunden mit speziellen Anforderungen auf uns zu. Beim einen muss ein Problem gelöst werden, doch das „wie“ ist unklar? Mit unseren UX Kenntnissen gehen wir dem auf den Grund. Das „wann“ bereitet Sorgen? Harte Deadlines erfordern gute Planung und schnelle Sprints. Das „wo“ ist eine Herausforderung? Sie können ihr Gerät nicht bewegen? Wir kommen zu ihnen oder simulieren es für eine virtuelle Inbetriebnahme. Wir sehen besondere Anforderungen als Herausforderung und haben jahrelange Erfahrung, flexibel solche Probleme zu lösen, für die es keine vorgefertigte Lösung gibt.
Enterprise Application Integration
Aus Ihrem Berufsalltag kennen Sie diese Ärgernisse: für eigentlich zusammenhängende Abeitsabläufe müssen Sie zahlreiche Softwareanwendungen einsetzen. Sie wechseln häufig zwischen diesen Anwendungen und kopieren Daten in verschiedenen Formaten aus der einen in die andere, und die doppelte Datenhaltung führt zu Inkonsistenzen.
Durch Enterprise Application Integration (EAI) stellen Sie Ihre Softwareanwendungen auf den Prüfstand und denken von der anderen Richtung. Statt „was kann die Software?“ lautet die Frage „was brauche ich?“. Durch eine Integrationslösung setzen Sie dann die Teile der bisherigen Insellösungen zu einem nahtlosen Ganzen zusammen. Das schafft zahlreiche neue Möglichkeiten wie beispielsweise Querverweise zu bisher getrennten Datensätzen, so dass sich im Falle einer Adressverwaltung etwa Ihr Telefonbuch gleich mit aktualisiert oder einkommende E-Mails direkt Termine in Ihrem Kalender anlegen. Aber auch in den Details bieten integrierte Anwendungen eine attraktive Benutzererfahrung durch konsistente Begriffe und Bedienung.
EAI ist ein etabliertes Konzept zur Optimierung von Geschäftsabläufen, von der auch Ihre IT-Landschaft profitieren kann.
Sprints
Was wäre wenn? Was wäre wenn Sie eine Woche investieren könnten, um Ihre Idee im realen Umfeld zu sehen? Sie ausprobieren. Was wäre wenn Sie ohne große Meetings und Diskussionen testen könnten, ob eine Lösung die Richtige ist? Was wäre wenn SIe Entscheidungen testen könnten, bevor sie gefällt werden?
Mit Sprints geht das. WIe beim Sport sind Sprints kurze intensive Vorhaben mit einem Ziel: einen kleinen Blick in die Zukunft zu werfen. Wichtig ist es, diese Sprints strukturiert und effizient durchzuführen. Kreativität ist gefragt, kein Chaos. Agilität und Iterationen, nicht der eine Schuss, der treffen muss. Sprints sind Experimente, um zu lernen. Wir wenden sie als ganze Kurzprojekte oder innerhalb größerer Projekte an mit großem Erfolg. Plötzlich redet man nicht mehr abstrakt im Kopf, sondern über konkrete Fragen und Probleme. Konsequenzen werden direkt sichtbar. Sie wollen auch mal was ausprobieren?
IoT - (Inter)net of Things
Mittlerweile können wir beliebige Geräte über das Internet in einer Standardsprache miteinander reden lassen. So kann unser Kühlschrank der Zukunft selbst Essen nachbestellen und die Heizung die Wohnung kurz vor unserer Ankunft schon vorheizen.
Das Internet ist dafür oft gar nicht notwendig. Für viele Anwendungszwecke reicht das lokale Netz. Wenn sie zum Beispiel gerade laute Musik hören, kann die Türklingel die Lautstärke kurzzeitig mindern, so dass sie den Gast nicht überhören. Oder wenn sie im Heimkino gerade in ein Filmerlebnis eintauchen, kann ein Indikatorsymbol eingeblendet werden, damit sie den Pizzaboten nicht vor der Tür stehen lassen.
Im professionellen Umfeld können wir mit einer Luftüberwachung direkt die Belüftungsanlage regeln. Oder mit einer wissenschaftlichen Kamera automatisch die Beleuchtungsanlage steuern, wenn die von ihr aufgenommenen Bilder zu hell oder dunkel werden.
Für solche Zusammenspiele ist es nicht mehr notwendig, dass wir die Geräte an den gleichen Rechner oder die gleiche Steuerungselektronik anschließen. Wir bringen den Geräten vielmehr bei, die gleiche Sprache zu sprechen und sich untereinander zu verständigen. Es gibt Geräte, die das noch nicht ab Werk beherrschen. Diese können wir leicht mit günstigen Kleinstrechnern wie dem BeagleBone Black oder dem Raspberry Pi aufrüsten und sogar mit Batterieversorgung betreiben.
Gerne bringen wir ihrer Hardware die Sprache des Internet of Things bei.
IT-Gutachten
Würden Sie ein Haus oder ein Auto ohne die zusätzliche Beurteilung durch einen Fachmann kaufen? Wie sieht es mit einer Softwarelösung aus, die Sie über viele Jahre hinweg einsetzen wollen?
Was im Bauwesen schon gängige Praxis ist, wird auch im IT-Bereich immer selbstverständlicher: Ein Experte untersucht ein bestehendes System auf konkrete Fragestellungen hin. Typische Fragestellungen können beispielsweise sein, ob bei der Umsetzung gängige Standards wie die ISO/IEC 25000 (Qualitätskriterien und Bewertung von Softwareprodukten) oder die ISO 9241 (Ergonomie der Mensch-System-Interaktion) eingehalten wurden oder ob die Software auf eine sich ändernde IT-Landschaft adaptiert werden kann.
Nach der gründlichen Untersuchung bewertet ihr Experte das bestehende System und fasst die Ergebnisse nach einem vorgegebenem Grundschema in einem Schriftstück zusammen. Das Gutachten zeichnet sich durch allgemeinverständliche Sprache und einen begrenzten Umfang aus. Nur selten übersteigt die Beantwortung einer Frage mehr als 10 Seiten. Das Gutachtendokument ermöglicht es Ihnen, fundierte Entscheidungen in Bezug auf ihr System zu treffen.
Wenn Ihnen die Gewissheit zu Ihrer IT fehlt, dann liefert Ihnen das IT-Gutachten klare Aussagen.
Activity Streams
In Ihrem Alltag haben Activity Streams längst Einzug gehalten. In sozialen Netzwerken wie Facebook oder Twitter werden Sie stets über die neuesten Ereignisse auf dem Laufenden gehalten. Auch die Textnachrichten auf Ihrem Smartphone sind als Activity Streams organisiert und dargestellt.
Gerade im geschäftlichen Umfeld können Sie Activity Streams gewinnbringend einsetzen. Wenn Sie den Überblick über die Ereignisse in Ihrem Team behalten wollen, dann bietet sich ein Dashboard, also eine übersichtliche Darstellungsform der wichtigsten Informationen mit einem Activity Stream für die Geschehnisse an. Wenn Sie mehrere Projekte gleichzeitig koordinieren müssen, bündeln Sie die Activity Streams einfach.
Wenn Ihre Geschäftsprozesse strukturiert sind, kann der Activity Stream Ihnen sogar die nächsten erforderlichen Schritte direkt vorschlagen. Sie steuern dann direkt aus Ihrer zentralen Übersicht die Prozesse, treffen Entscheidungen und delegieren anstehende Aufgaben.
Activity Streams sind eine tolle Möglichkeit, um Ihren Berufsalltag zu erleichtern.
Webanwendungen mit HTML 5 und Responsive Design
Das Web hat sich in den letzten Jahren rasant weiterentwickelt. Immer mehr Menschen mit den verschiedensten Geräten nutzen Webanwendungen. Die Entwickler und der Betreiber der Webanwendung müssen sich an diese Veränderungen anpassen.
Mittlerweile ist es nicht mehr wirtschaftlich, jede Kombination von Gerät und Browser mit einer eigenen Anwendung zu unterstützen. Der neue Web-Standard HTML 5 ermöglicht es jedoch, eine gemeinsame Basis für die Inhalte im Web zu schaffen. Die Anpassung an die unterschiedlichen Bildschirmauflösungen und Eingabemöglichkeiten (Maus, Tastatur, Touch) der Endgeräte wird durch eine Methode namens Responsive Design erreicht. Mit ihr adaptiert sich die Darstellung und Interaktion der Benutzerschnittstelle an das Endgerät und blendet beispielsweise sekundäre Inhalte aus, wenn der Platz nicht reicht.
Hinter all der Technik vergessen wir aber nicht das Wichtigste: den Menschen. Durch die vielseitige Nutzung stellen diese Webanwendungen erhöhte Anforderungen an die User Experience (UX). Wir legen Wert darauf, dass der Anwender effizient, effektiv und kompetent arbeiten kann. Egal ob er unterwegs ist oder die Geräte wechselt, mit unserem Fokus auf den Benutzer ist er immer Herr der Lage.
Softwareentwicklungsmethodik für Langzeitprojekte
Software altert zwar nicht selbst, aber die Welt um sie herum bleibt nicht stehen. Deshalb muss sich Software mitentwickeln können, und zwar genau in dem Tempo, in dem es die neuen Anforderungen erforderlich machen. Viele Softwaresysteme stoßen dabei eher früher als später an ihre Grenzen, was sich in stark erhöhten Entwicklungskosten zeigt.
Unsere Entwicklungsmethodik ist an dieser Realität ausgerichtet, und macht es uns und Ihnen besonders leicht, dauerhaft Schritt zu halten. Egal ob wir die Software kontinuierlich für sie warten, oder erst nach vielen Jahren die ersten Änderungen nötig werden, ihr Projekt ist immer flexibel an ihre Wünsche anpassbar.
Dies erreichen wir durch unsere bewährte Softwarearchitektur und geschicktes Modularisieren bei der Hardwareeinbindung. Ausserdem werden unsere Projekte intern so abgelegt, dass wir auch nach längerer Zeit ohne Mehraufwand aus einem ruhenden schnell wieder ein aktiv weiterentwickeltes Projekt machen können.
Dass Ihre Software leicht anpassbar bleibt, bedeutet für Sie geringe Kosten über die gesamte Projektlaufzeit.
Single-Sign-On (WebSSO)
Jeder Anwender von IT-Systemen kennt die Notwendigkeit von Nutzer-Accounts. Immer wieder wird von Ihnen verlangt, sich einen Nutzernamen und ein Passwort auszudenken und weitere Angaben zu Ihrer Person zu machen. Das können Sie sich sparen, denn Single-Sign-On (WebSSO)-Systeme erlauben es, diese Informationen einmalig bei einer vertrauenswürdigen Stelle zu hinterlegen. Die über WebSSO verbundenen Systeme vertrauen diesem Identitätsdienst und kommen auf sichere Art und Weise an die benötigten Identitätsinformationen. Sie sind also an Ihrer Anwendung bekannt und angemeldet, sobald Sie diese aufrufen.
Ein weiterer Vorteil von WebSSO ist, dass Sie einen ihrer schon bestehenden Accounts direkt weiter verwenden können. Das kann beispielsweise ihr Google-Konto oder ihr Facebook-Login sein. Sie können auch einen wissenschaftlichen Anbieter wie das Deutsche Forschungsnetz (DFN) wählen. Dadurch wird es für Sie komfortabler, da Sie sich wesentlich seltener explizit einloggen und weniger Accounts verwalten müssen. Darüber hinaus ist das Vorgehen auch sicherer. Denn Ihre persönlichen Daten sind nicht bei mehreren Anbietern in unterschiedlichen Datenbanken hinterlegt.
Wenn Sie mehr zu Single-Sign-On erfahren wollen, sprechen Sie uns an.
Landkarten mit OpenStreetMap
Geoinformationssysteme wie Google Maps kennt jeder aus der alltäglichen Benutzung. Für die private Verwendung sind diese meistens kostenfrei, bei der kommerziellen Nutzung fallen aber oft hohe Lizenzkosten an. Doch die Nutzung von Landkartendaten muss nicht teuer sein. So tragen für das OpenStreetMap-Projekt Freiwillige aus aller Welt Geodaten zu Straßen, Gebäuden und Landschaft zusammen, und stellen diese jedermann kostenlos zur Verfügung.
Diese Geoinformationen haben eine hohe Qualität und sind aktuell. OpenStreetMap ist eine gute Grundlage für standortbezogene Dienste. Beispielsweise können Sie anhand Ihres Aufenthaltsorts Restaurants, Kinos oder Straßenbahnhaltestellen in der Umgebung auf einer Karte anzeigen lassen, und sich auf kürzestem Weg zum Ziel führen lassen. Auch die Position beweglicher Objekte wie Pakete, Straßenbahnen und sogar Flugzeuge können Sie auf ihrem Weg verfolgen.
OpenStreetMap ist ein Internetdienst, der sich vor allem in Webanwendungen leicht integrieren lässt. Vielleicht haben Sie schon Ideen, wie Sie die Möglichkeiten freier Geodaten auch in Ihrer Anwendung nutzen möchten.
Bedienungsgestaltung für komplexe Sachverhalte
Gut bedienbare Software ist immer das Ergebnis aufwendiger und fundierter Gestaltungsarbeit. Diese Arbeit können rein technisch ausgebildete Softwareentwickler nicht leisten, dazu ist eine Zusatzausbildung mit dem Schwerpunkt User Experience (UX) notwendig.
Gute Bediengestaltung ist bei fachlich komplexen Anwendungen, die für Experten entworfen werden, besonders herausfordernd. Hier helfen viele Ansätze der klassischen UX, z.B. Reduktion der Bedienmöglichkeiten, nicht weiter. Unsere Anwendungen sind nahezu ausschließlich für Experten auf ihrem jeweiligen Gebiet entwickelt. Unser Ansatz ist, die Komplexität des Fachgebiets nicht zu verstecken, sondern über die Oberfläche der Software verständlich zu gestalten. Der kundige Anwender ist also in seinen Möglichkeiten nicht beschränkt, hat aber immer alle relevanten Informationen für seine Aufgabe im Blick. Dadurch wird die Software zu einem wirkungsvollen Werkzeug und nicht zu einer Hürde.
Wir sind versiert darin, auch in uns neuen Fachgebieten durch moderne UX-Research-Methoden schnell die Essenz für die Bedienungsgestaltung von komplexen Sachverhalten zu ermitteln und umzusetzen.
Fortbildung im Unternehmen
Viele Unternehmen bieten ihren Mitarbeitern Fortbildungsmöglichkeiten im Rahmen ihrer beruflichen Tätigkeit. Oft können die Mitarbeiter während der Arbeitszeit an einigen Veranstaltungen aus dem regionalen Angebot an Konferenzen, Vorträgen und Workshops teilnehmen.
Unser Konzept basiert darauf, dass nicht der Mitarbeiter zur Fortbildung, sondern der Fortbilder zu den Mitarbeitern kommt. Dadurch kann das Unternehmen in den Arbeitstag integriert die Themen anbieten, die spezifisch benötigt werden. Durch die Individualisierung der Fortbildungsinhalte auf das Unternehmen verstärken wir deren Praxisrelevanz und Passgenauigkeit. Wir vermitteln in mehreren Stufen neues Wissen, das mit den bereits gelernten Inhalten verknüpft ist, weil wir einen längerfristigen Lernplan aufstellen.
Statt für jeden Mitarbeiter eine Teilnahmegebühr zu entrichten, beauftragen Sie uns für beliebig viele Teilnehmer für Schulungen bei Ihnen vor Ort – so entfallen auch die Reisekosten. Sie erhalten mehr maßgeschneidertes Wissen bei geringeren Kosten.
Für uns ist dieses Modell Normalität – wir praktizieren es seit dem Jahr 2002 als Dozenten für fortgeschrittene Softwaretechnik an der Dualen Hochschule in Karlsruhe.
Mobile Softwareentwicklung
Heutzutage trägt jeder seinen einstigen Heimcomputer in Form eines Smartphones in der Tasche mit sich herum und verwendet es überall. Analog dazu haben wir Entwickler durch leistungsfähige Notebooks die Möglichkeit, immer und überall zu programmieren. Damit wird die Arbeit vor Ort beim Kunden auf die Frage des richtigen Sitzplatzes reduziert.
Unsere mobilen Arbeitsgeräte sind speziell auf diese Aufgabe abgestimmt. Sämtliche Daten auf dem Notebook sind mit starker Verschlüsselung vor unbefugtem Zugriff geschützt. Dadurch sind Ihre Projektdaten immer sicher. Durch moderne Virtualisierungstechnik können wir auf einem Notebook zahlreiche verschiedene, genau passende IT-Landschaften bereithalten. Das reduziert den Einrichtungsaufwand auf ein Minimum. Wir können also vor Ort sofort loslegen.
Dank der Leistungsfähigkeit unserer Arbeitsnotebooks machen wir keine Abstriche bei der Ausrüstung mit modernen Qualitätssicherungs- oder Dokumentationswerkzeugen. Sie erhalten auch in herausfordernden Arbeitsumgebungen von uns immer Software auf gewohnt gutem Qualitätsniveau nach den Regeln des Clean Code Developments.
Wenn Sie also eine Aufgabe haben, bei der die Softwareentwicklung vor Ort durchgeführt werden muss, haben wir die Erfahrung und das Wissen für einen reibungslosen Ablauf.
Softwarepflege per Wartungsvertrag
Kaum ein Industriezweig wandelt sich so schnell wie die Softwareentwicklung. Eine fertiggestellte Software muss auf Änderungen der Hardware, des Betriebssystems und sämtlicher Peripherie reagieren, so dass sie immer ein gewisses Maß an Wartungsarbeiten erfordert.
Wir bieten unseren Kunden für die gemeinsamen Projekte gerne einen Wartungsvertrag an. Ein solcher Vertrag legt die Rahmenbedingungen für kurzfristig anforderbare Wartungsarbeiten fest und definiert beispielsweise Reaktionszeiten, Verantwortlichkeiten und Dokumentationsformen in klaren Worten. Dadurch kennen wir unsere Pflichten und unser Kunde seine Möglichkeiten. Meistens vereinbaren wir vorab ein ausreichend großes Kontingent an Arbeitsleistung, die bei Bedarf kurzfristig in Anspruch genommen wird. So stehen unsere Spezialisten bei Problemen während des Betriebs jederzeit zur Seite und übernehmen die notwendigen Arbeiten. Der Wartungsvertrag lohnt sich schon bei den ersten Vorfällen.
Mittels leistungsstarker Ticketsysteme im Internet kann die Kommunikation weitgehend schriftlich und damit nachvollziehbar protokolliert erfolgen. Natürlich haben wir auch am Telefon immer ein offenes Ohr für Wartungsaufträge und alle anderen Belange.
Microservices-Architektur
Ein immer wiederkehrendes Thema der Softwareentwicklung ist die Langlebigkeit und Zukunftsfähigkeit der entwickelten Lösung. Meistens kann die Lebensdauer einer Fachanwendung in Jahren gemessen werden. Die Funktionalität muss allerdings jahrzehntelang bestehen.
Um diesen Konflikt zu lösen, sind die Microservices angetreten. In dieser Anwendungsarchitektur werden kleine und kleinste Softwaremodule durch ein Netz verbunden. Obwohl jedes einzelne Modul nur einen Bruchteil der Funktionalität bereitstellt, bilden sie im Verbund eine mächtige Einheit. Der Benutzer bekommt von dieser Modularisierung durch gut gestaltete Oberflächen nichts mit.
Dank dieser Auftrennung können die einzelnen Module unabhängig voneinander entwickelt, betrieben und modernisiert werden. Das Gesamtsystem ist von der einzelnen Änderung nicht betroffen. So ermöglichen Microservices eine freie Technologiewahl für jedes Modul und verhindern, dass eine Fachanwendung jemals vollständig neu entwickelt werden muss.
Auf diese Robustheit und Zukunftsfähigkeit achten wir bei all unseren Projekten.
Python in wissenschaftlicher Software
Python ist eine leicht verständliche Skriptsprache, die sich besonders im wissenschaftlichen Umfeld großer Beliebtheit erfreut, weil mit ihr auch komplexe Berechnungen beherrschbar bleiben.
Wir setzen Python gerne für Webanwendungen und für TANGO-basierte Software ein. Mit der Bibliothek PyTango sind diese Gerätesteuerungen in kurzer Zeit umsetzbar und ermöglichen dabei auch die realistische Simulation von Hardware. Auf diese Weise können wir das Zusammenspiel mehrerer teilweise sehr teurer Geräte testen, ohne die Geräte zu belegen.
In Python geschriebenen Sourcecode kann ein technisch interessierter Auftraggeber einfach nachvollziehen und anpassen, so dass kleinere Änderungen direkt umsetzbar werden. Dadurch sinken der Zeitaufwand und die Entwicklungskosten erheblich.
Da wir für unsere Projekte immer den Sourcecode zur Verfügung stellen, können Sie alle Vorteile in Ihrem Python-Projekt nutzen.
User Experience (UX)
Ob eine Software von einem Anwender gerne verwendet wird oder nicht, entscheidet sich meistens durch die Erfahrungen, die er mit der Software macht. Diese individuelle Anwendererfahrung (englisch „user experience“) soll durch Verbesserungen der Ergonomie optimiert werden. Wir sprechen dann von UX-Maßnahmen.
Wichtige Aspekte der UX sind die Antwortgeschwindigkeit der Software und ein klares Bedienkonzept. Mit gut gestalteter Bedienungsführung ist es beispielsweise nicht mehr möglich, sich in der Anwendung zu „verirren“. Ein gutes Informationsdesign vermittelt komplexe Sachverhalte übersichtlich und zielführend statt zu verwirren. Und vorausschauende Aufbereitung wie beim Antragssystem der KNMF ermöglicht den sofortigen Zugriff auf große Datenmengen, statt auf den Computer warten zu müssen.
Mit einer gut umgesetzten UX werten Sie Ihre Software ohne teure Neuentwicklung oder leistungsfähige Hardware deutlich auf. Wir bilden uns in diesem Thema laufend fort und setzen in unserer Entwicklung einen Schwerpunkt auf UX.
Domänenmodellierung
Software wird häufig verwendet, um Teile der realen Welt abzubilden. Dabei kann es sich wie beim EnOB Lernnetz um physikalische Simulationen handeln, die Situationen so genau wie möglich vorhersagen sollen. Oder um bürokratische Vorgänge wie die softwaregestützte Abgabe Ihrer Einkommenssteuererklärung. Dabei kann in der Software ein und dasselbe reale Objekt unterschiedlich repräsentiert werden, weil je nach Anwendungsfall andere Aspekte relevant sind. Die Architektur liefert hier schöne Beispiele: Während für die Berechnung der Einstrahlung auf ein Haus hautpsächlich die Form und Position entscheidend sind, interessiert man sich beim Errichten dieses Hauses stattdessen für den Fortschritt verschiedener Bauphasen wie Roh- oder Innenausbau.
Je besser Ihre Domäne, also Ihr Fachgebiet, in der Software modelliert ist, desto flexibler wird das System und desto direkter lassen sich Ihre Anforderungen umsetzen. Dadurch sinkt der Arbeitsaufwand mittel- und langfristig enorm. Anpassungen und Erweiterungen der Anwendung sind auch nach vielen Jahren problemlos möglich.
Herzstück unserer Projekte ist immer ein ausgeprägtes Domänenmodell, das auf einer tiefgehenden Analyse beruht und Ihre Anwendung über Jahrzehnte tragen kann. Auf diese Weise können wir selbst unsere ältesten Projekten heute noch effizient bearbeiten.
Integration von Sensordaten
In unserer modernen Welt fallen überall und ständig Sensordaten an. Bereits ein Smartphone zeichnet so viele Umgebungsdaten auf, dass es eigenständig eine autonome Flugdrohne steuern kann. Zusätzlich entstand ein Markt für Fitnessbänder, die ihren Träger fast so gut medizinisch erfassen können wie die Gerätetürme im Krankenhaus.
Es mangelt also nicht an verfügbaren Daten, die Herausforderung ist vielmehr, diese in sinnvolle Beziehung zu setzen, um bedeutsame Aussagen ableiten zu können. Große, aktuelle Technologietrends wie Industrie 4.0 oder Microservices basieren letztlich darauf, dass verschiedene Datenquellen integriert werden können.
Für diese Aufgabe bilden sich robuste Industriestandards heraus. Ein weit verbreitetes Beispiel ist OPC (Open Platform Communications), bei dem ein zentraler Kommunikationsknoten die Vermittlung übernimmt. Mit Reactive Programming stellen sich auch wir Softwareentwickler auf die Erkenntnis ein, dass in Zukunft noch mehr Daten verarbeitet werden müssen.
Kleinstrechner
Seit ein paar Jahren tragen wir alle einen leistungsfähigen Computer mit uns herum, der aus Tradition auch telefonieren kann. Doch auch in der industriellen Computertechnik geht der Trend zu immer kleineren und trotzdem leistungsfähigen Computern, deren Stromverbrauch sogar den Dauerbetrieb an normalen Batterien ermöglicht. Diese Kleinstrechner benötigen keine spezielle Kühlung und bieten zu einem sehr geringen Preis ausreichend Rechenkraft, um anspruchsvolle Aufgaben zu erledigen.
Der bekannteste Kleinstrechner ist der Raspberry Pi mit den Abmessungen einer Zigarettenschachtel. Auf diesem Rechner läuft normale Software, meistens auf Basis eines Linux-Betriebssystem, so dass keine teure Spezialentwicklung notwendig ist. Dank der vielen Anschlüsse und zahlreicher Zusatzplatinen ist der Raspberry Pi vielseitig einsetzbar und kann Aufgaben übernehmen, für die bisher Spezialelektronik notwendig war.
Daher verwundert es nicht, dass der Raspberry Pi und ähnliche Rechner in der Industrie großen Anklang finden. Auch wir haben einige Kleinstrechner im Einsatz, die uns bei unserer Qualitätssicherung unterstützen.
Datenqualität kontrollieren und verbessern
Seit einigen Jahren bezeichnet das Schlagwort „Big Data“ den Umgang mit sehr großen Datenmengen. Ein Aspekt ist dabei die Güte der gesammelten Daten, beispielsweise Duplettenfreiheit oder plausible, in sich wiederspruchfreie Werte.
Bei physikalischen Messgrößen bestimmt die Messgenauigkeit der Sensoren genauso die Datenqualität wie der statistische Fehler, der bei der Weiterverarbeitung stets berücksichtigt werden muss. Automatisch gemessene Werte werden eventuell mit durch Menschen ermittelten Werten gemischt, was die Aufgabe zusätzlich interessant macht.
Werden aus den Rohdaten Aussagen abgeleitet und veröffentlicht, müssen die zugrundeliegenden Daten validiert und von hoher Qualität sein. Dafür kann eine kontinuierliche Prüfung dienen, die den Zustand der Daten ermittelt und berichtet. Dieses Berichtwesen ermöglicht gezielte Maßnahmen zur Verbesserung der Datenqualität. Die Prüfungen und Berichte entsprechen in etwa den Kontrollen der fertigenden Industrie, nur dass hier Daten und nicht Produkte geprüft werden. Dadurch können automatisiert Daten mit gleichbleibender Qualität weitergegeben werden, ein wichtiger Aspekt für jeden Datenproduzenten.
Wir haben in nahezu allen Projekten mit Datenerfassung und -verarbeitung zu tun und beraten Sie gerne zu diesem Thema.
C++ für hochperformante Lösungen
Die Programmiersprache C++ ist eine der ältesten objektorientierten Sprachen mit Anfängen in den frühen Achtziger Jahren. Trotzdem ist sie hochmodern und in vielen Bereichen als Standardsprache etabliert.
Ein Vorteil, den C++ bei hochperformanten Aufgaben ausspielen kann, ist die Möglichkeit, Software nahe an der Hardware zu entwickeln, ohne auf Wartbarkeit und Entwicklungsgeschwindigkeit verzichten zu müssen. Dadurch reizen Sie die Leistungsfähigkeit Ihrer Hardware jetzt und in Zukunft optimal aus.
Bei vielen zeitkritischen Vorgängen spielt das Echtzeitverhalten der Software eine große Rolle. Auch hier punktet C++ durch die exakte Vorhersagbarkeit der Laufzeit – ein Vorteil, der es von vielen jüngeren Programmiersprachen unterscheidet.
Wir entwickeln für Aufgaben mit hohen Leistungsanforderungen immer in C++ und haben zahlreiche Projekte erfolgreich umgesetzt. Wegen stetig höherer Nachfrage werden wir uns personell in diesem Bereich verstärken. Wenn Ihr Projekt nach Leistung verlangt, reden Sie mit uns.
Reengineering
Die meisten Softwaresysteme im Produktiveinsatz sind Jahre oder sogar Jahrzehnte alt. Solange sie ihren Dienst tun, ist nichts dagegen einzuwenden, Software selbst altert nicht. Allerdings entwickelt sich kaum ein Bereich schneller weiter als die Computertechnik, so dass schon fünf Jahre in der Softwareentwicklung eine lange Zeit sind.
Wenn ein in die Jahre gekommenes Projekt zu stark von spezifischer Hardware oder hardwarenaher Software wie dem Betriebssystem abhängt oder der bisherige Entwicklungspartner nicht mehr verfügbar ist, bietet es sich an, dass Projekt mit den Mitteln des Reengineering auf moderne Technologie umsetzen zu lassen.
Der Sourcecode wird dabei gestrafft, also von allen in der Vergangenheit eingebauten „Schnörkeln“ befreit und auf das Wesentliche reduziert. Durch den langjährigen Einsatz der Software ist oft klar, welche Bereiche wirklich verwendet werden. Dann beginnt die Umsetzung auf eine moderne Programmiersprache und anschließend das Verbessern der Codequalität durch den Einsatz moderner Konzepte.
Als Auftraggeber erhalten Sie durch das Reengineering eine Software, die alle notwendigen Funktionen beinhaltet und offen für neue Erweiterungen ist. Ihr Entwicklungspartner ist dann bereits eingearbeitet und kann diese effizient umsetzen. Die Inbetriebnahme der neuen Software geschieht mit minimaler Ausfallzeit (Drop-In-Replacement).
Wir haben zahlreiche Projekte durch Reengineering erneuert.
Prozessautomatisierung
Schon der erste Einsatz eines Computers diente dazu, menschliche Arbeit zu automatisieren. Mittlerweile ist die Automatisierung in der Industrie und Wissenschaft nicht mehr wegzudenken. Wir automatisieren nicht mehr nur Verwaltungsvorgänge, sondern vollständige Fertigungsprozesse.
Ein wichtiger Aspekt für den Einsatz der Automatisierung ist die immense Beschleunigung der Vorgänge, oft um das Tausendfache, bei gleichzeitig verbesserter Effizienz – die Maschine wird nicht müde und macht seltener Fehler. Das ist für die wirtschaftliche Betrachtung der Prozessautomatisierung Begründung genug. Doch es gibt einen weiteren Effekt der Automatisierung, der mindestens genauso wichtig ist: Die am Gesamtvorgang beteiligten Menschen müssen sich um weniger Details kümmern und gestalten ihre Arbeit ergebnisorientierter. Das notwendige Wissen um die kleinteiligen Abläufe ist in der Software hinterlegt und damit genau dokumentiert. Die Software berät den Bediener mithilfe dieses Wissens, damit dieser fundierte Entscheidungen treffen kann, ohne alle Einzelheiten zu kennen. Er konzentriert sich wirklich auf das Wesentliche.
Wir haben viele Projekte mit Prozessautomatisierung erfolgreich durchgeführt.
Gestensteuerung
Seit über 25 Jahren waren Tastatur und Computermaus die Haupteingabegeräte für Software-Anwendungen. Diese Grundlage vieler Bedienkonzepte wandelt sich momentan rapide, viele Apps werden mittlerweile nur noch über einen Touchscreen bedient. Dementsprechend muss sich auch die Bedienung der Softwareoberflächen anpassen.
Auf dem Gebiet der neuen Eingabegeräte ist die berührungslose Gestensteuerung besonders innovativ. Die Bedienung der Software geschieht nicht mehr durch Handhabung eines Geräts, sondern durch eindeutige Gesten, die von der Software erkannt und umgesetzt werden. Zwei Arten von Gestenerkennung sind besonders vielversprechend: Die kamerabasierte Bildauswertung, wie es die Kinect 2 von Microsoft eindrucksvoll umsetzt und die Elektromyografie, bei der die Aktivität der Muskeln gemessen wird. Der myografische Ansatz verspricht detaillierte Gestenerkennung und ist nicht abhängig vom Blickwinkel einer Kamera.
Wir bleiben für Sie auf diesem Gebiet am Ball und interessieren uns besonders für die industriellen Einsatzmöglichkeiten jenseits der Unterhaltungsindustrie. Trotzdem war unsere erste eigenentwickelte Anwendung für das Myo Armband eine Adaption des Computerspiel-Klassikers „Moorhuhn“, das wir „Myohuhn“ getauft haben.
Wenn Sie das Myo Armband selbst ausprobieren und unseren Myohuhn-Highscore knacken wollen, kommen Sie einfach bei uns vorbei. Wir sprechen mit Ihnen gerne auch über den ernsthafteren Nutzen dieser aufregenden, neuen Technologie.
Versionskontrolle
Unter Versionskontrolle verstehen Softwareentwickler die Technik, alle Änderungen an einem Programmcode nachvollziehbar zu machen. Dazu speichern die Entwickler zu sinnvollen Zeitpunkten den aktuellen Stand des Codes mit Änderungskommentar als neueste Version auf einem zentralen Server. Über diesen Repository genannten Server beziehen die Teammitglieder eines Projekts auch immer den aktuellen Stand. So geht garantiert keine Änderung verloren und niemand arbeitet mit einem veralteten Code.
Für alle Projektbeteiligten ist der Inhalt des Repository sehr aussagekräftig, denn dort steht eindeutig und unfälschbar, wer wann was warum am Projekt geändert hat. Und nur die Änderungen im Repository werden zur Installation freigegeben.
Versionskontrolle ist aber nicht nur in der Softwareentwicklung sinnvoll. Wir arbeiten beispielsweise auch in der Verwaltung vollständig mit Versionskontrolle – jedes Dokument, beispielsweise Inventar- oder Rechnungslisten, ist in allen Änderungsstufen erfasst. Wir setzen dafür das Produkt Git ein.
Wenn Sie mehr über Versionskontrolle und den Nutzen dieser Technik für Ihr Unternehmen erfahren wollen, zeigen wir Ihnen unser System gerne in Aktion.
Auslieferung in Softwarepaketen
Um Software auf einem Rechner zu installieren, wird häufig ein spezielles Installationsprogramm mitgeliefert, das die notwendigen Arbeiten erledigt. Doch schon die Aktualisierung auf neuere Versionen ist meistens durch einen integrierten „Update Manager“ gelöst, der zu den unpassendsten Gelegenheiten interveniert. Wie einfach wäre es, wenn zusammen mit den Betriebssystem-Updates, die beispielsweise bei Microsoft Windows kurz vor dem Abschalten installiert werden, auch die Anwendungen aktuell gehalten würden!
Vielen Betriebssysteme lassen es zu, dass eigene Update-Server verwendet werden, auf denen auch die eigenentwickelte Spezialsoftware in passender Form hinterlegt ist. Dadurch hat der Administrator der Organisation die Kontrolle über die verwendeten Anwendungen und deren Versionen. Einzige Voraussetzung ist, dass die Software als passendes Softwarepaket vorliegt. Die Formate unterscheiden sich je nach Betriebssystem, der Komfortgewinn ist aber überall gleich.
Für Linux-Systeme ist dieses Vorgehen einfach. Wir haben für die ANKA eine sogenannte Buildfarm eingerichtet, bei der zahlreiche (virtuelle) Rechner die passenden Pakete automatisch produzieren und auf dem Update-Server bereitstellen. Für Windows-Systeme verspricht das Produkt Ninite eine Erleichterung gegenüber den integrierten Updatern.
Wenn Sie Ihre Spezialsoftware auf vielen Rechnern aktuell halten wollen, beraten wir Sie gerne.
Ablösen lokaler Datenbanken
Viele Datensammlungen fangen klein an und entwickeln sich im Laufe der Zeit zu einem Datenschatz mit großem Anwenderkreis. Eine beliebte Technologie für die Erstellung und Pflege kleiner, lokaler Datenbanken ist Microsoft Access. Dieses Vorgehen verspricht für die Anfangszeit eines Projekts Vorteile, die aber relativ schnell schwinden.
Ein wesentlicher Erfolgsfaktor für Datensammlungen ist deren Aktualität. Ein Berg größtenteils veralteter Daten bringt nicht den erhofften Mehrwert. Sobald der Aktualisierungsaufwand allerdings die Kapazitäten eines einzelnen Anwenders übersteigt, muss das System in den Mehrbenutzerbetrieb überführt werden. An dieser Stelle erweist sich die ursprüngliche Technologie meistens als nicht leistungsfähig genug, um mit den Anforderungen mitzuwachsen.
Jetzt sollten Sie den nächsten Schritt gehen und eine webbasierte Benutzeroberfläche umsetzen. Dadurch ergeben sich zahlreiche neue Bedienmöglichkeiten, die die Effizienz steigern und den Weg in die Zukunft weisen. Wir sind den Umgang mit gewachsenen, umfangreichen Datenbanken gewöhnt und helfen Ihnen gerne dabei, Ihren Datenschatz zukunftsfähig zu machen.
3D-Darstellungen im Internet
Das Internet präsentierte sich lange Zeit flach und textorientiert. Mit neuen technischen Möglichkeiten, vor allem dem HTML5-Standard, kommt Bewegung auf die Webseiten. Und durch die WebGL-Technologie können jetzt auch dreidimensionale Darstellungen ruckelfrei direkt im Browser ablaufen. Die Ergebnisse können sich durchaus sehen lassen, wie diese interaktive Simulation eines Schwimmbeckens zeigt.
Sie können jetzt also alle Daten, die sich dreidimensional repräsentieren lassen oder mit einer Position verknüpft sind, auch im Internet so anbieten, dass sie räumlich erfahrbar sind. Dieses Verfahren funktioniert mit jedem Gerät, vom Rechner bis zum Smartphone. Dank der Touch- und Gestensteuerung auf vielen Geräten lassen sich die 3D-Darstellungen sehr intuitiv bedienen und navigieren, wie etwa dieser interaktive Globus eindrucksvoll beweist.
Wir haben umfangreiche Erfahrung im Bereich der Datenvisualisierung und mit der 3D-Technik OpenGL sowie dem browserbasierten WebGL.
Hardware-Anbindung mit TANGO
Das Verbinden von Software mit Hardware ist immer eine herausfordernde Aufgabe. Noch anspruchsvoller wird es, wenn zahlreiche, unterschiedliche Hardware-Komponenten einheitlich verwendet werden sollen. Die Softwareplattform TANGO ist speziell für diese Anforderung entwickelt und bietet die zuverlässige Steuerung von verteilten Hardware-/Softwaresystemen. Der TANGO-Treiber steuert die Hardware direkt an und stellt deren Funktionen im lokalen Netzwerk für den Fernzugriff zur Verfügung.
TANGO ist unabhängig vom Betriebssystem und unterstützt den Einsatz mehrerer Programmiersprachen. Geräte, die mit TANGO einheitlich angesprochen werden, können Sie auch direkt in Rapid Development-Werkzeuge wie Matlab oder LabView einbinden und verwenden.
Wir verwenden TANGO für nahezu alle Projekte bei ANKA und sehen die Vorteile der Vereinheitlichung im Programmier- und Objektmodell. Unserem Kunden spart dieses Vorgehen Zeit und Kosten, die Projekte sind standardisiert und übertragbar. Im Betrieb erhalten die Wissenschaftler ebenfalls gleichartige Schnittstellen und Datenformate, so dass die Steuerung und Weiterverarbeitung erleichtert wird.
Wir sind Industriepartner des TANGO-Projekts. Wenn Sie Ihre komplexe Hardware-Infrastruktur mit TANGO integrieren wollen, beraten wir Sie gerne.
Gigapixel-Bilder
Wir beschäftigen uns immer wieder mit der automatischen Auswertung von Bildern, hauptsächlich in optischen Messverfahren. Die Bilder sind immer höher aufgelöst und bringen mitterweile Daten im höheren Megapixel-Bereich mit, also viele Millionen Bildpunkte pro Bild. Werden diese Bilder miteinander verknüpft, entstehen Bilder im Gigapixel-Bereich, also mit Milliarden von Bildpunkten.
Gigapixel-Bilder sind aktuell eine technische Herausforderung für handelsübliche Rechner, so dass wir bei der Programmierung der Software häufig an Grenzen stoßen, die im Megapixel-Bereich noch nicht auftreten. Auch für Combiz haben wir eine solche Hürde überwunden und auf unserem Entwickler-Blog (in englisch) darüber berichtet. Mit diesem Kniff konnten wir die Entwicklungskosten für das Projekt erheblich senken und gleichzeitig die Inbetriebnahme vereinfachen.
Wenn Sie Informationen aus Bildern extrahieren wollen, sind wir bestens gerüstet.
Datenhaltung in Tabellenkalkulationsprogrammen
Das erste Tabellenkalkulationsprogramm wurde 1979 entwickelt und hieß VisiCalc. Heute fehlt Microsoft Excel in keinem Büro und wird häufig für mehr als nur einfache Berechnungen verwendet.
Excel ist eine große Erleichterung für geübte Anwender. Beste Beispiele für typische Aufgaben sind das Filtern und Sortieren von Datenlisten. Allerdings ist Excel ein Werkzeug für die händische Datenverarbeitung. Anwendungen, besonders Webanwendungen mit vielen Benutzern, benötigen schon lange vor „Big Data“ ein echtes Datenbanksystem, um die geforderte Leistung zu erzielen.
Wenn Ihr Anwendungsfall für eine Datenhaltung in Excel zu anspruchsvoll wird, sollten Sie eine Migration der Daten in eine Datenbank vornehmen. Wir haben damit viel Erfahrung und können Sie professionell unterstützen. Der umgekehrte Weg, aus der neuen Datenbank zurück in Excel, ist allerdings genauso wichtig – denn nur so halten Sie weiterhin Ihre Daten in den Händen und können mit ihnen arbeiten. Unser Export-Modul kann sicher auch Ihren Anwendungsfall abdecken.
Polyglottes Programmieren mit Java
Java ist nicht nur eine beliebte Programmiersprache, sondern auch eine Laufzeitumgebung für Software. Die sogenannte Java Virtual Machine (JVM) führt Java-Programmcode auf allen gängigen Betriebssystemen aus und ermöglicht so plattform-agnostische Programmierung. Weniger bekannt ist, dass auch Sourcecode anderer Sprachen, beispielsweise Ruby oder Python ohne Einschränkungen auf der JVM läuft.
Durch polyglottes Programmieren können bei der Softwareentwicklung die Stärken der einzelnen Sprachen voll genutzt werden, ohne dass später für jedes Projekt eine neue IT-Infrastruktur angeschafft werden muss. Dynamisch entwickelte Anwendungen laufen auf der gleichen JVM wie funktional programmierte, hochgradig parallelisierte Algorithmen. Für Sie bedeutet das, dass Sie die Entwicklungskosten und Projektlaufzeiten bei gleichbleibenden Betriebskosten senken und die vorhandene Infrastruktur weiter nutzen können.
Wir können vorhandene Projekte in unterstützten Programmiersprachen ohne Neuschreiben des Sourcecodes auf die Java-Plattform übernehmen.
Wir setzen die Java-Plattform seit unserer Firmengründung mit verschiedenen Programmiersprachen für unsere Projekte ein und geben die Vorteile in der Projektumsetzung direkt an Sie weiter.
Datenabgleich mit ETL
In vielen Unternehmen arbeiten unterschiedliche Softwaresysteme, Datenbanken und Archive, teilweise aus verschiedenen Epochen der IT. Damit die wichtigen Daten in allen Systemen auf dem gleichen Stand bleiben, ist ein regelmäßiger Abgleich notwendig. Das kann automatisiert in beide Richtungen erfolgen.
Der Abgleich findet über den ETL-Vorgang statt, der aus den drei Schritten „Extract, Transform and Load“, also umgangssprachlich übersetzt „Heraussuchen, Konvertieren und Übernehmen“ besteht. Bei strukturierten Daten sind das Heraussuchen und das Konvertieren, also das Überführen der Daten in eine für das Zielsystem passende Darstellung, gut beherrschbare Aufgabenstellungen. Wir programmieren ETL-Software testbasiert, da auf diese Weise Sonderfälle im Datenbestand berücksichtigt werden können, bevor sie im Praxisbetrieb auffallen. Die Übernahme der Daten in das Zielsystem ist manchmal technisch bedingt etwas aufwendiger, aber immer umsetzbar.
Sie können mit ETL-Software ihren Datenbestand dauerhaft konsolidieren und systemübergreifend nutzen.
Business Intelligence (BI)
Bei den meisten Vorgängen in der Wirtschaft fallen heute Daten an, die dauerhaft gespeichert werden. Oft werden diese Daten allerdings nicht genutzt, also nicht zur Optimierung der Abläufe und damit zur Kostensenkung weiterverarbeitet. Dafür durchforsten geeignete Werkzeuge die teilweise riesigen Datenmengen und bereiten diese so auf, dass die gewünschten Informationen sichtbar werden.
Die Ergebnisse einer solchen Analyse werden häufig als strukturiertes Berichtdokument zusammengefasst. Mit Unterstützung durch geeignete Software können diese Berichte automatisiert erstellt werden, so dass die Kosten der Berichterstellung minimal sind.
Der wichtigste Aspekt beim Erstellen des Berichts ist die Formulierung der Frage, also der Informationen, die der Bericht enthalten soll. Viele Werkzeuge sind universell einsetzbar, aber für konkrete Fragestellungen nur umständlich zu bedienen. Wir schneidern unsere Lösungen direkt für Ihre Bedürfnisse, so dass Sie sich mit den Antworten befassen können und nicht mit den Fragen aufhalten.
Coaching on the Job
Anders als die klassische Beratung umfasst das Coaching auch die handfeste Mitarbeit bis zum Abschluss der Aufgabe. Im Gegensatz zu einem Entwickler muss ein Coach Erfahrungen in vielen Bereichen mitbringen und diese bei passender Gelegenheit weitergeben. Er berät intensiv in strategischen Fragen, wie der Auswahl der Implementierungstechnologie oder dem Entwicklungsprozess und setzt die Ergebnisse der Entscheidung mit um. Daher benötigt ein Coach eine feste Bodenhaftung und ein breites Spektrum an Best Practices, um auch die tägliche Arbeit zu erleichtern.
Statt als Dozent mit punktueller Fortbildung beauftragt zu werden, begleitet der Coach das Entwicklungsteam über den gesamten Projektverlauf hinweg. Er gibt seine Erfahrung im Projektmanagement genauso weiter wie Fachwissen zur Programmierung. Dadurch kann er ähnlich einem Freelancer zur Teamverstärkung herangezogen werden, wirkt aber weit über den Sourcecode hinaus.
Wir arbeiten seit vielen Jahren als Coaches in verschiedenen Entwicklungsteams. Die Arbeitsweise oszilliert von der reinen Entwicklerrolle bis zum Dozenten-Auftrag, ist also immer individuell auf den tatsächlichen Bedarf abgestimmt. Wenn Sie Ihr Team langfristig voranbringen wollen, bietet Coaching on the Job viele Vorteile.
Webanwendungen mit HTML5
Das Internet wird in der Sprache HTML programmiert. Webanwendungen profitieren von den neuen Möglichkeiten mit HTML5. Die Bedienung ist erheblich interaktiver und nähert sich dem gewohnten Komfort installierter Programme an. Dadurch steigt die Verwendbarkeit der Webanwendung auf Geräten mit nicht-klassischen Bedienkonzepten wie Touchscreen- und Gestensteuerung. Die üblichen Vorteile einer Webanwendung wie gleichzeitige Bedienung durch mehrere Anwender, zentrale Datenhaltung und installationslose Verwendung der immer aktuellsten Version bleiben erhalten, während HTML5 die bisherigen Nachteile wie unpassende Darstellung auf kleinen Geräten und umständliche Bedienung stark mindert.
Wir verfolgen die Neuerungen von HTML5 seit längerem und setzen die Technik in vielen Projekten ein. Für Sie bedeutet diese spannende neue Technologie, dass Ihre Webanwendung ohne erhöhten Entwicklungsaufwand den höchsten Ansprüchen aller Anwender gerecht wird.
Wir können bestehende Webanwendungen mit HTML5 nachrüsten.
Grails - die Plattform für Webanwendungen
Die Entwicklung von modernen Webanwendungen ist eine technisch anspruchsvolle Aufgabe, die sich durch die optimale Auswahl der Plattform, also des vorgefertigten Grundgerüsts der Anwendung, signifikant vereinfachen lässt. Viele verfügbare Plattformen sind entweder modern und kurzlebig oder langfristig aufgestellt, aber technologisch veraltet. Grails bietet die optimale Mischung aus Zukunftssicherheit und beständiger Weiterentwicklung. Die Plattform kann ohne Lizenzkosten in Ihrem Projekt verwendet werden und wird von großen Firmen unterstützt.
Grails basiert auf zahlreichen anerkannten Standards, die es sogar ermöglichen, ein laufendes Entwicklungsprojekt zu einem neuen Dienstleister zu transferieren. Aber auch in Ihre bestehenden IT-Landschaft fügt sich ein Grails-Projekt nahtlos ein. Durch den Einsatz von Java-Technologie ist es plattform-agnostisch auf allen Betriebssystemen einsetzbar.
Wir haben an Grails aktiv mitgearbeitet und eine große Anzahl an vielbeachteten Blog-Beiträgen veröffentlicht.
Wenn Sie eine moderne, aber langfristig aufgestellte Webanwendung entwickeln wollen, ist Grails eine gute Wahl.
Automatische Inbetriebnahme
Eine immer wiederkehrende Aufgabe bei Software-Systemen, die sich in Entwicklung befinden, ist die Installation neuer Versionen auf den Zielsystemen, um die neuen Funktionen nutzen zu können. Dieser Vorgang ist oft zeitraubend und anfällig für Unachtsamkeiten. Dadurch entstehen Ihnen laufend Kosten, die sich problemlos vermeiden lassen.
Die Inbetriebnahme von Software kann vollständig automatisiert werden, so dass außer dem Ausprobieren auf einem Testsystem keine Arbeiten anfallen, die nicht eine Maschine erledigen kann. Sie geben die neue Version zur Verwendung frei und alles weitere geschieht „von alleine“. Durch die automatische Inbetriebnahme können Sie sich auf die Nutzung der Software konzentrieren und verringern den Administrationsaufwand erheblich.
Auch wir als Ihr Entwicklungs-Dienstleister haben von dieser Technik große Vorteile, und sei es nur, dass wir uns bei der Installation auf bewährte Prozesse verlassen können und nicht mehr ständig auf der Hut sein müssen.
Die automatische Inbetriebnahme kann auch für bestehende Softwaresysteme nachgerüstet werden.
Plattform-agnostische Softwareentwicklung
Die Wahl des Betriebssystems ist oft der erste Schritt bei der Planung eines IT-Systems und lässt sich selten nachträglich ändern. Das liegt unter anderem an Software, die stark mit dem Betriebssystem gekoppelt ist, also auf anderen Betriebssystemen gar nicht funktionsfähig ist. Dadurch verlieren Sie die Möglichkeit, auf Entwicklungen am IT-Markt flexibel zu reagieren.
Doch Software kann auch so entwickelt werden, dass die Bindung an das Betriebssystem sehr gering ausfällt. Durch den Einsatz von plattform-agnostischen Programmiersprachen läuft Ihre Software ohne Änderung auf Windows-, Mac- und Linux-Systemen. Somit haben Sie wieder die freie Wahl zwischen den Alternativen, auch dann noch, wenn die Software bereits im Einsatz ist.
Wir sind schon immer darauf bedacht, auf allen gängigen Plattformen zu entwickeln.
Egal, für welche Art der Kontaktaufnahme Sie sich entscheiden, wir sind für Sie da.
Telefon 0721 – 986 149 90
(Mo – Fr, 9 – 18 Uhr)
Per E-Mail:
kontakt@softwareschneiderei.de
Softwareschneiderei GmbH
Gerwigstraße 10
76131 Karlsruhe