Schichtenarchitektur überwachen mit Eclipse

Schichtenarchitekturen haben wir als Entwickler schon längst verinnerlicht. So ist die klassische Aufteilung in z.B. DAO-Schichten, Service-Schichten und Controller-Schichten mittlerweile akzeptiert und wird wie selbstverständlich in der Entwicklung eingesetzt. Die Vorteile aus architektonischer Sicht liegen auf der Hand, ebenso wie die Notwendigkeit in komponentenbasierten Architekturen ausschließlich gegen Interfaces zu implementieren.

Aber wie überwache ich, dass diese Schichtentrennung auch unter Projekt- und Zeitdruck und von weniger erfahrenen Entwicklern eingehalten wird? Der Zugriff von höheren Schichten auf niedrigere Schichten sollte verhindert werden, ebenso die Implementierung direkt gegen Komponentenimplementierungen.

Eine automatische Trennung der Sichtbarkeit ist in Eclipse über die Projektstruktur problemlos realisierbar. Hier sind keinerlei Plug-Ins erforderlich. Für jeden Layer legen wir hierzu einfach ein eigenes Projekt an.

layers_1

In den Projekteigenschaften kann nun im Buildpath jeweils nur die nächsthöhere Schicht eingebunden werden. Hier kann gesteuert werden, dass Klassen in der Controllerschicht während der Entwicklung nur Klassen aus der Serviceschicht sehen – und in der Serviceschicht (und nur dort) geben wir unser DAO-Projekt als Abhängigkeit an. Wird fälschlicherweise eine DAO-Klasse direkt aus dem Controller verwendet, so wird dies vom Compiler angezeigt, da die Klasse nicht gefunden werden kann.
Auf dem Reiter “Order and Export” kann durch Deselektieren der Export-Checkbox weiterhin verhindert werden, dass Imports nach unten in Schichten weitergereicht werden.

layers_2

Das Konzept können wir nun noch weiterführen und ebenfalls die Interfaces von den Implementierungen in Einzelprojekte trennen. Im Buildpath werden nun nur noch die API-Projekte (welche die Interfaces beinhalten) referenziert. Wird eine Implementierung direkt verwendet, so wird mir dies gleich in Eclipse angezeigt, da die entsprechende Klasse nicht gesehen wird.

layers_3

Versehentliche schichtenüberspringende Zugriffe werden effektiv verhindert. Auch die Eclipse-Funktionen zum Suchen von Typen, Autovervollständigung und Organize Imports funktionieren wie gewohnt und berücksichtigen ebenfalls unsere gewählte Schichtenarchitektur.

Beim Deployment packen wir selbstverständlich alle Projekte zusammen (z. B. als JARs innerhalb eines EARs) und unsere Klassen erscheinen in einem gemeinsamen Classpath.

Think about it!!

Short URL for this post: http://wp.me/p4nxik-2nh
This entry was posted in Build, config and deploy, Java and Quality, Java EE, Java modularization and tagged , , , , , . Bookmark the permalink.

One Response to Schichtenarchitektur überwachen mit Eclipse

  1. Pingback: Schichtenarchitektur überwachen mit Spring und JUnit | techscouting through the java news

Leave a Reply