1 Punkte von GN⁺ 2024-07-07 | 1 Kommentare | Auf WhatsApp teilen

Die Softwarekrise

  • Was ist die Softwarekrise?

    • Der Begriff „Softwarekrise“ wurde erstmals 1968 auf der ersten NATO-Konferenz zur Softwaretechnik verwendet
    • Diese Konferenzen gehörten zu den frühen Bemühungen, Programmierpraktiken zu definieren und zu systematisieren
    • Die letzte NATO-Konferenz zur Softwaretechnik fand ungefähr zur Zeit des Starts von Apollo 11 im Jahr 1969 statt
  • Ursachen der Softwarekrise

    • Der Turing-Preisträger von 1972, Edsger Dijkstra, erklärte die Ursache der Softwarekrise mit der zunehmenden Komplexität und Geschwindigkeit der Hardware
    • „Je leistungsfähiger die Maschinen werden, desto größer werden auch die Probleme des Programmierens“ – Edsger Dijkstra
  • Die heutige Softwarekrise

    • Heute wird nicht mehr häufig über die Softwarekrise gesprochen
    • Man geht davon aus, dass das Problem durch die Entwicklung neuer Sprachen und Organisationsmethoden gelöst wurde
    • Dies könnte jedoch eher aus einem Gefühl der Niederlage und Akzeptanz entstehen als aus wirklicher Erleichterung
  • Das Problem der Abstraktion

    • Es gab verschiedene Versuche, die Softwarekrise zu lösen, doch die meisten wollten das Problem durch „Abstraktion“ bewältigen
    • Abstraktion bietet ein gewisses Maß an Unabhängigkeit, allerdings auf Kosten der Leistung
    • Seit der Kommerzialisierung des Personal Computers ist Abstraktion zur grundlegenden Denkweise geworden
  • Die Kluft zwischen Entwicklern und Nutzern

    • Die Softwarekrise betrifft nicht nur die Menschen, die Software entwickeln, sondern auch diejenigen, die sie benutzen
    • Nutzer haben fast keine Kontrolle über das hinaus, was der Autor bereitstellt
    • Alan Perlis: „Wenn du eine gute Idee hast, solltest du bereit sein, Verantwortung zu übernehmen“
  • Der Mangel an Verantwortung

    • Softwarehersteller entziehen sich der Verantwortung für die Werkzeuge, die sie geschaffen haben
    • Mit fortschreitender Kommerzialisierung hat sich diese Tendenz verstärkt
    • Abstraktion wird als Werkzeug genutzt, um schwieriges Nachdenken zu vermeiden
  • Lösungsansatz

    • Die Lösung der Softwarekrise ist nicht die Rückkehr zu stärker eingeschränkten Plattformen, sondern die Zahl der Abstraktionsebenen zu begrenzen und Informationserhalt zu verlangen
    • Programmiermodelle, Benutzeroberflächen und die zugrunde liegende Hardware sollten flach und kombinierbar sein
    • Die Nutzer der Werkzeuge sollten befähigt werden
  • Aktuelle Bewegungen

    • Es gibt Bewegungen wie Handmade, Permacomputing und Retro-Computing, die das Bewusstsein für die Softwarekrise schärfen wollen
    • Diese gegenkulturellen Bewegungen sind ein gesundes Signal und deuten darauf hin, dass sich die Lage verbessern könnte

Zusammenfassung von GN⁺

  • Die Softwarekrise ist ein Problem, das durch die zunehmende Komplexität und Geschwindigkeit der Hardware entstanden ist
  • Heute versucht man, das Problem durch Abstraktion zu lösen, allerdings auf Kosten der Leistung
  • Softwarehersteller entziehen sich der Verantwortung für die von ihnen geschaffenen Werkzeuge, und diese Tendenz wird durch die Kommerzialisierung verstärkt
  • Die Lösung besteht darin, die Zahl der Abstraktionsebenen zu begrenzen und Informationserhalt zu verlangen
  • Bewegungen wie Handmade und Permacomputing schärfen das Bewusstsein für die Softwarekrise

