Der Entwurf eines Programms umfasst die folgenden Tätigkeiten [ PoBl96 ]:
Zerlegung des Gesamtsystems in Teilsysteme, Spezifikation der Wechselwirkungen zwischen den Teilsystemen
Zerlegung der Teilsysteme in Komponenten, Spezifikation der Anforderungen an die Komponenten, Festlegung der Komponentenschnittstellen
Entwurf der Algorithmen für die einzelnen Systemkomponenten.
Beim objektorientierten Entwurf ist man bestrebt, möglichst viele Systemkomponenten aus einer bestehenden Sammlung (sog. Klassenbibliotheken) unverändert zu verwenden oder sie entsprechend problembezogen zu modifizieren (durch Ableitung von Unterklassen) oder den Entwurf ausgehend von einer vorliegenden Basisarchitektur (Application Framework) durchzuführen.
Für den Entwurf sind Werkzeuge erforderlich, die in den folgenden Bereichen Unterstützung geben [PoBl96]:
Dokumentation der Entwurfsergebnisse Sorgfältige, verständliche und vollständige Dokumentation der Systemstruktur und aller Entwurfsentscheidungen.
Validierung der Entwurfsergebnisse Ein fehlerfreier Entwurf der Systemarchitektur gelingt nur selten. Der Entwurf sollte stets durch Experimente mit einem Prototyp der Architektur projektbegleitend validiert werden.
Wiederverwendung von vorhandenem Design (Klassenbibliotheken und Frameworks)
Einplanung und Verwendung von Application Frameworks, vorhandenen Klassen und abstrakten Datentypen.