Einführung

xitee bietet Erfahrung in der Entwicklung von Softwarelösungen mit konkretem Know-how in Bezug auf digitale Unternehmen, den Finanz- und Energiesektor und das Gesundheitswesen. Unser breites Kundenspektrum reicht von kleinen Startups bis hin zu großen Unternehmen. Wir bedienen sowohl Kunden, die bislang keine Erfahrung mit Softwareentwicklung gemacht haben, als auch spezialisierte Softwarehäuser.

Unser Ziel ist es, stets qualitativ hochwertige, gut getestete Software zu entwickeln, die in kürzester Zeit und zu möglichst geringen Kosten produktionsreif ist. Diese scheinbar widersprüchlichen Ziele werden erreicht, indem wir einer vorausschauenden Planung sowie unseren internen Best Practices folgen, und dadurch typische Fallstricke von Softwareentwicklungsprojekten ausschließen.

Wir antizipieren mögliche kostspielige Fehler, wie z. B. das Versäumnis, den Endbenutzer oder Kunden um Feedback zu bitten, wodurch überflüssige Nacharbeiten und nachträgliche Korrekturen vermieden werden. Wir konzentrieren uns verstärkt auf die Testphase und Code-Reviews, die mit Blick auf die Zukunft viel Nacharbeit, Zeit und Geld sparen. Daneben wenden wir stets unser fundiertes Branchenwissen an.

Neuentwicklung

Wir bieten die Entwicklung von Lösungen mit maximalem Mehrwert für unsere Kunden, angefangen von der Analyse der Geschäftsanforderungen, über das Lösungsdesign (funktional, grafisch und technisch), die Realisierung, Bereitstellung und den anschließenden Support.

Unsere bisherigen Projekte umfassten eine Vielzahl unterschiedlicher Technologien für fast alle Plattformen. Am häufigsten verwenden wir Java oder .NET als Backend und Angular oder React für die Entwicklung neuer Weblösungen. Unser erfahrenes Team ist bereit, immer die beste Lösung für Ihre spezifischen Anforderungen zu finden. Weitere Informationen zu diesen Technologien finden Sie unter Technologien.

Jedes Projekt, an dem wir arbeiten, beinhaltet eine ordnungsgemäße Qualitätssicherung (QA), bevor das Projekt live geht.

Qualitätssicherung

Es gibt sechs Grundbausteine (Versionskontrolle, kontinuierliche Integration, Fehlerverfolgung, Unit-Tests / Komponenten-Tests, Reviews / Überprüfung, Code-Analyse), die die Qualität der Software und damit des Produkts selbst sicherstellen. Verschiedene Synergien zwischen den einzelnen Teilen ermöglichen Transparenz und Wartbarkeit. Gleichzeitig dienen diese Bausteine als “Werkzeugkasten” für jeden einzelnen Softwareentwickler.

Durch den Einsatz einer Versionskontrolle wird jede Änderung des Codes nachvollziehbar dokumentiert und jede Version kann jederzeit wiederhergestellt werden. Dies verleiht der Entwicklung Flexibilität und ermöglicht eine genaue Analyse aller auftretenden Fehler der Software.  

Der Einsatz eines CI-Systems (Continuous Integration) ermöglicht eine kontrollierte Kompilierung neuer Softwareversionen sowie ein kontinuierliches Reporting für die Entwickler über auftretende Fehler während der Kompilierung. Zusätzlich können automatisch ermittelte Kennzahlen generiert und gemeldet werden, die den Zustand des Produktes anzeigen. Features und Bugs sowie Meilensteine und Projektaufgaben werden über das Issue-Tracking-System (JIRA und / oder Confluence) verwaltet. Dies schafft eine nachvollziehbare und transparente Entwicklung von der Anforderungsanalyse bis hin zur Auslieferung und ermöglicht das Herstellen von Zusammenhängen zwischen einzelnen Aufgaben oder Features.

Weiterentwicklung

Bei der Bewertung des Zustands Ihrer aktuellen Lösungs-Architektur und der Entscheidung, ob ein Rewrite oder ein Refactoring erforderlich ist, muss jedes Unternehmen viele Aspekte berücksichtigen, um die richtige Entscheidung zu treffen. 

Einige der Hauptaspekte sind hierbei:

•  Geschäftsziele erreichen: Das kann für jedes Unternehmen unterschiedlich sein. Beispiele für Geschäftsziele sind z.B. die Fokussierung auf neue Kundenanforderungen und Feature-Releases, der Fokus auf Qualität und die Produktleistung, oder das Gewinnen neuer Kunden und Marktanteile.

