Was ist Architektur?
Bevor ich das Thema Architektur und Architekten weiter vertiefe, will ich mich zunächst an einer Definition versuchen, was Architektur überhaupt ist. Bevor man über etwas redet, sollte man definieren, was das etwas überhaupt ist. Meine Definition sieht folgendermaßen aus:
Die Architektur eines Software-Systems definiert, welche grundlegenden Abstraktionen in dem System verwendet werden und wie diese technische realisiert werden.
Für ein Geschäftssystem wären die Grundabstraktionen also sowas wie Geschäftsprozesse, Geschäftsentitäten usw. und die technische Realisierung könnte dann EJBs oder Spring-Beans sein. Bei der Abbildung auf Spring-Beans sei noch hinzugefügt, dass diese keine echte technische Abbildung ist. Die Spring-Bean kann nämlich (ohne Code-Änderungen) zu einem Web-Service oder (mit einem zusätzlichen Adapter) zu einer EJB werden. Dies ist gerade einer der Vorteile von Spring: Es gibt eine Implementierung, die auf verschiedenen technischen Infrastrukturen laufen kann.
Warum ist Architektur wichtig? Zum einen kann durch eine einheitliche Architektur die Wartung des Systems vereinfacht werden, da die Struktur überall gleich ist und man sich schnell zurecht findet. Aus demselben Grund kann die Produktivität der Entwickler steigen: Sie schreiben nur noch den fachlichen Code runter, und die Abbildung auf Technik entsteht anderswo, eben durch die Architektur-Entscheidungen.
Viel wichtiger ist aber , dass die Architektur die grundlegenden technischen Entscheidungen enthält und eine Änderung in diesem Bereich im laufenden Projekt schwer sein kann. Daher ist das Hauptrisiko nicht Wartbarkeit, sondern dass man hier eine falsche Entscheidung trifft, die später schwer revidierbar ist.
In Kürze wird es unter
http://www.se-radio.net/ übrigens auch einen Podcast zum Thema Architektur geben.