11章

設計を進化させる

 目まぐるしく変化する今の世の中で、企業はじっとしている余裕はありません。他社との競争で生き残るために、変化を続け、発展し、さらには、自社のやり方を抜本的に変えていくことが必要です。ソフトウェアを設計する時、この現実を無視してはいけません。事業からの要求に適切に対応するために、事業は変化し続けるという現実に、正面から取り組む必要があります。よく考えられたすばらしい設計でも、変化をうまく扱えないソフトウェアは、時間がたつにつれ、修正や拡張がやっかいで危険になります。この章では、ソフトウェア設計で考慮すべき四つの変化のベクトル、つまり、事業活動、組織の構造、業務知識、そしてシステムの成長について検討します。

11.1 事業活動の変化

 第2章で、事業を構成する業務領域を次の三つのカテゴリーに分類することを学びました。

中核

競争優位を得るために、競合他社とは異なる独自のやり方で活動する領域

補完

他社とは異なるやり方が必要だが、他社との差別化につながらない領域

一般

どの会社でも同じやり方をする領域

 これまでの章で、業務領域のカテゴリーの違いは、設計方針と実装方法の選択に影響することを見てきました。つまり以下の設計判断です。

  • 区切られた文脈の境界をどう設計するか
  • 文脈どうしをどう連係させるか
  • 業務ロジックの複雑さに対応した実装方法のどれを選択するか

 事業活動の要求に応えるための設計活動では、対象となる業務領域とそのカテゴリーを特定することがきわめて重要です。それだけではありません。業務領域の進展に機敏に対応することが同じように重要です。企業が成長し進化していくにつれ、ある業務領域のカテゴリーが別のカテゴリーに変化することは、めずらしいことではありません。そういう変化の具体例を見てみましょう。 ...

Get ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.