web-dev-qa-db-ja.com

「進化的ソフトウェアアーキテクチャ」は矛盾ですか?

私の理解では、進化的アーキテクチャは、アーキテクチャを簡単に変更できるようにすることです。現在、アーキテクチャは多くの場合、後で変更するのが難しいため、早期に正しく取得する必要があるものとして定義されています。

これはどのように組み合わされますか?進化的アーキテクチャとアーキテクチャの量を最小限に抑えることの間に違いはありますか?

8
Frank Puffer

進化的アーキテクチャに関するニールフォードの基調講演は、次の場所にあります こちら

言い換え:

アーキテクチャとは、プロジェクトの早い段階で正しく決定できるようにしたい決定であり、人々が変更するのは難しいと感じているものです。しかし、変化を期待するアーキテクチャを構築したらどうなるでしょうか。

進化的アーキテクチャーは、複数の次元にまたがる第一の原則として、段階的なガイド付き変更をサポートします。

彼はさらに、ビッグボールオブマッド、レイヤードアーキテクチャ、マイクロカーネル、RESTで始まり、マイクロサービスで最高潮に達するさまざまなアーキテクチャシナリオについて説明します。マイクロサービスは n 進化的能力の次元(ここで n は、個別のマイクロサービスの数です)。

フォードによれば、進化的アーキテクチャ:

  • loosely-coupled および非常に cohesive
  • 構成可能です。コンポーネントを組み立てて新しいアーキテクチャを作成できます
  • アーキテクチャのオーバーホールを必要とせずに、段階的に変更できます。

必要に応じて、進化的アーキテクチャをメタアーキテクチャと考えることができます。アーキテクチャのアーキテクチャ。石ではなく粘土で物を鋳造することを促進する設計原則を指示するガイダンス。

20
Robert Harvey

はい、すべてを無差別に変更しやすくすることは矛盾です。 「変更が容易」なものを作成するためにコードを追加する必要がある場合(ここでは「簡単」の定義が不十分)、コードを追加しただけで変更が困難になっています。一方、何が変更されるかを正確に把握している場合、その可能性は非常に低いため、追加のコードを不要な複雑さとして見なすべきではありません。

物事を「簡単に変更できる」ようにすることが、現代のソフトウェアの多くが肥大化し、変更が困難になった主な理由です。

1
Frank Hileman