Sonntag, 6. Januar 2013

Was Softwaretechnik nichttrivial macht

Dass wir überhaupt auf Prinzipien angewiesen sind, liegt an der nichttrivialen Natur der Softwaretechnik. Wir haben es nicht mit einfach lösbaren Aufgaben und Problemen zu tun. Woher kommen die Schwierigkeiten, denen wir bei der Konstruktion von Software begegnen? Klarheit über diese Herkunft wird auch zu größerer Klarheit über die Natur der Prinzipien der Softwaretechnik führen. Hypothese:
Jedes Prinzip der Softwaretechnik legitimiert sich über eine odere mehrere grundlegende Schwierigkeiten, denen wir regelmäßig bei der Konstruktion von Software begegnen.
Die Schwierigkeiten sind vielfältig. Für den Anfang möchte ich mich mit einer möglichst einfachen Unterteilung begnügen:

(1) Kognitive Einschränkungen
Software ist nicht greifbar (= abstrakt) und komplex. Die Menge der Information und die Anzahl potentieller Verhaltensweisen übersteigt oft die Größenordnung, die sich von einem Individuum noch gut überschauen lässt.

(2) Soziale Einschränkungen
Software entsteht in sozialen Zusammenhängen. Gesellschaften, Organisationen und sonstige soziale Gruppen beschränken die Freiheitsgrade der Konstruktion. Soziale Prozesse und Verhaltensweisen wie Entscheidungsfindung, Trennung von Verantwortlichkeiten, Zusammenarbeit usw. beeinflussen maßgeblich die Lösungsfindung.

(3) Ressourcenbezogene Einschränkungen
Die an einer Software-Konstruktion beteiligten Individuen sind nicht allwissend, verfügen über unterschiedliche Fähigkeiten und verfolgen z. T. unterschiedliche Absichten.

Jede Software wird in vielfältiger Weise durch die unterliegende Hardware limitiert: Sie muss paketiert und verteilt werden, sie hängt in ihrem zeitlichen Verhalten von Prozessoren und Arbeitsspeicher ab, sie erhält ggf. Information über Eingabekanäle, gibt sie über Ausgabekanäle aus, sie muss Daten lesen oder persistieren. All diese Einschränkungen beeinflussen den Lösungsraum.

(4) Theoretische Einschränkungen
Die Ergebnisse von Berechenbarkeits- und Komplexitätstheorie bilden den theoretischen Rahmen, über den wir uns nicht hinwegsetzen können. Programmiersprachen unterliegen den Einschränkungen formaler Sprachen.

Fazit

Die weitere Ausarbeitung der Prinzipien der Softwaretechnologie muss Folgendes leisten:
  • Entweder ist ein Prinzip mindestens einer der beschriebenen Einrschränkungen zuzuordnen.
  • Oder die Darstellung der Einschränkungen muss erweitert werden.