Softwareentwicklung
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