ドメむン駆動蚭蚈戊略的蚭蚈。 パヌト1



こんにちは、Habraナヌザヌの皆さん この蚘事では、䞻に戊略的なテンプレヌトを䜿甚した゜フトりェアの䞻題指向の蚭蚈に焊点を圓おたす。 第二郚-戊術蚭蚈に぀いお- ここをお読みください 。

このアプロヌチは、Vaughn Vernonの著曞「䞻題指向蚭蚈の方法の実装」で䜿甚されおいたした。 この本の目的は、開発者がDDD飛行機で飛行できるようにするこずです子䟛の頃、著者は家族ず䞀緒に小さな飛行機で旅行するこずがよくありたした。 䞊からの眺めは、さたざたな技術的詳现にこだわるこずなく、モデリング問題のより広い抂念を提䟛したす。 このようにDDDの状況を芳察するこずにより、戊略的蚭蚈ず技術的蚭蚈の䞡方の利点を実珟できたす。 詳现-カットの䞋で

フラむトは、 、 、 、 、 、 などの戊略的モデリングのツヌルずテンプレヌトを䜿甚しお実行され 。 この蚘事で説明するのは、それらに぀いおです。

たずえば、 、 、 、 、 、 などの戊術的なパタヌンを䜿甚した蚭蚈は、軜量のDDDです。 このアプロヌチを䜿甚できるこずは非垞に重芁ですが、これらのテンプレヌトは䞻に技術的な性質のものであり、DDDの党䜓像を芋るためには、たず戊略的テンプレヌトを実際に適甚する方法を孊ぶ必芁がありたす。

DDDアプリケヌションの䞻な目的は、ビゞネス目暙を最も正確に反映する高品質の゜フトりェアモデルを取埗するこずです。 これを実珟するには、開発者ず䞻題の専門家の䞡方の努力の組み合わせが必芁です。 友奜的で緊密なチヌムを䜜成するず、ビゞネス䞊の倚くのメリットを埗るこずができたす。 チヌムメンバヌ間の知識の亀換により、モデルに関する「秘密の知識」が出珟する可胜性が枛り、さたざたな抂念や甚語に関しおドメむン゚キスパヌト間で合意に達し、ビゞネスのより正確な定矩ず説明が䜜成されおいたす。

サブゞェクト゚リアの開発者ず専門家のバランスを取り、サブゞェクト゚リアに関する有甚な知識を亀換しやすくするために、DDDアプロヌチでは、チヌムメンバヌ間のコミュニケヌションで䜿甚される甚語、抂念、およびフレヌズの共通セットを䜿甚するこずを提案したす。プログラム。

単䞀蚀語


この集合的な甚語の蚀語は、 ナビキタス蚀語ず呌ばれたす。 これは、䞻題指向蚭蚈の䞻芁か぀最も重芁なパタヌンの1぀です。 これは、開発者に課されるビゞネス甚語ではなく、䞻題の専門家、開発者、ビゞネスアナリスト、およびシステムの䜜成に関わるすべおの人、぀たり党䜓的なチヌムによっお䜜成された実際の蚀語です。 チヌムの各メンバヌはプロゞェクトを説明するために を䜿甚するため、チヌムの圹割はそれほど重芁ではありたせん。 単䞀の蚀語を䜜成するプロセスは、他の自然蚀語ず同様に絶えず進化しおおり、有甚な単䞀蚀語の開発に最初に貢献したこれらのアヌティファクトは時間が経぀に぀れお叀くなるため、圢匏よりも創造的です。 その結果、最も安定で実瞟のある芁玠のみが残りたす。 実隓から正確な知識に移行するには、Vaughn Vernonの本で次の方法を䜿甚するこずを提案しおいたす。

  1. 物理的および抂念的な䞻題領域の図を䜜成し、名前ずアクションを瀺すラベルをそれらに適甚したす。 このような図は本質的に非公匏であるため、フォヌマルモデリングUMLなどを䜿甚する意味はありたせん。
  2. 簡単な定矩ず、芋蟌み客の評䟡を䌎う代替甚語を含む甚語集を䜜成したす。 したがっお、単䞀蚀語の安定したフレヌズが開発されたす。
  3. 甚語集の代わりにドキュメントを䜜成したす。 このドキュメントには、゜フトりェアに関連する略匏の図たたは重芁な抂念が含たれたす。
  4. 甚語集やその他の文曞をすぐに孊べない他のチヌムメンバヌず既成のフレヌズに぀いお話し合う。

コヌドはかなり迅速に開発され、単䞀の蚀語の珟圚のバヌゞョンず調敎する必芁があるため、埌で図、甚語集、たたはその他のドキュメントを攟棄できたす。

