web-dev-qa-db-ja.com

メタデータ駆動型アーキテクチャのエンジニアリングアプローチ

最近MDDAに出くわしましたが、この用語は最初に Salesforce(pg3) によって造られたと思います。他の人は enefocusfocus.comのメタデータ駆動型アーキテクチャ (密度が低く、よく書かれています) )。

この設計は、顧客がエクスペリエンスを(エンドユーザーまたはソリューションエンジニアによって)調整できるが、コアシステムの動作はそのままに保つのに十分な柔軟性を備えたプラットフォームのエンタープライズ製品に役立ちます。

  1. これは、企業で一般的なパターンである可能性がありますSaaSアプリ、一連のif-elseロジックを追加せずに、顧客がどのようにして必要な柔軟性を得ることができるのですか?
  2. MDDAの特定のエンジニアリング設計パターンは何ですか?
  3. コードを見て、それについてより具体的に話すことができるオープンソースの代替手段はありますか?
  4. 理論的には素晴らしいはずですが、実際にシステムが非常に柔軟に構築されている場合、これに関する問題は何ですか?
5
zengr

おお、大きな話題。はい、これはエンタープライズクラスのソフトウェアでは典型的なパターンになる可能性がありますが、必ずしも良いパターンだとは限りません。可能であれば回避することを検討してください。ここでの中心的な問題は、それが超高レベルの抽象化で存在することです。ツールがユーザーが何をしたいのかわからない場合、必然的に決定を放棄し、独自のツールを構築するためのフレームワークを提供します。これは、カスタマイズ可能性に関するクールなセールスピッチとして始まりますが、ある意味でMDAは究極のスコープクリープです。柔軟性が高まったとしても、ソフトウェアでは(理論的には)できないことはありません。

これはよくある間違いであり、あらゆる種類のジョークがあります。

Zawinskiの法則 -「本当に有用なプログラムはすべて、ツールキットとアプリケーションプラットフォームに進化するというプレッシャーを経験しています」

Greenspunの第10規則 -その他も同様です。

結論として、MDAは非常に高い抽象化レベルで存在します。システムは over-abstraction を回避する必要があります。私は絶対にこれを行うべきではないと断定的に言うのは多すぎると思います、時にはそれはうまくいくかもしれませんが、あなたがそれを行う前にそれが必要である理由は気密なケースを持っているほうがいいです。

特定のエンジニアリング設計パターン-実際には、非常に抽象的な方法でデータベースエンティティと関係を作成し、UIを持つユーザーがそれらを指定して関連付けることができるようにします。 UI側では、データベースエンティティ/関係を使用する代わりに、パネル、入力、フォームなどを使用することを除いて、同じコンセプトです。

オープンソースの代替案-これについてはわかりませんが、あるとすればそれらに注意します。通常、「非常に柔軟な」ソリューションが問題のドメイン(CRMなど)にカスタマイズされるためです。たぶん、Eclipseに付属するインターフェースとデータビルダーの一部でしょうか?

これらのアプローチに伴う問題は数多くあります。

ビーストのテスト

抽象的であるため、テストは非常に難しくなります。すべての組み合わせをテストすることは不可能であるため、代表的なカバースイートの設計は非常に困難です。あなたが開発したその新機能は、ツールが最初に機能すると想定されていた方法に対して実際に機能していたカスタマーXの奇妙なカスタマイズとうまく相互作用しませんか?

自分のシステムを理解する

次に、ユーザーはシステム自体にはない知識をシステムにエンコードできます。自分のシステムのカスタマイズを見ていて、どこから始めればよいかを認識するのに苦労しているバックエンドのエンジニアを想像してください。自分のやり方を知ることは、システムの仕様外の知識に依存しているからです。以前のコメンターは、salesforceの場合、その実装を支援するために特別なコンサルタントを雇う必要があると指摘しました。うん、そうですね。

ユーザーの不適切な期待

システムのパワーとシンプルさの間には一般的なトレードオフがあります。これらのシステムは非常に強力であり、単純なものとは逆の傾向があります。したがって、基本的には、複雑さの欠点のすべてが、柔軟性を高めるための掘り出し物になります。これにより、ユーザーと製品マネージャーに「何でもできる」という感覚が生まれ、適切なシステムスコープの境界を設定して理解することが非常に難しくなります。

5
FrobberOfBits