![]() |
Was sieht man von dort oben?![]() |
Architekten laufen Gefahr abzuheben (die Architektur ausschließlich aus der 10.000 Meter = applikationsübergreifenden Perspektive zu betrachten) oder unterzutauchen (die Architektur ausschließlich aus der Maulwurfs = Framework Perspektive betrachten).
Nein liebe Enterprise Architekten, SOA, MDA, Cloud-Computing sind keine Architekturkonzepte die einfach so und überall funktionieren, und liebe Applikationsarchitekten, Spring, OSGi, JSF ... sind keine Architekturkonzepte und bringen in der Praxis oft mehr Nachteile als Vorteile. Dogfooding und ein bisschen mehr Reflexion über den tatsächlichen Nutzen ihrer Architekturentscheidungen würde vielen Architekten gut bekommen.
Kaum ein Java Architekt kümmert sich jedoch um die Einhaltung der Architektur. In keinem einzigen der vielen Java Projekte, die ich im Rahmen meiner Beratertätigkeit kennengelernt habe hat die tatsächlich umgesetzte Architektur mit der definierten übereingestimmt. Mehrere 100 Architekturverletzungen (d.h. statische Abhängigkeiten die laut Architektur nicht vorhanden sein sollten) sind keine Seltenheit.
Architektur ist mehr als nur Pläne zeichnen und hoffen dass sie auch korrekt umgesetzt werden. Auch beim Bau muss man ständig nachmessen, ansonsten wird jeder Turm schief. Erklärungen, Architekturskizzen, Dokumente, Videos, ... das alles ist wichtig, damit die Softwarearchitektur verstanden wird - Prüfungen mit JDepend, Macker oder Sonargraph sind aber notwendig um die Einhaltung der Architektur zu garantieren. Wäre in kürzester Zeit (wenige Tage) umzusetzen, wird es aber meist nicht. Die Architektur im Nachhinein zu korrigieren ist dann meist so teuer (mehrere Personenmonate bzw. Jahre), dass darauf meist verzichtet wird.
Was aber sind denn nun die Aufgaben von Java Architekten? Hier eine möglichst vollständige Auflistung aller Aufgaben, die von Java Architekten verlangt werden - die Kernaufgaben muss jeder Architekt beherrschen und federführend vorantreiben. Die weiteren Aufgaben sollten ebenso beherrscht werden, können aber auch durch andere Rollen im Projekt abgedeckt werden:
Kernaufgaben und Entscheidungskompetenz
|
Weitere Aufgaben
|
|
|
n
Hallo Sebastian,
AntwortenLöschenich interessiere mich auch schon seit einiger Zeit für das Thema "Architecktur Einhaltung".
Es ist wirklich verwunderlich, wie wenig Menschen es gibt, die diesem Aspekt der Softwareentwicklung Ihre Beachtung schenken. Ich vermute, es gibt einfach nicht so viele, die Ihre Architektur formal beschreiben und anschließend die Umsetzung begleiten.
In unseren Projekten setzen wir Dependometer (http://source.valtech.com/display/dpm/Dependometer) ein um die Einhaltung der statischen Architektur-Regeln zu prüfen. Auf Design Ebene sorgt CODERU (http://coderu.org/) für klare Strukturen und "Component Oriented Design".
Viele Grüße,
Alexander
Derartige Tools gibt es viele - doch wie du sagst werden die viel zu wenig auch eingesetzt. Wie bei Chernobyl werden alle Systeme, die vor Fehlern warnen abgedreht, um das Projekt nicht zu gefährden...
AntwortenLöschen