Product Innovation & Development

agido GmbH Product Innovation & Development

Wir machen Software! agido unterstützt Sie in allen Phasen der Produktentwicklung. Von der ersten Idee bis hin zu Betrieb und Wartung. Und das immer möglichst schlank.

 

Neuentwicklungen

Ideenfindung, Konzeption & Business Case

Gemeinsam mit Ihnen entwicklen wir Ideen in Innovationsworkshops und gießen diese in ein fundiertes Konzept. Der von unseren Expertenteams erstellte Business-Case dient dann als Grundlage zur fundierten Entscheidung über die Fortführung des Projektes. Wird in dieser Phase erkannt, dass das Vorhaben nicht den betriebswirtschaftlichen Ansprüchen genügt, kann das Konzept noch angepasst werden ohne das unnötige Mehraufwände in die Entwicklung fließen.

 

Ideenfindung
Konzeption
Business Case
Entwicklung
Betrieb & Wartung

 

Implementierung

Im nächsten Schritt folgt die Implementierung des Produkts. Hier unterstützen unsere Programm-/Projektleiter, Business-Analysten, Architekten, Entwickler, Tester oder wir stellen gerne auch ein ganzes cross-funktionales Team.

Betrieb & Wartung

Mit der Fertigstellung und dem Launch des Projektes endet unser Service noch lange nicht. Gerne hosten und betreiben wir das fertige Produkt in unserem oder Ihrem Hause und übernehmen auf Wunsch auch die Weiterentwicklung und die Wartung.

Modernisierung gewachsener Anwendungslandschaften

Sollte Ihr Projekt bereits gestartet sein, holen wir Sie dort ab, wo Sie momentan stehen. Gerne übernehmen wir auch Verantwortung für gewachsene Anwendungslandschaften, die ihre Leistungsgrenzen erreicht haben und gehen mit Ihnen das Refactoring und die Modernisierung dieser Systeme an.

Ist diese Vorgehensweise nicht zu viel »Wasserfall«?

Wenn man eine neue Software entwickeln oder eine Erweiterung einer bestehenden Komponente durchführen will, hat man oft nur eine grobe Vorstellung davon, was diese eigentlich leisten soll. Und trotzdem will man möglichst im Vorhinein wissen, was es am Ende kosten wird. Und das am liebsten in Form eines Festpreises.

Belastbare Aussagen sind vor dem Hintergrund sich stetig ändernder Anforderungen, wandelnder Rahmenbedingungen und Prioritäten sowie auftauchender Risiken kaum möglich. Insbesondere größere Vorhaben entziehen sich einer „Geradeheraus-Planbarkeit“.

Zudem ist Software-Entwicklung ist vor allem eines: ein Prozess des Erkenntnisgewinns. Nicht selten stellen sich Anforderungen später als ungeeignet dar. Und andere, eigentlich notwendige Anforderungen, werden zu Beginn „übersehen“.

Agilität

Daher gehen wir in all unseren Projekten agil und iterativ-inkrementell vor und entscheiden mit Ihnen in jeder Phase nur das, was unbedingt entschieden werden muss. Mit diesem Vorgehen vermeiden wir lange und teure Spezifikationen und bewältigen die Komplexität der Software-Erstellung.

Unser Vorgehen

Sie treten mit Ihren Wünschen/Vorhaben oder ersten Ideen an uns heran. Die prinzipiellen Fragen, die wir dann erörtern, sind:

  • Was genau ist das Problem? Welche Motivation steht dahinter?
  • Wie sieht eine mögliche Lösung aus?
  • Wer fordert die Software an und wer soll sie bezahlen?
  • Welcher Nutzen soll erzielt werden und welche Kosten werden entstehen?
  • Waren alle Stakeholder in die Diskussion eingebunden?

Der Aufwand für die Umsetzung wird von uns bestimmt. Anhand dessen können Sie dann wertbasiert entscheiden, ob Sie ein Feature möchten und mit welcher Priorität Sie es zur Umsetzung einphasen. Da unsere Releasezyklen sehr kurz sind, erhalten Sie durch diesen Ansatz hohe Flexibilität bei gleichzeitig sichergestellter Plan- und Steuerbarkeit.

