Code der Träume wahr macht

Produkt­entwicklung
Anwendungs­­architektur
Anwendungs­­entwicklung
Testing und Anpassung
Produkt­­lösungen
1.

Software Produkt­entwicklung

Am Anfang jeder Softwareentwicklung steht immer die Idee: Was soll die Software können? Und wofür braucht man sie überhaupt? Anwender von Software brauchen niemals Code. Sie brauchen das, was der Code leistet. Also beginnen wir genau dort: beim Nutzen für den Anwender. Den formulieren wir und hinterfragen ihn so lange, bis wir ihn verstanden haben. Und dann hinterfragen wir ihn nochmal. Schließlich wollen wir uns sicher sein, was der Anwender wirklich braucht (und nicht nur, was er denkt, was er braucht).

Schnelle Prototypen­entwicklung

Schnelle Prototypen­entwicklung

Anwender wissen häufig gar nicht, was sie wirklich brauchen. Darum müssen wir ihnen schnell ein Gefühl für die mögliche spätere Software Lösung geben. Mit der kurzfristigen Entwicklung von Prototypen – auch „minimum viable products“ (MVP) – erstellen wir eine vereinfachte Version des möglichen Ergebnisses. Anwender können so sofort sehen, ob wir verstanden haben, worum es geht. Und wir können einen ersten Blick auf die Technik werfen: Wo gibt es Herausforderungen bei der Integration in bestehende Systeme? Und was müssen wir im weiteren Verlauf des Projekts aus technischer Sicht berücksichtigen?

Anforderungs­bewertung

Anforderungs­bewertung

Wir kennen den geplanten Nutzen für den Anwender. Und wir haben die Ergebnisse der Prototypen. Jetzt können wir das Nutzererlebnis mit den technischen Bedingungen der Software abgleichen: Welche davon sind eine besondere Herausforderung für das Projekt? Für welche haben wir noch keinen Umsetzungsweg gefunden? Und welche sind vielleicht doch gar nicht so wichtig für das Nutzererlebnis, wie gedacht?

Anforderungs­erhebung

Anforderungs­erhebung

Hier erheben wir die genauen Anforderungen der Anwender einer neuen Software. Wir dokumentieren sie und machen sie messbar. So schaffen wir ein Zielsystem, mit dem wir prüfen können, wann unsere Arbeit erfolgreich gewesen ist.

Priorisierung

Priorisierung

Für einen kosten-, zeit- und termingerechten Projektverlauf überprüfen wir jetzt noch einmal die Anforderungen und vereinfachen sie. Dann vereinfachen wir sie weiter. Und noch einen Schritt weiter. So sehen wir am Ende glasklar, was der Anwender haben will. Und planen dann das Projekt so, dass die höchsten Prioritäten zuerst bearbeitet werden. Anschließend legen wir los!

2.

Anwendungs­architektur

Das Fundament jeder Softwareentwicklung ist die Architektur. Sie ist das Gerüst von allem, was wir darauf aufbauen. Damit eröffnet sie nicht nur Möglichkeiten für eine Organisation – sie kann sie auch einschränken. Unsere Aufgabe ist es hier, eine Balance zwischen Nutzererlebnis und Rahmenbedingungen zu finden. Also z.B. zwischen vorhandenen Systemen, der geplanten Skalierung und dem vorgesehenen Budget für die Software.

IT-Architektur

IT-Architektur

Wir analysieren die vorhandenen Datenmodelle oder schaffen neue. Ebenso gleichen wir sie mit vorhandenen oder neuen Anwendungen ab. Wo werden wichtige Funktionen geleistet? Wo werden welche Informationen benötigt oder erzeugt? Genau das ermitteln wir und lassen es in die Architektur einfließen.

Technologie­architektur

Technologie­architektur

Wir schauen uns die vorhandene Infrastruktur genau an – oder definieren die, die noch erschaffen werde muss. Wie können wir die Anwendungen so integrieren, dass die Projektziele erreicht werden? Und wie können wir dabei Erweiterbarkeit und Skalierung sicherstellen? Gute Fragen, auf die wir eine Antwort finden.

Sicherheits­architektur

Sicherheits­architektur

Informationssicherheit ist heute ein unausweichliches Thema. Wir bewerten vorhandene oder fehlende Sicherheitssysteme und -prozesse. Und wir suchen Lösungen für mögliche Lücken. Alle Erkenntnisse berücksichtigen wir für den weiteren Projektverlauf.

3.

Anwendungs­entwicklung

Wir schreiben Code. Clean Code, der genau den Nutzen erzielt, den wir vorher definiert haben. Der leistungsfähig und skalierbar ist. Der sich gut warten und erweitern lässt. Und der dabei absolut stabil läuft. Hört sich nach Basics der Software-Entwicklung an? Sind ja auch Basics. Und damit für uns selbstverständlich.

Agiles Projektmanagement

Agiles Projektmanagement

