Skip to main content

Guiding Principle: "Fail Early" bzw. "Integrate as often as possible"

More
8 years 10 months ago - 8 years 10 months ago #168 by Florian Eder
Fakt ist: Bei der Erstellung von komplexen Applikationen passieren Fehler!

Die Frage die sich stellt ist somit nicht ob wir Fehler generell vermeiden können, sodern wie wir die Auwirkungen dieser Fehler so gering wie möglich halten können.
Die wesentlichen Guiding Principles in diesen Zusammenhang sind:
  • Fail Early
  • Integrate as often as possible
Wir legen unseren gesamten Entwicklungsprozess sowie unsere Infrastruktur darauf aus dass sich Fehler schnellstmöglich auswirken.
Das bedeutet wenn ein Entwickler mit einer Codeänderung einen Seiteneffekt in einem anderen Teil der Applikation produziert, soll diese Aufwirkung - am besten sofort - sichtbar werden. Dies erreichen wir durch zahlreiche Feedback-Loops innerhalb der Entwicklung.

Wie kommt eine geänderte Applikation bei uns in das Produkt:
  1. Der Entwickler committet seine Änderungen in unser GIT-Repository.
  2. Im ersten Schritt der Prüfung werden die Änderungen auf einem Build-Rechner isoliert übernommen und die Applikation compiliert. Des weiteren werden Unit-Tests durchgeführt um zu prüfen ob die Änderungen Seiteneffekte verursacht haben. Im Anschluss werden Basis GUI-Tests durchgeführt um das Gesamtsystem einer Prüfung zu unterziehen.
    Sollten bei einem dieser Schritte Fehler auftreten, erhält der Entwickler nach maximal 45 Minuten eine E-Mail Notification mit einem detailierten Fehlerreport.
  3. Zusätzlich wird jede Änderung durch einen anderen Entwickler reviewed und ggf. verbessert.
    Wurde beim Review die Änderung als OK befunden wird die Änderung in die aktuelle Produktversion übernommen, bei diesem Prozessschritt werden also die Änderungen des gesamten Teams zu einem Produkt Integriert.
    Danach wird auf Basis dieser Änderungen nochmals ein Test durchgeführt. Zusätzlich werden ausführliche GUI- sowie Performance-Tests als auch End-To-End Tests einer logi.CAD 3 Applikation auf der Referenz-Hardware durchgeführt.
Dieser gesamte Prozess dauert maximal 2 Stunden. Des weiteren wird über einen Bildschirm im Entwicklerbüro visualisiert sofern die Applikation derzeit Fehlerhaft ist.
Vor einem Release werden die Änderungen noch manuell durch den Product-Owner geprüft und weitere Fehler aufzudecken.

Aus meiner Sicht sind die 3 wichtigsten Nebeneffekt dieses Prozesses:
  1. Die Produktqualität liegt im Verantwortungsbereich der Entwickler
    Es ist nicht so dass nach dem Coding eine QA-Abteilung nachgeschalten wird um Fehler zu finden, eine Funktionalität gilt erst dann als Entwickelt wenn keine Fehler mehr auftreten.
    Dadurch wird bereits bei der ersten Zeile Applikationslogik Rücksicht auf die Qualitätsanforderungen genommen.
  2. Taskswitches werden minimiert
    Aufgrund der raschen Rückmeldung sind die Entwickler noch im Thema. Das bedeutet man weiß exakt aufgrund welcher Änderung ein Fehler entstanden ist.
    Dadurch wird die Fehleranalyse erheblich beschleunigt.
  3. Mehr Klarheit / Transparenz betreffend Produktfortschritt
    Dadurch dass Funktionalitäten fertig gemacht werden, gibt es in Summe weniger Funktionalitäten welche "eigentlich fertig" sind weil z.B. "nur noch das Fehlerhandling fehlt".
    Entweder ist die Funktionalität verfügbar, oder Sie wurde noch nicht begonnen.
    Dadurch wird auch der "Graubereich" in welchem Spekulationen zum Produktfortschritt möglich sind, wesentlich reduziert.
In logi.CAD 3 haben wir in diesem Zusammenhang folgende Funktionalitäten realisiert:
  • Die sofortige Anzeige von Fehlern während der Eingabe
  • Die Generierung von C-Code bereits beim Speichern des Source-Codes
  • Die möglichkeit die Codegenerierung sowie den Download durch die CI-Umgebung anzustoßen
  • Die möglichkeit UNIT-Tests zu realisieren welche aufgrund von Codeänderungen durch die CI-Umgebung ausgeführt werden
Damit ermöglichen wir unseren Anwendern oben genannte Prozesse zu leben und davon zu profitieren.
Last edit: 8 years 10 months ago by Florian Eder.

Please Log in or Create an account to join the conversation.

Powered by Kunena Forum