開発者にずっお最も重芁なこずは、専門家の意芋を聞き、察象分野に関する最倧限の有甚な知識を埗る胜力です。 同時に、専門家は開発者ず圌らの垌望にも耳を傟けるべきです。 チヌムは、連携しお事業の理解を深めれば、共に孊び、成長したす。

本からいく぀かの䟋を挙げたす。

チヌムずしお、コヌドの圢でむンフル゚ンザワクチンを䜿甚するモデルを議論し、「看護垫はむンフル゚ンザワクチンを暙準甚量で凊方したす」のようなフレヌズを蚀いたす。 可胜なシナリオ



明らかに、最初のオプションはたったく最適ではなく、2番目のオプションは優れおいたすが、いく぀かの重芁な抂念を考慮しおいたせん。 最終バヌゞョンは、タスクに最も適しおいたす。

サブゞェクト領域のフレヌムワヌク内では、特定の甚語たたはフレヌズの意味が非垞に異なる堎合があるこずを理解するこずが非垞に重芁です。 抂念の範囲内に䞀定の境界がありたす
単䞀の蚀語には、非垞に具䜓的な文脈䞊の意味がありたす。

限られたコンテキスト


この抂念的な境界は、境界付きコンテキストず呌ばれたす。 これは、単䞀の蚀語に次いで2番目に重芁なDDDプロパティです。 これらの抂念は䞡方ずも盞互に接続されおおり、互いに存圚し合うこずはできたせん。

したがっお、 は、 を゜フトりェアモデルにマッピングするドメむンモデルが存圚する明確な境界です。


たずえば、銀行サヌビスの文脈ず文孊の文脈における「アカりント」ずいう甚語の察比を考えおみたしょう。

銀行のコンテキスト

抂芁には、銀行の芳点からのクラむアントの珟圚の財務状況を反映した売掛金および買掛金取匕の蚘録が保持されたす→ 経垞収支たたは貯蓄口座の芁玄

文孊的な文脈

抂芁ずは、䞀定期間に発生した1぀以䞊のむベントに関する文孊衚珟の集合です→ Into Thin AirA.の個人アカりントは、amazon.comで販売されおいたす。 ゚ベレスト灜害

サマリヌのタむプを名前で区別するこずはできたせん。 しかし、それらは抂念的なコンテナの名前、すなわち 関連する限られたコンテキスト。

これらの制限されたコンテキストは、異なる 関連しおい 。 次の䟋では、同じ 内で同じ名前が䜿甚されおいたす。

本の出版瀟の䞭には、ラむフサむクルのさたざたな段階を経おいるものもありたす。぀たり、本はさたざたなを経おいたす。


この堎合、適切なブックモデルを開発する方法はありたせん。 たずえば、契玄が締結されるたで、曞籍のタむトルは未定矩のたたであり、線集プロセス䞭に倉曎される堎合がありたす。 マヌケティングには、衚玙ず泚釈を陀き、文孊および技術版のほずんどのアヌティファクトは必芁ありたせん。本の販売には、名前、倉庫の堎所、コピヌ数、サむズ、重量のみが必芁です。 混乱を避けるため、DDDアプロヌチでは、ラむフサむクルの各段階で個別の を䜿甚する必芁がありたす。 各のブックモデルは、他のすべおのモデルずは倧きく異なりたす。 特定の 各チヌムは本に぀いお語り、圌らがに䜕を望んでいるかを正確に知っおい 。

䞊蚘の䟋では、同じ 内でさたざたな 䜿甚しお たす。

サブゞェクトドメむン、サブドメむン、セマンティックコア


は、組織が行うこずず、それが行う環境です。 組織の゜フトりェア開発者は、 䜜業する必芁がありたす。 ドメむンモデルを開発する堎合、ある皋床耇雑な組織であっおも、単䞀の包括的なビゞネスモデルを䜜成するこずはほずんど䞍可胜なので、特定のに集䞭する必芁があるこずを理解しおおく必芁がありたす。 モデルを実際の機胜に埓っお、 党䜓の論理的に分割された サブドメむンに分割するこずは非垞に重芁です。 䜿甚するず、特定の問題を解決するために必芁な さたざたな郚分をすばやく刀断できたす。

たた、 コアドメむンを決定できる必芁がありたす。 これは、DDDアプロヌチの非垞に重芁な偎面です。 は、組織にずっお最も重芁なです。 戊略的な芳点から、ビゞネスは 際立っおいる必芁がありたす。 ほずんどのDDDプロゞェクトは 焊点を圓おおいたす。 最高の開発者ず専門家がこの特定の領域に関䞎する必芁がありたす。 ビゞネス䞊の利益を達成し、利益を最倧化するために、ほずんどの投資をここに向ける必芁がありたす。

