Beautiful Architecture und der Unterschied zwischen Architektur und Design

Im Zuge der Lehrveranstaltung Software-Architectures habe ich mir das geniale Buch Beautiful Architecture besorgt. Darin befindet sich eine interessante Stellungnahme bezüglich des viel umstrittenen Themas, was denn nun genau der Unterschied zwischen Software-Architektur und –Design ist.

Beautiful Architecture

Kent Beck hat in ein seinem ausgezeichneten Talk “Responsive Design” eine kurze Anekdote bezüglich dieses Themengebiets und seiner Tochter geschildert. Dabei hat ihn seine Tochter, die ebenfalls als Software-Entwicklerin arbeitet, folgendes gefragt “Daddy, was ist denn bitte nun der Unterschied zwischen Architektur und Design; ist es nicht so, dass einfach alles Design ist?” Kent Beck standen nach dieser Feststellung seiner Tochter die Tränen in den Augen und antwortete stolz mit einem Lächeln: “Ja mein Schatz.. *schluchz*, so ist es”.

Bis zu diesem Zeitpunkt war ich immer der Meinung, Software Architektur ist dem Design übergeordnet. Neal Ford hat in seinem Talk zu “Emergend Design” erklärt, dass Architektur die Basis, also das Grundgerüst der Software darstellt und somit eine eher statische Struktur besitzt. Design allerdings, entwickelt sich weiter, ist also daher etwas dynamisches.

Zwei weitere erwähnenswerte Sichtweisen bezüglich der Frage “Was ist Architektur?” sind aus dem Tech-Talk von Dan North und Michael Feathers mit dem Titel “Testable Architectures”. Dabei stellt Dan North diese Frage an die Zuhörer wobei die Antworten leider ausblieben. Keiner der Zuhörer hat sich wirklich getraut bzw. konnte diesen Begriff der Architektur wirklich erklären.

Dan North’s Aussage war folgende: “Architektur ist eine Vision. … that’s all it is. Dabei ist ein Architekt jemand, der diese Architektur vertritt und weiterkommuniziert“. Laut Dans Erfahrung waren die besten Architekten diejenigen, bei denen es nicht um die Architekten selbst ging, sondern das Team die tragende Rolle spielte. Dabei wurden von jedem Team-Mitglied die besten Ideen gesammelt und in der Architektur umgesetzt.

Michael Feathers sieht Architektur als eine entfernte Sichtweise auf ein System, wobei von Details abstrahiert wird “… you see the big pieces …”.

image

Nun hat sich meine Sichtweise aber aufgrund der Beschreibung in “Beautiful Architectures” etwas verändert. Folgendes wird in diesem Buch beschrieben:

Architektur ist Teils des Designs eines Systems; sie beschreibt gewisse Details, in dem sie diese von anderen abstrahiert. Daher ist Architektur eine Untermenge von Design. Ein Entwickler der die Implementierung einer Komponente des Systems fokussiert, muss nicht notwendigerweise Ahnung davon haben, wie alle Komponenten des Systems zusammenpassen. Er ist also hauptsächlich mit dem Design und der Entwicklung einer kleinen Anzahl von Komponenten beschäftigt, die wiederum bestimmte architektonischen Bedingungen einhalten müssen und Regeln die sie verwenden können.

Der Entwickler arbeitet also an einem unterschiedlichen Aspekt des Systems als der Software-Architekt. Wenn Architektur sich mit den Beziehungen von Komponenten und den externen sichtbaren Eigenschaften von System-Komponenten beschäftigt, dann beschäftigt sich Design zusätzlich mit der internen Struktur dieser Komponenten.

Zum Beispiel, wenn eine bestimmte Menge von Komponenten aus Information-Hiding Modulen besteht, dann formen die externen sichtbaren Eigenschaften die Interfaces für diese Komponenten, und die interne Struktur beschäftigt sich mit den Datenstrukturen und der Flow-Kontrolle innerhalb des Moduls.”

Nach dem ich diesen Teilabschnitt des Buchs gelesen hatte, viel mir auf, dass am Ende des letzten Absatzes ein Verweis auf das folgende Buch notiert wurde: Software Fundamentals: Collected Papers by David L. Parnas. Werde ich mir in ferner Zukunft mal zu Gemüte führen.

Mich würden weitere Meinungen bezüglich Architektur vs. Design interessieren; irgendwelche Vorschläge bzw. Erfahrungen?

Über sageniuz

https://about.me/ClausPolanka
Dieser Beitrag wurde unter Software Architecture veröffentlicht. Setze ein Lesezeichen auf den Permalink.

2 Antworten zu Beautiful Architecture und der Unterschied zwischen Architektur und Design

  1. Claus schreibt:

    Recommended Practice for Architectural Description of Software-Intensive Systems: http://de.wikipedia.org/wiki/IEEE_1471

  2. Claus schreibt:

    Von meinem Arbeitskollegen (Roland Germ): "In meinen Anfängen haben wir immer zwischen Grob- und Feindesign (= Klassendesign) unterschieden. Architektur hat schon sehr viel mit Grobdesign (= Design der Abhängigkeiten zwischen Modulen/Komponeten) zu tun. Doch Architektur hat einfach noch mehr Aspekte. Umgekehrt kann man natürlcih argumentieren, dass man diese Aspekte und Sichten auch dem Design zu ordnen kann.Ich glaub allerdings schon, dass alle Entwickler ein Verständnis für die Architektur eines SW-System haben müssen, weil sonst das Ergebnis der Entwicklung falsch sein könnte (=> ein gemeinsames Bild und Ziel). Es ist allerdings die Aufgabe des Architekten die richtige Abstraktion zu wählen und das Bild zu kommunizieren."

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s