•  Technologie: es gilt abzuwägen, wie lange die derzeit verwendeten Programmiersprachen und Frameworks noch unterstützt werden. Gibt es neue Technologien und Trends, von denen die Anwendung profitieren kann? (z. B. Clouds, Microservices, neue Framework-Versionen)

•  Kostenminderung für Wartung und Implementierung neuer Funktionen: Reduzieren der bestehenden technologischen Tiefe, Verkürzen der Markteinführungszeiten

•  Leistung & Sicherheit: Ist Performance ein Problem, das mit der aktuellen Architektur nicht gelöst werden kann? Soll die System-Sicherheit via Penetrationstest oder Sicherheitszertifikat überprüft werden? Möchten Sie Ihre Sicherheitsstandards erhöhen?

•  Kundenerfahrung: Sind Ihre aktuellen Endkunden mit dem UI/UX-Design Ihrer Anwendung zufrieden? Kann ein neues UI/UX die Effizienz weiter verbessern? Bei internen Anwendungen können wir zum Beispiel prüfen, ob eine App die Produktivität der Mitarbeiter weiter verbessern kann.

•  Qualität der aktuellen Codebasis: Verfügt Ihre Softwarelösung über korrekte Design Patterns / Designmuster? Nutzen Sie Code-Style & Unit-Tests? Ist Ihre Lösung fehlerbehaftet /-anfällig?

xitee kann im Rahmen der Analysephase den Support sowie auch die Weiterentwicklung Ihrer Lösung übernehmen.

Beispiele möglicher vereinbarter Vorgehensweisen:

•   Weiterentwicklung auf Basis der bestehenden Codebasis

•   Beibehaltung der alten Codebasis, aber Fokussierung auf Refactoring

•  Das gesamte System von Grund auf neu “schreiben”

•  Das System in Teilen neu „schreiben”

Mobile Entwicklung

xitee bietet verschiedene Arten der mobilen Entwicklung an, basierend auf Ihren Anforderungen. Native Development erstellt Lösungen mit hoher Performance, kann allerdings in der Entwicklung recht kostspielig sein. Sofern Ihnen nur ein begrenztes Budget zur Verfügung steht, könnte eine plattformübergreifende Entwicklung für Sie die geeignete Option sein. Hierbei ist es möglich, bis zu 50 % des Aufwands einzusparen, da nur eine einzige Codebasis erstellt wird, die sowohl auf Android als auch auf iOS funktioniert.

Falls nicht die Notwendigkeit besteht, Ihre Lösung im App Store oder bei Google Play anzubieten sondern Sie lediglich eine mobile-freundliche Umgebung für Ihre Anwender bereitstellen möchten, können wir Progressive Web Apps (PWA) verwenden mit ausgewählten Funktionalitäten für die mobile Anwendung. Die günstigste und schnellste Lösung könnte sein, ausschließlich auf Weblösungen zurückzugreifen, die für Mobilgeräte optimiert sind.

Native Development / Native Entwicklung

Native Anwendungen werden über ihre native Betriebsumgebung entwickelt. Bei einer nativen Entwicklung verwenden Entwickler eine für eine bestimmte Plattform angepasste Programmiersprache, wie z. B. Objective-C und Swift für iOS oder Java für Android. 

Vorteile der nativen Entwicklung:

•    stabile und schnelle Performance

•    maximale App-Lebensdauer

•    die Anwendung ist aufgrund der Verwendung nativer Tools flexibler und skalierbarer

•    weniger Einschränkungen in Architektur und Funktionen

•    die Schnittstelle wird in voller Übereinstimmung mit der Plattform erstellt

Plattformübergreifende Entwicklung

Plattformübergreifende Lösungen werden über eine gemeinsame Betriebsumgebung entwickelt, wie z. B. Xamarin. Eine plattformübergreifende Lösung ist eine universelle Lösung, die von mehreren mobilen Plattformen gleichzeitig unterstützt wird. Einerseits ist das bequem und profitabel, auf der anderen Seite müssen möglicherweise gewisse Kompromisse eingegangen werden, da es schwierig ist, die Lösung auf verschiedene Betriebssysteme zuzuschneiden. 

Vorteile der plattformübergreifenden Entwicklung:

•    die Entwicklung nimmt weniger Zeit und Ressourcen in Anspruch

•    die Entwicklungsgeschwindigkeit wird erhöht

Progressive Web-App (PWA)

Eine progressive Web-App basiert auf Web-Technologien wie HTML, CSS und JavaScript, kann dabei allerdings vom Feel und ihrer Funktionalität mit einer echten nativen App mithalten. Durch geschickte Ergänzungen lässt sich fast jede Website in eine Progressive Web-App verwandeln. Das bedeutet, dass Sie in recht kurzer Zeit eine progressive Web-App erstellen können.

