Ich denke, wir sollten die folgende Regel anwenden, um zu bestimmen, wann wir über Design und wann über Architektur sprechen: Wenn die Elemente eines von Ihnen erstellten Softwarebildes eins zu eins auf eine syntaktische Konstruktion einer Programmiersprache abgebildet werden können, dann handelt es sich um Design, andernfalls um Architektur.
Wenn Sie zum Beispiel ein Klassendiagramm oder ein Sequenzdiagramm sehen, können Sie eine Klasse und ihre Beziehungen in einer objektorientierten Programmiersprache mit Hilfe der syntaktischen Konstruktion Klasse abbilden. Dies ist eindeutig Design. Darüber hinaus könnte dies dazu führen, dass diese Diskussion einen Bezug zu der Programmiersprache hat, die Sie zur Implementierung eines Softwaresystems verwenden werden. Wenn Sie Java verwenden, gilt das vorherige Beispiel, da Java eine objektorientierte Programmiersprache ist. Wenn Sie ein Diagramm erstellen, das Pakete und ihre Abhängigkeiten zeigt, ist das auch Design. Sie können das Element (in diesem Fall ein Paket) auf eine syntaktische Java-Konstruktion abbilden.
Angenommen, Ihre Java-Anwendung ist in Module unterteilt, und jedes Modul ist ein Satz von Paketen (dargestellt als eine jar-Datei), und Sie erhalten ein Diagramm mit den Modulen und ihren Abhängigkeiten, dann ist das Architektur. In Java gibt es keine Möglichkeit (zumindest nicht bis Java 7), ein Modul (eine Menge von Paketen) auf eine syntaktische Konstruktion abzubilden. Sie werden vielleicht auch feststellen, dass dieses Diagramm eine höhere Abstraktionsebene Ihres Softwaremodells darstellt. Jedes Diagramm, das über einem Paketdiagramm liegt, stellt bei der Entwicklung in der Programmiersprache Java eine Architekturansicht dar. Wenn Sie hingegen in Modula-2 entwickeln, stellt ein Moduldiagramm einen Entwurf dar.
(Ein Fragment aus http://www.copypasteisforword.com/notes/software-architecture-vs-software-design )