Wie stellt man den Stand der Technik sicher? (Part 2 - während Entwicklung/Wartung)

Bereits im Rahmen der Entwicklung einer Software werden oft Verletzungen des Standes der Technik eingebaut. Kaum ein Entwicklungsteam kann von sich behaupten, dass die Software an allen Stellen dem Stand der Technik entspricht. Allzuoft erkennt man bereits während der Entwicklung Mängel, findet aber keine Zeit sie auszubauen. Dasselbe gilt für die Wartung - bereits bestehende Mängel werden nicht ausgebaut und neue Mängel kommen durch Wartungsarbeiten bzw. verabsäumte Anpassungen der Software an den geänderten Stand der Technik hinzu. Die Frage lautet also: Wie kann man während der Softwareentwicklung verhindern, dass Mängel hinsichtlich des Standes der Technik eingebaut werden bzw. dass verabsäumt wird, diese auszubauen?

Alle Menschen machen Fehler, das gilt selbstverständlich auch für gute Softwareentwickler. Aber unterschiedliche Softwareentwickler machen unerschiedliche Fehler, darum ist die Wahrscheinlichkeit, dass ein Fehler (oder ein Mangel hinsichtlich des Standes der Technik) in eine Software überhaupt eingebaut wird, deutlich geringer, wenn mehrere Entwickler gleichzeitig den Code schreiben. Dafür gibt es unterschiedliche Techniken wie Pair-Programming oder Mob-Programming. Auch mittels Design- und Code-Reviews findet man Fehler und Mängel hinsichtlich des Standes der Technik. Darum sollten ebenfalls Techniken wie verpflichtende Pull-Requests, Quality-Gates und Statische Code-Analyse eingesetzt werden.

Dieselben Techniken kann man auch in der Wartung einsetzen um sicherzustellen, dass bestehende oder durch die Änderung des Standes der Technik hinzugekommene Mängel ausgebaut werden: Beispielsweise durch die Einführung einer Quality-Gate, die sicherstellt, dass am Beginn jeder Release jedes Tool und jedes Framework aktualisiert und hinsichtlich des Standes der Technik überprüft wird.

All die genannten Techniken funktionieren aber hinsichtlich des Verhinderns bzw. Aufdeckens von Mängeln nur dann gut, wenn auf folgendes geachtet wird:

  • Blick auf das Ganze und nicht nur auf den kleinen Teil, an dem gerade gearbeitet wird. Ansonsten sieht man den Wald vor lauter Bäumen nicht und bekommt vielleicht guten Code, aber weder eine Architektur, noch ein Design gemäß Stand der Technik.
  • Collective Code Ownership und konstruktiver Umgang miteinander. Ansonsten bestimmen einzelne und andere trauen sich nicht Kritik zu üben.
  • Merciless Refactoring und Software Craftmanship. Ansonsten entsteht bzw. verkommt Software schnell zu einem billigen, schlechten, bald unwartbarem und somit abzulösendem Produkt.
  • Breites Wissen und Wissen darüber, was den Stand der Technik ausmacht. Ansonsten kennt man keine Alternativen bzw. kann nicht entscheiden, welche Alternative die bessere ist.

Nicht einmal die besten Teams beherrschen all diese Techniken - insbesondere fehlt zumeist das Wissen, was den Stand der Technik bei Software ausmacht, was zu den üblichen Mängel hinsichtlich des Standes der Technik führt. Wie schon bei den diesbezüglichen Überlegungen vor Beginn der Umsetzung eines Softwareprojektes, hilft auch hier der Einsatz eines unabhängigen Experten. Dieser kann nicht nur bei der Einführung und Optimierung der genannten Techniken helfen, sondern auch mit wenigen Stunden Aufwand pro Woche während der Entwicklung die Verantwortung und Haftung für den Stand der Technik übernehmen.

Fazit: Ein Team muss eine Reihe von Techniken und Verhaltensweisen einsetzen, um während der Entwicklung / Wartung eine Software am Stand der Technik zu halten. Damit das nicht nur zielgerichtet, sondern auch günstig erfolgt, wird der Einsatz eines unabhängigen Experten dringend angeraten.

Kommentare

  1. Hannes16/8/23

    Wie sieht das bei Nutzung von OSS SW als Bestandteil eines kommerziellen SW- Endproduktes aus? Wie kann hier sichergestellt werden, dass die OSS dem Stand der Technik entspricht bzw. wie kann definiert werden wie die SW "gehärtet" werden muss. Letztlich muss der Rahmen im wirtschaftlichen Rahmen bleiben da sonst die OSS Nutzung nicht wirtschaftlich im Vergleich zu einer Eigenimplementierung ist.

    AntwortenLöschen
    Antworten
    1. Deine Frage betrifft nicht nur OS-Software als Bestand einer kommerziellen Software, sondern auch beliebige (z.B. kommerziellen) Frameworks und Libraries und kann eigentlich auch auf externe Services, Klassenbibliotheken, APIs, Treiber bis zu Betriebssysteme ausgeweitet werden.
      In keinem Fall (auch nicht bei OSS) ist es möglich Einblick hinsichtlich der oben genannten Techniken zu bekommen. Es kann also vom Softwarehersteller gar nicht geprüft werden, ob derartige "Hilfssoftware" dem Stand der Technik entspricht. Was zählt ist, dass derartige Software gemäß Stand der Technik _eingesetzt_ wird (also dem Entwicklungsstand entsprechend, fortschrittlich, bewährt und zielgerichtet). Und das ist deutlich günstiger als eine Eigenentwicklung.
      Siehe dazu https://stand-der-technik.blogspot.com/2022/12/einsatz-von-open-source.html

      Löschen

Kommentar veröffentlichen

Wenn du auf meinem Blog kommentierst, werden die von dir eingegebenen Formulardaten (und unter Umständen auch weitere personenbezogene Daten, wie z. B. deine IP-Adresse) an Google-Server übermittelt. Mehr Infos dazu findest du in der Datenschutzerklärung von Google (https://policies.google.com/privacy).

CC BY-NC-SA 3.0 AT Sebastian Dietrich, e-movimento