Wir arbeiten nach Scrum und Kanban, auf jeden Fall aber immer agil. Alle 14 Tage starten wir einen neuen Sprint mit einem neuen Ziel. Wir arbeiten die Prioritäten der Nutzer Schritt für Schritt ab und lassen sie anhand von Zwischenergebnissen entscheiden, ob wir auf dem richtigen Weg sind. Nach einer sorgfältigen Retrospektive planen wir dann die Prioritäten für den nächsten Sprint. So rennt niemand kopflos, hektisch oder aktionistisch durch die Gegend. Sondern wir arbeiten fokussiert auf das gemeinsame Ziel hin.

Technologie

Technologie

Seit Neuestem greifen wir auf Kotlin zurück und kommen aus einer Java-Welt. und dokumentenbasierte Datenbanken zurück. Das machen wir nicht, weil es für uns ein Allheilmittel für alle denkbaren Anwendungen ist. Sondern weil wir es A) in den meisten Fällen für besonders leistungsfähig halten. Und weil wir es B) einfach richtig gut können. In der Entwicklung arbeiten wir dann mit gängigen Tools wie z.B. IntelliJ, Gitlab, Gradle, Docker und Kubernetes.

Rechtliches

Rechtliches

Bei unseren Verträgen achten wir darauf, dass sie unsere agile Arbeitsweise voll abbilden. Das bedeutet zwar für den Auftraggeber (vielleicht lästige) Pflichten. Aber wir glauben daran, dass die besten Ergebnisse dann erzielt werden, wenn jeder seinen Teil dazu beiträgt. Schließlich sind wir ein Team, das nur gemeinsam träumen – und Erfolg haben kann.

4.

Software-Testing und Anpassung

Während der Entwicklung achten wir auf eine hohe Testabdeckung. Nur so können wir Fehler frühzeitig entdecken und unnötige Aufwände minimieren. Bei uns ist die Qualitätssicherung ein integrierter Bestandteil der Entwicklung. Nur so können wir Frustration vermeiden und das Nutzererlebnis zur Freude machen. Unser Ansatz ist dabei ein „continuous deployment“-Ansatz: Wir müssen jederzeit in der Lage sein, begonnene Veränderungen schnell abzuschließen und den Code wieder live zu bringen. Dadurch fallen Fehler schneller auf – und wir können innerhalb kürzester Zeit darauf reagieren, bevor unsere Anwender dies registrieren.

Testverfahren

Testverfahren

Wir sind Experten in vielen Testverfahren, wie z.B. automatisierten Oberflächentests, PACT-Testing, Unit Tests oder Integrationstests. Es gehört für uns einfach mit dazu zuverlässige Produkte zu schaffen, deren korrektes Verhalten kontinuierlich sichergestellt ist. Dabei ist uns auch wichtig, dass bereits beim Coden an die Erfolgsmessung gedacht wird, also genau definiert wird, welches Ergebnis der Code erreichen soll (User Acceptance Test). Und dass wir durch eine hohe Testabdeckung auch Ergänzungen an komplexen Systemen schnell und zuverlässig durchführen können.

Contract Testing

Contract Testing

Wenn wir über moderne Softwarearchitektur reden, dann sprechen wir davon, dass Geschäftsprozesse und Kernfunktionen der Software in eigenständige Services aufgeteilt werden. Dadurch schaffen wir klare Zuständigkeiten, größere Flexibilität, bessere Skalierbarkeit und Ausfallsicherheit.
Um eine reibungslose Kommunikation zwischen diesen Services gewährleisten können, nutzen wir PACT als Tool.
Jegliche Schnittstellen werden hierzu definiert und automatisiert überprüft, so dass das System als Ganzes  jederzeit funktioniert.

Organisation

Organisation

In unseren Scrum-Teams integrieren wir permanent Quality Assurance (QA) Experten, die die Qualität durch den gesamten Entwicklungsprozess bis hin zum erfolgreichen Release sicherstellen. Hierdurch schaffen wir von vornherein ein 4-Augen Prinzip und einen Blick aus Sicht des Anwenders. Folgekosten für das Ausbessern unzureichender Qualität werden somit vermieden.

5.

Produkt­lösungen

Unsere Lösungen richten sich nach den Wünschen des Kunden und der Anwender unserer Produkte.
So entwicklen wir Lösungen, die durch Cloud-Technologien auf der ganzen Welt verfügbar sein können und nah beim Anwender sind, um schnelle Antwortzeiten zu garantieren.
Zudem garantieren wir durch unsere agilen Prozesse und Service-Architektur frühzeitig einen Mehrwert für den Kunden zu schaffen und entwickeln Features dann sukzessiv bis zu dessen Fertigstellung weiter.
Am Ende entscheidet der Anwender über den Erfolg des Produktes, so dass unser Anspruch immer bestehen bleibt, Ihnen das beste Erlebnis im Netz zu bieten.

Wie wir das machen?

Kontaktiere uns und finde es heraus.

Kontaktiere uns