Software-Architektur
Eine Software-Architektur beschreibt Komponenten und deren Zusammenspiel und existiert auf verschiedenen Ebenen: von der inneren Architektur einer einzelnen Applikation bis hin zu einer komplexen Enterprise-Architektur finden die gleichen Prinzipien immer wieder Anwendung. Wir sagen daher: "Architektur ist rekursiv". Die gleichen Prinzipien, die eine gute Architektur ausmachen, finden sich übrigens auf kleinerer Ebene auch bereits in der Objektorientierung und sorgen dort für wartbaren Code.
Eine Architektur wird weniger durch funktionale Anforderungen bestimmt als durch Qualitätsziele, die oft auch "nichtfunktionale Anforderungen" genannt werden. Hohe Anforderungen an Performanz suggerieren beispielsweise eine enge Integration von Komponenten, idealerweise innerhalb eines Prozesses, um Interprozesskommunikation oder gar Netzwerkkommunikation zu vermeiden. Hohe Anforderungen an Skalierbarkeit erfordern die Entkopplung bestimmter Dienste oder Komponenten, um diese unabhängig skalieren zu können.
In der agilen Software-Entwicklung wird Architektur nicht etwa unwichtiger oder gar obsolet, sondern entsteht als emergentes Design und muss konsequent angepasst und weiterentwickelt werden, beispielsweise durch konsequentes Refactoring .