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


8

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

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


「アーキテクチャーは、後で変更するのが難しいため、早期に正しく行う必要があるものとして定義されることがよくあります。」あなたが彼らが変わることを期待しない限り。それは大きな違いを生み、将来の進化の余地を与えます。
Tomasz Maciejewski

アーキテクチャを「後で変更するのにコストがかかるすべてのもの」と定義した場合、これは矛盾していると思います。これは、今まで聞いた中で最も優れた定義です。「早期に理解する」には同意しませんが、この定義は、アーキテクチャに関する決定を可能な限り延期する理由です(できるだけ多くの情報を得るために)。
Martin Maat

回答:


20

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

言い換え:

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

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

彼は持っていると言うビッグ泥、階層化アーキテクチャ、マイクロカーネルとRESTのボール、およびmicroservicesで最高潮に達する、で始まる、異なるアーキテクチャのシナリオを記述するために行くのn進化の機能の寸法(ここで、n個の異なるmicroservicesの数です)。

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

  • ある疎結合と非常にまとまり
  • 構成可能です。コンポーネントを組み立てて新しいアーキテクチャを作成できます。
  • アーキテクチャのオーバーホールを必要とせずに、段階的に変更できます。

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


2
「アーキテクチャ」という言葉の前に「進化的」という言葉を置くことは、「伝統的な」意味での「アーキテクチャ」ではないことを意味することに同意します。
ロバートハーベイ

7
私はそれを同じ古いものに新しい名前を付けることとしてより簡単に考えることができます。私が覚えているすべてのソフトウェア方法論は、変化への適応性をその特性の1つとして主張しています。これがユニークである場合、それは主にそれを達成する方法について他よりもさらに詳細を提供することです。
Jerry Coffin

2
@Euphoric:(たとえば)構造化プログラミングが新しいときにHoareとDijkstraが言ったことや、OOPが新しいときにBooch、Meyerなどが言ったこととは一致しません。むしろ反対:ほとんどがあなたがやろうとしているのは、再利用可能な小さな断片を作成することだったので、ほとんどの変更はアーキテクチャーに限定されていました。アーキテクチャが変更されるため、さまざまな方法で簡単に再利用できる素敵な小さな部品ができます。
ジェリーコフィン

1
@ユーフォリック:私はむしろ反対だと思います:構造化プログラミングとOOP(2つの例について)は、ほとんど約束を果たしました。これについて多くを言うのは難しいです-基調講演に多くの詳細を期待することはありませんが、少なくとも、手先では、それはほとんどの前任者よりも誇大広告で実質的なもののように見えます。
Jerry Coffin、

1
@ユーフォリック:大部分、はい、彼らはそうしました。今日のルーチンの多くは、古いメソッドを使用すると失敗する可能性がはるかに高くなります。私は、古い方法でやろうとすることはほとんど想像できないいくつかのシステムの構築に関わっていました(そうですが、可能だったと思います)。その本を読む限り、そうです、おそらくそうしますが、まだしていません。
Jerry Coffin、

1

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

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


非常に本当ですが、私の質問には実際には答えていません。
フランクパファー

質問への答えは「はい」です。
フランクHileman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.