Aus der Aufgabenstellung und der Spezifikation der vorgegebenen Schnittstellen ersieht man zunächst eine vage Systemstruktur , die in der Abbildung 18.19 wiedergegeben ist.
Abbildung: Überblick über das Gesamtsystem
Das undefinierte Objekt rechts außen, der Platten-Controller, wird für unser Beispiel als gegeben vorausgesetzt. Wir brauchen uns also nicht darum kümmern. Von den Tasks links außen ist für unseren Entwurf eigentlich nur relevant, daß jederzeit und auch gleichzeitig Leseanforderungen an den von uns zu entwerfenden Platten-Treiber eintreffen können. Wir wenden uns daher unserer eigentliche Aufgabe zu, nämlich das undefinierte Objekt in der Mitte, den Platten-Treiber, genauer zu entwerfen.
Da wir gleichzeitig Aufrufe (Leseanforderungen) an den Plattentreiber zu erwarten (befürchten) haben, ist die von uns spezifizierte Paket-Schnittstelle nicht hinreichend. Wir werden irgendwo innerhalb des Platten-Treibers Tasks und/oder geschützte Objekte verbergen müssen, um die ankommenden Aufrufe irgendwie zu serialisieren.