Vorteile der PWA-Entwicklung:

•    Sie sparen sich den Prozess, um in verschiedene App-Stores zu gelangen

•    PWAs sind reibungslos, schnell und leicht

•    Im Gegensatz zu Ihrer regulären Website funktionieren PWAs auch offline

•    Sie können Push-Benachrichtigungen verwenden, um Nutzer wieder einzubinden

Für Mobilgeräte optimierte Weblösungen

In diesem Szenario erstellen wir ein separates Design für mobile Geräte. Es ist der schnellste Weg, Ihre Lösung für mobile Nutzer bereitzustellen. 

Vorteile einer für mobile Endgeräte optimierten Weblösung:

•    geringe Kosten

•    schnell zu implementieren (Time-to-market kurz)

Data Warehousing & Berichtswesen

Data Warehousing ist die Art und Weise, ein Data Warehouse aufzubauen und zu nutzen. Ein Data Warehouse entsteht durch die Integration von Daten aus mehreren heterogenen Quellen, die das analytische Reporting und die Entscheidungsfindung unterstützen. xitee bietet Erfahrung in Hinblick auf zahlreiche verschiedene Technologien, einschließlich Datenbanken, Data Warehouses und Migrationsprojekte.

Das Datenreporting ist ein Prozess, bei dem Rohdaten gesammelt, formatiert und anschließend in ein verständliches Format umgewandelt werden, um die laufende Leistung Ihres Unternehmens zu bewerten. Ein Datenbericht zeigt dann, wo die meiste Zeit und Ressourcen aufgewendet werden und an welchen Stellen mehr Organisation oder Aufmerksamkeit nötig wird.

Ein genaues Datenreporting spielt in jeder Branche eine wichtige Rolle. Daher liefern wir einen Dienstleistungsumfang, der sich auch auf Data Warehousing und Reporting konzentriert. Wir bieten Erfahrung mit den folgenden Tools und Technologien:

• SQL-Datenbanken – Datenbankdesign, Optimierung und Upgrade für gängige DB-Systeme (Oracle, Microsoft SQL Server, MySQL, MariaDB, Galera Cluster, PostgreSQL)

• noSQL-Datenbanken und Suchmaschinen – Auswahl und Einsatz geeigneter Technologien für bestimmte Anforderungen (Cosmos DB, Mongo DB, Lucene, Elasticsearch)

• Datenmigration als Teil neuer Softwareentwicklung, typischerweise unter Verwendung selbst entwickelter (projektspezifischer) Migrations-Tools. Entweder als Batch-Prozess oder als kontinuierliche Datenübernahme/Synchronisation

• Data Warehouse – Design und Implementierung einer Cloud-basierten sowie maßgeschneiderten Data-Warehouse-Lösung, einschließlich Datenimport, Datenhaltung, Datenanalyse und Daten-Exportfunktionen

• Reporting – Erstellung von Berichten, Dashboards und Exporten einschließlich Datenzugriff, Verarbeitung, Präsentation und Speicherebenen. Die Ausgabe kann UI-basiert oder dokumentbasiert erfolgen, einschließlich elektronischer Dokumenten-Signatur. Hierbei verfügen wir über Kenntnisse zu vielen gängigen Bibliotheken, wie Highcharts, chart.js, IOS Charts und Tools wie JasperReports, SQL Server Reporting Services (SSRS) und Microsoft Power BI.

Prototyping (Entwicklung von Prototypen)

Software-Prototyping bietet Ihnen die Möglichkeit, eine Softwarelösung zu visualisieren, noch bevor diese erstellt wurde. Da die Entwicklung einer Software von Grund auf eine große Investition an Zeit, Geld und Aufwand erfordert, ist es von Vorteil, vor Beginn der Entwicklung des eigentlichen Produkts einen visuellen Prototyp entwickeln zu lassen. Der Prototyp fungiert als „Modell“, das das Aussehen und manchmal auch die Funktionalität des Produkts, das der Kunde entwickeln möchte, nachbildet. 

Um zu entscheiden, ob Sie Prototyping für Ihr Projekt in Betracht ziehen wollen, gibt es mehrere Aspekte zu beachten.

Überlegungen und Situationen, in denen Prototyping die beste Wahl sein könnte: 

•    Falls die Anforderungen an das Produkt dem Team nicht klar sind

•    Falls die Anforderungen an das Produkt instabil sind und sich schnell ändern

