Home Sitemap Kontakt Impressum
Home Artikel verfassen Die Besten Die Neusten Backlinks
Sie sind hier: Startseite / Computer-Informatik-Programmieren > Softwareentwurf > Mehrschichtige Softwarearchitekturen >

Artikelverzeichnis

 

Mehrschichtige Softwarearchitekturen

Einführung

In der Softwareentwicklung gehört es heute zum guten Ton von Mehrschichtarchitekturen zu sprechen. Begriffe wie Presentation Layer, Business-Logic-Layer oder Data-Access-Layer sind in einschlägigen Foren, Blogs und Büchern an der Tagesordnung. Für den Einsteiger sind diese Begriffe oft verwirrend und an brauchbarer Einstiegsliteratur in deutscher Sprache mangelt es. Dieser Artikel beschreibt was hinter all diesen Fachausdrücken steckt und vermittelt den angehenden Softwareentwickler einen Überblick über die Grundprinzipien moderner Softwarearchitektur.

1-Schicht Architektur als Anti-Pattern

Von einer Einschichtarchitektur spricht man in der Softwareentwicklung, wenn der gesamte Programmcode und die Geschäftslogik in einer einzelnen Assembly, also einer .exe-Datei oder .dll-Datei zusammengefasst wird. In den vielen Beispielen von Einstiegsbüchern in die Programmierung, wird aus Gründen der Einfachheit fast ausnahmslos diese "Architektur" verwendet. Im praktischen Einsatz bei der Entwicklung echter Anwendungen, insbesondere geschäftskritischer Unternehmens-Anwendungen, hat sich diese Vorgangsweise allerdings als gänzlich unbrauchbar herausgestellt. Nachteile sind unter anderem, die mangelde Trennung von Zuständigkeiten innerhalb des Quellcodes aber auch die erschwerte Wartung und Weiterentwicklung des Programms durch unstrukturierten Programmaufbau. Die Entwicklung in einem Team ist mit diesem Anti-Pattern nahezug unmöglich.

N-Schicht-Architekturen

Dem gegenüber stehen Mehrschichtarchitekturen, wobei diese häufig als "n-layered architecture" oder "n-tier architecture" bezeichnet werden. Softwareentwickler und -architekten meinen damit die Aufsplittung des Programmcodes über mehrere Teile hinweg, wobei jeder dieser Teile einige Anforderungen erfüllen soll:

  • Eine klare Trennung von Zuständigkeiten (z.B. die Datenzugriffsschicht darf keine Geschäftslogik enthalten)
  • Granularität - jede Schicht kann die ihr zugrunde liegende Aufgabe ohne Kenntnis der jeweils anderen Schichten der Applikation erfüllen
  • Lose Kopplung - die einzelnen Schichten, sollen weitgehend unabhängig von den anderen Schichten sein, d.h. im Idealfall können Sie problemlos ausgetauscht werden

Vorteile von Mehrschichtarchitekturen

Die Vorteile von mehrschichtiger Softwareentwicklung liegen auf der Hand. Klare Trennungen und lose gekoppelte Schichten ermöglichen ein effizientes Entwickeln im Team mit anderen Programmierern und erhöhen die Wartbarkeit der Software immens. Durch die Granularität der Aufgaben wird isoliertes Testen von einzelnen Funktionen der Software deutlich erleichert und steigert somit meist auch die Qualität der Software im Gesamten. 

Typische N-Schicht-Architekturen

Grundsätzlich kann das "N" durch jede beliebe Zahl ersetzt werden, jedoch hat sich in der Praxis besonders bei datengetriebenen Anwendungen eine 3-Schicht-Architektur etabliert. Diese besteht aus einem UIL (User-Interface-Layer), einem BLL (Business-Logic-Layer) und einem DAL (Data Access Layer). Darüber hinaus kommen bei verteilten Anwendungen häufig auch komplexere Architekturen mit 4 oder sogar 5 Schichten zum Einsatz, wobei hier zusätzliche Schichten für die Kommunikation zwischen den verschiedenen Anwendungsteilen eingezogen werden.

Unterschied zu Entwurfsmustern

Die beiden Begrife Softwarearchitektur und Entwurfsmuster werden häufig verwechselt. Mit Softwarearchitektur wird im Allgemeinen die grobe Einteilung und der Aufbau einer Anwendung beschrieben, jedoch nicht, wie die einzelnen Schichten intern implementiert werden. Ein Entwurfsmuster hingegen wird angewandt um innerhalb einer Schicht eine klar definierte Struktur zu erreichen. Häufig verwendete Entwurfsmuster sind etwa MVC (Model-View-Controller) oder MVVM (Model-View-ViewModel) im Presentation Layer, DDD (Domain-Driven-Design) oder BDD (Behaviour-Driven-Design) im Business Logic Layer sowie Repository-Pattern oder ActiveRecord im Data Access Layer.

Fazit

Jeder der sich ernsthaft mit Softwareentwicklung und Programmierung auseinandersetzt wird sich früher oder später mit Architektur und Entwurfsmustern beschäftigen müssen. Besonders im professionellen und semi-professionellen Umfeld sind diese Themen absolut Pflicht um langfristig qualitativ hochwertige Software liefern zu können.

Suchbegriffe: Softwareentwicklung, Webapplikation, Datenbankentwicklung

Artikel bewerten

   
Bewertung: 5.00 / 5 (1 Stimmen)
Autor: Daniel Lang
Datum: 09.04.2011
© 2012 seo blog