Follow my new blog

Sonntag, 21. Januar 2007

Software als System III – System durch Kommunikation

Software ist zunächst einmal ein Etwas, das in eine Umwelt eingebettet ist. Sie ist sogar von ihrer Umwelt nicht zu trennen. Software kann nicht ohne Umwelt gedacht werden und beide nicht ohne gegenseitige Beeinflussung. So ist es eben, dessen sollte man sich bewusst sein, denn nur dann kann man diese Beeinflussung auch steuern. Darüber will ich aber erst später weiter nachdenken.

Jetzt erstmal ein näherer Blick auf das, was die Software nun ausmacht. Auf den ersten Blick erscheint sie als ein Etwas, eben die Software. Ein Beobachter sieht sie dann als Ganzes. Der kann aber auch seine Perspektive wechseln, sozusagen näher heranzoomen und dann das Softwareganze als etwas Zusammengesetztes sehen. Software besteht immer aus mehr oder weniger Teilen. Das sind vor allem die aus der Programmierung resultierenden Code- und Datenartefakte, aber es können auch „zugekaufte“ sein.

Solange diese Artefakte allerdings nur einfach so „herumliegen“, ist Software nicht sehr spannend. Zu „leben“ beginnt Software erst, wenn die Artefakte miteinander in Beziehung gesetzt werden und entlang dieser Beziehungen interagieren. Das ist die Geburt von Software als System.





Erst wenn die Softwarebestandteile aufeinander operieren, entsteht aus den bis dahin „toten“ Bausteinen ein „lebendiges“ System, das der Umwelt gegenüber Funktionalität bietet. Wie und wann die Beziehungen zwischen den Artefakten definiert werden, ist dafür zweitrangig. Zur Laufzeit manifestieren sie sich und lassen ein „Gewebe“ aus Artefakten entstehen.

Die schon zur Entwicklungszeit festgelegten statischen Referenzen sind für das System zur Laufzeit natürlich der Ausgangspunkt; die wahre Komplexität einer Software ergibt sich allerdings erst mit Aufnahme der Kommunikation. Der Code einer Software ist mithin immer nur ein Bauplan oder eine Erzeugungsanweisungen für die zur Laufzeit zu instanzierenden und kommunizierenden Artefakte. Die Komplexität einer Software zur Entwicklungszeit ist also immer kleiner als die zur Laufzeit.

Die Komplexität sehe ich in diesem Zusammenhang zumindest positiv korrelierend mit der Zahl der kommunizierenden Strukturelemente, der Zahl der Kommunikationspfade, der Zahl der Zyklen im Graphen der kommunizierenden Strukturelemente, der Reichweite von Operationen. Oder einfacher ausgedrückt: Je mehr die Struktur einer Software einem Topf voller Spaghetti gleicht, desto komplexer ist sie :-)

Natürlich kommunizieren aber nicht nur die Strukturelemente einer Software miteinander, sondern auch die Software als Ganzes mit der Umwelt. So kann es zumindest ein Beobachter sehen, für den die Software eine Black Box ist. Macht er sie dann auf, stellt sich heraus, dass immer nur einzelne Strukturelemente auf der Umwelt operieren bzw. die Umwelt wahrnehmen.

Die mit der Umwelt interagierenden Strukturelemente definieren dabei gleichzeitig die Grenze einer Software. Sie ist also keine analoge Linie, sondern besteht aus diskreten Teilen.




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

Keine Kommentare: