Samstag, 20. Januar 2007

Software als System II – Software-Umwelt-Kopplung

Ich versuche also mal einen ganz unverstellten Blick auf Software, lasse (zunächst) mal alles hinter mir, was .NET oder OOP angeht. Was ist dann Software?

Ich glaube, es ist hilfreich, Software zunächst einmal ganz allgemein als etwas zu betrachten, das von seiner Umwelt zu unterscheiden ist. Insofern gibt es eine Trennlinie zwischen dem, was wir zu einer Software rechnen und dem Rest der Welt.






Klingt trivial – ist aber wichtig, um das Besondere an Software zu verstehen. Aber ich will nicht vorgreifen.

Nun „liegt“ Software aber nicht einfach so in ihrer Umwelt, sondern allemal die Umwelt verändert sich über die Zeit. Diese Veränderungen wirken sich natürlich auch auf die Software aus. Umweltveränderungen ziehen also Softwareveränderungen nach sich. Und umgekehrt: Veränderungen an der Software führen auch zu Veränderungen in ihrer Umwelt. Software und Umwelt stehen also in einer Rückkopplungsbeziehung: Veränderungen an einem Beziehungspartner wirken sich nicht nur auf den anderen aus, sondern über jenen auch wieder zurück auf diesen und immer so fort…



Software und Umwelt sind jedoch nicht einfach zwei amorphe „Blobs“, sondern haben eine je eigene Struktur. Ihre gegenseitige Beeinflussung kann daher als strukturelle Kopplung bezeichnet werden. Strukturänderungen auf der einen Seite führen zu Strukturänderungen auf der anderen usw.





Was genau die Strukturbestandteile der Umwelt sind, soll an dieser Stelle zunächst vernachlässigt werden. Ganz allgemein lässt sie sich aber in mehrere sehr verschiedene Bereiche gliedern. Zur Umwelt einer Software gehören z.B.:

-Die hard- und softwaretechnische Infrastruktur in der sie läuft
-Die technologischen Optionen für ihre Realisierug
-Die Geschäftsprozesse der Kunden
-Das Verhalten der Anwender

Veränderungen können hier z.B. bei den technologischen Optionen beginnen, die bei Adaption zu einer Verbesserung von Performance und Skalierbarkeit der Software führen, die sich wiederum auf die Geschäftsprozesse des Kunden auswirken, die wiederum Begehrlichkeiten wecken und zu neuen Anforderungen führen, die dann Anpassungen in der Software nach sich ziehen usw. usf.

Der Begriff der strukturellen Kopplung [1] ist Maturanas Konzept der autopoietischen Systeme entnommen [2]. Ich finde einfach, er passt sehr gut, um die gegenseitige Beeinflussung von Umwelt und Software zu beschreiben. Allerdings will ich damit nicht sagen, Software sei ein autopoietisches System. Software ist noch nicht einmal ein autonomes System. Software verändert sich also nicht selbst, sondern nur durch Eingriffe ihrer Entwickler, auf die die Umwelt der Software direkt oder indirekt wirkt. Für die weitere Betrachtung finde ich es jedoch einfacher, davon abzusehen und stattdessen der Einfachheit halber zu denken, die Struktur einer Software würde direkt von ihrer Umwelt beeinflusst.

[1] Vogel & Partner, Strukturelle Kopplung, http://www.hs-niederrhein.de/fb06/vogel/konstrukt/glossar/strukturellekopplung.htm
[2] Wikipedia, Autopoiesis, http://de.wikipedia.org/wiki/Autopoiesis

[Vorhergehender Artikel] [Nächster Artikel] [Artikelserie]

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.