Intelligence Lifecyle (BigData)
Mit dem richtigen und wichtigen Wissen in Ihrer Organisation, gewinnen Sie
einen entscheidenden Vorteil gegenüber Ihrer Konkurrenz und Sie haben die
Informationen zur Hand, um wichtige Entscheidungen zu treffen. Dazu müssen
Sie jedoch eine Vielzahl von Informationsquellen auf Muster und Merkmalen
analysieren und verarbeiten. Die Anforderungen an die anfallende Datenmenge
sind hoch und benötigen neue und moderne Konzepte.
Seit mehreren
Jahren befassen wir uns mit dem Sammeln, Verarbeiten, Analysieren,
Produzieren und Verbreiten von Daten, womit aus den Rohdatendaten wertvolles
Wissen aufbereitet werden kann.
Wir bieten Ihnen Lösungen für
folgende Ausgabenstellungen:
Falls Sie Lösungen oder ähnliche Aufgabestellung benötigen, können wir Ihnen gerne fachkräftig bei der Konzeption und Realisierung Unterstützung anbieten.
Continuous Integration und Delivery
Das frühzeitige Erkennen und Beheben von Fehlern während der
Softwareentwicklung ist ein wichtiger Bestandteil in einem produktiven
Entwicklungsumfeld. Mit Continuous Integration wird diese wichtige
Eigenschaft erfüllt, indem alle Quelltextänderungen im Repository laufend
verifiziert werden und bei Fehler aktiv informiert wird. Zudem sind
heutzutage kurze und schnelle Bereitstellungen von Softwareprodukten auf
diversen Test- und Produktionsumgebungen essentiell, um auf Änderungen in
der Wertschöpfungskette adäquat reagieren zu können. Bei
traditionellen manuellen Release-Zyklen bedeutet dies einen grossen
Aufwand und ist fehleranfällig. Mit Continuous Delivery und DevOps lässt
sich die Verteilung von Softwareprodukten standardisieren und
automatisieren.
Wir verfügen über das fundierte Wissen und
haben viele praktische Erfahrungen in der Anwendung von Continuous
Integration, angefangen von Unit- und Integration Test-Frameworks über
Build-Server bis hin zu Continous Delivery mit Deployment-Pipelines und
DevOps Technologien.
Wir unterstützen Sie bei der
Konzeption und Realisierung von diesen innovativen Ansätzen, um eine
möglichst produktive Entwicklungsumgebung für Sie zu ermöglichen.
Testautomation
In der Softwareentwicklung wird eine Vielzahl von Softwarebausteinen
eingesetzt, welche entweder eine Eigenentwicklung ist oder von anderen
Drittherstellern beigesteuert wird. Bei der Integration dieser
Bausteine gilt es die Kompatibilität und die Gesamtfunktionalität des
Systems mittels zeitintensiven Acceptance Tests zu verifizieren und
sicherzustellen. Mithilfe der Automation dieser Acceptance Tests lässt sich
der wiederkehrende Aufwand reduzieren.
Der Einsatz von
Testautomation mit Unit-, Integrations- und automatisierten Acceptance-Tests
bietet Ihnen folgende Vorteile:
Die Qualität Ihres Produktes und Ihrer Dienstleistung liegt uns sehr am Herzen und wir sind der Meinung, dass Qualität nicht verhandelbar und der Garant für den Erfolg ist. Wir beraten und unterstützen Sie gerne bei der Konzeption und Realisation der Testautomation.
Modellgetriebene Softwareentwicklung (MDSD)
Durch den Einsatz der modellgetriebenen Softwareentwicklung lassen sich in kürzester Zeit Änderungen für unterschiedliche Technologien auf der Makro- und Mikroebene der Softwarearchitektur bewerkstelligen. Anhand des Spezifikationmodells und den Generatoren können Sie die Domäne und Ihre Technologie vereinen und Sie behalten stets die Übersicht Ihrer Softwarearchitektur. Die von uns angewandte Vorgehensweise der modellgetriebenen Softwareentwicklung in Kombination mit modernsten .NET Technologien bietet viele Vorteile:
Die modellgetriebene Softwareentwicklung verbirgt auch viele Gefahren, was zu Fehlleistungen und schlussendlich zu Mehrkosten führen kann. Wir unterstützen und begleiten Sie bei der Einführung und Realisierung der modellgetriebenen Softwareentwicklung, um den erfolgreichen Einsatz der modellgetriebenen Softwareentwicklung sicherzustellen.
Parallele Programmierung
Moderne Rechnersysteme, vom High-End Server bis zum Smartphone, verfügen meistens über mehrere Prozessorkerne. Will man diese Rechenleistung ausnutzen, stellt sich schnell die Frage, welche Programmteile parallel ausgeführt werden können oder wie man die Wartezeit bei einem Medienzugriff durch asynchrone Kommunikation sinnvoll nutzen kann.
Der Gewinn an Performance und Skalierbarkeit wird jedoch mit einer erhöhten Komplexität im Programmcode erkauft. Die korrekte Reihenfolge der Ausführung muss gewährleistet werden und der Zugriff auf gemeinsame Ressourcen muss durch Synchronisierung geschützt werden. Dies kann im Fehlerfall zu gegenseitigem Ausschluss (Deadlock) führen.
Wir besitzen langjährige Erfahrung in der parallelen Programmierung und asynchronen Kommunikation unterstützen sie gerne beim Einsatz der .NET Hilfsmittel async/await, TPL, Semaphoren, Mutex und Threads.
Architektur nach arc42
Die Entwicklung der Architektur eines Softwaresystems ist eine kreative Arbeit im Team welche oft auch mit Unwägbarkeiten und Risiken verbunden sind. Sie folgt nicht einem strikten Prozess oder Vorgehensmodell. Um nicht im Chaos zu versinken, stützen wir uns auf die bewährten Methoden von arc42.
Arc42 bietet ein standardisiertes Template für die Architekturdokumentation. Dieses bildet eine vollständige, strukturierte und vernetzte Sammlung aller architekturrelevanter Themen. Eine unerlässliche Stütze während Entwicklung und Weiterentwicklung der Architektur.
Clean Code
Wir stellen hohe Ansprüche auf die Codequalität. Die Entwicklung der Software muss sich für den Kunden lohnen und soll nachhaltig der Wertschöpfung beitragen. Typischerweise sind Softwaresysteme über lange Zeiträume im Einsatz und müssen laufend angepasst und erweitert werden können. Darum implementieren unsere Software nach dem Clean Code Wertesystem:
Um diese Werte umsetzen zu können, stellt die Clean Code Initiative eine Sammlung von Prinzipien und Praktiken zur Verfügung.