•   Falls es sich um softwareintensive und komplexe Systeme handelt, die etwas mehr Experimentier-Spielraum und minimales Risiko erfordern

•    Große Projekte mit straffen Zeitplänen und fixen Lieferterminen

Die Synergie von Finanzen und Technologie gibt uns einen guten Einblick in die Thematik dieser zügig wachsenden Branche. FinTech richtet sich hauptsächlich an Unternehmen, die technologische Fortschritte nutzen, um Prozesse in Bezug auf Finanzdienstleistungen zu verbessern oder gar zu automatisieren. Es erstreckt sich von Investment-Anwendungen und Mobile Banking bis hin zu Versicherungen und Kryptowährungen

FinTech ist in den letzten Jahren aufgrund des massiven Anstiegs von Internet- und insbesondere Smartphone-Nutzung rasant gewachsen. Es ist jedoch nicht ausschließlich auf diesen Bereich beschränkt, denn FinTech kam ursprünglich im kommerziellen Bereich zum Einsatz – u.a. durch die Einführung von Geldautomaten und Kreditkarten, gefolgt von automatisiertem & Hochfrequenz-Handel.

FinTech ist in den letzten Jahren aufgrund des massiven Anstiegs von Internet- und insbesondere Smartphone-Nutzung rasant gewachsen. Es ist jedoch nicht ausschließlich auf diesen Bereich beschränkt, denn FinTech kam ursprünglich im kommerziellen Bereich zum Einsatz – u.a. durch die Einführung von Geldautomaten und Kreditkarten, gefolgt von automatisiertem & Hochfrequenz-Handel.

Die Arbeit an Finanzmärkten birgt einige Besonderheiten, wie z. B.:

  • Zu Spitzenzeiten am Markt müssen Handelssysteme riesige Mengen an Nachrichten verarbeiten. Das erfordert eine komplexe Systemarchitektur, die durchgängig auf hohen Durchsatz und niedrige Latenz hin optimiert wurde. Eine solche Spitze kann Größenordnungen von bis zu hunderttausend Nachrichten pro Sekunde erreichen, wobei die Latenz in Millisekunden gemessen wird.
  • Häufiger Bedarf von Systemintegration über sog. Bridge-Anwendungen, welche bestehende Systeme verbinden, ohne sie verändern zu müssen. Aufbau neuer Systemschnittstellen. Typisches Beispiel hierfür sind FIX-Protokollkonverter (Financial Information eXchange).
  • Hochverfügbarkeit-Systemdesign für geschäftskritische Systeme. Robustes Systemdesign mit redundanten Teilen (kein Single-Point-of-Failure) sowie einer Echtzeit-Überwachung des Systemzustands ermöglicht hohe Systemverfügbarkeit von 99,99 % und mehr. Es kann zudem mit einem 24/7-Betrieb (ohne Servicecharge) kombiniert werden. Einige durch uns entwickelte oder betreute Systeme gelten in Deutschland, Österreich und weiteren Ländern als kritische Infrastruktur.

xitee hat fundierte Erfahrung in Bezug auf die Zusammenarbeit mit führenden europäischen Börsen und FinTech-Unternehmen. Weitere Informationen finden Sie in unseren Projekten.

Cloud Computing ist vereinfacht ausgedrückt die Bereitstellung von Computing-Diensten. Dazu gehören Server, Speicher, Datenbanken, Netzwerke, Software, Analysen, sowie Intelligenz über das Internet („die Cloud“) mit dem klaren Ziel, schnellere Innovationen, flexiblere Ressourcen-Nutzung und Skaleneffekte zu ermöglichen. Sie zahlen in der Regel nur für die von Ihnen genutzten Cloud-Dienste, was folglich dazu beiträgt, Betriebskosten zu senken, die Infrastruktur effizienter zu betreiben und entsprechend den aktuellen Anforderungen Ihres Unternehmens zu skalieren.

