クラシックなシステム分析において、設計中のシステムの境界を正しく定義することが重要です — どの機能が内部で実現され、どのサービスに外部を委託し、それらとの統合がどのように構築されるか。大規模プロジェクトでは、このステップはアーキテクチャを単純化し、リスクを最小限に抑えるために重要です。
70年代から80年代にかけて、大規模システムの分析において、不適切に選定された境界が高コストの統合の改修やアーキテクチャの混乱を引き起こすことが明らかになりました。
システムの境界が広すぎたり狭すぎたりすると、メンテナンスが複雑になり、統合の数が増え、データの不整合を引き起こします。
Context Diagram(コンテキストダイアグラム)やService Responsibility Matrixを利用して、機能と責任を分配します。ビジネス目標に焦点を当て、システムの境界が会社の実際の構造に合致するようにします。
生成されるシステムの最大の自律性を常に追求すべきですか?
いいえ、重複を避けるために、他のシステムに一部の機能を委任する方が効果的な場合もあります。
アナリストは、実装開始前にすべての統合用データフォーマットを定義すべきですか?
いいえ、これはハイレベルデザインの段階で行われます。詳細なフォーマットは、後にアーキテクトやインテグレーターと共に策定されます。
同じ機能が複数のシステムで実装されていることは非常に悪いことですか?
これは重複、同期コスト、およびデータの整合性の損失を引き起こすため、そのような重複は避けるべきです。
ネガティブケース:
企業の構造を考慮せずにシステムを設計し、内部で実現する機能と他のサービスで実現する機能を明確に定義しなかった。
利点: 設計の迅速な開始、最小限のリソース消費。
欠点: 多くの重複統合を持ち、データ交換に継続的な問題が発生し、アーキテクチャが肥大化した。
ポジティブケース:
システムアナリストはコンテキストダイアグラムを作成し、ビジネスとアーキテクチャとのシステム境界を合意し、統合の相互作用を最小化しました。
利点: 明確なアーキテクチャ、統合バグが少ない、メンテナンスが容易。
欠点: スタート時の準備作業が多く、すべての関連システムに関する専門知識が必要。