1 Kommentare

 
GN⁺ 2024-07-07
Hacker-News-Kommentar
  • Meinung des Autors

    • Er wendet sich nicht gegen Abstraktion an sich, sondern gegen ihre unbegrenzte Anwendung.
    • Er behauptet nicht, dass die Rückkehr zu stärker eingeschränkten Plattformen die Lösung sei.
    • Er behauptet nicht, dass Nutzer „technischer“ werden müssten.
    • Um die Softwarekrise zu verstehen, müsse man die Kurven von „Plattformkompetenz“ und „Wachstums-/Release-Zyklus“ verstehen.
    • Dieser Beitrag ist kein Clickbait, sondern spiegelt die Situation aus der Sicht eines Entwicklers wider.
    • Er möchte einen Teil der Lösung liefern und plant Folgebeiträge.
  • Softwarekrise

    • Dazu gehören Probleme wie Budgetüberschreitungen, Terminverzug, ineffiziente Software, geringe Qualität, nicht erfüllte Anforderungen, schwierige Wartbarkeit und nicht ausgelieferte Software.
    • Erfolgreiche Software wird ignoriert, während nur Misserfolge und Defekte Aufmerksamkeit erhalten.
    • Bis ein Computer den Desktop erreicht, durchläuft er Hunderte von Abstraktionen, und das geschieht weltweit täglich Milliarden Mal.
  • Softwareentwicklung und Führung

    • Die Führung in Automobilunternehmen betont technisches Wissen, während in der agilen Softwareentwicklung die technische Kompetenz auf niedrigeren Ebenen endet.
    • Softwareentwickler arbeiten Ticket für Ticket ohne philosophische Überlegungen und werden nicht in Führungsrollen befördert.
    • Das Bewusstsein für die Softwarekrise könnte auf Hobbyprojekte beschränkt bleiben.
  • Die Notwendigkeit von Abstraktion

    • Abstraktion ist ein unverzichtbares Werkzeug; das Problem sind schlechte Abstraktionen oder zu viele Abstraktionen.
    • Softwareentwicklung ist einfacher geworden und auch die Dokumentation ist gut.
  • Werkzeuge und Information

    • Wenn man die richtigen Werkzeuge kennt, ist Softwareentwicklung sehr einfach.
    • Die Werkzeuge, die die meisten Menschen kennen, sind nicht gut, und der Einfluss des Kapitals ist groß.
    • Zum Beispiel hat er ein Video erstellt, in dem er in 3 Stunden eine komplexe Marketplace-App in einer serverlosen Umgebung baut, aber es erhielt nur wenige Aufrufe.
  • GUI und Kombinierbarkeit

    • Bei der Nutzung von UNIX-Werkzeugen hat man eine flache, kombinierbare Erfahrung.
    • GUIs kommunizieren nicht miteinander und sind nicht kombinierbar.
    • Er experimentiert mit Werkzeugen, die GUI und Shell-Pipelines kombinieren.
  • Die Bedeutung von Software

    • Die meiste Software ist nicht sicherheitskritisch, und auch geringe Qualität ist oft kein großes Problem.
    • Die meisten Softwareentwickler arbeiten ohne eine Motivation wie im Silicon Valley.
  • Modularität und Abstraktion

    • Komplexe Systeme wie das Internet werden durch geschichtete Abstraktionen aufrechterhalten.
    • Softwarewerkzeuge haben sich seit den 70er Jahren stark verbessert.
    • Mit dem Copilot in VSCode kann man zum Beispiel ganze APIs automatisch vervollständigen.
  • Krise des Projektmanagements

    • Eher als eine Softwarekrise gibt es eine Krise des Projektmanagements.
    • Es gibt eine Lücke zwischen denen, die planen, und denen, die liefern.
    • Durch die Kommerzialisierung der Softwareentwicklung können Menschen auf sehr unterschiedlichem Niveau daran teilnehmen.
    • Das ist ähnlich wie in der Lebensmittelbranche; man spricht dort auch nicht von einer Restaurantkrise.