ではなく重芁なビゞネスの特定の偎面がシミュレヌトされる堎合 サポヌトサブドメむンを指したす。 ビゞネスには専門性があるため、 が䜜成されたす。 ビゞネスに特別な目的はないが、ビゞネス党䜓に必芁な堎合は、 汎甚サブドメむンず呌ばれたす。 これらのタむプのはビゞネスの成功にずっお重芁ですが、䞻な重芁性はありたせん。 これは、ビゞネスに利点をもたらすため、理想的に実珟さ べき 。

これは、DDDアプロヌチによる戊略的蚭蚈の基瀎です。

タスクスペヌスず゜リュヌションスペヌス


は、タスクスペヌスず゜リュヌションスペヌス 構成されたす。 タスクスペヌスでは、解決する必芁がある戊略的なビゞネス䞊の問題に぀いお考えるこずができ、゜リュヌションスペヌスでは、ビゞネス䞊の問題を解決するための゜フトりェアの実装方法に焊点を圓おたす。


理想的なオプションは、 ず 間で1察1の察応を提䟛するこずです。 したがっお、タスク空間ず゜リュヌション空間が組み合わされ、ドメむンモデルは、蚭定された目暙に応じお、明確に定矩された領域に区別されたす。 システムがれロから蚭蚈されおいない堎合、倚くの堎合、 が ず亀差する 。

䞀䟋ずしお、Vaughn Vernonの本は、小芏暡なオンラむン小売䌚瀟のコアコアを提䟛したす。 オンラむンストアは、販売履歎ず圚庫デヌタを分析する予枬メカニズムを䜿甚しお、需芁の予枬ず最適な圚庫の特定の量を取埗する堎合、その䜍眮を改善できたす。 䌁業は、需芁のない商品にお金を費やしお远加のストレヌゞスペヌスを占有するべきではありたせん。この により、組織の競争力が倧幅に向䞊し、収益性の高い取匕を迅速に識別し、必芁な圚庫レベルを保蚌できたす。 タスクスペヌスは、調達ず圚庫に関連する ず構成され、次の図に衚瀺されたす。

これは 䞀郚にすぎず、組織が運営する 党䜓ではありたせん。 タスクセマンティックコアずサブドメむンのスペヌスを分析する必芁がありたす。 図に瀺す調達モデルは、 ゜リュヌションです。 ドメむンモデルは、明瀺的に たコンテキスト最適な調達のコンテキストで実装さ 。 この は、最適調達のセマンティックコアず呌ばれる1぀の明らかに察応しおいたす。 調達プロセスの技術的偎面を明確にするために、調達コンテキストず呌ばれる別の が開発され、最適な調達コンテキストに関連しお補助的な圹割を果たしたす。 これらは、ERPシステムのオヌプンむンタヌフェむスずの盞互運甚性を提䟛したす。 調達コンテキストずERP調達モゞュヌルは、調達サヌビスサブ゚リアに結合されたす。 ERPモゞュヌル自䜓は、他の商甚調達システムに眮き換えるこずができるため、 おい です。 ただし、調達サブリヌゞョンの調達コンテキストず組み合わせお衚瀺するず、 になりたす。 図に瀺すように、最適な調達コンテキストは、ストレヌゞナニットを管理するむンベントリコンテキストずも盞互䜜甚する必芁がありたす。 圚庫の 内にあるERP圚庫モゞュヌルを䜿甚したす。 ERPアプリケヌションはさたざたなモゞュヌルで構成されおおり、論理的なず芋なされたす-これらは圚庫ず賌入の 。 これらのモゞュヌルず圚庫および調達コンテキストは、 結合され 。

したがっお、タスクスペヌスを評䟡するには、たず、次のこずが必芁です。


タスクスペヌスの評䟡は、゜リュヌションスペヌスの評䟡に圱響したす。 ここでは、既存および新しいシステムずテクノロゞヌに぀いおすでに考える必芁がありたす。 私たちは、 が求められおいる明確に分離可胜な物理的 芳点から考えなければなりたせん。 次のずおりです。


は、 モデルだけで構成されおいるわけではありたせん。 モデルはその䞻芁コンポヌネントですが。 モデルからデヌタベヌススキヌマを䜜成するず、この も参加し 。 同時に、スキヌムが以前に存圚し、そのプロゞェクトでプロゞェクトが違反された堎合、このスキヌムは は適甚されたせん。

たた、モデルを衚珟 は、 指し 。 境界内にもあるサヌビス指向の゚ンドポむントも実装できたす。 ナヌザヌむンタヌフェむスコンポヌネントずサヌビス指向の゚ンドポむントの䞡方が に委任され は、モデルに関連しおずしお機胜したす。 たた、これらの 、 境界内にあり 。

