Grundsätze

Wir konzentrieren uns auf Individualentwicklung. Weil wir der Meinung sind, dass maßgeschneiderte Softwareentwicklung nur gelingen kann, wenn der gesamte Unternehmensprozess darauf ausgerichtet ist. Bei uns gibt es nichts Fertiges von der Stange, wir sind kein Start-up-Unternehmen mit einer großartigen Produktidee, wir entwickeln exklusiv für Sie.

Wir verfügen über Kreativität, Kommunikationsfähigkeit, geistige Flexibilität, kaufmännische Kompetenz und technische Expertise und begleiten unsere Kunden von den ersten Ideen und Bleistiftskizzen bis zum fertigen Produkt.

Menschen

Unsere handverlesenen Mitarbeiter sind unser wertvollstes Asset. Wir haben hohe technische Kompetenz und Spaß daran, herausragende Lösungen zu finden, reines Abarbeiten von Anforderungen ist uns zu wenig. Perfekte Arbeitsbedingungen und Teamzusammenhalt haben oberste Priorität. Die ständige Weiterentwicklung, das Ausprobieren neuer Technologien und der Blick in die Zukunft ermöglichen uns, höchste Qualität liefern zu können. Wir freuen uns über innovative Projekte, die auch in technischer Hinsicht neue Herausforderungen bieten.

Diese Leidenschaft und unser Wissen geben wir auch gerne weiter: Mitarbeiter von uns unterrichten nebenberuflich an der FH Hagenberg, sind Mentoren bei einem Programmierclub für Kinder und Jugendliche (CoderDojo Linz), halten Vorträge in Schulen und auf Entwicklerkonferenzen und schreiben Fachartikel und Bücher.

Transparenz

Diese perfekt passenden Lösungen entstehen auf der Grundlage von jeder Menge Kommunikation: Regelmäßige Projektbesprechungen und Sprintmeetings sind ein wichtiger Teil davon, zusätzlich gibt es mit vielen Kunden täglichen oder wöchentlichen Telefon- oder Mailkontakt. Unseren Projektablauf beschreiben wir hier im Detail.

Den Projektfortschritt können Sie tagesaktuell auf unserem Online-Tagebuch einsehen, wo für Sie stets ersichtlich ist, wie weit Ihr Produkt gediehen ist und welche Schritte gerade erledigt wurden. Das erleichtert die Projektkontrolle enorm und schafft eine hohe Nachvollziehbarkeit in Bezug auf Zeit und Kosten.

Systemarchitektur

Maßgeschneiderte Software-Entwicklung

Seit unserer Gründung verstehen wir uns als Anbieter maßgeschneiderter Softwarelösungen. Wir beherrschen unseren technologischen Werkzeugkasten und sind es gewohnt, neue und komplexe Architekturen zu planen und umzusetzen.

Unsere Lösungen können manchmal nicht mit dem Funktionsumfang existierender Standardsoftware (vgl. Sharepoint, SAP) mithalten, aber sie passen sich optimal an den gewünschten Arbeitsprozess an und erfüllen die zentralen Aufgaben deutlich besser.

Bei der Umsetzung legen wir großen Wert auf Wartbarkeit, Testbarkeit, Performance und Benutzerfreundlichkeit: Design Patterns, Unit Tests, Last Tests, Coding-Guidelines, Code-Reviews und SOLID-Architekturen sind für uns keine Fremdwörter, sondern tägliche Praxis.

Frontend-Technologien

Als Frontend-Applikationsframework setzen wir seit einigen Jahren vorwiegend auf Angular, welches sowohl für Desktop-, als auch mobile Anwendungen eingesetzt werden kann. Fast alle Software Entwickler in unserem Team haben Praxiserfahrung mit diesem Framework. Dennoch werden alternative Frontend-Technologien und deren Funktionen bei uns in regelmäßigen Abständen evaluiert, um stets die beste Technologieauswahl treffen zu können.

Um die bestmögliche Benutzerinteraktion auf allen benötigten Endgeräten zu ermöglichen, setzen wir Bootstrap ein. Dies erleichtert die Erstellung responsiver, mobiler Anwendungen enorm und bietet einen großen Werkzeugkasten bei der Unterstützung verschiedener Displaygrößen wie etwa Desktop, Tablet und Smartphone.

Spezielle Funktionen sowie auch Benutzersteuerelemente, welche nicht nativ von den Webbrowsern zur Verfügung gestellt werden, werden über so genannte Package-Manager eingebunden. Dies bietet den Vorteil, dass Abhängigkeiten besser zu verwalten sind und Updates kontrollierter angewandt werden können. Durch den Einsatz können ebenso Versionskonflikte auf ein Minimum reduziert werden.

Aus technischer Sicht basieren alle eingesetzten Bibliotheken und Frameworks auf altbewährten Technologien wie HTML, JavaScript und CSS. Um moderne Software-Entwicklung betreiben zu können, verwenden wir jedoch aktuelle Entwicklungswerkzeuge und Programmiersprachen, um die Nachteile bzw. den fehlenden Funktionsumfang dieser Basistechnologien auszugleichen. Diese sind unter anderem die typisierte Programmiersprache TypeScript und so genannte CSS-Precompiler wie etwa Sass.

Backend-Technologien

Backend-Services werden von uns mit C# und .NET Core umgesetzt. Unsere Entwickler haben durch ihre Ausbildung (meist: FH Hagenberg) und die tägliche Praxis viel Erfahrung im Umgang mit diesen Technologien, auch .NET Core ist bereits in zahlreichen Kundenprojekten im Einsatz.

Für viele Anforderungen haben wir Empfehlungen für Drittanbieter-Komponenten (zB Office-Integration, Logging, etc.) oder selbst entwickelte Frameworks (zum Teil öffentlich auf GitHub).

Bei der Umsetzung der Business Logik empfehlen wir die Verwendung des CQS-Patterns (Command-Query-Separation).

API

Als zentralen Bestandteil von Lösungen sehen wir die Einführung einer REST-basierten API-Schnittstelle. Diese wird größtenteils ohnehin für die Implementierung der Angular-Anwendung benötigt, bietet aber darüber hinaus für die Zukunft gute Erweiterungsmöglichkeiten:

  • Moderne Schnittstellen für zukünftige Szenarios
  • Bereitstellung von Webhooks zur Kommunikation mit anderen Systemen (Auslösen von Notifications, Triggern von weiteren Prozessen, etc.)
  • Anbindung mobiler Anwendungen (iOS, Android, etc.)

Die API-Schnittstelle wird unter Verwendung von ASP.NET Core entwickelt und mit Swagger dokumentiert.

Datenhaltung

Wir setzen bei unseren Projekten auf sehr unterschiedliche Speicherformen – von relationalen Datenbanken über NoSQL bis hin zu JSON.

Betrieb in Azure

Wir haben sehr gute Erfahrung mit dem Betrieb in hochverfügbaren und zertifizierten EU-Rechenzentren von Microsoft. Aus unserer Sicht entstehen dadurch folgende Vorteile:

  • Es können mehrere Versionen der Software gleichzeitig betrieben und binnen Sekunden getauscht werden. Vor allem beim Einspielen von Updates entstehen daraus große Vorteile und keine Unterbrechungen.
  • Wir können vom ersten Tag an Testversionen bereitstellen und haben den automatisierten Deployment-Prozess im Griff – On-Premise benötigt es üblicherweise Abstimmungen, VPN-Verbindungen, Datenschutz-Vereinbarungen, etc. bis die Infrastruktur funktioniert.
  • Es stehen zahlreiche Services bereit – und wir nutzen diese (wenn möglich) intensiv: verschiedenste Speicher (SQL Server, Redis Cache, Cosmos DB, Elastic Search, etc.), Serverless Computing (Azure Functions), künstliche Intelligenz (Cognitive Services, Azure ML), Geocoding (Azure Maps), und vieles mehr.
  • In Zeiten größerer Last können kurzfristig mehr Server oder leistungsstärkere Server angemietet werden, in schwächeren Zeiten oder in der Nacht werden Kosten gespart.
  • Um die Betreuung der Server bzw. das Einspielen von Betriebssystem-Updates oder -Patches kümmert sich Microsoft.
  • Datenbanken können auf jeden beliebigen Zeitpunkt in der (nahen) Vergangenheit wiederhergestellt werden, um Fehleranalyse oder Korrekturen vorzunehmen („Point-in-time restore“).
  • Die Rechenzentren sind u.a. ISO 27001 zertifiziert, nähere Informationen unter Azure Compliance.
  • Wir haben seit 2011 Praxis-Erfahrung im Umgang mit Microsoft Azure, zahlreiche unserer Kunden vertrauen auf diese Lösung. Wir sind Microsoft Gold-Partner und haben ein existierendes Enterprise Agreement Program.

Betrieb On-Premise

Selbstverständlich verstehen wir aber auch, wenn Gründe für einen Betrieb On-Premise sprechen. Von lokalen Installationen (SQL Server, Microsoft IIS) über hybride Lösungen (Datenbank On-Premise, Anwendung in der Cloud) bis hin zum Betrieb von Docker-Containern ist alles denkbar.

Continous Delivery

Worauf wir – unabhängig vom Ort des Betriebs – Wert legen, ist ein automatisierter Build- und Deploymentprozess. Sie sollen als Kunde ständigen Zugriff auf unseren aktuellen Entwicklungsstand haben und möglichst rasch Feedback geben können – da darf das Updaten von Software nicht mehr aus manuellen FTP-Uploads bestehen. Wir setzen auf Azure DevOps und haben fertige Build- und Release-Pipelines für die eingesetzten Technologien.