Die Rolle der Supply Chain
Zuverlässige Software (Teil 2)
Worum gehts?
In der heutigen digitalisierten Welt ist Software aus dem Alltag eines mittelständischen Unternehmens nicht mehr wegzudenken. Vom ERP-System über die Kundenverwaltung bis hin zu speziellen Branchenlösungen – überall ist Software im Einsatz.
Nur wenige Dienstleister sind in der Lage in der Königsklasse mitzuspielen und zuverlässige Software zu liefern.
Warum ist dies so wichtig und welche Rolle die Supply Chain spielt, erfahren Sie im folgenden Artikel.
Wie wird zuverlässige Software hergestellt?
Niemand muss das Rad neu erfinden und alles selber (neu) programmieren. Im Gegenteil: das Not-Invented-Here-Syndrom hat schon einige Softwareprojekte den langsamen und qualvollen Tod sterben lassen.
Dafür ist heute die Welt zu kompliziert und das eigene Wissen zu begrenzt (ja, auch bei den Besten kann das vorkommen).
Die korrekte Auswahl von Bausteinen, Frameworks und Hilfsmitteln ist allerdings inzwischen eine Kunst geworden, bei der weitreichende Aspekte berücksichtigt werden wollen.
Zukunftsfähigkeit
Grundsätzlich muss bei der Auswahl von Bibliotheken darauf geachtet werden, dass diese von einer aktiven Community weiterentwickelt werden. Dabei sollte man ein Gefühl dafür entwickeln, wie die Community tickt: werden Change Requests profesionell bewertet und eingespielt? Wird ein sauberer Change Prozess gelebt? Gibt es Qualitätssicherung? Ist der Code noch aktuell und wird gepflegt?
Module, die nicht mehr aktiv von mehreren Softwareentwicklern gepflegt werden sind ein Risiko für die Zukunft für jedes profesionelle Softwareprojekt.
(Was man machen kann, wenn man an dieser Stelle keine andere Wahl hat… später mal!)
Open Source vs Closed Source
Wir bevorzugen grundsätzlich Open Source vor Closed Source, da wir die Möglichkeiten haben, in die Module einzutauchen und dort Fehler zu finden/zu korrigieren (und damit auch der Community etwas zurück geben können).
Closed Source ist einsetzbar, wenn man einen Partnerschaftlichen Umgang mit dem Hersteller pflegt und z.B. direkten Kontakt zu den Entwicklern hat; oder der Hersteller einen exzellenten Leumund hat, was Codequalität angeht. Gerade bei letzterem sollte man sich jedoch nicht auf Zertifikate und Verträge verlassen, sondern auch die technische Realität prüfen. Manche Konzerne sind bekannt dafür, dass ihre Softwareprodukte keiner rigorosen Codequalitätsprüfung standhalten und sollten daher in ernsthaften Softwareprojekten ausgeklammert werden.
Reduktion und Erkennung von Schwachstellen
Vor der Verwendung von Frameworks, Bibliotheken und Containern aus dem Internet ist auch rigoros zu prüfen, wie anfällig diese Produkte für Sicherheitslücken sind.
Ignorieren Sie in diesen Fällen Verträge und Zertfikate - allein eine technische Überprüfung kann Ihnen hier Gewissheit geben.
Schwachstellenscanner sind ein erster Ansatz - aber wenn Sie sichere Systeme entwickeln wollen, kommen Sie um eine Wahrheit nicht herum: verwenden Sie nichts, was Sie nicht selber verstehen und kennen. Verwenden Sie ausschliesslich die Module, deren Wirkungsweisen und Nebeneffekte bekannt sind.
Ja, das ist für manche Softwareentwickler ein kleiner Schlag - aber welcher von den Entwicklern steht im Zweifel voll für den entstandenen Schaden ein, wenn der Kunde Millionen von Datensätzen verliert, von Malware getroffen wurde oder für Stunden kein laufendes Produktivsystem hat, weil die ach-so hippe Datenbank unerklärliche Aussetzer hat oder die schnell eingebundene Bibliothek sensible Daten nach Hause telefoniert?
Fazit
Um eine saubere Supplychain in Softwareprojekten zu haben, sollten Sie ausschliesslich qualitativ hochwertige Softwaremodule/Bibliotheken/Frameworks einsetzen, achten Sie auf Change Prozesse, Qualitätssicherung und profesionelle Standards, und lassen Sie die Finger von sämtlichen Modulen, deren Aufbau und Inhalt Sie nicht nachvollziehen können und deren Einsatz und Inhalt Sie nicht bewerten können.