Software Engineering
Wir unterstützen Sie mit fundierter Beratung, Entwicklung und fundiertem Management.
Unser Ziel ist:
- Kontinuierliche Lieferung von funktionierendem integrierten Code in konstanter Geschwindigkeit
- Aufrechterhalten einer hohen Softwarequalität
- Permanente Reduzierung der Entwicklungsrisiken
Programmiersprache Rust
Wir empfehlen Rust für Neuprojekte, weil ...
- Memory safety - 90% aller Softwarefehler im Feld sind Speicherfehler und treten nicht mehr auf
- Thread safety - Race conditions gehören der Vergangenheit an
- Erzwungene Fehlerbehandlung führt zu robusterem Code
- Zero Cost Abstractions - Reduzieren den Testaufwand, führen zu lesbarem korrekten Code, bewirken keine Einbuße der Performance
- Exzellentes Ecosystem (code analysis, documentation, unit and doc testing, package management)
Natürlich unterstützen wir Sie mit auch mit der Programmierung in C/C++, Python and Typescript
Turnaround Cycles, Integration and Testing
Wir kümmern uns um kurze Turnaround-Zyklen, integrieren Änderungen immer und stellen sicher, dass die Änderungen zusammen mit dem integrierten System funktionieren.
Nur automatisierte Tests und Continuous-Integration erlauben es, mit gleichbleibender Geschwindigkeit funktionierenden, ins Gesamtsystem integrierten Code zu liefern.
Es gibt drei bedeutsame Arten von Turnaround-Zyklen:
- Entwickler lokal
- CI unstable Entwicklungsintegration
- CI stable integriert "pre-merge" to "stable integriert
Die Testpyramide adressiert
- Systemtests
- Integrationstests
- Komponententests (dynamische Funktionalität)
- Developer unit tests (statische Funktionalität)
Je geringer die Nummerierung der Testkategorie (je höher die Kategorie in der Testpyramide), umso höher ist der Testimplementierungsaufwand, umso teurer ist Vorhaltung der Teststände und umso länger dauert die Testdurchführung.
Um funktionierenden integrierten Code dauerhaft zusichern zu können, werden automatisierte Test auf allen Pyramidenebenen benötigt.
Das bedeutet, dass sowohl Testspezifikation, Teststand code und CI Job-Spezifikationen First Citizen Code darstellt, also gleichwertig zum eigentlichen Anwendungscode ist.
Softwareentwicklungsartefakte
Mit voranschreitendem Projekt, müssen entwicklungsnahe Artefakte aktuell gehalten werden, so dass zu jedem Zeitpunkt Projektkonsistenz gegeben ist.
- Anforderungsspezifikation
- Softwarearchitektur
- Testspezifikation
- Dokumentation
- Toolchain-Konfiguration
- Fremd-Bibliotheken und SBOM
- Release notes
Entwicklungs-Organization und -Prozesse
- Neben der Softwareentwicklerrolle agieren wir bei Bedarf auch als Projektleiter, Product Owner, Scrum Master, Anforderungsingenieur, Systemingenieur, Softwarearchitekt oder Testverantwortlicher
- Wir folgen Ihrem Entwicklungsprozess und übernehmen die abgesprochenen Rollen und Verantwortungen (unabhängig ob Ihr Prozessmodell Waterfall, Scrum, Kanban oder SAFE ähnlich ist)
- Optional beraten wir Sie bei der Transformation zu agilen Prozessen