70 Konzepte und Strukturen eines interaktiven Notenmoduls Akkoladenabst¨ande Systemabst¨ande Zeilenumbruch Randausgleich Bogenposition Sichtbarkeit der Versetzungszeichen horiz. Position der lokalen horiz. Position der globalen Zusammenkl¨ange Zusammenkl¨ange Balkenposition Position der horiz. Notenkopfpos. Halsrichtung der Akkorde Versetzungszeichen der Akkorde Abbildung 3.4: Beispiel für gegenseitige Abhängigkeiten bei der Positionierung der No-tationselemente. Die Pfeile zeigen jeweils auf die Berechnungen, welche vor den zugehöri-gen Algorithmen erfolgen müssen. Der gestrichelte Pfeil erzeugt zirkuläre Abhängigkeiten, so daß die dargestellte Modularisierung kein hinreichendes Konzept zur Notengenerierung darstellt. werden, welche Positionierungen bereits durchgeführt wurden. Jeder Algorithmus ist dadurch in der Lage, vor seiner eigentlichen Ausführung zu prüfen, ob die benö-tigten Voraussetzungen schon geschaffen wurden oder zuvor weitere Berechnungen erfolgen müssen. Diese Methode hat den Vorteil, daß nur die lokalen Vorbedingun-gen bekannt sein müssen, denn die Bestimmung der globalen Abhängigkeitsstruktur wird dem Programm überlassen. Genau dieser Aspekt kann sich aber auch nachtei-lig auswirken, da nicht garantiert ist, daß keine zirkulären Abhängigkeiten vorhan-den sind. Es könnten z.B. Positionierungsalgorithmen implementiert worden sein, die sich gegenseitig voraussetzen. Während des Programmablaufs würde dies zu einer Endlosschleife bzw. einem Stacküberlauf mit anschließendem Programmab-sturz führen. Eine solche Situation entsteht beispielsweise im Zusammenhang mit der Balkensetzung: Bevor die Balkenparameter berechnet werden können, müssen die zugehörigen Akkordpositionen feststehen. Diese Positionen richten sich unter anderem nach den Halsrichtungen, da diese die horizontale Stellung von Notenköp-fen, Versetzungszeichen und Wertpunkten beeinflussen können. Die Halsrichtungen resultieren bei Balkengruppen jedoch aus der Balkenlage, einem Balkenparameter, der gemäß obiger Voraussetzung erst nach Festlegung der Halsrichtungen ermittelt werden kann (vgl. Abb. 3.4). Offensichtlich dürfen die Balkenparameter aus die-sem Grund nicht als eine Einheit aufgefaßt und in einer gemeinsamen, den Balken konstruierenden Funktion gekapselt werden. Insgesamt besteht deshalb die Not-wendigkeit, einen Überblick über die gesamte Abhängigkeitsstruktur zu gewinnen, um nicht in einem fortgeschrittenen Stadium der Realisierung oder gar erst bei der nachträglichen Erweiterung feststellen zu müssen, daß das ursprüngliche Konzept zwar den anfänglichen Algorithmen genügt, den Gesamtkomplex ineinandergreifen-der Verfahren aber nicht trägt. Aus dieser Sicht scheint eine direkte Umsetzung der globalen Positionierungsreihenfolge vorteilhafter, zumal nachträgliche Erweiterun-gen leichter als bei der lokal ausgerichteten Methode in die bestehende Struktur integriert werden können.