Es gibt drei Haupt-Servicemodelle des Cloud Computing – oft dargestellt als Pyramide, bei der jede Ebene des Servicemodells auf derselben Grundstruktur aufbaut, aber spezialisierter ist als die vorhergehende. Das untere Modell (IaaS) ist vielseitiger und anpassungsfähiger und passt zu vielen Anwendungen, das obere (SaaS) ist spezialisierter und für konkrete Aufgaben geeignet.

  • Infrastructure as a Service (IaaS) ähnelt herkömmlicher Computer-Hardware (Server, Netzwerke, Betriebssysteme), doch können Unternehmen statt die physische Hardware zu kaufen die Infrastruktur als virtuellen Dienst über einen IaaS-Anbieter beziehen. Diese Ressourcen sind in der Regel einfach zu skalieren und bieten dem Kunden vollständige Kontrolle über die Infrastruktur. Beispiele für IaaS sind Amazon Web Services und Google Compute Engine.
  • Platform as a Service (PaaS) steht für eine Plattform, die es Unternehmen ermöglicht, Lösungen zu entwickeln, zu betreiben und zu verwalten, und zwar ohne die Komplexität die der Aufbau und die Wartung der Infrastruktur mit sich bringen, welche normalerweise mit der Entwicklung und Einführung einer App verbunden sind. Entwickler können sich somit auf die Software konzentrieren, ohne sich um Betriebssysteme, Software-Updates und sonstige Infrastruktur-Fragen kümmern zu müssen. PaaS-Beispiele sind Microsoft Azure, die Google App Engine.
  • Software as a Service (SaaS) stellt eine komplette Softwarelösung dar, die Sie nutzungsbasiert (auf einer Pay-as-you-go-Basis) über einen Cloud-Dienstleister erwerben. Vereinfacht gesagt mieten Sie die Nutzung der jeweiligen Lösung für Ihr Unternehmen. Anstatt die Anwendung installieren zu müssen, können sich die Anwender über das Internet verbinden, meist über einen Webbrowser. Die gesamte zugrunde liegende Infrastruktur, Middleware, App-Software und App-Daten befinden sich im Rechenzentrum des Service-Providers. Der Anbieter verwaltet die Hardware und Software und sorgt für die Verfügbarkeit und Sicherheit der App und Ihrer Daten. Beispiele für SaaS sind Salesforce, Microsoft Office 365 und Google G Suite.

Inzwischen wird die grundsätzliche Einteilung oft um eine vierte, noch spezifischere, Dimension erweitert – FaaS.

  • Function as a Service (FaaS) ermöglicht Kunden, Code reaktionsschnell auszuführen, ohne Verarbeitungsressourcen bereits im Voraus zuweisen zu müssen. So lassen sich App-Funktionalitäten entwickeln, ausführen und verwalten, ohne dabei komplexe Infrastrukturen aufbauen und warten zu müssen. Diese Art der App-Entwicklung wird häufig bei der Erstellung von Microservices-Anwendungen genutzt und ermöglicht eine sogenannte serverlose Architektur. FaaS-Beispiele sind AWS Lambdas, Azure Functions.

Eine weitere Möglichkeit, Cloud Computing zu unterteilen, basiert auf dem Bereitstellungsmodell.

Die Cloud-Bereitstellung beschreibt, wo die Infrastruktur für die Bereitstellung gehostet wird und wer darauf Zugriff und Kontrolle hat. Es gibt vier Bereitstellungsmodelle:

  • Private Cloud – eine exklusive Cloud speziell für das Unternehmen, die sich vor Ort (On-Premise), aber auch außerhalb (Off-Premise) befinden kann
  • Public Cloud – diese Cloud-Infrastruktur steht der Öffentlichkeit zur Verfügung und gehört dem Unternehmen, das die Cloud-Dienste vertreibt
  • Community Cloud – diese Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die geteilte Anliegen hat
  • Hybride Cloud – diese Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (Private, Community oder Public)

Diese Cloud-Aufteilung definiert auch die verwendete Bereitstellungs-Strategie.

Wir bieten unseren Kunden Cloud-Beratungsdienste, Cloud-Infrastrukturdienste, Cloud-Anwendungsentwicklung und Cloud-Anwendungsmigrationsdienste. Darüber hinaus sind wir im Bereich IoT (Internet of Things) aktiv.

Unser Cloud-Migrationsservice kann Sie beim Übergang zum digitalen Geschäftsbetrieb in der Cloud unterstützen. Die Migration Ihrer internen Server einschließlich der darauf laufenden Dienste und Anwendungen in die Cloud kann Ihnen einige zukunftsweisende Vorteile für Ihr Unternehmen bieten. Es ist jedoch sehr wichtig, den Übergang richtig und den spezifischen Anforderungen entsprechend durchzuführen. Da jedes Unternehmen andere Bedürfnisse hat, folgen auch wir für jede individuelle Cloud-Migration einem etwas anderen (leicht angepassten) Prozess. Mit unserer Cloud-nativen Entwicklung helfen wir Ihnen dabei, Anwendungen zu entwickeln und zu betreiben, die alle Vorteile des Cloud-Computing-Modells voll ausschöpfen. Unser Cloud-nativer Computing-Service nutzt: Open-Source-Software-Stack, der containerisiert, dynamisch orchestriert und auf Microservices ausgerichtet ist.