Ist „evolutionäre Softwarearchitektur“ ein Widerspruch?

8

Nach meinem Verständnis läuft die evolutionäre Architektur darauf hinaus, die Architektur einfach zu modifizieren. Heutzutage wird Architektur oft als das definiert, was Sie frühzeitig richtig machen sollten, da es später schwierig sein wird, sie zu ändern.

Wie passt das zusammen? Gibt es einen Unterschied zwischen evolutionärer Architektur und der Minimierung des Architekturumfangs?

Frank Puffer
quelle
"Architektur wird oft als das definiert, was man früh richtig machen sollte, da es später schwierig sein wird, sie zu ändern." WENN Sie nicht erwarten, dass sie sich ändern. Das macht einen großen Unterschied und gibt Raum für zukünftige Entwicklungen.
Tomasz Maciejewski
Ich würde zustimmen, dass es ein Widerspruch ist, wenn Sie Architektur als "alles definieren, was später teuer zu ändern ist", was die beste Definition ist, die ich bis jetzt gehört habe. Ich bin jedoch nicht mit "Sie sollten es früh richtig machen" einverstanden. Diese Definition ist genau der Grund, warum man Architekturentscheidungen so lange wie möglich verschieben sollte (damit sie so gut wie möglich informiert werden).
Martin Maat

Antworten:

20

Neal Fords Keynote zur evolutionären Architektur finden Sie hier.

Umschreibung:

Architektur ist die Entscheidung, die Sie gerne früh in einem Projekt treffen würden, Dinge, die Menschen als schwer zu ändern empfinden. Aber was wäre, wenn wir Architekturen bauen würden, die Veränderungen erwarten?

Eine evolutionäre Architektur unterstützt inkrementelle, geführte Veränderungen als erstes Prinzip über mehrere Dimensionen hinweg.

Er beschreibt verschiedene architektonische Szenarien, angefangen bei Big Ball of Mud, geschichteten Architekturen, Mikrokernen und REST bis hin zu Mikrodiensten, von denen er sagt, dass sie n Dimensionen der Evolutionsfähigkeit haben (wobei n die Anzahl der unterschiedlichen Mikrodienste ist).

Laut Ford evolutionäre Architekturen:

  • Sind lose gekoppelt und sehr kohäsiv ,
  • Sind zusammensetzbar; Komponenten können zusammengesetzt werden, um neue Architekturen zu erstellen.
  • Kann schrittweise geändert werden, ohne dass eine architektonische Überarbeitung erforderlich ist.

Wenn Sie möchten, können Sie sich Evolutionäre Architektur als Meta-Architektur vorstellen. eine Architektur der Architekturen. Anleitung, die Gestaltungsprinzipien vorschreibt, die das Gießen von Dingen in Ton anstelle von Stein fördern.

Robert Harvey
quelle
2
Ich würde zustimmen, dass das Wort "evolutionär" vor das Wort "Architektur" zu stellen bedeutet, dass es nicht "Architektur" im "traditionellen" Sinne ist.
Robert Harvey
7
Ich kann es mir leichter vorstellen, denselben alten Dingen einen neuen Namen zu geben. Jede Softwaremethode, an die ich mich erinnern kann, hat die Anpassungsfähigkeit an Änderungen als eine ihrer Eigenschaften beansprucht. Wenn dies einzigartig ist, geht es in erster Linie darum, noch weniger Details als andere zu liefern, wie dies erreicht werden kann.
Jerry Coffin
2
@Euphoric: Das passt nicht zu dem, was (zum Beispiel) Hoare und Dijkstra sagten, als strukturierte Programmierung neu war, noch was Booch, Meyer usw. sagten, als OOP neu war usw. Eher das Gegenteil: Die meisten befürworteten das meiste von Sie würden kleine Teile erstellen, die wiederverwendbar waren, sodass die meisten Änderungen auf die Architektur beschränkt waren. Sie hätten nette kleine Stücke, die Sie leicht auf verschiedene Arten wiederverwenden könnten, weil sich die Architektur ändern würde.
Jerry Coffin
1
@Euphoric: Ich würde sagen , eher das Gegenteil: die strukturierte Programmierung und OOP (für zwei Beispiele) meist haben ihre Versprechen. Es ist schwieriger, viel darüber zu sagen - ich erwarte nicht viele Details in einer Keynote, aber zumindest ohne weiteres sieht es nach mehr Hype und weniger Substanz aus als die meisten Vorgänger.
Jerry Coffin
1
@Euphoric: Zu einem großen Teil haben sie es getan. Vieles von dem, was heute Routine ist, würde mit älteren Methoden viel eher scheitern. Ich war am Aufbau einiger Systeme beteiligt, die ich mir kaum vorstellen kann, mit älteren Methoden zu versuchen (obwohl ja, ich denke, es wäre möglich gewesen). Was das Lesen des Buches angeht, werde ich es wahrscheinlich tun - aber noch nicht.
Jerry Coffin
1

Ja, es ist ein Widerspruch, wenn Sie es einfach machen, alles wahllos zu ändern. Wenn Sie Code hinzufügen müssen, um etwas "einfacher zu ändern" (mit "einfacher" schlecht definiert, wie hier), haben Sie das Ändern erschwert, einfach weil Sie Code hinzugefügt haben. Wenn Sie jedoch genau wissen, was sich ändern wird, was höchst unwahrscheinlich ist, sollte der zusätzliche Code nicht als unnötige Komplexität angesehen werden.

Das "einfache Ändern" von Dingen ist wahrscheinlich der Hauptgrund dafür, dass viele moderne Software so aufgebläht und schwer zu ändern ist.

Frank Hileman
quelle
Sehr wahr, aber meine Frage nicht wirklich beantwortend.
Frank Puffer
Hmm, die Antwort auf Ihre Frage lautet "Ja".
Frank Hileman