Am Ende steht ein System, das Sie wirklich benötigen. Eine schlanke auf ihre Bedürfnisse zugeschnittene Lösung. Und auf dem Weg dorthin behalten Sie stets den Überblick über Fortschritt, Qualität und Kosten.

Continuous Delivery

Wir leben „Continuous Delivery“ (~Kontinuierliche Auslieferung), d.h. unsere Prozesse sind so organisiert, dass wir stetig in der Lage sind, den aktuellen Software-Stand eines Projektes auszuliefern und in Betrieb zu nehmen.

Diese Organisation ermöglicht dezentrale Arbeitsabläufe, in denen unsere Entwickler entkoppelt voneinander an unterschiedlichen Entwicklungszweigen arbeiten können. In der Regel haben wir in unseren Projekten zwei übergreifende Hauptstränge:

  • den aktuellen Weiterentwicklungsstrang (Development/Integration), in den zeitnah alle neuen Features integriert werden und
  • den Produktionsstrang (Master/Production), der den aktuellen Software-Stand der Betriebsumgebung widerspiegelt

Jeder Entwickler hat einen oder mehrere eigene lokale Entwicklungszweige, in denen er Neu- bzw. Weiterentwicklung, aber auch Fehlerbehebung vornehmen kann. Darüber hinaus können Entwicklungszweige eröffnet werden, um z.B. ein umfangreicheres Feature in einem Team zu entwickeln. Die Ergebnisse verschiedener Entwicklungszweige können dann „leicht“ in den maßgebenden Zweig (Integration) zusammengeführt werden.

Entwicklung, Test/Abnahme und Betrieb erfolgen in unterschiedlichen, dedizierten Umgebungen. Jeder Entwickler hat seine lokale Entwicklungsumgebung, die im Normalfall hinsichtlich funktionaler Aspekte äquivalent zur Betriebsumgebung ist. Bei Bedarf kann ad hoc eine Entwicklungsumgebung für die Entwicklung im Team eingerichtet werden.

Sind die Entwicklungen an einem Feature bzw. einer Teilfunktionalität soweit abgeschlossen, dann werden die Änderungen vom lokalen Entwicklungszweig in den Integrationszweig übernommen (siehe oben).

Hier setzt unser automatisches Build-System ein, das regelmäßig den aktuellen Stand des Integrationszweiges heranzieht, zusammenbaut und in die eigens vorgesehene Integrationsumgebung einspielt, in der Integrationstests vorgenommen werden. Waren die Tests erfolgreich, so wird das betreffende Feature in den Release-Zweig „erhoben“.

Erneut kommt unser automatisches Build-System zum Zuge, dass auch den Release-Zweig regelmäßig erstellt und in die Staging-Umgebung installiert. Diese Umgebung ist der Betriebsumgebung ebenbürtig, auch hinsichtlich nicht-funktionaler Gesichtspunkte.

Hier führen wir mit Ihnen den Abnahmetest durch. Tauchen keine weiteren Fehler auf, so wird das Feature in Produktion genommen.

Warum machen wir das alles? Ist das nicht furchtbar kompliziert?

Das Internet hat die Verteilung von Software radikal geändert. Software wird heute online ausgeliefert. Zunächst haben wir die physischen Erstellungsprozesse hinter uns gelassen (Disketten, CDs) und jetzt auch langwierige Installationsorgien.

Wir können unseren Code so schnell in Produktion stellen, wie Sie ein Word-Dokument speichern. Und diese Möglichkeiten nutzen wir für Sie als Wettbewerbsvorteil, um Software früh und oft online zu stellen, dort Feedback der Kunden/des Marktes zu erhalten und dieses Feedback (und das, was wir zwischenzeitlich sonst so gelernt haben) in die nächste Iteration einfließen zu lassen.

Das gibt Ihnen die Möglichkeit jederzeit schnell auf Kundenwünsche reagieren zu können.

Die unkomplizierteste Möglichkeit, unsere Dienstleistungen kennen zu lernen, ist ein individuelles Gespräch. Mit Vergnügen berichten wir aus unseren Projekten und informieren Sie über unser Portfolio.