のサむズは非垞に異なる がありたす。 䞻なこずは、モデルが内の 豊かさを実蚌するこずです。 内でモデリングするために必芁なだけの 抂念を持っおいる必芁があり -倚かれ少なかれ。 重芁なものを芋逃さないために、明確で良い基準を芋぀ける必芁がありたす。 これに を䜿甚できたす。 したがっお、3番目の重芁な戊略的蚭蚈テンプレヌトになりたす。

コンテキストマップ


DDDアプロヌチに埓っお、特定のチヌムは独自の䜜成する必芁がありたす。 、このチヌムが配眮されおいる決定スペヌスを反映しおいたす。 このは、 、それらの間の統合リンクで構成されおいたす。 䟋

このコンテキストマップには、将来の出来事ではなく、珟圚の状況が衚瀺されたす。 䜜成プロセス䞭は、圢匏的な手続きは避けおください。 詳现が倚すぎるず、䜜成プロセスが劚げられるだけです。

むベントの自然な経過は、コンテキストの境界がチヌムの組織郚門ず䞀臎するこずです。䞀緒に働く人々は、共通のモデルコンテキストを共有したす。

予備を䜜成した埌 、の関係を決定するこずで詳现にするこずができたす。プロゞェクトチヌムず個々のプロゞェクトチヌムの

間には、次のような関係が ありたす。


開発の䟋は、 Alberto Brandolini Strategic Domain Driven Design with Context Mappingの蚘事 から取埗できたす。最初に、境界ず次の関係を䜿甚しお、単玔なコンテキストマップを描画したす。



これら2぀のコンテキストでは、同じ名前の抂念に違いがありたす。たずえば、Webナヌザヌプロファむリングのアカりントはナヌザヌアカりントナヌザヌ名ずパスワヌドです。同時に、PFM Application個人財務管理の堎合、銀行の芳点からクラむアントの珟圚の状態を説明する芁玄です。前述のように、たったく同じ抂念をたったく異なる抂念で䜿甚できる堎合があるため、それらに察しお異なるモデルを定矩する必芁がありたす。


たずえば、PayeeAccountは同じBankingAccountですが、動䜜が異なりたす残高を取埗できたせん。このようにしお、別個の経費远跡コンテキストが䜜成されたす。たた、䞊蚘の䟋では、別に、オンラむンバンキングサヌビスのコンテキストが䜜成されたすこのようなサヌビスは、銀行取匕明现曞の印刷など。


䜜成の最初のステップの埌、すべおの関係を詳述できたす。各関係には方向がありたす。芪アップストリヌムはダりンストリヌムダりンストリヌムに圱響したすが、その逆は圓おはたりたせん。

詳现は次のようになりたす。


オンラむンバンキングサヌビスのコンテキストは、APIによっお提䟛されたすオヌプンプロトコルサヌビスおよび公甚語にするこずができたす。このAPIを倉曎するずき、新しいAPIを䜿甚するには、個人の財務管理のコンテキストをすぐに倉曎する必芁がありたす。同時に、 オンラむンサヌビスのコンテキストの抂念が個人の財務管理のコンテキストに挏れないようにするために䜿甚する必芁がありたすドメむンモデルの倉換が行われたす。

Webナヌザヌプロファむルのコンテキストは既成の倖郚モゞュヌルずしお䜿甚され、「そのたた」提䟛されるため、ここで関係が確立されたす䞊䜍の䞋䜍の䞋䜍。

原䟡蚈算のコンテキストの堎合、比率はここで最適です。、共通の目暙ず抂念がありたすが、態床の方向性がないためです。

これは簡単な䟋です が、実際にはもっず耇雑です。

おわりに


この蚘事では、戊略的なパタヌンによるオブゞェクト指向蚭蚈の基本抂念を議論したした 、 、 、 、 、 。これらのツヌルは、プロゞェクトの戊略的発展を把握し、最倧の成功を達成するためにビゞネスをさらに発展させる方法を理解するのに十分です。

もちろん、この蚘事を読んだ埌、私はただ倚くを明らかにしたいず思うでしょう。これに぀いおは、前述のVaughn Vernonの本を参照するこずをお勧めしたす。このための特別なコミュニティもあり、アドバむスを求めるこずができたす。戊術同じモデリング技法ならびにパタヌン、など、 、そしお他のものは次の蚘事に説明したす。

ご枅聎ありがずうございたした

䜜成者greebn9kセルゲむグリブニャック、wa1oneりラゞミヌルコノァルチュク、silmarilionアンドレむカハレフ。

Source: https://habr.com/ru/post/J316438/


All Articles